Featured image of post AI推論スタック整理ノート

AI推論スタック整理ノート

背景

  • 機械学習のアーキの選定で色々比較したくなったが、用語がたくさんありすぎて混乱してきた
  • 昔はモデルはPyTorchで作り、GPU推論はCUDAとTensorRT、CPU推論はONNXでOKだった
  • しかし、LLM関連やEdge側での実行、CUDA以外にもOpenCL、Vulkanなど色々あるので複雑化している
  • 例えば、Gemma4 e2bをJetsonでGPUモードで動かす時に、何のbackendで動かせばいいかを調べる必要がある
  • そこで、AIに用語を改めてまとめて整理してもらったので、そのノートを残す

全体像

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
[アプリ / サーバ / SDK]
  LM Studio / Ollama / 自作CLI / 自作C++・Pythonアプリ / MediaPipe Tasks API

[LLM・推論ランタイム]
  llama.cpp / ONNX Runtime / MNN / ncnn / LiteRT / LiteRT-LM / TensorRT-LLM

[acceleratorの差し込み口]
  CUDA EP / TensorRT EP / 各runtimeの CUDA backend / Vulkan backend / OpenCL backend / WebGPU backend

[モデル形式・配布形式]
  .onnx / .mnn / .gguf / .tflite / .task / .litertlm / safetensors

[低レベルGPU/計算API]
  CUDA / TensorRT / Vulkan / OpenCL / OpenGL ES / OpenGL / WebGPU / WebGL

[OS・SDK・ドライバ]
  JetPack / Jetson Linux / NVIDIA driver / compiler toolchains

[ハードウェア]
  CPU / GPU / NPU / TPU / RAM / ストレージ
  • この図でのコツは、モデルランタイム低レベルAPIを絶対に混ぜないこと。
  • たとえば Qwen はモデルMNN はランタイム.mnn はそのランタイム向けモデル形式Vulkan はさらに下のGPU API。 (GitHub)

レイヤー別の全体表

レイヤー何が入るか役割代表例根拠
0. ハードウェアSoC(System on Chip), CPU, GPU, RAM実際に演算する物理マシンJetson Orin Nano, GeForce RTX, NVIDIA RTX PRO、Tegra K1 SocJetson は edge/embedded、RTX / RTX PRO は desktop / laptop / workstation 側の NVIDIA GPU 群。
1. OS / 配布SDKOS, BSP, ドライバ同梱SDKハードを使える状態にするJetPack, Jetson Linux, Windows, LinuxJetson 系と RTX PC / workstation 系で土台が異なる。
2. ベンダー計算SDK / 推論SDK / graphics APIGPU を叩く低レベル基盤や推論SDKGPU/アクセラレータ計算や推論最適化CUDA, TensorRT, TensorRT-RTX, Vulkan, OpenCL, OpenGL, WebGPU, WebGLTensorRT-RTX は RTX GPU 向けの compact inference library。
3. モデル形式 / IR / バンドルモデルの保存・交換・配布形式ランタイムに渡す「中身」.onnx, .mnn, .gguf, .tflite, .task, .litertlm, .safetensorsONNX は open format、.task は MediaPipe 向け self-contained package、.litertlm は LiteRT-LM 向け形式。 (ONNX Runtime)
4. 汎用推論ランタイムモデルを実行する本体推論実行、スケジューリング、メモリ管理ONNX Runtime, MNN, ncnn, LiteRTORT は cross-platform accelerator、MNN は lightweight inference engine、LiteRT は on-device framework、ncnn は Vulkan 利用の軽量推論系。 (ONNX Runtime)
5. LLM専用ランタイムLLM特有の処理を担当KV cache, sampler, stateful inferencellama.cpp, LiteRT-LM, TensorRT-LLM, TensorRT Edge-LLM, MNN-LLMTensorRT Edge-LLM は embedded 向け C++ LLM/VLM runtime。
6. バックエンド / Execution Provider下のハードaccelerator先への接続どのGPU/NPU/CPUで実行するか選ぶCUDA EP, TensorRT EP, Vulkan backend, OpenCL backend, WebGPU backendORT は EP でaccelerator先を差し替え、LiteRT の Linux GPU backend は WebGPU(Vulkan) 。 (ONNX Runtime)
7. アプリ / API / 配布SDKユーザーが触る入口実アプリとして使うMediaPipe Tasks, LLM Inference API, CLI, Python bindingMediaPipe Tasks は solution API、LLM Inference API は on-device LLM 用、Gemma docs では LiteRT-LM CLI も案内されている。 (Google AI for Developers)

用語整理

用語レイヤー分類ひとことで典型的に何の上で動くか / 何を使うかJetson Orin Nano文脈
Jetson Orin Nano0ハードウェアNVIDIA の edge/embedded 向け SoC ボードJetPack / Jetson Linux の上物理マシン本体。 (NVIDIA Developer)
JetPack1配布SDKJetson 向け OS + AI stack まとめJetson Linux, CUDA, TensorRT, cuDNN などを同梱Jetson 開発の土台。 (NVIDIA Developer)
CUDA2低レベル計算基盤NVIDIA GPU 計算の本流NVIDIA GPU / CUDA driverJetson で NVIDIA 流に速くする土台。 (NVIDIA Docs)
cuDNN2〜3DNNライブラリNVIDIA の DL primitivesCUDA の上JetPack に同梱。多くのフレームワークが内部利用。 (NVIDIA Developer)
TensorRT2〜3推論SDKNVIDIA GPU 向け推論最適化/実行SDKCUDA の上Jetson/NVIDIA 本流の推論高速化。 (NVIDIA Docs)
TensorRT-LLM5LLM専用ランタイムTensorRT 系の LLM 特化版NVIDIA GPU, TensorRTQwen3 例もある。Jetson/NVIDIA LLM 本流の一つ。 (NVIDIA GitHub)
OpenCL2標準 compute APIベンダー横断の GPU/CPU 計算API各ベンダーの OpenCL 実装NVIDIA 専用ではない。 (The Khronos Group)
PoCL2OpenCL実装OpenCL の実装の1つClang/LLVM を利用、CPU/一部GPU targetsOpenCL “規格” ではなく “実装”。 (PoCL)
Vulkan2低レベル graphics+compute APIlow-level GPU APIGPU driver の上Jetson は Vulkan をサポート。 (Vulkan)
OpenGL / OpenGL ES2graphics API主に描画 APIGPU driver の上Jetson がサポート。推論ランタイム内部の補助経路に出ることもある。 (The Khronos Group)
WebGL2Web graphics APIブラウザ向け 3D APIHTML Canvas 上、OpenGL ES ベースnative Jetson 推論の中心ではない。 (The Khronos Group)
WebGPU2Web/汎用GPU APIWeb 向けの新しい GPU APIVulkan / Metal / D3D12 等にマップされるLiteRT Linux GPU backend の表記に登場。 (W3C)
ONNX3モデル形式 / IRopen model formatONNX Runtime, TensorRT などへ渡す形式であってランタイムではない。 (ONNX Runtime)
.onnx3ファイル形式ONNX の実ファイルORT, TensorRT, MNN converter など中立的な受け渡し形式。 (ONNX Runtime)
TFLite / .tflite3モデル形式LiteRT 系のモデル形式LiteRT / MediaPipe.task.litertlm の元になることがある。 (Google AI for Developers)
.task3タスクバンドルモデル + tokenizer + metadata の bundleMediaPipe Tasks / LLM Inference API単体モデルではなく配布バンドル。 (Google AI for Developers)
.litertlm3LLMバンドル/形式LiteRT-LM runtime 向け形式LiteRT-LMGemma の LiteRT-LM 配布で登場。 (Google AI for Developers)
.mnn3モデル形式MNN 用のモデル形式MNN / MNN-LLMONNX などから変換される。 (GitHub)
GGUF / .gguf3モデル形式llama.cpp 系で一般的な配布形式llama.cpp, LM Studio などQwen/Gemma の GGUF 配布も多い。Qwen3 README は GGUF 利用例を案内。 (GitHub)
safetensors3モデル重み形式Hugging Face 系で一般的PyTorch/Transformers などから変換元にGemma → .task 変換元として公式に案内。 (Google AI for Developers)
ONNX Runtime4汎用推論ランタイムONNX を実行する engineCPU / CUDA EP / TensorRT EP / ほか中立的で移植性が高い。 (ONNX Runtime)
MNN4汎用推論ランタイムAlibaba の軽量推論 engineCPU / Vulkan などQwen を含む on-device 系で使われる。 (GitHub)
ncnn4汎用推論ランタイムTencent の軽量推論 engineCPU / VulkanJetson でも Vulkan 前提で使いうる。 (GitHub)
LiteRT4on-device推論基盤Google の on-device ML/GenAI frameworkCPU/GPU/NPU.tflite.litertlm を扱う基盤。 (Google AI for Developers)
llama.cpp5LLMランタイムC/C++ のローカル LLM engineCPU, CUDA, Vulkan などQwen/Gemma をローカルで動かす代表格。 (GitHub)
LiteRT-LM5LLMランタイムLiteRT 上の LLM 専用 frameworkLiteRT / CPU/GPU/NPU backends.litertlm を動かす本体。 (Google AI for Developers)
MNN-LLM5LLMランタイムMNN 上の LLM engineMNNexport と inference を提供。 (GitHub)
CUDA EP6Execution ProviderORT から CUDA を使う差し込み口ONNX Runtime + CUDAORT で NVIDIA GPU を使う道。 (ONNX Runtime)
TensorRT EP6Execution ProviderORT から TensorRT を使う差し込み口ONNX Runtime + TensorRTORT で NVIDIA 向け高速化する道。 (ONNX Runtime)
Vulkan backend6runtime backendVulkan を使う実行経路ncnn, llama.cpp などJetson で使える可能性が高い backend。 (GitHub)
OpenCL backend6runtime backendOpenCL を使う実行経路一部 runtimes / LiteRT AndroidJetson で主役とは限らない。 (The Khronos Group)
WebGPU backend6runtime backendWebGPU を使う実行経路LiteRT Linux GPU backendLiteRT Linux は WebGPU (Vulkan) と明記。 (Google AI for Developers)
MediaPipe Tasks7API/SDK使いやすい solution API.task を読み込む.task バンドルの受け皿。 (Google AI for Developers)
LLM Inference API7API/SDKMediaPipe の on-device LLM API.task bundle などAndroid guide では LiteRT-LM への移行推奨も記載。 (Google AI for Developers)
Qwen3の中身 / モデルそのものモデル系列Alibaba Cloud の LLM familyTransformers, llama.cpp, MNN, TensorRT-LLM 等で実行可能MNNそのものではない。 (GitHub)
Gemma3の中身 / モデルそのものモデル系列Google 系のオープンモデル familyLiteRT-LM, llama.cpp, LM Studio など.task / .litertlm 系とも接続。 (Google AI for Developers)
GeForce RTX / NVIDIA RTX PRO0ハードウェア / GPU製品ラインNVIDIA の desktop / laptop / workstation 向け GPU 群Windows / Linux + NVIDIA driver の上Jetson とは別の PC / workstation 側の比較対象。
TensorRT-RTX2〜4推論SDK / inference libraryRTX GPU 向けの軽量 TensorRT 系推論ライブラリNVIDIA RTX GPU / Windows / LinuxRTX PC 向け。Edge / Embedded 向けではない
TensorRT Edge-LLM5LLM / VLM専用ランタイムembedded 向けの軽量 C++ inference runtimeJetson / DRIVE + TensorRT + CUDAJetson/DRIVE 系の edge runtime。現時点では JetPack 7.1 / Jetson Thor での公式案内が強い

よくある混同

よくある混同正しい整理
Qwen は MNN か?No。Qwen はモデルMNN はランタイム。Qwen3 公式 README では llama.cpp / MNN / TensorRT-LLM など複数の実行先が案内されている。 (GitHub)
.task はモデル形式か?半分 yes 、より正確には MediaPipe 向け task bundle 。モデル本体に tokenizer と metadata を同梱した self-contained package 。 (Google AI for Developers)
.litertlm は LiteRT-LM 専用か?実務上は LiteRT-LM runtime 向けの LLM bundle/format と考えてよい。Gemma docs でも LiteRT-LM CLI で .litertlm を使うと案内されている。 (Google AI for Developers)
ONNX はランタイムか?No。ONNX は形式ONNX Runtime は実行エンジン。 (ONNX Runtime)
PoCL は OpenCL か?No。OpenCL は規格PoCL はその実装の1つ。 (The Khronos Group)
WebGL と WebGPU は同じか?No。WebGL は OpenGL ES ベースの web graphics API、WebGPU は より新しい web 向け GPU API で、graphics だけでなく compute も重視している。 (The Khronos Group)
Vulkan と CUDA は同じか?No。どちらも GPU を使えるが、CUDA は NVIDIA 専用の計算基盤、Vulkan は 標準の graphics+compute API 。 (NVIDIA Docs)
LiteRT-LM は TensorRT-LLM の別名か?No。LiteRT-LM は Google AI Edge 側、TensorRT-LLM は NVIDIA 側 の別スタック。 (Google AI for Developers)
TensorRT-RTX は TensorRT-LLM の RTX版か?No。TensorRT-RTX は RTX向けの一般推論ライブラリ。公式 docs でも native LLM は out of the box ではなく、TensorRT-LLM との統合も現時点では unavailable とされている。
TensorRT Edge-LLM は TensorRT-LLM の別名か?No。TensorRT-LLM は desktop / data center を含む NVIDIA GPU 向けの LLM 最適化ライブラリTensorRT Edge-LLM は Jetson / DRIVE 向けの embedded C++ runtime

具体的な選定手順

  • NVIDIA 本流
    • PyTorch / ONNX / 一部 LLM
    • TensorRT / TensorRT-LLM / ONNX Runtime + CUDA or TensorRT EP
    • CUDA / TensorRT
    • Jetson Orin Nano
    • これは JetPack に CUDA・TensorRT が入っているので、Jetson では最も自然な本流。 (NVIDIA Developer)
  • ローカル LLM 汎用路線
    • GGUF モデル
    • llama.cpp
    • CUDA backend / Vulkan backend / CPU
    • Jetson Orin Nano
    • llama.cpp は複数 backend を同時ビルドでき、CUDA と Vulkan を併用可能。 (GitHub)
  • Google AI Edge 路線
    • .litertlm または .task
    • LiteRT-LM / MediaPipe LLM Inference API
    • LiteRT
    • Linux GPU backend = WebGPU (Vulkan)
    • Jetson Orin Nano
    • Gemma の LiteRT-LM 系を Jetson で動かすなら、この理解がいちばん自然。 (Google AI for Developers)
  • 軽量 edge 推論路線(mnn)
    • .mnn
    • MNN / MNN-LLM
    • Vulkan など
    • Jetson Orin Nano
  • 軽量 edge 推論路線(ncnn)
    • ncnn モデル
    • ncnn
    • Vulkan
    • Jetson Orin Nano
    • MNN も ncnn も edge/embedded 色が強い。 (GitHub)
  • RTX PC / workstation 路線
    • ONNX モデル / CNN / Diffusion / Speech
    • TensorRT-RTX
    • GeForce RTX / NVIDIA RTX PRO
    • Windows / Linux
    • これは Jetson ではなく、RTX PC / workstation 向けの NVIDIA 路線
    • TensorRT-RTX は RTX GPU 向けの compact inference library で、build once / deploy anywhere に寄せた設計
Built with Hugo
テーマ StackJimmy によって設計されています。