训练与推理
LLM 训练和推理是模型生命周期中两个不同的阶段。
训练:构建模型的理解
训练发生在构建 LLM 的初始阶段。它的目的是教会模型识别模式并做出准确的预测。这是通过让模型接触海量数据,并根据它遇到的数据调整参数来实现的。
LLM 训练中常用的技术包括:
- 监督学习(Supervised learning): 向模型展示输入与正确输出配对的示例。
- 强化学习(Reinforcement learning): 让模型通过试错来学习,根据反馈或奖励进行优化。
- 自监督学习(Self-supervised learning): 通过预测数据中缺失或损坏的部分来学习,无需显式标签。
训练的计算量很大,通常需要昂贵的 GPU 或 TPU 集群。虽然这种初始成本可能非常高,但它基本上是一次性的支出。一旦模型达到预期的准确度,通常只需要定期重新训练来更新或改进模型。
推理:实时使用模型
LLM 推理(inference)是指将训练好的模型应用于新数据以做出预测。与训练不同,推理持续且实时地发生,立即响应用户输入或传入的数据。这是模型被积极「使用」的阶段。训练得更好、微调得更精细的模型通常能提供更准确、更有用的推理结果。
推理的计算需求是持续不断的,并且可能变得非常高,尤其是随着用户交互和流量的增长。每个推理请求都会消耗 GPU 等计算资源。虽然单看每个推理步骤可能比训练小,但随着时间的推移,累积的需求可能会导致可观的基础设施运营成本。
以下是训练与推理的并排对比:
| 项目 | 训练 | 推理 |
|---|---|---|
| 目的 | 教会模型 | 使用模型 |
| 数据 | 海量数据集 | 新的、用户提供的输入 |
| 计算 | 长时间、昂贵的 GPU/TPU 作业 | 实时、重复的工作负载 |
| 成本模型 | 基本一次性 | 持续不断,并随流量扩展 |
| 硬件 | 多节点集群 | 较小的集群、优化的运行时和缓存利用 |
| 时间 | 数小时到数周 | 毫秒到秒 |
| 工具 | PyTorch、JAX、DeepSpeed、Megatron | vLLM、SGLang、TensorRT-LLM、MAX、LMDeploy |
常见问题(FAQs)
什么是模型服务?
模型服务(model serving)是将训练好的模型提供给应用、用户或系统的生产流程,使其能够对新输入运行推理。它通常包括打包模型、将其加载到合适的硬件上、通过 API 或服务暴露、监控其行为,并控制延迟、可靠性、安全性和成本。
了解更多关于服务与推理之间区别的信息。
训练和推理在 LLM 生命周期中的位置在哪里?
训练发生在生命周期的早期。模型学习模式、语言结构和通用知识。之后,模型会经历对齐(alignment)、可选的微调、评估和部署。推理发生在部署之后。这是模型在生产环境中服务真实用户的阶段,通常通过 API、服务或应用工作流进行。你可以把训练理解为「构建模型」,把推理理解为「让模型投入工作」。
为什么 LLM 推理通常比训练成本更高?
尽管训练一个 LLM 很昂贵,但它通常只发生一次。而推理则不同,每次用户发送请求都会运行。随着流量的增长,推理调用的次数也随之增长。每个请求都会使用 GPU 算力、内存和网络带宽。随着时间的推移,这种持续的需求可能使推理成为更大的长期支出,尤其是对于使用频繁或提示词(prompt)较长的应用。
我应该训练自己的 LLM 吗?
大多数情况下,不需要。从头训练一个新的 LLM 需要海量数据集、专业硬件和专门的研究团队。大多数公司通过从现有的开源 LLM开始,然后针对自己的领域进行微调或定制,会取得更好的结果。只有在现有模型无法解决你面临的问题,或者微调无法满足你的严格控制要求时,完整的训练才是有意义的。
微调算是训练还是推理?
微调(fine-tuning)是训练的一种形式。你使用新数据更新模型的部分权重,使其适应特定任务或领域。推理不会改变任何权重,它只是使用模型来生成预测。更多内容请参阅微调章节。