使用 LLaMA-Factory 微调 llama3 模子(二)

打印 上一主题 下一主题

主题 1930|帖子 1930|积分 5790

使用 LLaMA-Factory 微调 llama3 模子


1. LLaMA-Factory模子先容

  1. https://github.com/hiyouga/LLaMA-Factory
复制代码
LLaMA-Factory 是一个用于大型语言模子(LLM)微调的工具,它旨在简化大型语言模子的微调过程, 使得用户可以快速地对模子举行练习和优化,以提高模子在特定任务上的性能。
这个工具支持多种预练习的大型语言模子,例如 LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、 Gemma、Baichuan、ChatGLM 和 Phi 等。
LLaMA-Factory 的特点包括:

  • 支持多种微调方法:它集成了连续预练习、有监督微调(SFT)、偏好对齐(RLHF)等多种微调方 法。
  • 高效的微调技能:与 ChatGLM 官方的 P-Tuning 微调相比,LLaMA Factory 的 LoRA 微调提供了 显著的加速比,而且在特定任务上取得了更高的性能分数。
  • 易用性:LLaMA-Factory 提供了高条理的抽象接口,使得开辟者可以开箱即用,快速上手操作。
  • WebUI 支持:鉴戒 Stable Diffusion WebUI,该项目提供了基于 gradio 的网页版工作台,方便初 学者可以迅速上手操作。
  • 模子导出和推理:支持模子的导出和推理,包括动态合并 LoRA 模子举行推理。
  • API Server:支持启动 API Server,使得练习好的模子可以通过网络接口被远程访问和调用。
  • 评测 benchmark:提供了主流评测 benchmark 支持,如 mmlu、cmmlu、ceval 等,用于评估 模子的泛化能力。
LLaMA-Factory 旨在降低大型语言模子微调的门槛,使得更多的研究者和开辟者能够利用这些强大的模 型来办理具体的现实题目。
1.1 情况配置

/mnt/workspace路径下执行
  1. git clone https://github.com/hiyouga/LLaMA-Factory
  2. .gitconda create -n llama_factory python=3.10conda activate llama_factorycd LLaMA-Factorypip install -e .[metrics]
复制代码
1.2 下载llama3模子

/mnt/workspace路径下执行
  1. mkdir models
  2. cd models
复制代码
/mnt/workspace/models路径下执行
  1. pip install modelscope
  2. git clone https://www.modelscope.cn/LLM-Research/Meta-Llama-3-8B-Instruct.git
复制代码
2 llama3中文加强大模子(lora微调)

使用预练习模子+LoRA适配器的方式, 可以在不重新练习整个模子的情况下, 快速且高效地将模子适应到 新的任务或领域, 如将英文模子适应到中文对话。这是一种常见且实用的微调方法。
2.1 模子练习

修改文件 /mnt/workspace/LLaMA-Factory/examples/train_lora/llama3_lora_sft.yaml
  1. !上传配置文件
  2. llama3_lora_sft.yaml
复制代码
  1. ### model
  2. model_name_or_path: /mnt/workspace/models/Meta-Llama-3-8B-Instruct
  3. ### method
  4. stage: sft
  5. do_train: true
  6. finetuning_type: lora
  7. lora_target: all
  8. ### dataset
  9. dataset: alpaca_gpt4_zh
  10. template: llama3
  11. cutoff_len: 2048
  12. max_samples: 1000
  13. overwrite_cache: true
  14. preprocessing_num_workers: 16
  15. ### output
  16. output_dir: /mnt/workspace/models/llama3-lora-zh
  17. logging_steps: 10
  18. save_steps: 500
  19. plot_loss: true
  20. overwrite_output_dir: true
  21. ### train
  22. per_device_train_batch_size: 1
  23. gradient_accumulation_steps: 8
  24. learning_rate: 1.0e-4
  25. num_train_epochs: 3.0
  26. lr_scheduler_type: cosine
  27. warmup_ratio: 0.1
  28. bf16: true
  29. ddp_timeout: 180000000
  30. ### eval
  31. val_size: 0.1
  32. per_device_eval_batch_size: 1
  33. eval_strategy: steps
  34. eval_steps: 500
复制代码
yaml文件中的重要参数:
model


  • model_name_or_path: 指定预练习模子的路径或名称, 这里使用的是
    /mnt/workspace/models/Meta-Llama-3-8B-Instruct 路径下的 Meta-Llama 3.8B 模子作为底子模 型。
  • method

    • stage: 表示练习阶段, 这里是 sft(Supervised Fine-Tuning)。
    • do_train: 表示要举行练习。
    • finetuning_type: 微调方法, 这里使用 LoRA(Low-Rank Adaptation)。
    • lora_target: LoRA 作用的对象, 这里是 attention 层的 query 和 value 映射矩阵。

  • dataset

    • dataset: 练习数据集名称,这里用的是 alpaca_gpt4_zh 数据集。(留意:数据集可以选择多个 alpaca_zh,alpaca_gpt4_zh,oaast_sft_zh)
    • template: 数据集的格式模板,这里是 llama3。
    • cutoff_len: 输入序列的最大长度, 超过会截断, 这里设为1024。
    • max_samples: 从数据集中取的最大样本数, 这里取前1000个样本。
    • preprocessing_num_workers: 数据预处理惩罚的历程数, 这里用16个历程并行处理惩罚。

  • output

    • output_dir: 练习日记和模子的保存路径。
    • logging_steps: 每隔多少步记录一越日记, 这里每100步记录一次。
    • save_steps: 每隔多少步保存一次模子, 这里每500步保存一次。
    • plot_loss: 是否绘制loss曲线图。

  • train

    • per_device_train_batch_size: 每个设备上的练习批巨细, 这里设为1。
    • gradient_accumulation_steps: 梯度累积的步数, 这里累积8步才更新一次模子参数。
    • learning_rate: 学习率, 这里设为0.0001。
    • num_train_epochs: 练习的epoch数, 这里练习1个epoch。(还可以指定max_steps 3000 : 练习 3000步。留意:真正项目练习增大总步数;留意:num_train_epochs和max_steps之中选择一 个)
    • lr_scheduler_type: 学习率调度器范例, 这里用cosine, 即先warmup再降温。
    • warmup_steps: 用初始学习率warmup的步数, 这里取总步数的10%。 fp16: 是否使用fp16混淆精度练习, 以加速练习并减少显存占用。

  • eval

    • val_size: 从练习集中划分出的验证集比例, 这里取10%作为验证集。
    • per_device_eval_batch_size: 验证时每个设备的批巨细,这里为1。
    • evaluation_strategy: 验证策略, 这里根据steps数来验证。
    • eval_steps: 每隔多少步验证一次, 这里每500步验证一次。

以上就是这个yaml配置文件的重要参数解释。这些参数设置了一个使用LoRA对Meta-Llama-3-8BInstruct模子在alpaca_gpt4_zh数据集上举行微调的练习过程。
2.2 克隆数据集

在/mnt/workspace/LLaMA-Factory/data路径下使用下面的下令克隆alpaca_gpt4_zh数据集
  1. git clone https://www.modelscope.cn/datasets/llamafactory/alpaca_gpt4_zh.git
复制代码
然后,修改dataset_info.json文件
  1. !上传配置文件
  2. data_info.json
复制代码
  上传alpaca_gpt4_data_zh.json到data目次下
  2.3 练习

  1. llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml
复制代码
1.4 推理

修改examples/inference/llama3_lora_sft.yaml
  1. model_name_or_path: /mnt/workspace/models/Meta-Llama-3-8B-Instruct
  2. adapter_name_or_path: /mnt/workspace/models/llama3-lora-zh
  3. template: llama3
  4. finetuning_type: lora
复制代码


  • –model_name_or_path /mnt/workspace/models/Meta-Llama-3-8B-Instruct : 这个参数指定了 预练习语言模子的名称或路径。在这个例子中, 使用的是位于 /mnt/workspace/models/MetaLlama-3-8B-Instruct 的Meta的Llama-3-8B-Instruct模子。这个模子将作为底子模子,在其上举行 微调。
  • –adapter_name_or_path /mnt/workspace/models/llama3-lora-zh : 这个参数指定了用于微调 的适配器(Adapter)的名称或路径。在这个例子中, 使用的是位 于 /mnt/workspace/models/llama3-lora-zh 的适配器。这个适配器是通过LoRA技能在底子模子 上微调得到的。
  • –template llama3 : 这个参数指定了对话模板的名称。模板界说了对话的格式和风格。在这个例 子中, 使用的是名为 llama3 的模板。
  • –finetuning_type lora : 这个参数指定了微调的范例。在这个例子中, 使用的是LoRA技能举行微 调。
/mnt/workspace/LLaMA-Factory路径下执行
  1. llamafactory-cli chat examples/inference/llama3_lora_sft.yaml
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

去皮卡多

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