project
XGrammar - 陳天奇氏のチームが開発したLLM構造化生成エンジン
XGrammarは、Tianqi Chen氏のチームによって開発されたオープンソースのソフトウェアライブラリです。大規模言語モデル(LLM)向けに、効率的で柔軟性があり、移植性の高い構造化データ生成機能を提供します。文脈自由文法(CFG)定義構造に基づいており、…をサポートしています。
XGrammarとは何ですか?
Tianqi Chen氏のチームが開発したオープンソースソフトウェアライブラリであるXGrammarは、大規模言語モデル(LLM)向けに、効率的で柔軟性があり、移植性の高い構造化データ生成機能を提供します。文脈自由文法(CFG)定義に基づき、複雑な構造を表現するための再帰合成をサポートし、JSONやSQLなどの形式でのデータ生成に適しています。XGrammarは、バイトレベルのプッシュダウンオートマトンを使用してCFG解釈を最適化し、トークンごとのレイテンシを削減し、オーバーヘッドをほぼゼロに抑えながら100倍の高速化を実現します。XGrammarは、適応型トークンマスクキャッシュやコンテキスト拡張など、さまざまなシステム最適化を統合し、マスク生成速度の向上と前処理時間の短縮を実現します。XGrammarのC++バックエンド設計は統合が容易で、LLM推論中の構造化データ生成をオーバーヘッドゼロでサポートします。
XGrammarの主な機能
- 効率的な構造化生成コンテキスト自由構文(CFG)をサポートしており、特定の形式(JSONやSQLなど)に準拠した構造化データを定義および生成できます。
- 柔軟性CFGの再帰規則に基づいているため、複雑な構造を柔軟に表現でき、多様な構造化データのニーズに対応できます。
- オーバーヘッドゼロの統合XGrammarは、LLM推論エンジンと連携して設計されており、LLM推論においてオーバーヘッドゼロの構造化生成を実現します。
- 迅速に実行するシステム最適化に基づき、構造化生成の実行速度が大幅に向上し、トークンあたりの遅延は最先端(SOTA)手法と比較して最大100分の1に短縮されました。
- クロスプラットフォーム展開最小限の構成で移植性の高いC++バックエンドを備えており、複数の環境やフレームワークに容易に統合できます。
- 適応型トークンマスクキャッシュ前処理段階で生成することで、実行時のマスク生成を高速化します。
XGrammarの技術的原則
- バイトレベルプッシュダウンオートマトン(PDA)バイトレベルのPDAを使用してCFGを解釈し、各文字の境界が1バイト以上を含むことをサポートし、不規則なトークン境界を処理し、UTF-8以下の文字を含むトークンをサポートします。
- 前処理と実行時最適化前処理段階では、適応型トークンマスクキャッシュが生成され、事前に計算されたコンテキストに依存しないトークンに基づいて、実行時のマスク生成が高速化されます。
- 文脈に依存しないトークンと関連トークンの区別コンテキストに依存しないトークンとコンテキストに依存するトークンを区別し、PDA内の各場所でコンテキストに依存しないトークンの有効性を事前に計算し、適応型トークンマスクキャッシュに保存する。
- 構文コンパイル構文コンパイル処理に基づき、マスク内のトークンの大部分が事前に計算されるため、マスク生成速度が向上します。
- アルゴリズムとシステムの最適化これには、コンテキスト拡張、永続実行スタック、プッシュダウンオートマトン構造の最適化が含まれ、マスク生成速度をさらに向上させ、前処理時間を短縮します。
- マスク生成はLLM推論と重複するCPU上でのマスク生成処理とGPU上でのLLM推論処理を並列化することで、制約デコードのオーバーヘッドを排除する。
XGrammarのプロジェクトアドレス
- プロジェクト公式サイト:xgrammar.mlc.ai
- GitHubリポジトリ:https://github.com/mlc-ai/xgrammar
- arXiv技術論文:https://arxiv.org/pdf/2411.15100
XGrammarの応用例
- プログラミング言語支援コードの記述やデバッグを支援するために使用され、特定のプログラミング言語の仕様に準拠したコードスニペットを自動的に生成することで、開発効率を向上させます。
- データベース操作SQL構文に準拠したクエリ文を生成することで、開発者やアプリケーションがデータベースクエリを自動的に構築し、SQL文を手動で記述する作業量を削減するのに役立ちます。
- 自然言語処理(NLP)自然言語処理(NLP)モデルのトレーニングと最適化のための構造化トレーニングデータを生成し、モデルの構造化情報処理能力を向上させる。
- ウェブ開発フロントエンドコードとAPIドキュメントを自動生成することで、ドキュメントとコードの一貫性を確保し、開発効率と保守性を向上させます。
- 設定ファイルとテンプレートシステム構成の自動生成やメールテンプレートへの入力など、構成ファイルやテンプレートを生成・入力することで、自動化レベルを向上させます。