IT评测·应用市场-qidao123.com

标题: 基于LLaMA-Factory的微调记录 [打印本页]

作者: 曹旭辉    时间: 2024-7-15 15:50
标题: 基于LLaMA-Factory的微调记录
LLaMA-Factory是一个非常好用的无代码微调框架,不管是在模子、微调方式还是参数设置上都提供了非常完备的支持,下面是对微调全过程的一个记录。
数据模子准备

微调时一般需要准备三个数据集:一个是自我认知数据集(让大模子知道自己是谁),一个是特定任务数据集(微调时需要完成的目标任务),一个是通用任务数据集(保持大模子的通用本领,防止变傻)。前两个一般要自己定义,最后一个用现成的就行。
自定义数据集可采取alpaca和sharegpt格式,这里采取的是alpaca格式:
  1. [
  2.   {
  3.     "instruction": "用户指令(必填)",
  4.     "input": "用户输入(选填)",
  5.     "output": "模型回答(必填)",
  6.     "system": "系统提示词(选填)",
  7.     "history": [
  8.       ["第一轮指令(选填)", "第一轮回答(选填)"],
  9.       ["第二轮指令(选填)", "第二轮回答(选填)"]
  10.     ]
  11.   }
  12. ]
复制代码
由于不需要考虑多轮对话,所以history可以不要,这里采取了两种数据集的组织方式,一种是只有instruction和output,把问题作为instruction,另外一种是把问题作为input,把答复问题这一要求作为instruction。这两种格式分别记为format2和format3。
在根据多少个不同的专业范畴生成完多个自定义的问答json文件之后,分别生成其format2和format3的文件以及test测试文件,根据以下代码计算其sha1值:
  1. import hashlib
  2. def calculate_sha1(file_path):
  3.     sha1 = hashlib.sha1()
  4.     try:
  5.         with open(file_path, 'rb') as file:
  6.             while True:
  7.                 data = file.read(8192)  # Read in chunks to handle large files
  8.                 if not data:
  9.                     break
  10.                 sha1.update(data)
  11.         return sha1.hexdigest()
  12.     except FileNotFoundError:
  13.         return "File not found."
  14. # 使用示例
  15. file_path = './data/self_cognition_modified.json'  # 替换为您的文件路径
  16. sha1_hash = calculate_sha1(file_path)
  17. print("SHA-1 Hash:", sha1_hash)
复制代码
将这些json文件放入data文件夹下,同步修改dataset_info.json文件,输入新增的文件名称和对应的sha1值。
测试的大模子可以使用这些,注意要下载最新版,老版的模子结构不太匹配。

基于网页的简单微调

在背景执行CUDA_VISIBLE_DEVICES=0 python src/train_web.py命令,成功开启网页,设置如下,手动输入模子路径。


训练完成之后的界面,可以查察丧失函数

基于网页的简单评测


基于网页的简单谈天

切换到Chat并点击加载模子后,可以进入谈天

基于网页的模子合并

把lora的权重合并到原始模子中

微调问题测试与解决

问题测试

虽然在评估时看着分数挺高,但实际使用起来,问题还是挺大的:

模板修改

ChatGLM之所以一口咬定自己是智谱开发的,重要缘故原由是有个系统提示词,打开src/llmtuner/data/template.py文件,将以下部门删除

强化训练

为了让大模子学习更深入,补充通用数据集,增长学习率和epoch,再来一次微调


这一次自我认知倒是调出来了

但是专业问题还是不可

持续训练

在训练出来的这个lora的基础上,为了进一步增强其专业本领,将数据集中的通用和认知数据集去掉,仅保留目前答复欠好的几个专业问答数据集,并减小截断长度和增大batch巨细:

可以看到训练曲线又下降了一点

但是此时专业问答本领依然不太行,而且认知也退化了,看来洗脑不能停:

单数据集训练

考虑到不同数据集的专业范畴不同,模子可能无法一次集中学习,因此我们尝试使用单个数据集举行微调,包罗了其format2和format3格式,实行结果表现format3更好一些。

微调总结

以下是根据手头几个问答数据集的测试结果做的总结,不肯定对,详细问题还需详细分析。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4