MiaAI-Lab/Qwen3.8-27B-SGLang-DGX-Spark

Qwen3.8 27B on SGLang for DGX Spark

このリポジトリの機能

MiaAI‑Lab は、NVIDIA DGX Spark(aarch64、128 GBの統合メモリ)上で SGLang を使用して Qwen 3.8 27B の大規模言語モデルを実行するための、すぐに実行可能な Docker スクリプトを提供しています。このリポジトリには以下のものが含まれます:

  • 3つの予測デコードエンジン(EAGLE/MTP、DSpark、DFlash2)用の Docker ベースの起動スクリプト。それぞれ DGX Spark ハードウェアに最適化されています。
  • README に記載されたパフォーマンス数値を再現するための、小さなベンチマークユーティリティ(bench/)。
  • コンテキスト長(最大 1 M トークン)、並行処理数(最大 10 件の同時リクエスト)、量子化モード、CPU ピニングを調整できる設定ヘルパー(.env.sample、起動スクリプト)。
  • 著者のマシンで測定された最良の遅延/スループットを得るために使用した、ハードウェア固有のフラグのドキュメント。

要するに、このリポジトリは、専用の NVIDIA サーバー上で 270 億パラメータの LLM を高速で実行するための デプロイメントキット です。


どのユーザーが利用するか

ターゲット 重要性
MLエンジニア / リサーチオペス:NVIDIA DGX Spark ハードウェア上で Qwen 3.8 27B をベンチマークまたはデプロイする必要がある人。
AIプロダクトチーム:低遅延推論を必要とするチャットエージェント、コードアシスタント、ツールコールサービスを構築している人。
パフォーマンスチューニング愛好家:SGLang の予測デコーダー(EAGLE/MTP、DSpark、DFlash2)をハードウェア固有の設定(CPUセットピンニング、FP8 KVキャッシュ、メモリ割合チューニング)と組み合わせる具体的な例を知りたい人。
下流アプリケーション開発者(例:RAGパイプライン、自律エージェント):標準の OpenAI 互換 /v1/models エンドポイントから配信されたモデルを呼び出すことができる人。

すぐに始めよう(クイックスタート)

  1. リポジトリをクローンし、サンプル環境ファイルをコピーします:
    git clone https://github.com/MiaAI-Lab/Qwen3.8-27B-SGLang-DGX-Spark.git
    cd Qwen3.8-27B-SGLang-DGX-Spark
    cp .env.sample .env   # デフォルト設定を持つ .env を作成
    
  2. DockerがGPUを認識できるか確認(NVIDIA Container Toolkitがインストール済み)し、Hugging Faceのアクセストークンを HF_TOKEN としてエクスポートします。
  3. エンジンを選択して起動します:
    # デフォルト:DSpark(コード系ワークロードで最速)
    ./start-dspark.sh
    
    # オプション:従来の EAGLE/MTP 予測デコード
    ./start.sh
    
    # オプション:DFlash2(短いチャットや長文執筆に適している)
    ./start-dflash.sh
    
    スクリプトは適切な SGLang イメージを取得し、Qwen チェックポイントを ./.cache/huggingface にダウンロード(約24 GB)して、ポート8888でリッスンするコンテナを起動します。
  4. サーバーをテストします:
    curl http://127.0.0.1:8888/v1/models
    
    モデル名 qwen3.8-27b-sglang が準備完了していることを確認するJSONペイロードが返されるはずです。
  5. 使用終了時にサービスを停止します:
    ./stop.sh
    

変更可能な設定(構成)

変数(.env またはシェル環境変数) デフォルト 機能
YARN 0 コンテキスト長が 262 K トークンを超える場合に YaRN rope スケーリングを有効化。ネイティブウィンドウを超える長さでは必須。
CONTEXT_LENGTH 262144 トークンウィンドウサイズ(262 K – 1 M)。大きなウィンドウには YARN=1 が必要。
MAX_CONCURRENT_REQUESTS 10 同時API呼び出し数。GDNステートプールのサイズにも影響。
QUANT nvfp4 チェックポイントバリアントを選択:nvfp4(密度BF16ヘッド)、nvfp4-fp4(パックFP4ヘッド)、fp8(FP8重み)、bf16(フルBF16)。すべて128 GBメモリ予算に収まる。
CPUSET 5-9,15-19 コンテナを DGX Spark の10個の高性能 Cortex‑X5 コアにピン止めし、低速な A725 コアは空きに保つ。
SPEC_STEPS / SPEC_TOPK / SPEC_DRAFT 3 / 1 / 4 EAGLE/MTP 予測デコーダーのチューニング用ノブ。DSpark と DFlash2 エンジンはこれらを無視。
CHUNKED_PREFILL 8192 プリフィルチャンクのサイズ。このハードウェアでは大きな値で最初のトークン遅延が改善される。
DF_TARGET(DFlash2専用) nvfp4 DFlash2 エンジンが読み込むチェックポイントを選択(nvfp4、nvfp4-fp4、bf16)。
IMAGE エンジン固有(スクリプトを参照) ローカルでビルドしたバリアントを使用する場合にカスタム SGLang イメージを指定可能。

すべての変数はコマンドラインで上書き可能。例:

MAX_CONCURRENT_REQUESTS=5 CONTEXT_LENGTH=524288 YARN=1 ./start.sh

新しい値は ./stop.sh && ./start… のサイクル後に有効になります。


測定結果(著者の DGX Spark での数値)

エンジン 通常の遅延(秒) – コードスニペット 通常の遅延 – 長文エッセイ 通常の遅延 – 短いチャット
DSpark(block‑7) ~51.5 s(コードに最速) ~18 s(MTPより遅い) ~23 s(良好)
EAGLE/MTP ~34.5 s ~24 s(長文に最適) ~21 s
DFlash2(NVFP4) ~50.9 s ~25.4 s 29 – 67 s(トークンカウント修正後、ストリーミング短いチャットで勝利)

すべての数値は bench/ のベンチマークスクリプトのウォールタイムであり、プリフィル、デコード、および予測ドラフトのオーバーヘッドを含む。メモリ使用量は密度BF16ヘッドで約24 GB、ドラフトモデルで約2.5 GB。パックFP4バリアントは数ギガバイト節約可能。


どのエンジンを選ぶべきか

目的 推奨スクリプト 理由
ツール呼び出しやコード生成が必要なエージェント ./start-dspark.sh DSparkのblock‑7ドラフトがコード主体のプロンプトで最速のデコード速度を実現。
長文執筆(エッセイ、レポート) ./start.sh(EAGLE/MTP) MTPの予測デコードが大規模で連続的な出力で優れた性能を発揮。
一般的なチャットやミックスドワークロード ./start-dflash.sh DFlash2はコードとチャットのパフォーマンスをバランスよく保ち、適切なトークンカウント後、短いチャット遅延で他を上回る。

詳細情報の入手先

  • このマシンで測定 – README内の1つのテーブルに、著者が観察したすべての遅延、メモリ割合、トークンカウントの制約が記載されています。
  • bench/ スクリプト – ndec.py、bench.sh、ab-image.sh で、自社のハードウェア上でA/B比較を再現可能。
  • docs/ – ブレインストーミングノート(brainstorms/*.md)と長期計画(plans/*.md)を含む。

TL;DR

NVIDIA DGX Spark にアクセスでき、27 Bの Qwen モデルを低遅延で実行したい場合、このリポジトリは以下の機能を提供します:

  • 3つの主要な SGLang 予測デコーダー用に事前に構成された Docker イメージ。
  • モデルを自動的に取得し、最適なハードウェアフラグを適用し、OpenAI互換APIを公開するスクリプト。
  • コンテキスト長を最大1 Mトークンまで拡張し、最大10件の並行リクエストを実行するための簡単なスイッチ。

.env.sample をコピーし、関心のあるエンジンを選択して対応する start‑*.sh を実行するだけで、数分で Qwen 3.8 27B を配信可能になります。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト