场景介绍
Qwen大模型是一个包含多种参数数量模型的语言模型。
本文档以Qwen-7B/14B/72B为例,利用训练框架Pytorch_npu+华为自研Ascend Snt9b硬件,为用户提供了开箱即用的预训练和微调训练方案。
操作流程
阶段 |
任务 |
说明 |
---|---|---|
准备工作 |
准备环境 |
购买并开通模型运行所需的资源环境。 |
准备代码 |
准备AscendSpeed代码、分词器Tokenizer和推理代码。 |
|
准备数据 |
准备数据,可以用Alpaca数据集,也可以使用自己准备的数据集。 |
|
准备镜像 |
准备模型适用的容器镜像,包括容器内资源检查 |
|
预训练 |
预训练 |
介绍如何进行预训练,包括训练数据处理、超参配置、训练任务、断点续训及性能查看。 |
微调训练 |
SFT微调训练 |
介绍如何进行SFT微调训练。 |
LoRA微调训练 |
介绍如何进行LoRA微调训练。 |
|
推理前的权重转换 |
- |
模型训练完成后,可以将训练产生的权重文件用于推理。推理前参考本章节,将训练后生成的多个权重文件合并,并转换成Huggingface格式的权重文件。 如果无推理任务或者使用开源Huggingface权重文件进行推理,可以忽略此章节。和本文档配套的推理文档请参考《开源大模型基于DevServer的推理通用指导》。 |
微调训练和预训练的区别
微调训练是在预训练权重的基础上使用指令数据集进行的,对模型权重进行学习调整。从而针对特定任务达到预期效果。
微调训练与预训练任务的区别主要包括:
- 使用的数据不同,微调使用的是指令数据集,在处理数据集时需要将--handler-name 参数指定为GeneralInstructionHandler。
- 因数据集不同,loss计算方式不同。需要在微调训练时指定--finetune 和--is-instruction-dataset参数,微调任务的脚本里面已经自动识别添加。
- 启动脚本的环境变量RUN_TYPE需要指定为sft或者lora。