当前位置: 代码网 > 科技>人工智能>机器学习 > 从零开始的LLaMA-Factory的指令增量微调

从零开始的LLaMA-Factory的指令增量微调

2024年07月31日 机器学习 我要评论
LLaMA-Factory是开源的大模型微调框架,在模型微调方式、参数配置、数据集设置、模型保存、模型合并、模型测试以及模型试用上,提供了非常完备的开发接口。

大模型相关目录

大模型,包括部署微调prompt/agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容
从0起步,扬帆起航。

  1. 大模型应用向开发路径及一点个人思考
  2. 大模型应用开发实用开源项目汇总
  3. 大模型问答项目问答性能评估方法
  4. 大模型数据侧总结
  5. 大模型token等基本概念及参数和内存的关系
  6. 大模型应用开发-华为大模型生态规划
  7. 从零开始的llama-factory的指令增量微调


一、llama-factory简介

llama-factory是开源的大模型微调框架,在模型微调方式、参数配置、数据集设置、模型保存、模型合并、模型测试以及模型试用上,提供了非常完备的开发接口。其框架使用形式分为指令与界面两种。

二、使用准备

1.拉取项目并部署相应环境(微调chatglm3 6b很流畅,微调qwen系列可能需要按错误提示对环境进行补包),并激活。

2.下载模型到本地
在这里插入图片描述

3.自行准备数据集
包括:

  • 自我认知数据集(微调后可能效果也比较一般,需要多次微调,或者配合prompt。)
  • 通用数据集(微调时用不用均可,可保持模型通用能力。且llama-factory的data文件夹下有alpaca_gpt4_data_zh等已经备好的数据集,不需要刻意定制。)
  • 特定领域数据集
    基本格式如下(alpaca,一种指令微调的格式。当然还有其他格式):
 [
  {
    "instruction": "你好",
    "input": "",
    "output": "您好,我是xx大模型,一个由xxx开发的 ai 助手,很高兴认识您。请问我能为您做些什么?"
  },
  {
    "instruction": "你好",
    "input": "",
    "output": "您好,我是xx大模型,一个由xxx打造的人工智能助手,请问有什么可以帮助您的吗?"
  }
  ]

其中,instruction和input可以都填充进内容,如把问题作为input,把“回答问题这一要求”作为instruction。据说这种指令微调数据集的格式效果比较好。

准备数据及后,应上传所用到的数据集至项目路径下data文件夹
data文件夹下的数据集要想使用,还需在dataset_info.json下进行登记注册。
在这里插入图片描述
其中,file_sha1可通过如下代码计算获得,该字段要求并不严格,有即可,主要为了区分重复文件,作uuid使用。


import hashlib

def calculate_sha1(file_path):
    sha1 = hashlib.sha1()
    try:
        with open(file_path, 'rb') as file:
            while true:
                data = file.read(8192)  # read in chunks to handle large files
                if not data:
                    break
                sha1.update(data)
        return sha1.hexdigest()
    except filenotfounderror:
        return "file not found."

# 使用示例
file_path = r'c:\users\12258\desktop\xxx.json'  # 替换为您的文件路径
sha1_hash = calculate_sha1(file_path)
print("sha-1 hash:", sha1_hash)

二、单卡微调

单卡微调往往针对6b、7b等规模不大的大模型,因此界面化操作完全狗满足需求。
下述指令启动界面:

cuda_visible_devices=0 python src/train_web.py

如下图所示配置页面信息
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
可见界面微调的本质依旧是后端的指令。
点击开始,开始微调,界面无反应,后端开始加载
在这里插入图片描述
加载完毕后,前端界面出现训练所需时间和损失曲线。
在这里插入图片描述
注意,训练随时可以中断。

测试集对微调模型性能评估

在这里插入图片描述

微调模型问答使用

在这里插入图片描述

微调模型增量模型导出

在这里插入图片描述

三、多卡微调

在这里插入图片描述
新增config.yaml文件在readme同级目录,内容如下:

compute_environment: local_machine
debug: false
distributed_type: multi_gpu
downcast_bf16: 'no'
gpu_ids: all
machine_rank: 0
main_training_function: main
mixed_precision: fp16
num_machines: 1
num_processes: 2
rdzv_backend: static
same_network: true
tpu_env: []
tpu_use_cluster: false
tpu_use_sudo: false
use_cpu: false

运行如下命令即可微调:

accelerate launch --config_file config.yaml src/train_bash.py \
    --ddp_timeout 180000000 \
    --stage sft \
    --do_train true \
    --model_name_or_path /home/gputest/sgq/text-generation-webui/models/qwen1.5-14b-chat \
    --finetuning_type lora \
    --template default \
    --dataset_dir data \
    --dataset self_cognition_modified,approval_data_ls_300 \
    --cutoff_len 1024 \
    --learning_rate 5e-05 \
    --num_train_epochs 3.0 \
    --max_samples 100000 \
    --per_device_train_batch_size 2 \
    --gradient_accumulation_steps 8 \
    --lr_scheduler_type cosine \
    --max_grad_norm 1.0 \
    --logging_steps 5 \
    --save_steps 100 \
    --warmup_steps 0 \
    --optim adamw_torch \
    --output_dir saves/qwen1.5-14b/lora/train_2024-03-21-02-22-33 \
    --fp16 true \
    --lora_rank 8 \
    --lora_alpha 16 \
    --lora_dropout 0.1 \
    --lora_target q_proj,v_proj \
    --plot_loss true

当然上述代码内容需要根据你的实际需求进行一定修改。
在这里插入图片描述

四、其他

在这里插入图片描述
更多信息可以访问开源项目进行了解。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com