AI・機械学習
初級
Inference Engine(インファレンスエンジン)
Inference Engineは、人工知能・機械学習分野における重要な概念・技術です。
0 回閲覧
0 いいね
2026/4/25 更新
関連タグ
AI
機械学習
初心者向け
Inference Engine(推論エンジン)
概要
Inference Engine(推論エンジン)は、学習済みの機械学習モデルを本番環境で効率的に実行するためのソフトウェアフレームワークです。学習は研究・開発フェーズで行われる一方、推論(Inference)は実運用で繰り返し実行されるため、高速性・低レイテンシ・省メモリ・デプロイの容易さが重視されます。
推論と学習の違い
| 項目 | 学習(Training) | 推論(Inference) |
|---|---|---|
| 頻度 | 一度 / 定期 | 継続的 |
| 計算量 | 非常に多い | 中程度 |
| 勾配計算 | 必要 | 不要 |
| メモリ | 大量必要 | 少なくて済む |
| バッチサイズ | 大きい | 小さい(リアルタイム) |
| 目的 | モデル構築 | モデル活用 |
主要な推論エンジン
汎用・クロスプラットフォーム
| エンジン | 開発元 | 対応 | 特徴 |
|---|---|---|---|
| ONNX Runtime | Microsoft | 全般 | 業界標準、広範な対応 |
| TensorRT | NVIDIA | NVIDIA GPU | 最高速度、GPU 特化 |
| OpenVINO | Intel | Intel CPU/GPU/NPU | Intel 最適化 |
| Core ML | Apple | Apple シリコン | iOS/macOS 統合 |
| TFLite | モバイル・組込み | Android 標準 |
エッジ・組込み
| エンジン | 対応 | 特徴 |
|---|---|---|
| NCNN | モバイル | Tencent、軽量 |
| MNN | モバイル | Alibaba、高速 |
| TNN | モバイル | Tencent、軽量 |
| Paddle Lite | モバイル | Baidu |
| Armnn | ARM | ARM 最適化 |
LLM 特化
| エンジン | 特徴 |
|---|---|
| vLLM | PagedAttention、高スループット |
| TGI | Hugging Face 本番向け |
| llama.cpp | CPU/GPU、量子化 |
| Ollama | ローカル LLM 実行 |
| TensorRT-LLM | NVIDIA、H100/B200 |
| MLC-LLM | マルチプラットフォーム |
最適化技術
量子化(Quantization)
モデルの精度を落として軽量化・高速化:
| 量子化 | サイズ | 速度 | 精度 |
|---|---|---|---|
| FP32 | 100% | 1× | 基準 |
| FP16 | 50% | 2× | 99% |
| BF16 | 50% | 2× | 99% |
| INT8 | 25% | 3× | 95-98% |
| INT4 | 12.5% | 4-6× | 85-95% |
Layer Fusion(レイヤー融合)
複数の演算を 1 つに統合:
- Conv + BN + ReLU → 1 つの融合レイヤー
- メモリアクセス削減
- 計算の効率化
Kernel Auto-tuning
ハードウェアに応じた最適カーネル選択:
- TensorRT: コンパイル時に最適化
- ONNX Runtime: 実行時プロファイリング
Graph Optimization
計算グラフを最適化:
- Dead Code Elimination: 不要な演算削除
- Constant Folding: 定数の事前計算
- Operator Fusion: 演算の結合
Dynamic Shape
入力サイズを動的に変更:
- 可変バッチサイズ: リクエストに応じて
- 可変解像度: 画像サイズの動的対応
推論の目標指標
Latency(レイテンシ)
1 つの入力の推論時間:
- リアルタイム要件: < 10ms(VR、自動運転)
- 対話型: < 100ms(チャットボット)
- バッチ: 1s 以下
Throughput(スループット)
単位時間あたりの処理数:
- 画像認識: 数千〜数万 img/s
- LLM: 数十〜数百 tokens/s
- 物体検出: 数百 FPS
Memory Footprint(メモリ使用量)
- モデル本体: 主要部分
- 実行時メモリ: 中間計算、バッチ
- KV Cache: LLM で重要
Cost(コスト)
- ハードウェア: GPU、CPU、NPU
- 電力: 特に長時間稼働
- クラウド: 従量課金
TensorRT(詳細)
NVIDIA GPU 向け最強の推論エンジン:
対応機能
- FP16/INT8 量子化: 自動最適化
- Layer Fusion: 自動適用
- Dynamic Shape: 柔軟な入力
- Multi-Stream: 並列実行
- Multi-Instance: A100 の MIG 対応
パフォーマンス向上の目安
- FP32 比: 5-10× 高速化
- PyTorch 比: 3-8× 高速化
- TensorFlow 比: 5-10× 高速化
使用例
import tensorrt as trt
# ONNX モデルを TensorRT エンジンに変換
logger = trt.Logger(trt.Logger.WARNING)
builder = trt.Builder(logger)
network = builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH))
parser = trt.OnnxParser(network, logger)
with open('model.onnx', 'rb') as f:
parser.parse(f.read())
config = builder.create_builder_config()
config.set_flag(trt.BuilderFlag.FP16)
engine = builder.build_engine(network, config)
ONNX Runtime(詳細)
業界標準の汎用推論エンジン:
対応バックエンド
- CPU: Intel MKL、OpenBLAS
- GPU: CUDA、ROCm、DirectML
- NPU: CoreML、NNAPI
- クラウド: Azure ML
使用例
import onnxruntime as ort
# セッション作成
session = ort.InferenceSession(
'model.onnx',
providers=['CUDAExecutionProvider', 'CPUExecutionProvider']
)
# 推論実行
input_name = session.get_inputs()[0].name
result = session.run(None, {input_name: input_data})
LLM 推論の特殊性
KV Cache
Transformer の推論では Key-Value キャッシュが大きなメモリを占有:
- Llama 3 8B: 16KB × シーケンス長
- Llama 3 70B: 160KB × シーケンス長
- 対策: PagedAttention(vLLM)、FlashAttention
生成の並列化
トークン生成は本質的に逐次的だが、以下で高速化:
- Speculative Decoding: 小モデルで予測 + 大モデルで検証
- Continuous Batching: リクエストを動的に統合
- In-Flight Batching: TensorRT-LLM
量子化
LLM 推論では INT4 が主流:
- GPTQ: 事後量子化
- AWQ: 活性化対応量子化
- BitsAndBytes: Hugging Face 統合
- GGUF: llama.cpp の形式
自作 PC での推論環境
NVIDIA GPU
# TensorRT(最速)
pip install tensorrt onnx-tensorrt
# ONNX Runtime
pip install onnxruntime-gpu
# vLLM(LLM)
pip install vllm
# Ollama(簡単)
curl -fsSL https://ollama.com/install.sh | sh
Intel CPU/GPU
# OpenVINO
pip install openvino
# ONNX Runtime CPU
pip install onnxruntime
Apple Silicon
- Core ML: Xcode 必要
- MLX: Apple 最適化フレームワーク
- llama.cpp: Metal 対応
デプロイメント選択肢
オンプレミス
- Docker + Kubernetes: スケーラブル
- NVIDIA Triton: マルチモデルサーバー
- TorchServe: PyTorch 公式
クラウド
- AWS SageMaker
- Google Vertex AI
- Azure ML
- Replicate: 個人向け
- Together AI: LLM 特化
エッジ
- モバイル: Android、iOS
- IoT: Raspberry Pi、ESP32
- 自動運転: Jetson、Drive PX
関連用語
- Quantization(量子化)
- Layer Fusion、Graph Optimization
- TensorRT、ONNX Runtime、OpenVINO
- vLLM、TGI、llama.cpp
- KV Cache、PagedAttention