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

[复制链接]
发表于 2026-2-26 16:30:28 | 显示全部楼层 |阅读模式
大模子干系目次

大模子,包罗摆设微调prompt/Agent应用开辟、知识库加强、数据库加强、知识图谱加强、天然语言处理处罚、多模态等大模子应用开辟内容
从0起步,扬帆起航。

  • 大模子应用向开辟路径及一点个人思考
  • 大模子应用开辟实用开源项目汇总
  • 大模子问答项目问答性能评估方法
  • 大模子数据侧总结
  • 大模子token等根本概念及参数和内存的关系
  • 大模子应用开辟-华为大模子生态规划
  • 从零开始的LLaMA-Factory的指令增量微调




一、LLaMA-Factory简介

LLaMA-Factory是开源的大模子微调框架,在模子微调方式、参数设置、数据集设置、模子生存、模子归并、模子测试以及模子试用上,提供了非常完备的开辟接口。其框架利用情势分为指令与界面两种。
二、利用预备

1.拉取项目并摆设相应情况(微调chatGLM3 6B很流通,微调Qwen系列大概须要按错误提示对情况举行补包),并激活。
   conda activate zwllama_factory

  2.下载模子到本地

3.自行预备数据集
包罗:


  • 自我认知数据集(微调后大概结果也比力一样平常,须要多次微调,大概共同prompt。)
  • 通用数据集(微调时用不消均可,可保持模子通用本领。且LLaMA-Factory的data文件夹下有alpaca_gpt4_data_zh等已经备好的数据集,不须要刻意定制。)
  • 特定范畴数据集
    根本格式如下(alpaca,一种指令微调的格式。固然尚有其他格式):
  1. [
  2.   {
  3.     "instruction": "你好",
  4.     "input": "",
  5.     "output": "您好,我是XX大模型,一个由XXX开发的 AI 助手,很高兴认识您。请问我能为您做些什么?"
  6.   },
  7.   {
  8.     "instruction": "你好",
  9.     "input": "",
  10.     "output": "您好,我是XX大模型,一个由XXX打造的人工智能助手,请问有什么可以帮助您的吗?"
  11.   }
  12.   ]
复制代码
此中,instruction和input可以都添补进内容,如把题目作为input,把“答复题目这一要求”作为instruction。听说这种指令微调数据集的格式结果比力好。
预备数据及后,应上传所用到的数据集至项目路径下data文件夹
data文件夹下的数据集要想利用,还需在dataset_info.json下举行登记注册。

此中,file_sha1可通过如下代码盘算得到,该字段要求并不严格,有即可,重要为了区分重复文件,作uuid利用。
  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 = r'C:\Users\12258\Desktop\xxx.json'  # 替换为您的文件路径
  16. sha1_hash = calculate_sha1(file_path)
  17. print("SHA-1 Hash:", sha1_hash)
复制代码
二、单卡微调

单卡微调每每针对6B、7B等规模不大的大模子,因此界面化利用完全狗满意需求。
下述指令启动界面:
  1. CUDA_VISIBLE_DEVICES=0 python src/train_web.py
复制代码
如下图所示设置页面信息



可见界面微调的本质仍然是后端的指令。
点击开始,开始微调,界面无反应,后端开始加载

加载完毕后,前端界面出现练习所需时间和丧失曲线。

留意,练习随时可以停止。
测试集对微调模子性能评估


微调模子问答利用


微调模子增量模子导出


三、多卡微调


新增config.yaml文件在README同级目次,内容如下:
  1. compute_environment: LOCAL_MACHINE
  2. debug: false
  3. distributed_type: MULTI_GPU
  4. downcast_bf16: 'no'
  5. gpu_ids: all
  6. machine_rank: 0
  7. main_training_function: main
  8. mixed_precision: fp16
  9. num_machines: 1
  10. num_processes: 2
  11. rdzv_backend: static
  12. same_network: true
  13. tpu_env: []
  14. tpu_use_cluster: false
  15. tpu_use_sudo: false
  16. use_cpu: false
复制代码
运行如下下令即可微调:
  1. accelerate launch --config_file config.yaml src/train_bash.py \
  2.     --ddp_timeout 180000000 \
  3.     --stage sft \
  4.     --do_train True \
  5.     --model_name_or_path /home/gputest/sgq/text-generation-webui/models/Qwen1.5-14B-Chat \
  6.     --finetuning_type lora \
  7.     --template default \
  8.     --dataset_dir data \
  9.     --dataset self_cognition_modified,approval_data_ls_300 \
  10.     --cutoff_len 1024 \
  11.     --learning_rate 5e-05 \
  12.     --num_train_epochs 3.0 \
  13.     --max_samples 100000 \
  14.     --per_device_train_batch_size 2 \
  15.     --gradient_accumulation_steps 8 \
  16.     --lr_scheduler_type cosine \
  17.     --max_grad_norm 1.0 \
  18.     --logging_steps 5 \
  19.     --save_steps 100 \
  20.     --warmup_steps 0 \
  21.     --optim adamw_torch \
  22.     --output_dir saves/Qwen1.5-14B/lora/train_2024-03-21-02-22-33 \
  23.     --fp16 True \
  24.     --lora_rank 8 \
  25.     --lora_alpha 16 \
  26.     --lora_dropout 0.1 \
  27.     --lora_target q_proj,v_proj \
  28.     --plot_loss True
复制代码
固然上述代码内容须要根据你的现实需求举行肯定修改。

四、其他


更多信息可以访问开源项目举行相识。

本帖子中包含更多资源

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

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表