【小白也能会的】通过微信聊天记录训练一个AI模型
[Step1] 数据准备:微信聊天记录清洗至用于llama3微调的alpaca数据集
[step1.0] Github ( LC044 / WeChatMsg )下载 #MemoTrace使用该程序导出csv格式的聊天记录文件
该程序里面选择批量导出-文本-json可以直接导出json格式,有两个文件 _train.json 和 _dev.json,这是训练集和验证集。
在 #ChatGLM3 微调中,对于一组完整的微调数据集,必须包含训练数据集和验证数据集,测试数据集可以不填写。或者直接用验证数据集代替。
!但是该导出方法可能会导致一些聊天记录的混乱,且不是alpaca数据集,所以我们先导出csv格式,然后使用我写好的程序进行数据清洗
[step1.1] 运行 #data_cleaner 程序
1 | python data_cleaner.py |
该程序会操作逻辑如下
- 删去CSV所有
StrContent
为空的内容 - 我们假定要让AI参考 “A” 说的话 作为
response
,那么“我”说的话就是instruction
- 将聊天记录按照时间分块:数据块csv表头有一行CreateTime,它的两行unix时间戳若相差超过
3 * 3600 秒
(3小时) 我们认为对话已经结束了,下一段对话开启了。
这时候有两种情况:- 对话是“我”发起的:提取这个csv文件里sender为“我”时的StrContent内容列作为下面json中instruction; sender为“A”时,StrContent内容作为json中instruction作为output。 如果连续n行是相同的sender,将其合并为一个instruction或者output。确保”instruction”字段只包含sender为“我”的内容,而”output”字段只包含sender为“A”的内容,并且不会有空行。
- 对话是 “A”发起的:规则同上,但是由于对话由”A”发起,所以该聊天段第一个instruction应为“A”的内容+“我”的回复,output为下一条“A”对我回复的回复。该对齐操作完成后,后面和对话为“我”发起时的处理方法相同。
- 去掉无用的标签,以及
instruction
或output
为空行的块 - 精简对话,合并一些output,鼓励AI更长的回答(否则回答质量会劣化)。
data.json
例子如下:
1 | { "instruction": "你好", "input": "", "output": "皇上好,我是甄嬛,家父是大理寺少卿甄远道。" }, { "instruction": "你不愿意见我?", "input": "", "output": "不该相见自然不愿见,还望王爷尊重我的意愿。" } |
该程序会在目录下生成四个json,一般使用最后一个
json_step4.json
作为后续操作的数据集
[step1.2] 运行 #data_mix 程序
1 | python data_mix.py |
如果对话集过长,直接丢进去给模型微调会造成模型能力的劣化,所以我们需要混一些[正常]的数据集进去,这里使用的是 #open-chinese/alpaca-chinese-dataset 的其中几个数据集
[step1.2]是可选项,如果你的数据集比较短,则没必要进行该操作。
此外,我为我模型自定义了两个功能 [严肃模式]和[分析模式],在data_mix.py中
input_files=
一行填入anlysismode.json
和strictmode
将会把这两个模式的数据集加入到你的数据集中
最后会输出一个merged_data.json
这个是最后处理完的数据集
[Step2] 基于Unsloth的训练
由于llama3-8B是一个英文模型, 我们在此使用 #shenzhi-wang/Llama3-8B-Chinese-Chat 的llama3-8B模型的中文版本进行微调会有更好的效果。
这里提供一个最简单的训练方式
- 使用Colab并挂载谷歌硬盘后,将
merge_data.json
放入(/Content)/Drive/MyDrive
目录下 - 运行!!!
需要注意的参数
即可
[Step3] 下载LM Studio或者Ollama运行你的GUFF模型
对于 8GB显存的机器来说,8Bit模型的Llama3-8B可能无法在LM Studio里运行,但是可以在Ollama中运行
对于新手来说,推荐下载LM Studio
- Title: 【小白也能会的】通过微信聊天记录训练一个AI模型
- Author: Kevin Tsang
- Created at : 2024-07-01 00:00:00
- Updated at : 2025-03-31 04:38:16
- Link: https://blog.infrost.site/2024/07/01/【小白也能会的】通过微信聊天记录训练一个AI模型/
- License: This work is licensed under CC BY-NC-SA 4.0.