LLaMA-Factory微调Qwen2.5-7B模型

火影  论坛元老 | 2025-3-26 11:04:53 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1879|帖子 1879|积分 5637

本次实验环境使用的魔塔社区的机子


准备LLaMA-Factory环境


  1. git clone https://github.com/hiyouga/LLaMA-Factory.git
复制代码


创建假造环境

一样平常的可以使用anaconda ,miniconda 这个免费的机器有限我就使用python的venv来创建假造环境
  1. root@eais-bjmklatuw19ea8k68zju-0:/mnt/workspace# python --version
  2. Python 3.10.14
  3. root@eais-bjmklatuw19ea8k68zju-0:/mnt/workspace# python -m venv llama_factory
复制代码

激活环境,下载依靠
  1. root@eais-bjmklatuw19ea8k68zju-0:/mnt/workspace# source llama_factory/bin/activate
  2. (llama_factory) root@eais-bjmklatuw19ea8k68zju-0:/mnt/workspace# cd LLaMA-Factory/
  3. (llama_factory) root@eais-bjmklatuw19ea8k68zju-0:/mnt/workspace/LLaMA-Factory# pip install -e ".[torch,metrics,swanlab]"
  4. Looking in indexes: https://mirrors.cloud.aliyuncs.com/pypi/simple
  5. Obtaining file:///mnt/workspace/LLaMA-Factory
  6.   Installing build dependencies ... done
  7.   Checking if build backend supports build_editable ... done
  8.   Getting requirements to build editable ... done
  9.   Preparing editable metadata (pyproject.toml) ... done
  10. Collecting gradio<=5.12.0,>=4.38.0
  11.   Downloading https://mirrors.cloud.aliyuncs.com/pypi/packages/7a/70/fb8611fabeb432d05946ef89d7acc6fde6c7e85ca9a05d39626b4cdf1a17/gradio-5.12.0-py3-none-any.whl (57.6 MB)
  12.      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 57.6/57.6 MB 32.9 MB/s eta 0:00:00
  13. Collecting pydantic...
复制代码
  1. source llama_factory/bin/activate #激活环境
  2. cd LLaMA-Factory/  #切换目录
  3. pip install -e ".[torch,metrics,swanlab]" #下载依赖
  4. pip install bitsandbytes>=0.39.0 #下载bitsandbytes
复制代码
使用SwanLab记录实验数据

去官网创建一个账号,在假造环境登录
  1. swanlab login
  2. 粘贴复制的API token
复制代码



下载模型

在modescope当中寻找相应的模型,这里使用ModelScope下载

  1. 主意路径和放在/mnt/workspace/下
  2. modelscope download --model Qwen/Qwen2.5-7B-Instruct
复制代码


下载数据集

需要的格式为Apache格式,在数据集当中寻找你需要的

使用什么下载都ok,末了要将数据文件存放在/mnt/workspace/LLaMA-Factory/data下



编辑训练文件

/mnt/workspace/LLaMA-Factory/examples/train_qlora/下复制一份llama3_lora_sft_awq.yaml为qwen_lora_sft_bitsandbytes.yaml然后编辑这个文件
AWQ 


  • 含义:AWQ 是 Activation-aware Weight Quantization 的缩写,是一种量化技术。
  • 用途:用于存储经过 AWQ 量化处置惩罚的模型文件。AWQ 是一种高效的量化方法,能够在保持模型性能的同时显著减少模型大小和推理时间。
  • 特点:AWQ 通常会根据激活值(activation)的分布动态调整权重量化策略,从而在低精度下保持较高的模型精度。
bnb_npu


  • 含义:bnb 是 BitsandBytes 的缩写,而 npu 指的是 Neural Processing Unit(神经网络处置惩罚单位)。
  • 用途:bnb_npu BitsandBytes 库针对 NPU 优化的量化工具或方法。
  • 特点

    • BitsandBytes 是一个盛行的量化库,支持 8 位和 4 位量化。
    • npu 表示该方法针对 NPU(如华为 Ascend、高通 Hexagon 等)举行了优化,以进步在这些硬件上的推理服从


  1. ### model
  2. #修改为你模型的位置
  3. model_name_or_path: /mnt/workspace/Qwen
  4. quantization_bit: 4
  5. # trust_remote_code: true
  6. ### method
  7. stage: sft
  8. do_train: true
  9. finetuning_type: lora
  10. lora_rank: 8
  11. lora_target: all
  12. ### dataset
  13. dataset: law
  14. template: qwen
  15. cutoff_len: 2048
  16. max_samples: 1000
  17. overwrite_cache: true
  18. preprocessing_num_workers: 16
  19. ### output
  20. output_dir: saves/qwen2.5-7b/lora/sft
  21. logging_steps: 10
  22. save_steps: 500
  23. plot_loss: true
  24. overwrite_output_dir: true
  25. ### train
  26. per_device_train_batch_size: 1
  27. gradient_accumulation_steps: 8
  28. learning_rate: 1.0e-4
  29. num_train_epochs: 3.0
  30. lr_scheduler_type: cosine
  31. warmup_ratio: 0.1
  32. bf16: true
  33. ddp_timeout: 180000000
  34. # 配置swanlab ,前提要登录
  35. use_swanlab: true
  36. swanlab_project: llamafactory
  37. swanlab_run_name: Qwen2.5-7B-Instruct
  38. ### eval
  39. val_size: 0.1
  40. per_device_eval_batch_size: 1
  41. eval_strategy: steps
  42. eval_steps: 500
复制代码

    Model 部分
  

  • model_name_or_path: 指定预训练模型的路径或名称。这里路径是 /mnt/workspace/Qwen,表示模型存储在本地目次。
  • quantization_bit: 量化位数,这里设置为 4,表示使用 4 位量化来减少模型的内存占用和计算量。
  • trust_remote_code: 假如模型包罗自定义代码(如 Hugging Face 的 transformers 库中的自定义模型),需要设置为 true。这里被注释掉了,表示不启用。
  Method 部分

  

  • stage: 当前任务的阶段,sft 表示监督微调(Supervised Fine-Tuning)。
  • do_train: 是否举行训练,设置为 true 表示启用训练。
  • finetuning_type: 微调类型,这里使用 lora,表示使用 LoRA 技术举行微调。
  • lora_rank: LoRA 的秩(rank),这里设置为 8。秩越低,参数目越少,但可能会影响模型性能。
  • lora_target: 指定 LoRA 应用于哪些层,all 表示应用于所有层。
  Dataset 部分

  

  • dataset: 使用的数据集名称,这里为 law,可能是一个法律相关的数据集。
  • template: 数据模板,这里为 qwen,表示使用 Qwen 模型的默认模板。
  • cutoff_len: 输入序列的最大长度,凌驾此长度的部分会被截断。这里设置为 2048。
  • max_samples: 最大样本数,这里设置为 1000,表示只使用数据会合的前 1000 个样本。
  • overwrite_cache: 是否覆盖缓存,设置为 true 表示每次运行都会重新生成缓存。
  • preprocessing_num_workers: 数据预处置惩罚的并行工作线程数,这里设置为 16。
  Output 部分

  

  • output_dir: 模型和日记的输出目次,这里为 saves/qwen2.5-7b/lora/sft。
  • logging_steps: 每隔多少步记录一越日记,这里设置为 10。
  • save_steps: 每隔多少步保存一次模型,这里设置为 500。
  • plot_loss: 是否绘制损失曲线,设置为 true 表示启用。
  • overwrite_output_dir: 是否覆盖输出目次,设置为 true 表示假如目次已存在则会覆盖。
  Train 部分

  

  • per_device_train_batch_size: 每个设备的训练批次大小,这里设置为 1。
  • gradient_accumulation_steps: 梯度累积步数,这里设置为 8。通过累积梯度来模拟更大的批次大小。
  • learning_rate: 学习率,这里设置为 1.0e-4。
  • num_train_epochs: 训练的总轮数,这里设置为 3.0。
  • lr_scheduler_type: 学习率调理器类型,这里为 cosine,表示使用余弦退火调理器。
  • warmup_ratio: 学习率预热比例,这里设置为 0.1,表示在前 10% 的训练步骤中逐步增长学习率。
  • bf16: 是否使用 bfloat16 精度,设置为 true 表示启用,可以减少内存占用并加快训练。
  • ddp_timeout: 分布式数据并行(DDP)的超时时间,这里设置为 180000000 毫秒。
  SwanLab 设置

  

  • use_swanlab: 是否使用 SwanLab 举行实验跟踪,设置为 true 表示启用。
  • swanlab_project: SwanLab 项目名称,这里为 llamafactory。
  • swanlab_run_name: 当前运行的名称,这里为 Qwen2.5-7B-Instruct。
  Eval 部分

  

  • val_size: 验证集的比例,这里设置为 0.1,表示使用 10% 的数据作为验证集。
  • per_device_eval_batch_size: 每个设备的验证批次大小,这里设置为 1。
  • eval_strategy: 验证策略,这里为 steps,表示每隔肯定步数举行验证。
  • eval_steps: 每隔多少步举行一次验证,这里设置为 500。
  
  
   数据与文件对应



这几个地方要对应上

训练模型

在 LLaMA-Factory 目次下,输入以下下令启动微调脚本
  1. llamafactory-cli train examples/train_qlora/qwen_lora_sft_bitsandbytes.yaml
复制代码



末了效果

推理测试


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

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

火影

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表