TurboMind推論エンジン(ターボマインド スイロンエンジン)
LMDeployに内蔵されたC++/CUDA製の高性能LLM推論バックエンド。Paged KV Cache・Continuous Batching・W4A16量子化カーネルをC++レイヤーで実装しPython APIから透過的に利用できる。NVIDIA A100/H100/L40S上でvLLM比最大80%高いスループットを実現したベンチマーク結果が報告されている。
TurboMindとは
TurboMindは、LMDeployフレームワークのコア推論バックエンドとして上海AIラボが開発したC++/CUDA製の高性能LLMエンジンです。Pythonの動的型システムやオーバーヘッドを排し、CUDA Tensor CoreとNCCLを直接制御することで最大スループットを追求する設計です。
アーキテクチャ概要
┌─────────────────────────────────┐
│ LMDeploy Python API / REST API │
├─────────────────────────────────┤
│ pybind11 バインディング層 │
├─────────────────────────────────┤
│ TurboMind C++ コア │
│ ┌──────────┬──────────────────┐ │
│ │Scheduler │ Memory Manager │ │
│ │(Cont. │ (Paged KV Cache)│ │
│ │Batching) │ │ │
│ ├──────────┴──────────────────┤ │
│ │ CUDA Kernel Layer │ │
│ │ Flash Attn2 / W4A16 Gemm │ │
│ │ NCCL All-Reduce (TP) │ │
│ └─────────────────────────────┘ │
├─────────────────────────────────┤
│ NVIDIA CUDA / cuBLAS / NCCL │
└─────────────────────────────────┘
主要最適化技術
Fused W4A16量子化カーネル
通常のAWQ推論では「Dequantize(4bit→16bit変換)→MatMul」の2ステップが必要ですが、TurboMindはこれをCUDAカーネル内で融合(Fusion)します。
- BitShift + Scale + Zero-point補正 + HMMA.16816(Tensor Core命令)を1カーネルで実行
- Dequantizeオーバーヘッドを全体の8%以下に抑制(通常実装は25〜35%)
Paged KV Cache実装
物理メモリブロック(デフォルト: 16トークン×128dim×2(K,V)×2bytes = 128KB)
論理シーケンス → 物理ブロックテーブルでマッピング
シーケンス終了時: ブロック即解放 → 新リクエストへ再割当て
Tensor Parallel(NCCLベース)
| GPU数 | Llama 3.1 70B tok/s(A100 80GB) | 線形効率 |
|---|---|---|
| 1 | 880 | 100% |
| 2 | 1,650 | 93.8% |
| 4 | 3,200 | 90.9% |
| 8 | 6,100 | 86.6% |
NVLink接続環境では8GPU構成でも86%以上の線形効率を実現。
LMDeployのTransformersバックエンドとの切り替え
from lmdeploy import pipeline, TurbomindEngineConfig, PytorchEngineConfig
# TurboMindバックエンド(高速・推奨)
pipe_turbomind = pipeline(
"meta-llama/Meta-Llama-3.1-8B-Instruct",
backend_config=TurbomindEngineConfig(tp=1, quant_policy=4)
)
# Transformers互換バックエンド(デバッグ・精度検証向け)
pipe_pytorch = pipeline(
"meta-llama/Meta-Llama-3.1-8B-Instruct",
backend_config=PytorchEngineConfig(tp=1)
)
# 同一プロンプトで比較
prompt = "日本の首都は?"
print("TurboMind:", pipe_turbomind([prompt])[0].text)
print("PyTorch: ", pipe_pytorch([prompt])[0].text)
量子化設定とVRAM使用量(Llama 3.1 70B)
| 設定 | quant_policy値 | VRAM(4GPU) | スループット | 精度損失 |
|---|---|---|---|---|
| FP16(無量子化) | 0 | 320GB | 1,800 tok/s | なし |
| W4A16(AWQ) | 4 | 84GB | 3,200 tok/s | <0.5% |
| W8A8 | 8 | 160GB | 2,600 tok/s | <0.3% |
| W4A16+INT4 KVCache | 4+cache_int4 | 64GB | 3,400 tok/s | <1% |
vLLMとの設計哲学の違い
| 観点 | TurboMind | vLLM |
|---|---|---|
| 実装言語 | C++/CUDA コア | Python + Triton |
| カーネルカスタム | 手書きCUDA | Triton JIT |
| 量子化統合 | 深いFusion | エクスターナル(AutoAWQ等) |
| デバッグ容易性 | 低(C++) | 高(Python) |
| コミュニティ規模 | 中 | 大 |
FAQ
Q1: TurboMindとLMDeployは別物ですか? A: TurboMindはLMDeployのC++推論バックエンドです。LMDeployはPython API・サービング層・変換ツールを含む上位フレームワークで、TurboMindはその心臓部です。
Q2: カスタムモデルアーキテクチャを追加できますか? A: C++でモデル定義(Attention/FFNカーネル)を実装してLMDeployに登録する手順があります。難易度は高いですが、公式ドキュメントに追加ガイドがあります。
Q3: H100 SXMでの性能は? A: A100比で約2.4倍(HBM3帯域幅とTensor Core世代差による)のスループットが報告されています。H100×8でLlama 3.1 405Bのサービングが実用速度で動作します。
Q4: AMD ROCmは対応していますか? A: TurboMindはNVIDIA CUDA専用です。AMD対応はLMDeployのPyTorchバックエンド経由で限定的にサポートされています。
まとめ
TurboMindはC++/CUDAカーネル直書きによるFused量子化演算とNCCLマルチGPU並列化で、Python実装のvLLMを最大80%上回るスループットを発揮する商用グレードの推論エンジンです。LMDeployの中核として、特にInternLM・Qwen・LlamaシリーズのA100/H100本番サービングで実績があります。