基于LLaMA-Factory的微调记录

打印 上一主题 下一主题

主题 515|帖子 515|积分 1555

LLaMA Factory 是一个易于使用的大规模语言模型微调框架。它具有以下特点:


  • 支持多种模型:包罗 LLaMA、BLOOM、Mistral、Baichuan、Qwen、ChatGLM、Phi 等。
  • 集成多种方法:涵盖(增量)预训练、指令监督微调、奖励模型训练、PPO 训练、DPO 训练和 ORPO 训练等集成方法;支持 32 比特全参数微调、16 比特冻结微调、16 比特 LoRA 微调和基于 AQLM/AWQ/GPTQ/LLM.int8 的 2/4/8 比特 QLoRA 微调等多种精度;包罗 GaLore、DoRA、LongLoRA、LLaMAPro、LoRA+、LoftQ 和 Agent 微调等先进算法;具备 FlashAttention-2、Unsloth、RoPEscaling、NEFTune 和 rsLoRA 等实用技巧;提供 LlamaBoard、TensorBoard、Wandb、MLflow 等实验监控;支持基于 vLLM 的 OpenAI 风格 API、浏览器界面和命令行接口的极速推理。
  • 提供 WebUI 页面:方便非开辟人员举行微调工作。
其部署安装相对简单,步调如下:

  • 克隆仓库:git clone https://github.com/hiyouga/LLaMA-Factory.git
  • 创建虚拟情况:conda create -n llama_factory python=3.10
  • 激活虚拟情况:conda activate llama_factory
  • 安装依赖:cd LLaMA-Factory,然后执行pip install -r requirements.txt
接下来可以下载所需的 LLM 模型,比方 BaiChuan 模型,注意如果使用 BaiChuan 模型,需要修改 transformers 的版本为 4.33.2,否则可能会报AttributeError: 'BaichuanTokenizer' object has no attribute 'p_model'的错误。
在使用 LLaMA Factory 举行微调时,需要指定训练方式(如预训练、指令监督微调等)、选择微调计谋(如 LoRA 或 QLoRA),并准备相应的数据集。它提供了命令行接口或 WebUI 来举行具体的操纵和监控微调过程。
如果你想了解更多关于 LLaMA Factory 的详细信息,比方怎样加载训练数据、模型评估本领等,可以参考其项目的 GitHub 页面(https://github.com/hiyouga/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命令,成功开启网页,设置如下,手动输入模型路径。

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

基于网页的简单评测
原始模型评测


微调后模型评测
首先加载lora

可以看到,微调之后的模型在各个指标上有了显著提拔
基于网页的简单聊天
切换到Chat并点击加载模型后,可以进入聊天

文章来源: https://gitcode.csdn.net/66274faca2b051225565dba8.html

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

来自云龙湖轮廓分明的月亮

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表