作者:Kyle Ulrich, Joao Moura, Ashish Khetan, 和 Vivek Madan 于2024年1月29日发表在[高级 (300)](https://aws.amazon.com/blogs/machine-learning/category/learning- levels/advanced-300/ "查看所有高级(300)的文章"),,,
分享
在部署大型语言模型(LLM)时,机器学习(ML)从业者关注模型服务性能的两个重要指标:延迟(生成单个标记所需的时间)和吞吐量(每秒生成的标记数量)。通过对AmazonSageMakerJumpStart中可用的LLM进行全面基准测试,本文探讨了这些指标之间的关系,并提供了针对延迟、吞吐量、成本和实例类型限制的实际优化建议。
本文展示了不同模型配置下的最低延迟(左)和最高吞吐量(右)值。每种模型部署均使用SageMakerJumpStart提供的默认配置。这些延迟和吞吐量值是基于256个输入标记和256个输出标记的负载。
| 模型类型 | 延迟 (ms/token) | 吞吐量 (tokens/sec) |
|---|---|---|
| ml.g5.2xlarge | 33 | 30 |
| ml.g5.12xlarge | 17 | 59 |
| ml.p4d.24xlarge | 20 | 49 |
增加并发请求可以单调增加吞吐量,但对于大规模并发请求,增益会递减。本文还指出,使用的实例类型及其硬件配置对模型性能有显著影响。
通过绘制延迟与吞吐量的关系图,我们能够确定最佳设置。例如,Llama 27B端点在ml.g5.12xlarge实例上,随着并发请求的增加,吞吐量和延迟均呈单调增加趋势。在达到某个特定点后,额外的并发请求可能会导致延迟增加,因此需要根据具体应用找到理想配置。
选择合适的硬件进行LLM推理通常依赖于特定的用例、用户体验目标和所选LLM。加速器的规格会极大影响延迟和吞吐量的表现,我们需要通过实际基准测试来验证理论。
大多数现代ML服务器将注意力键和值缓存到设备内存中(DRAM)以避免重复计算。通常情况下,当KV矩阵的内存耗尽时,后续的请求会被排队。通过了解KV缓存的大小和批处理大小,我们可以推测出相关的延迟和吞吐量曲线的“拐点”。
如果单个端点无法满足并发请求的需求,可以通过水平扩展来解决。SageMaker会自动在多实例之间进行负载平衡,以此来提高整体吞吐量。这一步骤对于需要处理大量查询的应用特别重要。
本文通过对Amazon SageMakerJumpStart中的LLM进行基准测试,展示了如何优化端点部署配置以实现最佳延迟、吞吐量和成本的平衡。有关更多信息和实践,请参考链接的以进行个性化基准测试。
Leave a Reply