AI・機械学習
上級

MLC-LLM 推論フレームワーク(エムエルシーエルエルエム スイロンフレームワーク)

Machine Learning Compilation for LLMの略。Apache TVM/MLCコンパイラスタックを用いてLLMをCUDA/Metal/Vulkan/WebGPU向けに最適化コンパイルし、スマートフォンから高性能GPUまで幅広いデバイスでLLMを実行するフレームワーク。

0 回閲覧
0 いいね
2026/6/1 更新
関連タグ
MLC-LLM
TVM
WebGPU
WebLLM
モバイルLLM
コンパイル最適化
iOS
Android

MLC-LLMとは

MLC-LLM(Machine Learning Compilation for Large Language Models)は、Apache TVM/MLCコンパイラインフラを使ってLLMをターゲットデバイスの最適機械語にコンパイルするフレームワークです。Carnegie Mellon University・上海交通大学・MLC AIチームが開発し、2023年5月に公開されました。

「どのデバイスでも動くLLM」 を実現するのがコンセプトで、NVIDIA GPU(CUDA)、Apple GPU(Metal)、AMD GPU(Vulkan)、iPhone/Android、そしてWebブラウザ(WebGPU)をサポートします。

主な特徴

TVMコンパイラによる自動カーネル最適化

  • テンソル演算をターゲットHWのISA(PTX/Metal Shading Language/SPIRV)に直接コンパイル
  • Auto-tuningでCUDA cuBLASを超えるカーネル性能を実現するケースあり
  • 量子化(Q4_0/Q4_K_M)を演算グラフに組み込みKernel Fusion

WebLLM:ブラウザ内LLM推論

  • Chrome/Edge 113+(WebGPU対応)でモデルをブラウザ内実行
  • モデルキャッシュはIndexedDB(初回ダウンロード後はオフライン動作)
  • WebLLM npm パッケージでReact/Vue/Vite等に統合可能

モバイルデプロイ

  • iOS: Metal + CoreML経由。Gemma 2 2B Q4をiPhone 15 Proで18 tok/s
  • Android: OpenCL + Vulkan。Phi-3 Mini 4K Q4をSnapdragon 8 Gen 3で15 tok/s
  • React Native対応パッケージあり

対応デバイスとパフォーマンス

デバイスモデルバックエンド速度(tok/s)モデルサイズ
RTX 4090Llama 3.1 8B Q4CUDA1854.5GB
M3 MaxLlama 3.1 8B Q4Metal1054.5GB
iPhone 15 ProGemma 2 2B Q4Metal181.4GB
Snapdragon 8 Gen3Phi-3 Mini Q4Vulkan152.3GB
Chrome(WebGPU)Llama 3.1 8B Q4WebGPU124.5GB
RX 7900 XTXLlama 3.1 8B Q4Vulkan954.5GB

llama.cppとの比較

観点MLC-LLMllama.cpp
コンパイル方式TVM事前コンパイルJITなし実行
GGUF対応変換パス経由ネイティブ
WebGPU対応✅(WebLLM)❌
モバイル対応✅(iOS/Android)限定的
セットアップ難易度高(コンパイル要)低
カスタムカーネル自動生成手動実装

インストールと使用例

Python APIで推論

import mlc_llm

llm = mlc_llm.ChatModule(
    model="HF://mlc-ai/Llama-3.1-8B-Instruct-q4f16_1-MLC",
    device="cuda",
)

response = llm.generate(
    "東京の人口は?",
    progress_callback=mlc_llm.GenerationConfig(max_tokens=200)
)
print(response)

WebLLM(ブラウザ統合)

import { CreateMLCEngine } from "@mlc-ai/web-llm";

const engine = await CreateMLCEngine(
  "Llama-3.1-8B-Instruct-q4f16_1-MLC",
  { initProgressCallback: (p) => console.log(p.text) }
);

const reply = await engine.chat.completions.create({
  messages: [{ role: "user", content: "こんにちは" }],
});

xGrammarによる制約付きデコーディング

MLC-LLMはxGrammar(MLC AIが開発した文法ベースデコーディングエンジン)をネイティブ統合しています。JSON Schema・正規表現・BNF文法を指定することで、LLMの出力を強制的に構造化JSON等にできます。

llm.generate(
    "ユーザー情報を抽出: 田中太郎、30歳、東京在住",
    generation_config=mlc_llm.GenerationConfig(
        response_format={"type": "json_object",
                         "schema": user_schema}
    )
)
# → {"name": "田中太郎", "age": 30, "city": "東京"} を保証出力

FAQ

Q1: llama.cppとどちらを使うべきですか? A: ローカルPC・サーバー推論ならllama.cppの方がセットアップ簡単です。モバイルアプリ組み込みやブラウザ内推論が目的ならMLC-LLMが最適です。

Q2: GGUF形式のモデルをそのまま使えますか? A: 直接は使えません。mlc_llm convertコマンドでMLC形式に変換する手順が必要です(所要時間:8Bモデルで約5分)。

Q3: 商用利用は可能ですか? A: MLC-LLMはApache 2.0ライセンスで商用利用可能です。ただしモデルのライセンスは別途確認が必要です。

Q4: iOS App Storeに審査提出できますか? A: 可能です。MLC-LLMのiOS SPMパッケージをXcodeに組み込んだアプリが複数App Storeで公開されています。

まとめ

MLC-LLMはTVMコンパイラによるハードウェア最適化とWebGPU/モバイル対応を両立する唯一の本番級LLM推論フレームワークです。ローカル開発にはllama.cppが手軽ですが、モバイルアプリ・ブラウザアプリ・最大限のGPU性能を求める場合はMLC-LLMが強力な選択肢となります。

この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/1