>  기사  >  기술 주변기기  >  "개인 WeChat 채팅 기록과 블로그 게시물을 사용하여 나만의 디지털 클론 AI를 만들었습니다."

"개인 WeChat 채팅 기록과 블로그 게시물을 사용하여 나만의 디지털 클론 AI를 만들었습니다."

WBOY
WBOY앞으로
2023-04-23 10:52:07954검색

비행기를 조종하고, 완벽한 갈비 구이를 요리하고, 식스팩 복근을 만들고, 회사에 엄청난 돈을 벌어주는 것 외에도 제가 항상 하고 싶었던 일 중 하나는 챗봇을 구현하는 것입니다.

수년 전 단순히 키워드 매칭을 통해 답장을 했던 chatgpt에 비하면 chatgpt는 이제 인간의 지능과 비슷해졌습니다. Chat AI가 발전하고 있지만 제가 생각한 것과는 약간의 차이가 있습니다.

WeChat에서 많은 사람들과 채팅을 합니다. 어떤 사람은 더 많이, 어떤 사람은 덜 채팅할 수도 있고, 블로그와 공개 계정을 쓸 수도 있고, 여러 곳에 댓글을 남길 수도 있습니다. 이것이 내가 온라인 세상에 남긴 흔적이며, 어느 정도는 세상이 나를 바라보는 인식이기도 하다. 다양한 메시지에 대한 나의 반응, 내가 작성한 모든 기사, 모든 문장, 내가 게시한 모든 Weibo 등의 데이터를 신경망 모델에 통합하여 매개변수를 업데이트하면 이론적으로 나의 디지털 사본을 얻을 수 있습니다.

원칙적으로 이것은 chatgpt에게 "경험이 XXX인 Xiao Wang이라는 사람을 연기해 주세요"라고 말하는 것과 다릅니다. chatgpt의 지혜로 보면 그러한 연기는 수월하고 가짜일 수 있지만 실제로 chatgpt의 매개 변수는 변경되지 않았습니다. Chatgpt의 수천억 개의 매개변수는 단 하나도 변경되지 않았습니다. 이전 텍스트에서 일부 정보를 얻은 다음 지혜를 사용하여 사용자를 처리합니다.

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

저는 기사에서 그다지 유용하지 않은 비유를 쓰는 것을 좋아하고, 사람들과 대화할 때 "좋아"를 사용하여 놀라움을 표현하는 것을 좋아합니다. 동시에, 놀람을 표현하기 위해 "fuck"을 사용합니다. , 나는 어떤 때는 과묵하고 어떤 때는 말이 많습니다. 게다가 내가 감지할 수 없는 고정된 습관이 더 많이 있습니다. 미묘하고 모호한 것, 나는 chatgpt를 말할 수 없습니다. 자기 소개를하면 매우 풍부하게 소개 할 수 있지만 여전히 실제 당신과는 거리가 멀고 때로는 완전히 반대이기도합니다. 왜냐하면 우리가 우리의 존재를 깨닫게되면 우리는 실제로 우리가 자신을 수행할 때 우리는 자신의 존재를 인식하지 못하고 삶에 녹아들 때에만 진정한 우리 자신입니다.

chatgpt가 출시된 후 관심을 갖고 대형 텍스트 모델의 기술 원리를 배우기 시작했습니다. 1949년에 중국군에 입대하는 것과 같았습니다. 개인 매니아에게는 어떤 측면에서든 어떤 면에서든 chatgpt를 능가할 수 있기 때문입니다. 작은 수직 필드 섹스는 더 이상 존재하지 않으며 동시에 오픈 소스도 아니므로 사용하는 것 외에는 다른 아이디어가 없습니다.

하지만 지난 두 달 동안 등장한 유명한 llama 및 chatglm6b와 같은 일부 오픈 소스 텍스트 사전 훈련 모델을 통해 지난 주에 다시 나 자신을 복제할 준비가 되었습니다. 시도 해봐.

우선 데이터가 필요합니다. 충분한 데이터와 제가 생성한 모든 것이 가장 간단한 데이터 소스는 제 위챗 채팅 기록과 블로그입니다. 왜냐하면 2018년부터 지금까지의 모든 데이터가 완전히 삭제되지 않았기 때문입니다. 내 휴대폰 WeChat은 80G의 저장 공간을 차지합니다. 누군가 집의 공간을 빼앗았다는 느낌이 들었습니다. 이제 여기 데이터를 사용할 수 있다면 80G를 버릴 것입니다.

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

몇 년 전에 WeChat 채팅 기록을 백업해 두었는데, 그때 사용했던 도구를 찾았습니다. WechatExporter라는 오픈 소스 도구입니다. 이 도구를 사용하면 Windows 컴퓨터의 iPhone에 있는 모든 WeChat 채팅 기록을 백업하고 일반 텍스트 형식으로 내보낼 수 있습니다. 먼저 전체 전화를 컴퓨터에 백업해야 하기 때문에 인내심이 필요한 작업입니다. 그러면 이 도구는 백업 파일에서 WeChat 기록을 읽고 내보냅니다.

4시간 정도 백업하고 빠르게 내 위챗 채팅 기록을 모두 내보냈는데, 채팅 개체에 따라 여러 텍스트 파일로 내보냈습니다

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

여기에는 그룹 채팅과 일대일 채팅이 포함됩니다. .

그런 다음 데이터를 정리하기 시작했습니다. 대부분의 그룹에서 제가 더 활동적인 그룹을 걸러냈습니다. 또한 개인과의 채팅 기록도 걸러냈습니다. 그들은 또한 기꺼이 채팅 기록을 사용하여 이 작업을 수행했으며 결국 약 50개의 채팅 텍스트 파일이면 충분했습니다.

저는 이러한 텍스트 파일을 탐색하고 모든 연설과 이전 문장을 찾아 대화 형식으로 만든 다음 json에 저장하는 Python 스크립트를 작성했습니다. 이런 식으로 나만의 WeChat 채팅 데이터 세트가 있습니다.

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

이때 동료에게도 크롤러를 사용하여 내 블로그 게시물을 모두 크롤링하여 보내달라고 요청한 후 실제로 내장된 내보내기 기능을 사용하여 직접 내보낼 수 있다는 것을 기억했습니다. 블로그 백엔드의 기능. 블로그 데이터는 매우 깨끗했지만 처음에는 어떻게 사용하는지 몰랐습니다. 훈련하고 싶은 것이 채팅 모델이고, 블로그 게시물이 채팅이 아닌 긴 문단이어서 처음으로만 훈련했습니다. WeChat의 순수한 채팅 기록이 사용됩니다.

사전 훈련 모델로 chatglm-6b를 선택했습니다. 한편으로는 중국어 효과가 충분히 훈련된 반면, 내 컴퓨터는 큰 노력 없이도 실행할 수 있습니다. 그 이유는 이미 github에 여러 개의 미세 조정 훈련 프로그램이 있기 때문입니다(글 끝에 나열하겠습니다). 또한, 제가 만든 6pen은 6과 동일한 성을 가지고 있습니다. 그것은 또한 그것을 사용하는 경향이 있습니다.

내 위챗 채팅 데이터가 결국 10만 개 정도 되는 걸 생각해서 상대적으로 낮은 학습률을 설정하고 에포크를 늘렸어요. 며칠 전 어느 날 밤, 잠자리에 들기 전에 훈련 스크립트 작성을 마치고 실행을 시작했어요. , 그리고 나서 잠에서 깨어나면 달리기를 끝내기를 바라면서 잠이 들기 시작했지만 그날 밤 거의 매 시간마다 깨어났습니다.

아침에 일어나서 모델을 훈련했는데 아쉽게도 손실이 잘 떨어지지 않아서 12시간 동안 훈련한 모델이 별로 좋지 않았습니다. 하지만 저는 딥러닝 초보자입니다. 끝내지 못했습니다. 오류에 대해 이미 감사했기 때문에 실망하는 대신 이 모델을 사용하여 대화를 실행하기 시작했습니다.

의식을 더하기 위해 jupyter를 사용하여 어두운 터미널에서 메모를 하거나 채팅을 하고 싶지 않았습니다. 오픈 소스 프런트엔드 채팅 페이지를 찾아서 약간 수정한 다음 모델을 배포하고 캡슐화했습니다. API를 사용한 다음 프런트엔드를 사용했습니다. 페이지에서 이 API를 호출하므로 좀 더 유사한 채팅을 구현할 수 있습니다.

웃기지 마세요. 모델을 훈련하기 위해 100,000개의 WeChat 채팅 기록을 사용했습니다. 다음은 나와 그 사람 사이의 첫 번째 대화입니다. 아직은 별로 좋지 않고, 극단적으로 최적화하지 않고 꺼내기 부끄러워하는 성격이 아니라서 부끄러워하지 않고 몇몇 친구들에게 직접 보냈더니 피드백이 너무 좋다는 것이었습니다. 당신과 조금 비슷하면서도 동시에 대화의 스크린 샷을 다시 보냈습니다.

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

첫 번째 버전인 이 모델은 저와 비슷한 부분이 좀 있어서 뭐라고 말씀드릴 수는 없지만 약간 이런 느낌이에요.

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI대학이 어딘지, 고향이 어디냐고 물어보면 정확한 정보도 안 나오고 틀린 것 같아요. 제 채팅 기록에 그런 사람이 별로 없거든요. 어찌보면 이렇게 물어보세요. 모델은 나를 모른다. 마치 복제품 같다.

콘텐츠 A가 포함된 WeChat 메시지를 받고 B에 답장할 때 이러한 이유 중 일부는 이론적으로 충분한 데이터를 생성하면 아마도 수백 개의 뉴런에 저장됩니다. 수십억 개의 조각이 있다면 충분히 큰 매개변수를 가진 인공지능 모델이 내 뇌에 매우 가까울 수 있습니다. 10만 개의 조각은 조금 적을 수 있지만 모델의 60억 개의 매개변수를 만들기에는 충분합니다. 여기에서 일부 부분을 조금 변경해 보세요. 원래 사전 훈련된 모델보다 나에게 더 가깝습니다.

그리고 더 큰 단점은 몇 마디도 튀어나오지 못하고 답변이 매우 간략하다는 점입니다. 이는 저의 위챗 채팅 스타일과 여러 번 일치하지만 제가 원하는 것은 아닙니다. 더 많은 이야기를 하고 싶습니다.

이 때 갑자기 내 블로그가 생각났습니다. 이 블로그를 질문과 답변으로 변환하려면 chatgpt를 생각했습니다. 신중하게 구성된 프롬프트에서 내 블로그 기사의 한 단락을 여러 개의 질문으로 바꾸는 데 성공했습니다.

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

때때로 chatgpt가 형식을 따르지 않는 일부 콘텐츠를 반환하므로 규칙을 따르지 않는 모든 반환을 표준 json으로 수정하는 교정 스크립트를 작성했습니다. 필드 이름은 변경되지 않습니다.

그런 다음 그것을 인터페이스로 캡슐화하여 홍콩에 있는 서버에 배치했습니다. 또한 chatgpt 인터페이스로 인해 블로그 게시물을 500 단어로 나누고 일괄적으로 질문과 답변으로 변환하는 스크립트를 컴퓨터에 작성했습니다. 속도 때문에 200개가 넘는 블로그 게시물을 거의 5,000개의 대화 데이터 세트로 변환하는 데 거의 또 밤이 걸렸습니다.

이때, 훈련용 WeChat 대화 데이터 세트에 블로그 대화를 추가하면 블로그 대화의 비율이 너무 낮아서 영향이 매우 작을 수 있으므로 큰 차이가 없을 수 있습니다. 이전 모델에서 다른 선택은 단순히 기사의 데이터를 사용하여 새 모델을 훈련하는 것입니다.

6pen의 알고리즘 담당자에게 도움을 요청했는데, 모델 가중치가 융합될 수 있다고 판단하고 그에게서 융합 스크립트를 얻을 수 있는 방법을 찾은 후 후자의 방법을 채택했습니다.

5000개의 질문과 답변, 훈련 속도가 매우 빠릅니다. 오후에는 문서를 작성하면서 훈련 진행 상황을 살펴보고 퇴근하기 시작했습니다. 모델을 통합하여 이전 WeChat 채팅 기록을 사용한 훈련을 기록합니다. 모델이 내 블로그에서 훈련된 모델과 융합됩니다.

두 모델의 가중치는 자유롭게 구성할 수 있습니다. 모델 수렴 과정에서 여전히 약간의 손실 반등이 있는 점을 고려하여 다양한 단계를 적용한 모델 버전도 시도했습니다

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

가장 효과가 좋은 모델을 찾기 위해 밤새도록 이 모델들과 이야기를 나눴지만 알아내기가 어려웠던 것 같습니다. 이 모델들은 행동이 좀 다르고, 더 짜증을 내는 경우도 있고, 개를 핥는 듯한 경우도 있고, 어떤 사람은 개를 핥는 것 같고 어떤 사람은 매우 열정적입니다. 그러다가 이것이 어느 정도 나의 다른 면일 수도 있다는 것을 깨달았습니다. 원칙을 경멸하지만 로맨스를 잃지는 않습니다.

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

결국 채팅모델과 기사모델의 가중치 비율은 7:2인 것을 확인했고, 6600단계에서 저장한 모델을 사용하면 대부분 융합효과가 더 좋은 경우가 많겠지만, 물론 그럴 수도 있습니다. 벌써 밤 2시가 되어 판단력이 흐려졌는데, 어쨌든 그를 최종 모델로 결정했다.

그 사람과 얘기를 많이 했어요.

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

我用我的10万条微信聊天记录和 280 篇博客文章,做了我自己的数字克隆AI

분명히 그는 chatgpt에서 코드 작성이나 카피라이팅을 도와줄 수 없으며 훈련 데이터에 많은 내용이 포함되어 있지 않기 때문에 충분히 똑똑하지 않습니다. 한 번의 대화보다 여러 번의 대화에 대한 이해가 더욱 나쁩니다. 동시에 그는 자신의 이름(즉, 내 이름)을 아는 것 외에도 실제로는 나를 잘 모릅니다. 나에 대한 다른 많은 정보는 정확하지 않습니다. 그러나 그는 종종 몇 가지 간단한 단어를 사용하여 친숙하다고 느끼거나 환상일 수 있습니다.

일반적으로 현재 존재하는 잘 알려진 모든 대형 텍스트 모델은 엄청난 양의 데이터로 훈련됩니다. 훈련 과정은 모든 인간이 생성하는 모든 정보를 포함하려고 노력할 것입니다. 이 정보를 통해 모델의 수십억 개의 매개변수가 지속적으로 유지될 수 있습니다. 예를 들어 2043475번째 매개변수를 4로 늘리고 9047113456번째 매개변수를 17로 줄여 최적화하면 더욱 스마트한 신경망 모델을 얻을 수 있습니다.

이 모델은 점점 더 똑똑해지고 있지만 개인보다는 인간에 더 가깝습니다. 자체 데이터를 사용하여 모델을 재교육하면 완전히 다른 것을 얻을 수 있습니다. 내가 생성하는 데이터의 양이나 내가 사용하는 사전 훈련된 모델의 매개변수 양과 구조가 내 뇌와 유사한 모델을 지원하지 못할 수도 있지만, 그렇게 하려는 시도는 여전히 매우 흥미롭습니다.

이 웹페이지를 재배포하고 중간에 서버리스 보호 계층을 추가했습니다. 따라서 이제 모든 사람이 이 디지털 버전의 나와 채팅을 시도할 수 있습니다. 이 서비스는 내 조상 V100 서버에서 제공됩니다. 사람이 많아서 여러가지 문제가 있을 수 있으니 하단에 링크를 걸어 놓겠습니다.

더 많은 데이터를 적극적으로 그리고 진심으로 생산할수록 미래에 디지털 사본을 더 가까이 얻을 가능성이 높아집니다. 여기에는 도덕적, 심지어 윤리적 문제가 있을 수 있지만 높은 확률로 이런 일이 일어날 것입니다. , 더 많은 데이터가 축적되거나 더 나은 사전 훈련 모델과 훈련 방법이 있으면 언제든지 다시 훈련을 시도할 수 있습니다. 이는 어느 정도 수익 창출이나 비즈니스 관련 프로젝트가 아닐 것입니다. 나 자신을 추구하기 위해.

이렇게 생각해보면 삶이 덜 외로운 것 같아요.

Attached

내 디지털 복제 온라인 채팅: https://ai.greatdk.com

하단을 클릭하여 원본 텍스트를 읽어 체험해 볼 수도 있지만 추론을 제공하는 조상 V100 그래픽 카드가 하나만 있기 때문입니다. , I 요청 제한이 설정되어 있습니다. 10분마다 서비스를 다시 시작하겠습니다. 멈춘다면 잠시 후 다시 시도해 보세요. :

WechatExporter: https://github.com/BlueMatthew/WechatExporter
  • chatglm-6b: https://github.com/THUDM/ChatGLM-6B
  • zero_nlp: https://github.com/ yuanzhoulvpi2017/ zero_nlp
  • chatglm_finetuning: https://github.com/ssbuild/chatglm_finetuning
  • MoeChat: https://github.com/Fzoss/MoeChat
  • Alpaca: https://crfm.stanford.edu/2023/03 /13 /alpaca.html
  • LLAMA: https://github.com/facebookresearch/llama

위 내용은 "개인 WeChat 채팅 기록과 블로그 게시물을 사용하여 나만의 디지털 클론 AI를 만들었습니다."의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제