OpenNMT/CTranslate2
Fast inference engine for Transformer models
解决的问题
CTranslate2 旨在使 Transformer 模型的推理更快且更具内存效率。它解决了在生产环境中部署基于 Transformer 的模型时,通用深度学习框架常见的高资源消耗和执行速度缓慢的问题。
运作原理
该库实现了一个自定义运行时,应用了多种性能优化技术,包括:
- 权重量化 (Weight Quantization): 将权重精度降低至 16-bit (FP16, BF16, INT16) 或 8-bit (INT8) 以及 4-bit (AWQ INT4),从而减少内存使用量并加速计算。
- 层融合 (Layer Fusion): 将多个操作合并为单个核心以减少开销。
- 批次重排序与填充移除 (Batch Reordering and Padding Removal): 优化数据处理方式,避免对填充标记 (padding tokens) 进行不必要的计算。
- 硬件优化 (Hardware Optimization): 使用 Intel MKL、oneDNN 和 Apple Accelerate 等库,为各种 CPU 架构 (x86-64, ARM64) 集成优化后端。
- 张量并行 (Tensor Parallelism): 允许将超大型模型拆分到多个 GPU 上进行分布式推理。
模型必须先从 PyTorch (Transformers)、Fairseq 或 OpenNMT 等框架转换为 CTranslate2 特有的优化格式。
适用对象
它旨在为需要部署 Transformer 模型(包括 Llama、Mistral 和 Gemma 等 LLM)以进行高性能、生产导向推理(涵盖 CPU 和 GPU)的开发人员和工程师所设计。
特色亮点
- 广泛的模型支持: 支持编码器-解码器 (encoder-decoder)、仅解码器 (decoder-only, LLMs) 和仅编码器 (encoder-only) 模型。
- C++ 和 Python API: 通过 Python 和 C++ 接口提供简单的集成。
- 低资源占用: 量化技术可在几乎不损失精度的情况下,将磁盘上的模型大小减少最多 4 倍。
- Llama/Mistral/Gemma 支持: 针对现代仅解码器架构进行了优化。
- 兼容 OpenAI 的 API: 可选的 Web 服务器封装程序允许与已支持 OpenAI API 的应用程序进行集成。
相关
- 项目
- 项目
- 项目
- 项目
- 项目