AI・機械学習
初級

Inference Engine(インファレンスエンジン)

Inference Engineは、人工知能・機械学習分野における重要な概念・技術です。

0 回閲覧
0 いいね
2026/4/25 更新
関連タグ
AI
機械学習
初心者向け

Inference Engine(推論エンジン)

概要

Inference Engine(推論エンジン)は、学習済みの機械学習モデルを本番環境で効率的に実行するためのソフトウェアフレームワークです。学習は研究・開発フェーズで行われる一方、推論(Inference)は実運用で繰り返し実行されるため、高速性・低レイテンシ・省メモリ・デプロイの容易さが重視されます。

推論と学習の違い

項目学習(Training)推論(Inference)
頻度一度 / 定期継続的
計算量非常に多い中程度
勾配計算必要不要
メモリ大量必要少なくて済む
バッチサイズ大きい小さい(リアルタイム)
目的モデル構築モデル活用

主要な推論エンジン

汎用・クロスプラットフォーム

エンジン開発元対応特徴
ONNX RuntimeMicrosoft全般業界標準、広範な対応
TensorRTNVIDIANVIDIA GPU最高速度、GPU 特化
OpenVINOIntelIntel CPU/GPU/NPUIntel 最適化
Core MLAppleApple シリコンiOS/macOS 統合
TFLiteGoogleモバイル・組込みAndroid 標準

エッジ・組込み

エンジン対応特徴
NCNNモバイルTencent、軽量
MNNモバイルAlibaba、高速
TNNモバイルTencent、軽量
Paddle LiteモバイルBaidu
ArmnnARMARM 最適化

LLM 特化

エンジン特徴
vLLMPagedAttention、高スループット
TGIHugging Face 本番向け
llama.cppCPU/GPU、量子化
Ollamaローカル LLM 実行
TensorRT-LLMNVIDIA、H100/B200
MLC-LLMマルチプラットフォーム

最適化技術

量子化(Quantization)

モデルの精度を落として軽量化・高速化:

量子化サイズ速度精度
FP32100%1×基準
FP1650%2×99%
BF1650%2×99%
INT825%3×95-98%
INT412.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 &lt;&lt; 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
この記事について
カテゴリーAI・機械学習
難易度初級
作成日2025/7/11