AI・機械学習
上級
XGrammar(エックスグラマー)
MLC AI Teamが開発した高速文法制約デコーディングライブラリ。コンパイル済みオートマトンとGPU並列処理により、ほぼゼロオーバーヘッドで構造化LLM出力を生成する。
0 回閲覧
0 いいね
2026/6/6 更新
関連タグ
構造化出力
GPU最適化
LLM推論
文法制約
vLLM
XGrammarとは
MLC AI Teamが開発した高速Grammar-Constrained DecodingエンジンでCPython・Rust・C++バインディングを提供。JSON Schema/EBNFからコンパイル済みオートマトンを生成しGPU上で並列トークンマスキングを実行する。
他ライブラリとの性能比較(2024年計測)
| ライブラリ | Llama-3-8Bでのオーバーヘッド | アーキテクチャ |
|---|---|---|
| XGrammar | < 1% | コンパイル済みオートマトン + GPU並列 |
| Outlines(FSM) | 2〜5% | Python FSM + CPU |
| llama.cpp GBNF | 3〜10% | C++ シングルスレッド |
| lm-format-enforcer | 5〜20% | トークンごと再評価 |
出典: XGrammar技術レポート(arxiv:2411.15100)
インストール
pip install xgrammar
# vLLM経由(0.6.2以降デフォルトで内包)
pip install vllm
基本使用法
import xgrammar as xgr
import torch
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3-8B-Instruct")
tokenizer_info = xgr.TokenizerInfo.from_huggingface(tokenizer)
compiler = xgr.GrammarCompiler(tokenizer_info)
# JSON Schemaから文法をコンパイル
schema = '{"type":"object","properties":{"name":{"type":"string"},"age":{"type":"integer"}},"required":["name","age"]}'
compiled_grammar = compiler.compile_json_schema(schema)
# マッチャーを取得してトークンマスクを生成
matcher = xgr.GrammarMatcher(compiled_grammar)
bitmask = xgr.allocate_token_bitmask(1, tokenizer_info.vocab_size)
# 推論ループ内でlogitsをマスク
matcher.fill_next_token_bitmask(bitmask)
xgr.apply_token_bitmask_inplace(logits, bitmask)
vLLM統合(0.6.2以降)
from vllm import LLM, SamplingParams
llm = LLM(model="meta-llama/Llama-3-8B-Instruct",
guided_decoding_backend="xgrammar") # デフォルト
output = llm.generate(
"ユーザー情報を返して",
SamplingParams(
guided_decoding={"json": {"type":"object","properties":{}}}
)
)
設計上の特徴
- アダプティブトークンマスク: マスクの大部分が変化しない部分はキャッシュして再利用
- GPUバッチ並列: バッチ内の複数シーケンスのマスクを一括GPU演算
- コンテキスト依存文法: 文法の一部がコンテキスト(先行出力)に依存する場合も対応
- 近似モード: 超高速な近似マスキングで品質とスループットをトレードオフ可能
よくある質問(FAQ)
Q1: OutlinesからXGrammarへの移行は難しい? A: vLLMを使っている場合は0.6.2以降で自動的にXGrammarが使われる。スタンドアロン利用はAPIが異なるが概念は共通。
Q2: XGrammarはどのモデルサイズまで有効? A: 語彙サイズ100K〜200K(Llama 3・GPT-4相当)でも1%未満のオーバーヘッドを実証済み。
Q3: CPUのみ環境でも動く? A: CPUフォールバックあり。ただしパフォーマンス優位性はGPU環境で顕著。