Amazon SageMaker 上的 Baichuan2 模型微调及部署(一)微调部分

Amazon SageMaker 上的 Baichuan2 模型微调及部署(一)微调部分

💡 原文中文,约10500字,阅读约需25分钟。
📝

内容提要

自2022年底以来,生成式人工智能(GenAI)技术成为最具创新力的技术之一,Meta的LLaMA和国内的中文开源模型Baichuan、Qwen、ChatGLM等在短时间内涌现。本文介绍了如何利用Amazon SageMaker微调和部署Baichuan2模型,包括准备工作、模型微调和SageMaker Training Job相关代码。文章还提供了微调性能对比和系列博客链接。

🔎

延伸解读

微调方法选择:全量微调与LoRA的权衡

文章提供了全量微调和LoRA微调两种方法,并给出了性能对比数据。从数据看,全量微调在7B和13B模型上Loss略低(1.89 vs 2.16,1.84 vs 1.9),但训练时长显著增加(225 vs 97分钟,433 vs 191分钟),显存占用也更高(135G vs 99.29G,163.20G vs 123G)。因此,若对训练时间和资源成本敏感,LoRA是更高效的选择;若追求更低的Loss且资源充足,可考虑全量微调。

实例类型推荐与显存优化策略

文章推荐全量微调使用g5.48xlarge、p4d.24xlarge或p4de.24xlarge实例,LoRA微调推荐g5.48xlarge。对于显存有限的场景(如A10G 24G显存),可通过修改ds_config.json中的zero_optimization配置,开启offload_optimizer和offload_param将优化器和参数卸载到CPU,避免OOM错误。但需注意,offloading可能影响训练速度,需根据实际情况权衡。

训练数据路径与S3同步机制

在SageMaker Training Job中,训练数据通过input_channel指定S3路径前缀,SageMaker会自动将数据同步到训练环境的/opt/ml/input/data/train1/目录。因此,在train.sh中设置--data_path时,只需修改文件名,目录部分保持不变。这种机制简化了数据管理,但需确保S3路径正确,且数据文件在训练前已上传。

超参数调整对训练效果与资源的影响

文章强调了per_device_train_batch_size、gradient_accumulation_steps和model_max_length等超参数的重要性。这些参数不仅影响微调效果,还直接决定显存使用量。例如,增大batch size或max_length会增加显存需求,可能导致OOM。因此,需根据所选实例的显存容量调整这些参数,以在训练效果和资源消耗间取得平衡。

❓

Q&A

Baichuan2模型的预训练数据量是多少?

Baichuan2模型在2.6万亿Tokens的语料上进行预训练。

如何在Amazon SageMaker上微调Baichuan2模型?

在SageMaker上微调Baichuan2模型需要准备预训练模型和训练数据,构建训练代码,并选择微调方法。

Baichuan2模型有哪些版本?

Baichuan2模型有Base和Chat版本,Chat版本经过指令微调和RLHF。

在微调Baichuan2模型时需要注意哪些超参数?

需要注意的超参数包括每个设备的训练批大小、梯度累积步数和模型最大长度等。

使用SageMaker进行微调时推荐的实例类型是什么?

推荐使用g5.48xlarge或p4d.24xlarge实例进行微调。

Baichuan2模型的微调性能对比结果如何?

微调性能对比显示不同微调方法和模型大小下的训练时长和Loss存在差异。

🏷️

标签

➡️

继续阅读