Hugging Face Infinity CPU 性能案例研究
Hugging Face Infinity 是一种容器化推理解决方案,旨在降低在 CPU 基础设施上部署的 Transformer 模型的延迟并提高吞吐量。通过针对特定硬件架构优化模型,它能够实现实时用例并降低大规模部署的基础设施成本。
Hugging Face Infinity 的架构
Infinity 由两个主要组件组成,它们协同工作以提供硬件加速的推理流水线:
- Infinity Container:一个 Docker 容器,提供硬件优化的推理解决方案并暴露 HTTP
/predict端点。 - Infinity Multiverse:一种模型优化服务,可针对目标硬件架构优化 Hugging Face Transformer 模型,以确保与 Infinity Container 的兼容性。
每个 Infinity Container 旨在为单个模型和单个任务提供服务。支持的任务包括 token 分类、序列分类、排序以及特征提取/文档嵌入。
在 Intel Ice Lake 上的性能基准测试
在一项使用 Amazon EC2 C6i 实例(由采用 Ice Lake 架构的第 3 代 Intel Xeon Scalable 处理器驱动)的案例研究中,Hugging Face 对用于序列分类的 DistilBERT 模型进行了基准测试。
端到端测量
与仅测量模型执行的基准测试不同,Infinity 的性能是作为端到端流水线进行测量的,涵盖了预处理、预测和后处理。
关键结果
在 Ice Lake 优化的容器上运行的 Infinity 相比其他配置实现了以下改进:
- 对比 Vanilla Transformers:在 Ice Lake 硬件上,延迟和吞吐量提升高达 800%。
- 对比 Cascade Lake:与基于 Cascade Lake 架构的实例相比,延迟和吞吐量提升高达 34%。
吞吐量对比
当在两个物理核心上以 batch size 为 1 运行运行时,Infinity 在所有序列长度下均表现出比 vanilla Transformers 显著的吞吐量增益:
| Sequence Length | Infinity | Transformers | Improvement |
|---|---|---|---|
| 8 | 248 req/sec | 49 req/sec | +506% |
| 16 | 212 req/sec | 16 req/sec | +424% |
| 32 | 150 req/sec | 40 req/sec | +375% |
| 64 | 97 req/sec | 28 req/sec | +346% |
| 128 | 55 req/sec | 18 req/sec | +305% |
| 256 | 27 req/sec | 9 req/sec | +300% |
| 384 | 17 req/sec | 5 req/sec | +340% |
| 512 | 12 req/sec | 4 req/sec | +300% |
延迟指标
对于长度不超过 64 个 token 的序列,Infinity 可以提供低至 1-4ms 的延迟。基准测试还表明,Infinity 在 p95、p99 和最大延迟 (p100) 之间保持了稳定的性能,偏差极小。
部署影响
能够针对吞吐量或延迟进行优化,使企业能够为相同的负载降低基础设施成本,或者实现此前在基于 CPU 的基础设施上无法实现的实时 AI 应用。
注意:截至 2022 年 12 月,Hugging Face Infinity 不再作为商业推理解决方案提供。Hugging Face 现在建议使用 Inference Endpoints 进行托管基础设施,或使用 Optimum Intel 和 Optimum ONNX Runtime 库进行开源硬件优化。
Sources
相关
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch