Training vs. inference
LLM training 和 inference 是 model lifecycle 中两个不同的阶段。
可视化工具:LLM Lifecycle Visualizer
Training:构建模型的理解能力
Training 发生在最初构建 LLM 时,其目的是教会模型识别模式并做出准确预测。实现方式是让模型接触海量数据,并根据所遇到的数据调整 parameters。
LLM training 中常用的技术包括:
- Supervised learning:向模型展示成对的输入和正确输出示例。
- Reinforcement learning:让模型通过反复试错进行学习,并根据反馈或 reward 优化。
- Self-supervised learning:在没有显式 label 的情况下,通过预测数据中缺失或损坏的部分进行学习。
Training 的计算密集度很高,通常需要昂贵的 GPU 或 TPU cluster。尽管这项初始成本可能非常高,但基本上属于一次性支出。一旦模型达到预期准确率,通常只需定期 retraining,以更新或改进模型。
Inference:实时使用模型
LLM inference 是指将训练完成的模型应用于新数据以进行预测。与 training 不同,inference 会持续、实时地发生,即时响应用户输入或传入的数据。这是模型真正“投入使用”的阶段。Training 效果更好、fine-tuning 更充分的模型,通常能提供更准确、更实用的 inference 结果。
Inference 对 compute 的需求会持续存在,而且可能变得非常高,尤其是在用户交互和 traffic 增长时。每个 inference request 都会消耗 GPU 等计算资源。单独来看,每次 inference 所需的计算量可能小于 training,但长期累积的需求会带来巨大的运营成本。
下面是 training 和 inference 的并列对比:
| 项目 | Training | Inference |
|---|---|---|
| 目的 | 教会模型 | 使用模型 |
| 数据 | 海量 dataset | 用户提供的新输入 |
| Compute | 耗时长、成本高的 GPU/TPU job | 实时、重复执行的 workload |
| 成本模式 | 主要是一次性成本 | 持续产生,并随 traffic 增长 |
| 硬件 | Multi-node cluster | 规模较小的 cluster、经过优化的 runtime 和 cache 使用方式 |
| 时间 | 数小时至数周 | 数毫秒至数秒 |
| 工具 | PyTorch、JAX、DeepSpeed、Megatron | vLLM、SGLang、TensorRT LLM、MAX、LMDeploy |
FAQ
什么是 model serving?
Model serving 是将训练完成的模型提供给应用程序、用户或系统,使其能够针对新输入运行 inference 的生产过程。它通常包括打包模型、将模型加载到合适的硬件上、通过 API 或服务对外提供模型,以及监控模型行为,并控制 latency、可靠性、安全性和成本。
进一步了解 serving 和 inference 的区别。
Training 和 inference 在 LLM lifecycle 中处于什么位置?
Training 发生在 lifecycle 的早期阶段。模型在此阶段学习模式、语言结构和通用知识。之后,模型会经历 alignment、可选的 fine-tuning、evaluation 和 deployment。Inference 发生在 deployment 之后,模型会在这一阶段通过 API、服务或应用工作流为生产环境中的真实用户提供服务。你可以把 training 理解为“构建模型”,把 inference 理解为“让模型投入工作”。
为什么 LLM inference 的成本往往高于 training?
虽然训练 LLM 的成本很高,但通常只进行一次。相比之下,每当用户发送请求时,inference 都会运行一次。随着 traffic 增长,inference call 的数量也会随之增加。每个请求都会占用 GPU compute、memory 和 network bandwidth。长期来看,这种持续需求可能使 inference 成为成本更高的长期支出,尤其对于使用量大或包含较长 prompt的应用而言。
我应该训练自己的 LLM 吗?
大多数情况下,不应该。从头训练新的 LLM 需要海量 dataset、专用硬件和专门的研究团队。对于大多数公司,更好的做法是从现有的 open-source LLM开始,再针对自己的领域进行 fine-tuning 或定制。只有当你要解决的问题是现有模型无法处理的,或者有 fine-tuning 无法满足的严格控制要求时,full training 才有意义。
Fine-tuning 属于 training 还是 inference?
Fine-tuning 是 training 的一种形式。你使用新数据更新模型的部分 weights,使其适应特定任务或领域。Inference 不会改变任何 weights,只使用模型生成预测。请参阅 fine-tuning 章节了解更多信息。