场景介绍
方案概览
本文档利用训练框架LlamaFactory+华为自研Ascend Snt9B硬件,为用户提供了常见主流开源大模型在ModelArts Lite DevServer上的微调方案,包括SFT全参微调、LoRA微调、DPO训练方案。
- DPO(Direct Preference Optimization):直接偏好优化方法,通过直接优化语言模型来实现对大模型输出的精确把控,不用进行强化学习,也可以准确判断和学习到使用者的偏好,最后,DPO算法还可以与其他优化算法相结合,进一步提高深度学习模型的性能。
- SFT监督式微调(Self-training Fine-tuning):是一种利用有标签数据进行模型训练的方法。 它基于一个预先训练好的模型,通过调整模型的参数,使其能够更好地拟合特定任务的数据分布。 与从头开始训练模型相比,监督式微调能够充分利用预训练模型的知识和特征表示,从而加速训练过程并提高模型的性能。
- LoRA微调LoRA(Low-Rank Adaptation):微调是一种用于调整大型预训练模型的高效微调技术。 这种方法主要针对如何在保持模型大部分参数固定的同时,通过引入少量可训练参数来调整模型以适应特定任务。
本方案目前仅适用于部分企业客户,完成本方案的部署,需要先联系您所在企业的华为方技术支持。
约束限制
- 本文档适配昇腾云ModelArts 6.3.908版本,请参考表1获取配套版本的软件包,请严格遵照版本配套关系使用本文档。
- 本文档中的模型运行环境是ModelArts Lite DevServer。
- 镜像适配的Cann版本是cann_8.0.RC3。
- DevServer驱动版本要求23.0.6
- PyTorch版本:2.2.0
- Python版本:3.10
- 确保容器可以访问公网。
训练支持的模型列表
本方案支持以下模型的训练,如表1所示。
支持模型 |
Template |
支持模型参数量 |
权重文件获取地址 |
---|---|---|---|
Llama2 |
llama2 |
llama2-7b |
|
llama2-13b |
|||
llama2-70b |
|||
Llama3 |
llama3 |
llama3-8b |
|
llama3-70b |
|||
Llama3.1 |
llama3 |
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 |
qwen |
qwen1.5-0.5b |
|
qwen1.5-1.8b |
|||
qwen1.5-4b |
|||
qwen1.5-7b |
|||
qwen1.5-14b |
|||
Yi |
yi |
yi-6b |
|
yi-34b |
|||
Qwen2 |
qwen |
qwen2-0.5b |
|
qwen2-1.5b |
|||
qwen2-7b |
|||
qwen2-72b |
|||
Falcon2 |
falcon |
falcon-11B |
|
GLM-4 |
glm4 |
glm4-9b |
https://huggingface.co/THUDM/glm-4-9b-chat
说明:
glm4-9b模型必须使用版本4b556ad4d70c38924cb8c120adbf21a0012de6ce |
阶段 |
任务 |
说明 |
---|---|---|
准备工作 |
准备环境 |
本教程案例是基于ModelArts Lite DevServer运行的,需要购买并开通DevServer资源。 |
准备代码 |
准备AscendSpeed训练代码、分词器Tokenizer和推理代码。 |
|
准备数据 |
准备训练数据,可以用本案使用的数据集,也可以使用自己准备的数据集。 |
|
准备镜像 |
准备训练模型适用的容器镜像。 |
|
微调训练 |
指令监督微调训练 |
介绍如何进行SFT全参微调/lora微调、训练任务、性能查看。 |