适合计划基于开源模型做定制、需要同时考虑训练和上线资源的技术团队。只做推理的团队,可以直接看私有化部署的显存估算。
三类工作负载对比
| 对比项 | 推理 | 参数高效微调(如 LoRA) | 全参数训练或微调 |
|---|---|---|---|
| 显存主要用于 | 权重 + KV 缓存 | 冻结的权重 + 少量可训练参数 + 激活值 | 权重 + 梯度 + 优化器状态 + 激活值 |
| 显存规模 | 约为权重的 1 到 2 倍 | 略高于推理 | 可达权重的数倍 |
| 使用周期 | 长期、持续 | 几小时到几天 | 几天到几个月 |
| 中断影响 | 直接影响用户 | 可从检查点恢复 | 可从检查点恢复,但损失进度 |
| 存储重点 | 模型文件、日志 | 数据集、适配器文件 | 数据集、大量检查点 |
| 网络重点 | 对外访问、延迟 | 一般 | 多机时需要高速互联 |
训练和微调的显存怎么估
Hugging Face 官方文档给出了混合精度训练时每个参数的显存构成:
| 部分 | 每参数字节数 | 说明 |
|---|---|---|
| 模型权重 | 6 | 一份 16 位副本用于计算,一份 32 位副本用于更新 |
| 优化器状态(Adam) | 8 | 两组 32 位状态 |
| 梯度 | 4 | 32 位 |
| 合计 | 约 18 | 另加激活值,随批大小和序列长度增长 |
按这个口径,一个 70 亿参数的模型做全参数训练,仅权重、梯度和优化器状态就需要约 126 GB,再加上激活值,通常需要多张卡。
参数高效微调的思路是冻结原模型,只训练少量新增参数。由于大部分参数不需要梯度和优化器状态,显存需求接近推理时的权重占用加上激活值。再配合把冻结的权重量化(常称 QLoRA),还能进一步降低。具体效果和适用性以 PEFT 文档和实际测试为准。
存储与网络的差别
- 检查点:全参数训练会定期保存检查点,每个检查点可能包含权重和优化器状态,体积是模型文件的数倍。要提前估算保留几个检查点、总共需要多少空间。
- 数据集:训练数据的存放位置、读取速度和访问权限要写清楚,敏感数据要先确认能否放在合作机房。
- 多机互联:单机放不下时需要多机协同,机器之间的通信带宽会显著影响训练速度。
- 推理的对外访问:推理服务要说明访问方、并发和延迟要求,以及是否需要固定地址或隔离。
需求里分别写什么
训练或微调需求:
- 基础模型及参数量,全参数还是参数高效微调。
- 数据集大小、格式、存放位置和敏感程度。
- 预计训练时长,是否可以中断后从检查点恢复。
- 检查点保留数量和存储需求。
- 结束后模型文件交付到哪里,训练环境如何清理。
推理需求:
- 模型、精度和是否量化。
- 并发数、上下文长度和输出长度的分布。
- 运行周期、可中断的时段和维护窗口。
- 访问方式、网络隔离和固定地址要求。
- 监控、日志和异常联系方式。
两份需求可以一起提交,但分开描述,方便分别核对资源。
规划时常见的四个错误
- 用推理的显存估算训练:全参数训练的显存是推理的数倍。
- 忽略检查点存储:训练跑到一半磁盘写满,是常见的中断原因。
- 训练和推理放在同一批资源上:训练的集中占用会影响推理服务的稳定性。
- 没有约定训练结束后的交接:模型文件、数据和日志的去向要提前写清楚。
常见问题
上线前一定要训练吗?
不一定。很多场景用现成模型加上提示设计和检索资料就能满足需求。用推理验证效果后,确有必要再考虑微调。
LoRA 微调后的模型怎么部署?
可以把适配器与原模型合并后部署,也可以在推理框架里动态加载适配器。具体取决于所用框架的支持情况。
训练能用按小时计费的资源吗?
取决于资源方的合作方式。训练周期可预估时,按周期约定资源更便于安排;具体需单独确认。
易AI能承接训练任务吗?
需要按模型规模、周期和数据要求单独确认。可以按上面的方法整理需求,通过联系页说明。
参考资料
官方资料用于核对产品或通用概念,不构成对易AI的授权、认证或背书。具体合作以双方确认的方案为准。