OpenNMT/CTranslate2

Fast inference engine for Transformer models

What it solves

CTranslate2 旨在解决 Transformer 模型推理慢、内存占用大的问题。它提供了一个自定义运行时,可在 CPU 和 GPU 上加速执行并降低内存使用,相比通用深度学习框架更高效。

How it works

该库实现了多种性能优化技术,包括:

  • 权重量化(支持 FP16、BF16、INT16、INT8 和 INT4/AWQ)
  • 层融合
  • 去除填充
  • 批次重排
  • 原位操作

支持广泛的模型类型,包括编码器‑解码器(如 T5、Whisper)、仅解码器(如 Llama、Mistral、Gemma)以及仅编码器(如 BERT)模型。模型必须使用提供的转换器转换为优化格式,支持的框架有 PyTorch(Transformers)、Fairseq 和 OpenNMT 等。

Who it’s for

面向需要在各种硬件架构(x86‑64、ARM64)和 GPU 上以高吞吐量、低内存占用部署 Transformer 模型的开发者和面向生产的用户。

Highlights

  • Broad Model Support:支持包括 Llama、Mistral、BERT 在内的大量 Transformer 架构。
  • Hardware Optimization:针对多种 CPU 后端(Intel MKL、oneDNN、OpenBLAS、Ruy、Apple Accelerate)进行优化,并自动检测 CPU。
  • Quantization:在几乎不损失精度的情况下,降低模型磁盘大小和内存使用。
  • Parallel Execution:支持在多 GPU 或 CPU 核心之间并行、异步执行,并提供针对超大模型的张量并行。
  • Simple Integration:提供依赖少、易用的 Python 与 C++ API。