一、引言
本文将详细介绍如何借助腾讯云 TI 平台,完成 Hunyuan-Large 模型的有监督精调(SFT)全流程,包括从前期准备工作,到具体实践步骤,再到精调后模型的部署与相关特性说明等内容,帮助使用者更好地掌握该模型精调相关操作。
二、总览
我们将使用 Hunyuan-Large 开源仓库中附带的约 5000 条汽车领域的实体抽取数据(简称 car_train 数据集),点击下载 完整数据集,对 Hunyuan-Large-Instruct 模型做实体抽取任务的有监督精调,使模型输出格式更契合这一特定任务要求。以下展示部分训练集数据示例:
{"messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "请提取下列文章中包含的车系:\nbilstein evo s,黑黄涂装,比b14更舒适的绞牙避震 | 酷乐汽车\n"}, {"role": "assistant", "content": "无"}]}
同时,也给出精调前后模型效果对比示例,比如针对 “请提取下列文章中包含的车系:\n 此外,再配上一幅多辐式的轮毂设计,为该车带来了不错的运动感。\n” 这一输入,精调前输出会详细解释无法提取车系的原因,而精调后输出为 “无”。
三、前置准备
(一)数据集
平台已在 COS 存储中预置了 car_train 数据集,可直接使用。若要精调自有数据集,则需自行上传,同时参考本文档按实际情况调整数据清洗配置、训练超参等,整体操作耗时也会相应变化。
(二)算力资源
- Hunyuan-Large 模型精调需 GPU 算力资源,推荐机型为 HCCPNV6 机型。若对 Hunyuan-Large-Instruct 模型做 LoRA 微调,最少需 1 台 HCCPNV6 机型算力资源;若进行全参数 SFT 精调,则推荐准备最少 8 台 HCCPNV6 机型算力资源。
- 自行购买算力:支持包年包月算力模式,参考资源组管理指引,联系腾讯云客户经理购买 HCCPNV6 机型,并添加到 TI 平台资源组中,新建任务式建模时就能选择该资源组。
- 申请免费算力:如有免费测试需求,可通过对接的腾讯云客户经理或售前架构师申请;若暂无对接人员,可填写问卷登记,后续会有人员联系了解业务需求并发放免费测试算力及指导使用,也可通过文档页面右侧浮动栏联系腾讯云客户经理。
(三)文件存储
模型精调依赖 CFS 存储数据集和模型 checkpoint,推荐使用 Turbo 标准型存储,需到 CFS 控制台开通 CFS,并保证其与算力资源机器的网络互通,以确保训练保存 checkpoint 以及后续模型部署、推理服务启动、评测等操作的速度。
四、实践教程
实践主要包含以下三个步骤:
(一)数据准备(约 5 分钟,使用示例数据按教程操作)
- 创建数据构建 Notebook 实例:进入数据中心 > 数据构建页面,新建任务并选择【有监督 - 单轮问答 - pipeline】,点击跳转到对应 Notebook 按钮。首次跳转若进入新建 Notebook 页面,示例使用按量计费 4C8G 的实例规格(有资源组机器也可选择包年包月模式对应机器),在存储路径设置添加已购买好的 CFS Turbo 存储。
-
在 Notebook 中进行数据处理:
等待实例启动(约 2 分钟) :启动完成后实例状态变为 “运行中”,点击右侧操作栏 “打开”,跳转到 Jupyterlab 页面。
双击进入相关目录并打开文件:进入 single_round_qa_pipeline 目录,打开 quick_start.ipynb 文件,按指引操作。 先运行 “步骤 0:环境初始化” 代码块,接着上传数据集(若数据集在本地且不大,可上传至 Notebook 的 raw_dataset_files 目录,本文以上传 car_train.jsonl 为例),然后修改 “步骤 1:原始数据解析” 中的 input_path 为上传的数据集文件名并运行,查看相关数据信息并修改对应代码,最后来到 “训练格式生成” 步骤,修改输入数据为上一步输出,复制处理好的数据集在 CFS 上的路径,用于后续模型精调训练输入自有数据时的源路径。
(二)模型精调训练(约 4 - 5 小时,使用示例数据按教程操作)
-
启动训练任务:
- 进入大模型广场菜单,点击混元大模型下的 Hunyuan-Large 卡片,新建训练任务,按需填写任务名称。若使用包年包月资源组机器,合理填写单节点的 GPU、CPU、内存资源。
- 存储路径设置:训练数据方面,删除平台内置数据,添加存储类型为 CFS Turbo、用途为 “用户自有数据” 的一行,选择前面数据构建用的 CFS Turbo 实例,填写训练格式生成章节复制的路径;训练输出方面,删除原训练输出,添加存储类型为 CFS Turbo、用途为 “训练输出” 的一行,选择准备好的 CFS Turbo 实例,填写全新或已存在的空目录作为源路径。
- 调优参数配置建议:以单机 8 卡为例,稍稍调大 GradientAccumulationSteps 为 2 后启动训练。
-
训练状态观察:训练任务启动后,可点击日志观察状态(多机分布式训练任务建议选择 master-0 节点查看日志),训练会经历加载调优参数、加载数据集并预处理、加载预训练模型权重、准备训练、开始训练、保存 checkpoint 等阶段,还可参考附录使用 Tensorboard 可视化训练过程查看各项指标。
(三)精调后模型部署(约 10 - 60 分钟,首次部署耗时偏长,后续视 CFS 存储性能而定)
- 部署服务:进入模型服务 > 在线服务菜单,新建服务。自定义服务名称,模型来源选择 CFS 并选中相应 CFS 实例,按实际训练输出路径填写到 checkpoint 目录,运行环境选择内置的 LLM /angel-vllm (2.1) 镜像,配置最低资源需求(按默认开启 NF4 量化)。由于使用 LoRA 精调方式,首次启动时服务会自动合并权重并保存,后续重新启动会自动使用合并后的权重,当出现相应日志表示模型服务启动完成。
- 调用服务:回到上级菜单,点击服务的【服务调用】标签页面,在接口调用地址处输入 /v1/chat/completions,输入请求体(格式兼容 OpenAI Chat Completions 接口,可用示例测试集样本试验),也可使用 OpenAI SDK 或其他大模型应用框架接入 API,如需鉴权可在服务启动时增加相应环境变量并在调用时指定。
五、附录
(一)使用 Tensorboard 可视化训练过程
点击训练任务右侧操作栏中的 Tensorboard 按钮,跳转后可观察任务的学习率、loss 等变化曲线,以此判断训练情况,若 loss 收敛不佳,可参照训练调参指引进行优化。
(二)训练调参指引
-
超参调整建议:
- Epoch:推荐取值 2 - 3,MoE 模型拟合能力强,建议不超 5,避免过拟合。
- BatchSize:默认 1,不建议随意调大,避免显存不足。
- LearningRate:建议在 5e-6 - 1e-4 范围内调整,根据训练 loss 收敛情况判断其是否合适。
- Step:根据训练总迭代步数调整保存 checkpoint 的间隔。
- FinetuningType:资源少选 “Lora”,资源足够且数据集大或希望提升精调性能上限选 “Full”。
- MaxSequenceLength:按实际训练集数据 token 长度调整。
- GradientAccumulationSteps:影响全局 BatchSize,建议全局 BatchSize 在 32 或 64 左右,保证总迭代步数不少于 500 步。
-
训练数据建议:起始 loss 过高需排查数据、Tokenizer 或对话模板等是否存在问题;为避免过拟合可增加样本多样性,结合实际数据特点及开源模型精调经验调整超参。
(三)推理镜像特性说明
内置 angel-vllm (2.1) 推理镜像基于腾讯自研优化的 Tilearn Angel-vLLM 框架实现推理加速,有以下亮点特性:
- NF4(NormalFloat)量化:无需模型转换,提升推理性能且对 MoE 模型特定优化。
- Lookahead 并行解码:特定场景下有明显加速效果,可通过配置对应环境变量开启相关功能,如量化模式、是否开启 Lookahead 并行解码、Lookahead 并行解码一次解码长度、模型上下文长度等环境变量均可按需手动修改。
通过上述步骤及相关说明,能够较为全面地完成 Hunyuan-Large 模型的精调及后续应用相关操作,使用者可根据实际需求灵活运用。