【小白也能会的】通过微信聊天记录训练一个AI模型

Kevin Tsang Lv2

[Step1] 数据准备:微信聊天记录清洗至用于llama3微调的alpaca数据集

[step1.0] Github ( LC044 / WeChatMsg )下载 #MemoTrace使用该程序导出csv格式的聊天记录文件

LC044/WeChatMsg: 提取微信聊天记录,将其导出成HTML、Word、Excel文档永久保存,对聊天记录进行分析生成年度聊天报告,用聊天数据训练专属于个人的AI聊天助手 (github.com)

该程序里面选择批量导出-文本-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”对我回复的回复。该对齐操作完成后,后面和对话为“我”发起时的处理方法相同。
  • 去掉无用的标签,以及instructionoutput为空行的块
  • 精简对话,合并一些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.jsonstrictmode将会把这两个模式的数据集加入到你的数据集中

最后会输出一个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.
Comments