· ローカルAI

125BパラメータMoEモデルを24GB RTX 3090で97 tok/s駆動する独自C++エンジン

30秒でわかる内容解説

開発者DaveByteAIは10月6日、125BパラメータのMoEモデルを24GB VRAMのRTX 3090単体で約97 tok/sの速度で動作させる独自エンジンnano-cuda-moe-qwen38をGitHubで公開した。推論時はPythonや機械学習フレームワークを必要とせず、C++とCUDAのみで構成される。自作PCやローカル環境で超大規模モデルを試したい技術者にとって、メモリ不足をCPUとRAMで補う手法は実用的な選択肢となる。OpenAI互換APIも標準搭載している。

VRAMとRAMを跨ぐメモリ階層設計

公開されたエンジンはQwen3.8-Flash-Nextモデルに対応する。125Bパラメータのうち6BがアクティブになるMixture-of-Experts構造を採用している。VRAMは24GBしか積んでいないが、4.1GBの密集重みと約17.5GBのLRUキャッシュを配置する。

LRUキャッシュは各レイヤーで最も頻繁に利用される約10,000個の専門家パラメータを保持する。残りの42.9GBに及ぶ専門家データはシステムメモリのピン留め領域に配置される。

推論エンジンはシングルプロセスで動作し、Pythonランタイムを起動しない。OpenAI互換のAPIサーバーとチャットページを同梱している。デコード速度は97 tok/sを記録し、32Kトークンのプロンプト処理には18.0秒を要する。128Kトークンの長文コンテキストにも対応しており、トークンあたりの読み込み速度は約1,600 tok/sに達する。

分散注意機構を採用しており、インデックスが各クエリごとに2048位置を選択する。KVキャッシュはint8形式で32値ごとにスケールを保持する。これにより128Kトークンのプロンプトでもメモリ使用量を抑えられる。初期トークンの生成には約0.4秒を要し、実用的な対話速度を実現している。

CPUとGPUの非同期計算と疑似推論

GPUがキャッシュされた専門家を実行している間に、CPUがシステムメモリから不足分の計算を行う。PCIeバスを往復させる代わりに、CPUはAVX2命令セットを用いて計算し、GPUはマッピングされたメモリ上のフラグを待機する。これによりデコードステップ全体が1つのCUDAグラフとして実行される。

推論の高速化には疑似推論機構も組み込まれている。モデル自身のMTP層が最大3トークンをドラフトし、48層を一括で通す。受容サンプリングで分布を維持しつつ、1パスあたり約2.5から3トークンを処理する。4種類の量子化形式が提供され、デフォルトのIQ3_XXSがテスト済みである。他の形式は速度と精度のトレードオフがある。

3層のメモリ階層を採用している。GPUには注意機構とDeltaNet層、ハイパー接続重み、ルーター、共有専門家、出力ヘッド、MTP層、KVキャッシュ、残りVRAMの専門家キャッシュが配置される。RAMには全専門家が巨大ページでピン留めされる。SSDにはn-gram埋め込みテーブルが置かれる。スクリプトは4つの量子化ファイルから選択でき、IQ3_XXSが標準設定だ。

既存エンジンとの速度比較と精度検証

既存の推論エンジンStrataとの比較テストでは、同じRTX 3090環境でデコード速度が約50%向上した。65 tok/sに対して97 tok/sを記録し、32Kプロンプト後のデコードも82 tok/sと同等の性能を保った。Strataは長文プロンプトの読み込みが速く、13.3秒で処理する。精度はllama.cppの参照実装と同等で、中央値KL分散が0.003から0.005に収まる。トップ1精度は90から93%を達成している。

チームは最適化ログを公開しており、各カーネルの計測値と失敗した試行も記録されている。

量子化形式ごとのリソース要件と検証状況
形式専門家サイズ検証状況
IQ3_XXS43.0GBテスト済み
IQ2_XS35GB未検証
Q2_033.5GB未検証
IQ3_S50.3GB動作確認

プロンプト処理は8Kトークンのチャンクごとにレイヤーを跨いで実行される。cuBLAS GEMMやテンソルコアMoEカーネルが活用され、次のレイヤーの専門家データ転送と現在の注意機構計算が重なる。検証にはベンチマークコーパスと固定入力が用意されている。bl-ref-dumpで論理値と活性化を出力し、bl-runとnumpyスクリプトで比較する。

複数GPU並列動作の実験と環境要件

複数GPUでの並列動作は実験段階にある。multi-gpuブランチでは`--gpus 0,1`オプションでカード間にレイヤーを分割できる。現状は単一GPU上で2つのステージとして動作確認済みであり、実機の2枚構成での並列処理は未検証である。開発チームは実際の2枚GPU環境での動作報告を歓迎している。

10月6日に公開されたこのエンジンは、80GBのNVMeと64GBのRAMを備えたx86_64環境で動作する。コンパイルにはCMake 3.24とGCC 11が必要であり、CUDA 12または13に対応する。RTX 3090以外ではアーキテクチャ指定フラグで対応できる。チャットページはHTMLとSVGのみで構成され、外部のWebフレームワークに依存しない。

中国本土では環境変数HF_ENDPOINTを切り替えることでHugging Faceミラーからモデルを取得できる。OpenAI互換のAPIエンドポイント経由でストリーミングやマルチターン対話が可能だ。推論エンジンは1リクエストずつ処理し、会話の続きは新しい部分のみを計算する。開発チームは実機2枚構成での並列動作報告を歓迎しており、10月6日以降も最適化ログの更新が続けられている。

出典