- FreeTokenベンチマーク:大規模Mixture-of-Expertsモデルのローカルサービング性能を測定します。
- 基本的な考え方:GPU、CPU、システムメモリ、PCIe帯域幅を一つの推論プラットフォームとして統合します。
- 最適な用途:利用可能なGPUメモリを超えるオープンウェイトMoEモデルの実行です。
- セットアップ手順:ランタイムをインストールし、モデルファイルを確認してローカルエンドポイントを起動し、リクエストをテストします。
- 主な利点:適応型キャッシュとCPU-GPU実行により、コンシューマー向けハードウェア間で安定した性能を実現します。
FreeTokenベンチマークの概要
FreeTokenベンチマークは、大規模なMixture-of-Experts(MoE)モデル向けに設計された、エッジネイティブなサービングシステムの評価を指します。モデル全体をVRAMに収める必要はなく、FreeTokenは完全なエキスパートプールをホストメモリに保持しながら、GPUを柔軟なキャッシュおよび実行リソースとして使用します。
このシステムは、GPU容量、PCIeリンク、CPU帯域幅、メモリ容量が異なるマシンでのローカル推論を対象としています。ベンチマークでは、デコードスループット、初回トークンまでの時間、マルチターンのエージェントワークロード、複数のコンシューマー向けGPUクラスにおける性能に重点を置いています。
動画のポイント:
- FreeTokenは、GPU VRAM、CPU処理、システムRAMを組み合わせてローカルモデルサービングを実行します。
- デスクトップアプリケーションはWindows、Linux、macOSのワークフローに対応しています。
- コマンドラインインターフェースからモデルを起動し、OpenAI互換のローカルエンドポイントを公開できます。
- ランタイム統計には、トークン速度、処理済みトークン数、リクエスト数、キャッシュの稼働状況が含まれます。
| ベンチマーク項目 | 測定内容 | 重要性 |
|---|---|---|
| デコードスループット | 1秒あたりに生成されるトークン数 | 継続的な生成速度を示す |
| TTFT | 初回トークンまでの時間 | プロンプト処理と起動時の応答性を示す |
| エキスパートキャッシュ | VRAMに保持されるルーティング済みエキスパート | 限られたGPUメモリをどれだけ効率的に使えているかを示す |
| ハードウェア間のスケーリング | GPUとホスト構成ごとの結果 | 単一のテストマシンを超えた可搬性を示す |
スループットとTTFTは別々の指標として扱ってください。起動後に高速にトークンを生成できるシステムでも、長いプロンプトでは初回トークンの待ち時間が不便なほど長くなる場合があります。
FreeTokenが大規模MoEモデルをサービングする仕組み
MoEモデルには多数のエキスパートが含まれていますが、各トークンで有効化されるのはその一部だけです。これによりアクティブな計算量は削減されますが、エキスパートの完全な集合はコンシューマー向けGPUのVRAM容量を大幅に超える場合があります。FreeTokenは、2層のメモリ階層によってこの不一致に対応します。
CPU上に常駐するエキスパートプールには、ルーティング対象となるすべてのエキスパートの重みが保存され、正本として機能します。エキスパート以外のモデル重みはGPUに残され、残りのVRAMはKVキャッシュと柔軟なエキスパートキャッシュに分割されます。
| ランタイム層 | 主な役割 | 適応動作 |
|---|---|---|
| GPUメモリ | エキスパート以外の重み、KVキャッシュ、選択されたエキスパートを格納 | キャッシュ容量を実行中に変更できる |
| システムメモリ | 完全なエキスパートプールを保持 | VRAMが限られていても利用可能な状態を維持する |
| PCIeリンク | 選択されたエキスパートをGPUキャッシュへ移動 | 転送処理とCPU実行のバランスを取る |
| CPU | 一部のキャッシュミスを直接実行 | 固定配置ではなく、測定したホスト帯域幅を利用する |
プリフィル中、FreeTokenはレイヤー全体のダブルバッファリングを使用します。GPUがあるレイヤーを計算している間に、次のレイヤーのエキスパートをPCIe経由で移動できます。これにより、各エキスパートの移動が完了するまで実行を待つのではなく、転送と計算をオーバーラップさせます。
デコード中、システムは共有のLRU(Least Recently Used)エキスパートキャッシュを使用します。最近ルーティングされたエキスパートはVRAMに残る可能性が高く、キャッシュミスはGPUキャッシュへの充填とCPUでの直接実行に分けられます。
論文では、このバランスをq-starポリシーによって説明しています。ランタイムはホスト側のエキスパート帯域幅とPCIe転送帯域幅をプロファイルし、その測定値に基づいて、欠落したエキスパートのうち何個をGPUへ移動し、何個をCPUで実行するかを決定します。
柔軟なキャッシュ
GPU上のエキスパート容量は、ホスト常駐のモデルプールを再読み込みせず、安全なランタイムポイントで再構築できます。
セマンティック状態
思考、ツール呼び出し、会話の境界でチェックポイントを作成することで、エージェントセッション中の不要な再計算を削減します。
適応型キャッシュミス処理
測定された帯域幅に応じて、キャッシュミスをGPU処理またはCPUでの直接処理に振り分けられます。
グラフ互換性
デバイス上に常駐する制御データにより、ルーティングに依存する判断をキャプチャ済みCUDA実行と互換性のある形で維持します。
システムメモリを増やしただけで、性能が自動的に向上するわけではありません。PCIe帯域幅、ホストメモリ帯域幅、CPUの実行速度、モデルレイアウトのすべてが最終的な結果に影響します。
FreeTokenセットアップガイド
FreeTokenは、デスクトップアプリケーションまたはコマンドラインワークフローから利用できます。CLIはモデルパス、起動引数、エンドポイントの動作、ランタイム出力をより直接的に扱えるため、再現性のあるテストに適しています。
以下のセットアップ手順は、ドキュメントに記載されたクイックスタートの流れに従っています。起動コマンドで指定するパスにモデルファイルがすでに存在することを確認してください。指定場所にモデルがない場合、ランタイムはそのモデルをサービングできません。
ランタイムを選択する
ガイド付きのワークフローにはデスクトップアプリケーションを選択し、スクリプト作成やベンチマークの自動化にはCLIを使用します。公開されているプロジェクト資料によると、利用可能なデスクトップ版はWindows、Linux、macOSに対応しています。
パッケージをインストールする
プロジェクトで推奨されているUVベースのコマンド uv pip install freetoken を使ってFreeTokenをインストールします。UVがインストールされていない場合は、先に追加し、その実行ファイルをシステムのPATHから利用できるようにしてください。
モデルパスを確認する
対応するローカルモデルをダウンロードまたは準備し、指定したディレクトリに必要なファイルが含まれていることを確認します。インストールが正常に完了していても、モデルを起動できるとは限りません。
サーバーを起動する
freetoken start --model <model-name-or-path> のように、ドキュメントに記載されたモデル引数を指定してランタイムを起動します。インストールしたリリースがサポートする正確なコマンド構文を使用してください。
エンドポイントを確認する
ローカルのOpenAI互換エンドポイントに問い合わせ、サービング中のモデルを確認し、長時間のベンチマークを開始する前にテスト用のチャット補完リクエストを送信します。
| セットアップ確認項目 | 期待される結果 | トラブルシューティングの焦点 |
|---|---|---|
| UVコマンドが動作する | パッケージのインストールが開始される | インストール状況とPATH設定を確認する |
| 依存関係の処理が完了する | ランタイムが利用可能になる | Pythonとパッケージのエラーを確認する |
| モデルパスが解決される | モデルファイルが検出される | ディレクトリとファイルの権限を確認する |
| サーバーが起動する | ローカルサービスが待ち受けを開始する | モデルの互換性とメモリを確認する |
| テストリクエストが成功する | 補完レスポンスが返る | エンドポイント、モデル名、リクエスト形式を確認する |
ランタイムのコンソールには、トークン毎秒の速度、リクエスト数、処理済みトークンの合計、キャッシュヒット情報など、有用な運用情報を表示できます。モデル構成が適切かどうかを判断する際には、GPU VRAMとシステムRAMの空き容量も重要です。
長時間の評価を行う前に、短いリクエストを実行してください。これにより、モデルパス、エンドポイント名、メモリ割り当て、CPU-GPUの基本的な実行経路を一度に確認できます。
FreeTokenベンチマークの結果
公開されている評価では、短く独立したプロンプトだけに頼るのではなく、エージェント型のワークロードでFreeTokenをテストしています。シナリオには、数学的推論、ツールを使用するコーディングタスク、ネイティブなコーディングエージェントのリクエスト、メールとカレンダーを扱うワークフローが含まれます。
このベンチマークでは、FreeTokenをllama.cpp、Ollama、KTransformersなどのエッジサービングシステムと比較しています。評価には、RTX 3090、RTX 4090、RTX 5090、RTX 4060搭載ノートPC、RTX PRO 6000 Blackwellワークステーションなど、複数のGPUおよびホスト構成が使用されています。
| モデル | モデル規模 | アクティブパラメータ | 評価メモ |
|---|---|---|---|
| DeepSeek-V4-Flash | 284B | 13B | ルーティングされたエキスパートにはMXFP4デプロイを使用 |
| Qwen3.6-35B-A3B | 35B | 3B | BF16でテスト。ノートPC版ではNVFP4を使用 |
| GLM-5.2 | 753B | 40B | RTX PRO 6000でのフロンティア規模の実証 |
RTX 5090での評価では、FreeTokenはQwen3.6で毎秒77~83トークン、DeepSeek-V4-Flashで毎秒22~25トークンを報告しています。これらの数値はテストされたワークロードと構成における結果であり、すべてのシステムに対する普遍的な速度保証ではありません。
| ワークロード結果 | FreeTokenの報告結果 | 評価で示された比較 |
|---|---|---|
| Qwen3.6デコード | 77~83 tok/s | ワークロードごとに最も強いベースラインの1.8~2.3倍 |
| DeepSeek-V4-Flashデコード | 22~25 tok/s | ワークロードごとに最も強いベースラインの1.5~1.9倍 |
| RTX 4060ノートPC | Qwen3.6 NVFP4で39.3 tok/s | テストされたRTX 4090の速度の92% |
| GLM-5.2搭載RTX PRO 6000 | 14.9 tok/s | llama.cppの7.3 tok/sと比較 |
| マルチターンTTFT | テストされたセルで最も遅いターンでも44秒未満 | 少なくとも1つのセルではベースラインが150秒を超えた |
このベンチマークでは、FreeTokenのキャッシュポリシーにより、静的配置やプリフィルベースの配置と比べて、デコード時のエキスパートキャッシュミスが減少したことも報告されています。テストされたRTX 5090の容量では、報告されたミス率はQwen3.6で16%、DeepSeek-V4-Flashで39%でした。これは評価対象となったベースラインポリシーよりも低い値です。
さらに詳しい技術情報については、FreeTokenの研究論文を参照してください。帯域幅適応型の実行ポリシー、セマンティック対応キャッシュ、実装、評価方法が解説されています。
最も優れた結果は、モデル形式、キャッシュ容量、ホスト帯域幅、ワークロードの形状に左右されます。公開されている数値は、ローカル環境で保証される性能ではなく、比較の目安として利用してください。
実践的なテストチェックリスト
有用なローカルベンチマークでは、最大トークン速度以外の情報も記録する必要があります。各構成で同じモデル、プロンプト形式、量子化方式、コンテキスト長、ワークロードをテストしてください。エージェント型サービングでは、マルチターンのコンテキストとツール呼び出しの動作を維持してください。繰り返しのプリフィルによって、シングルターンのテストでは見えない差が明らかになる場合があります。
ベンチマーク準備:
- モデルパスを確認し、意図したモデル形式であることを確認する
- GPU VRAM、システムメモリ、CPUの種類、PCIeリンク構成を記録する
- 測定値を収集する前に短いウォームアップリクエストを実行する
- デコードスループットと初回トークンまでの時間の両方を測定する
- エージェント性能を評価する際は、マルチターンまたはツール使用ワークロードを繰り返す
| テスト変数 | 一貫させる項目 | 別途記録する項目 |
|---|---|---|
| モデル | 同じチェックポイントと精度 | ファイル形式と量子化方式 |
| プロンプト | 同じテキストとトークン予算 | コンテキスト長とターン数 |
| ランタイム | 同じ起動オプション | キャッシュサイズとCPUスレッド数 |
| ハードウェア | 直接比較では同じマシン | バックグラウンドアプリケーションとメモリ負荷 |
| 指標 | 同じ測定時間 | 平均値、テール値、失敗したリクエスト |
ランタイムコンソールを使って、トークン速度、リクエスト総数、処理済みトークン数、キャッシュの動作を監視してください。実行ごとに性能が変化する場合は、別のアプリケーションがVRAMを消費していないか、利用可能なホストメモリ帯域幅が変化していないかを確認します。
実用的なテスト手順は次のとおりです。
- 正常性を確認するため、短いプロンプトから始める。
- シングルターン生成を測定し、デコード速度のベースラインを取得する。
- 長いプロンプトを追加して、プリフィルとTTFTを観察する。
- コンテキストを再利用しながら複数ターンを実行する。
- 柔軟なリソース動作を調べたい場合は、GPUをバックグラウンドで使用している状態でも繰り返す。
インタラクティブなエージェントでは、テールTTFTを優先してください。短いプロンプトで高いピーク速度を出すことよりも、ターンをまたいで安定した応答時間を維持することのほうが価値が高い場合があります。
FreeToken FAQ
Q: FreeTokenベンチマークとは何ですか?
大規模MoEモデル向けのエッジネイティブなサービングシステムであるFreeTokenの評価です。ベンチマークでは、デコードスループット、初回トークンまでの時間、エキスパートキャッシュの動作、コンシューマー向けハードウェアでの性能を測定します。
Q: FreeTokenではモデル全体をVRAMに収める必要がありますか?
いいえ。FreeTokenは完全なエキスパートプールをホストメモリに保持し、利用可能なGPUメモリを柔軟なキャッシュとして使用します。ただし、モデルには十分なシステムメモリ、ストレージ、互換性のある実行環境が必要です。
Q: FreeTokenはキャッシュミスをどのように処理しますか?
ランタイムは、選択された不足エキスパートをGPUへ転送するか、別のキャッシュミスをCPU上で直接実行できます。測定帯域幅に基づくポリシーによって、導入されたマシン上での処理のバランスが決定されます。
Q: FreeTokenはローカルAPI経由で利用できますか?
はい。ドキュメントに記載されたワークフローでは、モデルサーバーの起動後にローカルのOpenAI互換エンドポイントが公開され、互換性のあるクライアントやコーディングエージェントからチャット補完リクエストを送信できます。
FreeTokenは、ゲームやコンテンツコードのプラットフォームではなく、ローカルMoEサービングシステムとして理解するのが適切です。その価値は、メモリ、帯域幅、キャッシュ、実行を連携させる点にあります。