更新时间:2024-10-22 GMT+08:00
分享

场景介绍

方案概览

本文档利用训练框架LlamaFactory+华为自研Ascend Snt9B硬件,为用户提供了常见主流开源大模型在ModelArts Lite DevServer上的不同训练阶段方案,包括指令监督微调、DPO偏好训练、RM奖励模型训练、PPO强化训练方案。

  • DPO(Direct Preference Optimization):直接偏好优化方法,通过直接优化语言模型来实现对大模型输出的精确把控,不用进行强化学习,也可以准确判断和学习到使用者的偏好,最后,DPO算法还可以与其他优化算法相结合,进一步提高深度学习模型的性能。
  • RM奖励模型(Reward Model):是强化学习过程中一个关键的组成部分。它的主要任务是根据给定的输入和反馈来预测奖励值,从而指导学习算法的方向,帮助强化学习算法更有效地优化策略
  • PPO强化学习(Proximal Policy Optimization):是一种在强化学习中广泛使用的策略优化算法。它属于策略梯度方法的一种,旨在通过限制新策略和旧策略之间的差异来稳定训练过程。PPO通过引入一个称为“近端策略优化”的技巧来避免过大的策略更新,从而减少了训练过程中的不稳定性和样本复杂性。
  • 指令监督式微调(Self-training Fine-tuning):是一种利用有标签数据进行模型训练的方法。 它基于一个预先训练好的模型,通过调整模型的参数,使其能够更好地拟合特定任务的数据分布。 与从头开始训练模型相比,监督式微调能够充分利用预训练模型的知识和特征表示,从而加速训练过程并提高模型的性能。
训练阶段下有不同的训练策略,分为全参数训练、部分参数训练、LoRA、QLoRA,本文档主要支持全参数(Full)和LoRA。
  • LoRA(Low-Rank Adaptation): 这种策略主要针对如何在保持模型大部分参数固定的同时,通过引入少量可训练参数来调整模型以适应特定任务。
  • 全参训练(Full):这种策略主要对整个模型进行微调。这意味着在任务过程中,除了输出层外,模型的所有参数都将被调整以适应新的任务。

本方案目前仅适用于部分企业客户,完成本方案的部署,需要先联系您所在企业的华为方技术支持。

约束限制

  • 本文档适配昇腾云ModelArts 6.3.909版本,请参考表1获取配套版本的软件包,请严格遵照版本配套关系使用本文档。
  • 本文档中的模型运行环境是ModelArts Lite DevServer。
  • 镜像适配的Cann版本是cann_8.0.RC3。
  • DevServer驱动版本要求23.0.6
  • PyTorch版本:2.2.0
  • Python版本:3.10
  • 确保容器可以访问公网。
  • 仅支持313T、376T、400T

训练支持的模型列表

本方案支持以下模型的训练,如表1所示。

表1 支持的模型列表及权重文件地址

支持模型

支持模型参数量

权重文件获取地址

Llama2

llama2-7b

https://huggingface.co/meta-llama/Llama-2-7b-chat-hf

llama2-13b

https://huggingface.co/meta-llama/Llama-2-13b-chat-hf

llama2-70b

https://huggingface.co/meta-llama/Llama-2-70b-chat-hf

Llama3

llama3-8b

https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct

llama3-70b

https://huggingface.co/meta-llama/Meta-Llama-3-70B-Instruct

Llama3.1

llama3.1-8b

https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct/tree/main

llama3.1-70b

https://huggingface.co/meta-llama/Meta-Llama-3.1-70B-Instruct/tree/main

Qwen1.5

qwen1.5-0.5b

https://huggingface.co/Qwen/Qwen1.5-0.5B

qwen1.5-1.8b

https://huggingface.co/Qwen/Qwen1.5-1.8B-Chat

qwen1.5-4b

https://huggingface.co/Qwen/Qwen1.5-4B

qwen1.5-7b

https://huggingface.co/Qwen/Qwen1.5-7B-Chat

qwen1.5-14b

https://huggingface.co/Qwen/Qwen1.5-14B-Chat

Yi

yi-6b

https://huggingface.co/01-ai/Yi-6B-Chat

yi-34b

https://huggingface.co/01-ai/Yi-34B-Chat

Qwen2

qwen2-0.5b

https://huggingface.co/Qwen/Qwen2-0.5B-Instruct

qwen2-1.5b

https://huggingface.co/Qwen/Qwen2-1.5B-Instruct

qwen2-7b

https://huggingface.co/Qwen/Qwen2-7B-Instruct

qwen2-72b

https://huggingface.co/Qwen/Qwen2-72B-Instruct

Qwen2_VL(支持多模态数据集)

qwen2_vl-2b

https://huggingface.co/Qwen/Qwen2-VL-2B-Instruct/tree/main

qwen2_vl-7b

https://huggingface.co/Qwen/Qwen2-VL-7B-Instruct/tree/main

Falcon2

falcon-11B

https://huggingface.co/tiiuae/falcon-11B

GLM-4

glm4-9b

https://huggingface.co/THUDM/glm-4-9b-chat

说明:

glm4-9b模型必须使用版本4b556ad4d70c38924cb8c120adbf21a0012de6ce

表2 操作任务流程说明

阶段

任务

说明

准备工作

准备环境

本教程案例是基于ModelArts Lite DevServer运行的,需要购买并开通DevServer资源。

准备代码

准备AscendSpeed训练代码、分词器Tokenizer和推理代码。

准备数据

准备训练数据,可以用本案使用的数据集,也可以使用自己准备的数据集。

准备镜像

准备训练模型适用的容器镜像。

训练

启动训练

介绍各个训练阶段:指令微调、PPO强化训练、RM奖励模型、DPO偏好训练使用全参/lora训练策略进行训练任务、性能查看。

相关文档