Hugging Face 加速推理 API 优化
Hugging Face 实施了一系列优化策略,在其加速推理 API 中实现了 transformer 推理性能 100 倍的提升。这一改进对于将大规模 NLP 模型部署到实时消费者应用延迟为主要约束的生产环境中至关重要。
高层库和流水线优化
Hugging Face 通过利用 Transformers 和 Tokenizers 库中最有效的方法,在不依赖目标硬件的情况下,实现了最初的 10 倍加速。
高效模型流水线
该 API 利用优化的模型流水线来减少每次前向传播过程中的计算量。对于基于 GPT 的文本生成任务,这涉及通过仅关注每次传播中最后一个 token 的新注意力,来降低注意力矩阵计算的维度。
基于 Rust 的分词
由于分词(tokenization)经常是推理效率的瓶颈,Hugging Face 通过 🤗 Tokenizers 库采用了模型分词器的 Rust 实现。结合智能缓存,这种方法在整体延迟方面提供了高达 10 倍的加速。
硬件特定编译与底层调优
为了超越初步收益并实现进一步 10 倍的性能提升,Hugging Face 应用了针对特定模型架构和目标硬件(CPU 或 GPU)的底层优化。
CPU 的静态图优化
对于基于 CPU 的推理,团队采用了静态图技术来最大化计算效率。这些技术包括:
- Graph Optimization:移除模型图中未使用的流向数据。
- Layer Fusion:使用特定的 CPU 指令组合层。
- Quantization:优化操作以降低精度和计算需求。
自定义 ONNX Runtime 实现
虽然可以使用像 ONNX Runtime 这样的开源工具配合 Transformers,但 Hugging Face 指出,开箱即用的功能可能会导致次优结果或显著的精度损失,特别是在量化期间。团队通过手动调优 Transformers 代码和 ONNX Runtime 配置,使其与特定模型架构对齐,从而实现了额外的加速。
大规模模型架构的扩展性
模型规模的快速增长——从 BERT 的 1.1 亿参数增长到 GPT-3 的 1750 亿参数——使得生产环境部署变得越来越具有挑战性。Hugging Face 利用其作为 Transformers 和 Tokenizers 库维护者的地位,并结合与 Intel、NVIDIA、Qualcomm、Amazon 和 Microsoft 等硬件和云厂商的合作伙伴关系,利用最新的硬件优化技术来调优模型与基础设施的交集。