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

大模型向量数据库机器学习

picture.image

大家好,我是梦飞。

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

本次带来的教程是:

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

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

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

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

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

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

本次要完成以下步骤如下:1、导出微信聊天记录

2、整理导出的聊天记录为数据集格式

3、部署LLamaFactory和微调大模型

4、发布微调后的模型为API

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

补充说明:

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

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

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

一、导出聊天记录

  1. 我们需要借助一个工具:“MemoTrace 留痕”,是一款强大的微信聊天记录管理工具

工具主页:https://memotrace.cn/#price

点击链接直接去主页下载。

下载后,根据提示进行安装,安装完成后看到以下界面

picture.image

  1. 在这台电脑上登录微信,然后直接点击获取信息,会自动获取到你的微信信息

picture.image

  1. 点击解析数据,开始解析,等待解析完成。
  2. 选择「好友」导航栏,选择你聊天比较多的好友。(之前可以多选导出全部,但是最新版本不可以了,也可能是我没找到功能点,大家可以找找看,但根据经验,建议只导出自己经常聊天的几个人的记录就可以了,太多没有连续对话的,没有背景信息的上下文,反而可能导致效果不好。
  3. 点击「导出json」,只要这个格式是最方便转换为我们需要的训练集格式。

picture.image

  1. 导出后我们会得到两个文件,我们只需要用到_train后缀的文件即可。

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

  1. 如果你导出了多个人的,需要你手动将这个文件下的内容,全部汇总到一起。

picture.image

  1. 汇总完成后,保存你的汇总文件,命名为“train.json”。

picture.image

  1. 在当前文件夹下新建一个文本文档,重命名为“1.py”,然后用记事本打开,粘贴进入以下代码。

⚠️中间有一个名字,这个地方注意需要修改。

  
import json  
import re  
import 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 script  
input_file = 'train.json' # Update this to your actual input file name  
output_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”

picture.image

picture.image

  1. 聊天记录整理完成,在第31步时会用到。

三、部署LLama Factory

  1. 打开MicroSoft Store,搜索Ubuntu
  2. 找到Ubuntu 18.04.6 LTS版本,点击下载

picture.image

  1. 下载完成后,点击打开,如下图

picture.image

  1. 先输入你的用户名,然后点击回车,再输入密码,然后点击回车(注意,在Ubuntu中,输入的用户名和密码是不现实的,输入后直接回车即可)
  2. 密码输入后回车,会显示:操作成功和下方代码。

picture.image

  1. 升级apt,输入以下命令,点击回车。输入你的用户密码,点击回车,开始自动升级。
  
sudo apt update && sudo apt full-upgrade -y

出现绿色的用户名代表执行完成。

picture.image

  1. 输入以下命令,下载安装conda
  
wget -U NoSuchBrowser/1.0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2024.02-1-Linux-x86\_64.sh

picture.image

  1. 输入以下命令,安装conda(输入命令后,一直按着回车)
  
sh Anaconda3-2024.02-1-Linux-x86\_64.sh

picture.image

  1. 激活conda环境,一行一行,依次输入以下命令
  
cd   
cd anaconda3/   
cd bin   
./conda init

picture.image

  
source ~/.bashrc

picture.image

  1. 下载通义千问-0.5b大模型(最小模型,大家都能玩,先跑通再来下载更大的模型)
  2. 输入以下代码,检查你是否有git,显示版本号就是有git。
  
cd  
git --version
  1. 每一行,依次粘贴输入以下代码,保证你的 lfs 可用
  
sudo apt-get update  
sudo apt-get install git-lfs  
  
mkdir my-new-repo  
cd my-new-repo  
git init  
git status  
git lfs install

picture.image

picture.image

  1. 输入以下代码,下载大模型
  
cd ..  
git clone https://www.modelscope.cn/Qwen/Qwen2-0.5B.git

picture.image

  1. 下载LLaMA-Factory
  
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git

picture.image

  1. 下载完成后,依次一行一行的粘贴下方命令并回车,创建一个LLaMA-Factory运行的专属环境
  
cd LLaMA-Factory  
conda create -n fine-tuning python=3.10

picture.image

picture.image

最后需要输入一个“y”,输入后回车即可。

  1. 输入以下代码,激活 fine-tuning环境。
  
conda activate fine-tuning

picture.image

  1. 安装依赖文件,输入以下命令等待下载完成。
  
pip install -e ".[torch,metrics]" -i https://pypi.tuna.tsinghua.edu.cn/simple

picture.image

  1. 运行LLaMA-Factory,并打开操作页面。

输入以下命令行,等待他自动打开操作页面。

  
llamafactory-cli webui

picture.image

看到这个页面,恭喜你,完成了工具的部署。如果英语看着不习惯,你可以在左上角选择“切换中文语言”

  1. 查找模型路径

打开你的电脑文件管理器,找到Linux,home文件夹-用户名,然后可以看到你刚才下载的模型名称。点击进入

picture.image

picture.image

  1. 复制home后边的路径,粘贴进入:「模型路径输入框」,选择对应的「模型名称」

(此处有坑!注意,直接复制的路径是\反斜杠,但需要的是/ ,所以需要把路径中的斜杠替换以下,如下图。)

picture.image

微调方法设置为:lora,检查点路径不用管。

  1. 把你在第11步整理好的数据,复制粘贴到你的\LLaMA-Factory\data文件夹下,粘贴完成后。
  2. 打开dataset_info.json文件,修改文件内容。在这个文件的最后,粘贴进入以下代码

picture.image

picture.image

  
,  
  
 "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”数据集。

picture.image

  1. 再找到这个文件夹下的“identity.json”文件,双击打开

picture.image

然后快捷键Ctrl+H,全局替换这个地方的内容。

picture.image

  1. 再添加选中“identity”数据集。

picture.image

  1. 训练轮数改成15,其他的都暂时不动。
  2. 点击「预览命令」,无报错后,点击「开始」,开始训练。

picture.image

picture.image

  1. 选择chat页,点击「检查点路径」,选择刚才训练Lora的输出目录名称,然后点击加载模型。

picture.image

加载完成后,在下方输入问题,测试大模型。可以问AI,他是谁。他应该会回答你,你设置的名字。

picture.image

这里需要说明下:训练大模型是一个需要反复调试的复杂过程,数据集和训练参数都会影响最终的训练效果,本次旨在带大家体验和跑通流程,模型的调优需要大家更深入的去学习和实践。

四、发布模型为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。

填入正确的地址后,直接粘贴到命令窗口中,点击回车。

picture.image

picture.image

  
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

picture.image

picture.image

  1. 看到出现最后一行 http://0.0.0.0:8000后,再打开一个Ubuntu命令行窗口,输入
  
hostname -I

picture.image

你会得到一个172.17.xx.xxx 的地址。我这里是172.17.35.174

  1. 拿到这个地址后,打开浏览器输入:172.17.xx.xxx:8000/docs

你会进入到FastAPI的UI页面,如下图:

picture.image

  1. 点击第二个POST,打开折叠口

picture.image

picture.image

  1. 点击后往下滚动,如果看到Server response在的Code编码是“200”,说明API访问成功。

picture.image

五、链接微信机器人

根据本地部署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"

然后扫码执行登录,就大功告成了!

picture.image

如果遇到任何问题,可下方评论或者联系我,尽力回复和解答

往期推荐:

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

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

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

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

以上内容,如有错漏,欢迎留言补充、批评、指正。

⚡以上如果对你有帮助,请转发、在看、点赞三连支持

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论