GPUを使った推論サーバー(TorchServeやTriton)は、設定次第でパフォーマンスが大きく変わります。ここでは「GPUを効率的に動かすための実践テクニック」をわかりやすくまとめます。


TorchServeとは?

PyTorch公式が提供する モデルサービングフレームワーク。学習済みモデルをREST APIやgRPCとして簡単に公開でき、スケールさせやすいのが特徴です。特にPyTorchユーザーが「すぐに推論APIを立てたい」ときに便利です。


TorchServe編:ワーカー数を上手に調整しよう

なぜ大事?

  • デフォルトだと GPU使用率が低く、スループットが伸びない
  • ワーカー数が少なすぎると重いモデルが他の処理をブロック。
  • 前処理・後処理のCPUスレッド不足も見落としがち。

よくある落とし穴

「ワーカー数は多ければ速いでしょ?」 → 実は逆効果のことも!

  • GPUメモリ不足でOOM(Out of Memory)が発生
  • コンテキスト切り替えで遅延が増える

解決策

  • nvidia-smi でGPUメモリ使用状況を観察
  • TorchServeのレイテンシ統計と合わせて 最適なワーカー数を見つける

サンプル設定(config.properties)

# サービス全体設定
inference_address=http://0.0.0.0:8080

# モデルごとのワーカー数調整
model_store=/models
load_models=resnet50.mar
models={ "resnet50": { "workers": 4, "gpu": true } }

Tritonとは?

NVIDIAが提供する 高性能な推論サーバー。TensorFlow、PyTorch、ONNXなど複数フレームワークをサポートし、バッチ推論・マルチモデル管理・GPU最適化などが強力です。クラウドや大規模環境でよく使われています。


Triton編:MIGでGPUを分割して効率UP

なぜ大事?

  • 大きなGPUを丸ごと1モデルに使うと 軽量モデルがリソースを占有してムダ
  • MIG(Multi‑Instance GPU)を使えば、1枚のGPUを複数インスタンスに分割できる。
  • Tritonなら instance_groupどのMIGに割り当てるか指定可能

よくある落とし穴

「MIGを有効化すればTritonが勝手にやってくれる」 → 自動検出しないこともある。

解決策

  • instance_group.gpusMIGデバイスIDを明示指定
  • 実際に動かして割り当てを確認する

サンプル設定(config.pbtxt)

instance_group [
  { kind: KIND_GPU
    count: 1
    gpus: [ "MIG-GPU-12345678/1/0" ]
  }
]
dynamic_batching { preferred_batch_size: [4,8] }

まとめ

  • TorchServe → ワーカー数を調整してGPUとCPUのバランスを取る
  • Triton → MIGを活用してマルチモデル運用を効率化

そして何より大事なのは: 👉 「数値を最大にする」のではなく、実測しながら最適化すること!


キーワード

  • TorchServe workers GPU
  • Triton MIG instance_group

投稿者 kojiro777

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です