查看原文
其他

不能秒回女友?用聊天记录克隆AI分身,分分钟化身为1V100的“时间管理大师”!

UU大王 Equity AI
2024-10-20


大家好,我是梦飞。

好久不见,一个月前发布的视频号内容,今天终于能够填坑了!


本次带来的教程是:

《用聊天记录克隆自己的AI分身》


在我多次尝试(其实是多个平台账号欠费之后),终究是放弃了让大家云端使用,学习和使用成本太高。

为了降低门槛,本篇教程依然全程本地操作,无需调用云端资源。让大家既能体验大模型训练和调用,又可以无负担的使用自己微调后的大模型!


话不多数,准备开始,首先明确下目标:

本篇教程的目标是,把自己微信中的聊天记录导出,用自己的聊天记录去微调一个模型,最终将这个微调后的模型接入微信中,替你回复消息。

本文较长,看不完建议先!收!藏!


本次要完成以下步骤如下:1、导出微信聊天记录2、整理导出的聊天记录为数据集格式3、部署LLamaFactory和微调大模型4、发布微调后的模型为API

5、接入Cow微信机器人项目


补充说明:

1. 本篇教程可以带你手把手无痛的体验如何自建数据集,并使用LoRA微调大模型(SFT)。但模型训练是一个多方因素影响,需要不断调参、优化。因此受数据集质量和参数影响,即使跟随本篇教程完全操作完成,是不能保证你训练的模型是“聪明”可用的。因此需要放低期待,沉下心去做。

2. 同时也因我简化了内容,所以门槛相对降低很多,因此相信你花点时间就一定可以完成。


以下教程基于Windows11系统进行制作。


一、导出聊天记录

  1. 我们需要借助一个工具:“MemoTrace 留痕”,是一款强大的微信聊天记录管理工具
工具主页:https://memotrace.cn/#price点击链接直接去主页下载。下载后,根据提示进行安装,安装完成后看到以下界面
  1. 在这台电脑上登录微信,然后直接点击获取信息,会自动获取到你的微信信息
  1. 点击解析数据,开始解析,等待解析完成。
  2. 选择「好友」导航栏,选择你聊天比较多的好友。(之前可以多选导出全部,但是最新版本不可以了,也可能是我没找到功能点,大家可以找找看,但根据经验,建议只导出自己经常聊天的几个人的记录就可以了,太多没有连续对话的,没有背景信息的上下文,反而可能导致效果不好。
  3. 点击「导出json」,只要这个格式是最方便转换为我们需要的训练集格式。
  1. 导出后我们会得到两个文件,我们只需要用到_train后缀的文件即可。

二、整理聊天记录为数据集

  1. 如果你导出了多个人的,需要你手动将这个文件下的内容,全部汇总到一起。
  1. 汇总完成后,保存你的汇总文件,命名为“train.json”。
  1. 在当前文件夹下新建一个文本文档,重命名为“1.py”,然后用记事本打开,粘贴进入以下代码。
⚠️中间有一个名字,这个地方注意需要修改。
import jsonimport reimport os
def process_file(input_file, output_file): try: with open(input_file, 'r', encoding='utf-8') as f: content = f.read() print(f"Successfully read input file: {input_file}")
# Remove leading '[' and trailing ']' content = content.strip()[1:-1]
# Use regex to match each dialogue object pattern = r'\{[^{}]*"messages":\s*\[[^[\]]*\][^{}]*\}' matches = re.finditer(pattern, content) match_count = 0
with open(output_file, 'w', encoding='utf-8') as f: for match in matches: dialogue = json.loads(match.group()) # Ensure each dialogue has a system message if not any(msg['role'] == 'system' for msg in dialogue['messages']): dialogue['messages'].insert(0, { "role": "system", "content": "你是张梦飞(此处换成你的名字),一个聪明、热情、善良的人,后面的对话来自你的朋友,你要认真地回答他" }) # Write JSON object in OpenAI format f.write(json.dumps({"messages": dialogue['messages']}, ensure_ascii=False) + '\n') match_count += 1
print(f"Processing complete. {match_count} dialogues written to {output_file}")
except FileNotFoundError: print(f"Error: Input file not found: {input_file}") except json.JSONDecodeError as e: print(f"Error: Invalid JSON in input file: {e}") except Exception as e: print(f"An unexpected error occurred: {e}")
# Use the scriptinput_file = 'train.json' # Update this to your actual input file nameoutput_file = 'train_formatted.jsonl'current_dir = os.path.dirname(os.path.abspath(__file__))input_path = os.path.join(current_dir, input_file)output_path = os.path.join(current_dir, output_file)
print(f"Input file path: {input_path}")print(f"Output file path: {output_path}")
process_file(input_path, output_path)
  1. 打开命令行窗口,输入“python 1.py”
  1. 聊天记录整理完成,在第31步时会用到。


三、部署LLama Factory

  1. 打开MicroSoft Store,搜索Ubuntu
  2. 找到Ubuntu 18.04.6 LTS版本,点击下载
  1. 下载完成后,点击打开,如下图
  1. 先输入你的用户名,然后点击回车,再输入密码,然后点击回车(注意,在Ubuntu中,输入的用户名和密码是不现实的,输入后直接回车即可)
  2. 密码输入后回车,会显示:操作成功和下方代码。
  1. 升级apt,输入以下命令,点击回车。输入你的用户密码,点击回车,开始自动升级。
sudo apt update && sudo apt full-upgrade -y出现绿色的用户名代表执行完成。18. 输入以下命令,下载安装conda
wget -U NoSuchBrowser/1.0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2024.02-1-Linux-x86_64.sh
  1. 输入以下命令,安装conda(输入命令后,一直按着回车)
sh Anaconda3-2024.02-1-Linux-x86_64.sh
  1. 激活conda环境,一行一行,依次输入以下命令
cd cd anaconda3/ cd bin ./conda init
source ~/.bashrc
  1. 下载通义千问-0.5b大模型(最小模型,大家都能玩,先跑通再来下载更大的模型)
  2. 输入以下代码,检查你是否有git,显示版本号就是有git。
cdgit --version
  1. 每一行,依次粘贴输入以下代码,保证你的 lfs 可用
sudo apt-get updatesudo apt-get install git-lfs
mkdir my-new-repocd my-new-repogit initgit statusgit lfs install
  1. 输入以下代码,下载大模型
cd ..git clone https://www.modelscope.cn/Qwen/Qwen2-0.5B.git
  1. 下载LLaMA-Factory
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
  1. 下载完成后,依次一行一行的粘贴下方命令并回车,创建一个LLaMA-Factory运行的专属环境
cd LLaMA-Factoryconda create -n fine-tuning python=3.10最后需要输入一个“y”,输入后回车即可。
  1. 输入以下代码,激活 fine-tuning环境。
conda activate fine-tuning
  1. 安装依赖文件,输入以下命令等待下载完成。
pip install -e ".[torch,metrics]" -i https://pypi.tuna.tsinghua.edu.cn/simple
  1. 运行LLaMA-Factory,并打开操作页面。
输入以下命令行,等待他自动打开操作页面。
llamafactory-cli webui看到这个页面,恭喜你,完成了工具的部署。如果英语看着不习惯,你可以在左上角选择“切换中文语言”
  1. 查找模型路径
打开你的电脑文件管理器,找到Linux,home文件夹-用户名,然后可以看到你刚才下载的模型名称。点击进入
  1. 复制home后边的路径,粘贴进入:「模型路径输入框」,选择对应的「模型名称」
(此处有坑!注意,直接复制的路径是\反斜杠,但需要的是/ ,所以需要把路径中的斜杠替换以下,如下图。)微调方法设置为:lora,检查点路径不用管。
  1. 把你在第11步整理好的数据,复制粘贴到你的\LLaMA-Factory\data文件夹下,粘贴完成后。
  2. 打开dataset_info.json文件,修改文件内容。在这个文件的最后,粘贴进入以下代码
,
"train_formatted": { "file_name": "train_formatted.jsonl", "formatting": "sharegpt", "columns": { "messages": "messages" }, "tags": { "role_tag": "role", "content_tag": "content", "user_tag": "user", "assistant_tag": "assistant", "system_tag": "system" } }
  1. 返回LLaMA的页面,查看「数据集」,选择刚刚添加完成的“train_formatted”数据集。
  1. 再找到这个文件夹下的“identity.json”文件,双击打开
然后快捷键Ctrl+H,全局替换这个地方的内容。
  1. 再添加选中“identity”数据集。
  1. 训练轮数改成15,其他的都暂时不动。
  2. 点击「预览命令」,无报错后,点击「开始」,开始训练。
  1. 选择chat页,点击「检查点路径」,选择刚才训练Lora的输出目录名称,然后点击加载模型。
加载完成后,在下方输入问题,测试大模型。可以问AI,他是谁。他应该会回答你,你设置的名字。
这里需要说明下:训练大模型是一个需要反复调试的复杂过程,数据集和训练参数都会影响最终的训练效果,本次旨在带大家体验和跑通流程,模型的调优需要大家更深入的去学习和实践。

四、发布模型为API

  1. 对外发布训练后的模型接口
新开一个Ubuntu命令窗口,可以还从Microsoft Store打开,也可以从你的「系统」打开一个新的命令窗口。新打开的Ubuntu窗口,还是默认账户,如果你设置了用户名,需要输入,然后输入密码进入
su - 你的用户名然后需要激活啊conda环境,输入以下代码激活,
conda activate fine-tuning
  1. 以下是一个命令模版,你需要填入【你自己的文件路径】
*(1)下方命令行,标红的地方,要改成你自己源模型地址源模型地址,在你的LLaMA-Factory文件夹的同级目录下*(2)标绿的地方,要改成你自己LoRA地址你训练后的LoRA地址,在你的LLaMA-Factory\saves\Qwen2-0.5B\lora\文件夹下,这里存放了你刚才命名的Lora。填入正确的地址后,直接粘贴到命令窗口中,点击回车。



CUDA_VISIBLE_DEVICES=2 API_PORT=8000 llamafactory-cli api --model_name_or_path /home/zmf/Qwen2-0.5B --adapter_name_or_path /home/zmf/LLaMA-Factory/saves/Qwen2-0.5B/lora/train_2024-10-09-00-20-10 --template qwen --finetuning_type lora
  1. 看到出现最后一行 http://0.0.0.0:8000后,再打开一个Ubuntu命令行窗口,输入
hostname -I你会得到一个172.17.xx.xxx 的地址。我这里是172.17.35.174
  1. 拿到这个地址后,打开浏览器输入:172.17.xx.xxx:8000/docs
你会进入到FastAPI的UI页面,如下图:
  1. 点击第二个POST,打开折叠口
  1. 点击后往下滚动,如果看到Server response在的Code编码是“200”,说明API访问成功。


五、链接微信机器人

根据本地部署COW的教程,参考此篇在你自己电脑上部署COW微信机器人项目,将COW部署完成后。

替换COW中的config.json文件中的字段为:

"model":"qwen2-0.5b","open_ai_api_base":"http://172.17.35.174:8000/v1","open_ai_api_key":"sk-123456",然后扫码执行登录,就大功告成了!
如果遇到任何问题,可下方评论或者联系我,尽力回复和解答


往期推荐:

1. 在你自己电脑上部署COW微信机器人项目

2. 留学睡马路、归国住公司,绿皮火车和20块的青旅大通铺 —— 一个普通人从地球到火星的梦想之路

3. 【AI+知识库】商业化问答场景,让AI回复更准确,一篇专为所有“小白”讲透RAG的实例教程(下篇)

4. 【微信机器人搭建共学活动汇总篇】小白做微信机器人搭建,看这一篇就够了!


以上内容,如有错漏,欢迎留言补充、批评、指正。⚡以上如果对你有帮助,请转发、在看、点赞三连支持


继续滑动看下一个
Equity AI
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存