実行プログラムと拡張機能

GLM-5.3 Flashの2・3・4台Spark実行と速度比較

単一リクエストのdecodeは2・3・4台でそれぞれ60.4・77.6・95.2 tok/s、4台tp4は実験branchです。

MIAのGLM-5.3-Flash SparkレシピはTensorFold 0.6.0に96個のpatchを追加しています。既定のEXL3 4-bit設定で単一リクエストは2台で60.4、3台で77.6、4台で95.2 tok/sでした。同時処理の合計は2台の4件で108.8、3台の4件で146.2、4台の8件で222.4 tok/sです。4台は実験用tp4 branchを使います。

実行条件と要点
  • 単一リクエスト:2台で60.4、3台で77.6、4台で95.2 tok/s。
  • 合計throughput:2台108.8(4件)、3台146.2(4件)、4台222.4 tok/s(8件)。requestあたりの速度とは分けて読みます。
  • 4台tp4は実験branchで、後続の修正がすべて含まれるわけではありません。

まず2台レシピの範囲を確認します

GLM-5.3-FlashはGLM-5.3 744B全体とは別のモデルです。このガイドではFlashモデルの2-rank TensorFoldレシピを扱います。MIAの基本構成はTensorFold v0.6.0にパッチを適用し、1台のSparkが1つのrankを担当します。

ConnectX-7ポートを直接接続してRoCE v2を設定します。3台実験には三角形の配線とrank順が必要です。4台ではスイッチまたはリング構成と、別のtp4 branch手順を使います。

画面が暗いモニター、小型デスクトップPC、複数のファンが見えるPCケース
Sparkを増やした結果は単一リクエストと同時リクエストに分けて比べます。

単一リクエストと同時throughputを分けて比べます

1件の列は1つの回答の生成速度です。合計の列には要求数も記載しています。2・3台は同時4件、4台は同時8件なので、共有サーバーの比較ではこの負荷条件も確認します。

左右にスクロールして各項目を比較できます。

prose decode速度と同時throughput
Spark台数単一request合計(同時request数)構成の状態
260.4 tok/s108.8 tok/s(4件)基本レシピ
377.6 tok/s146.2 tok/s(4件)パッチ実験
495.2 tok/s222.4 tok/s(8件)tp4 branch · 実験

2台の数値は、既定の1M context、FP81 KV cache2、4-bit dense weights、DFlash2とcopy drafts、vision有効、GPU3 clock 2,200MHz制限でsparkDashを使って測定しました。3台も既定の4 stream、1M window、FP8 KV、DFlash2とcopy draftsを使います。表を見るときはモデルのバージョンとリクエスト数も確認します。

接続された2台の小型デスクトップPCと粒子の流れを表示するモニター
リンクを介した各サーバーrankの役割を確認します。

機器とリポジトリを準備してサーバーを起動します

各SparkはGB10と128GBユニファイドメモリ4を使い、サーバー起動時に約110GiBの空きが必要です。2台レシピでは両方にDockerとNVIDIA Container Toolkitを入れ、headからworkerへ鍵認証SSHできることを確認します。チェックポイント5、DFlash2、コンテナイメージ用のディスクも確保してください。

headでrepositoryを取得し、scripts/local.sh.exampleをscripts/local.shへコピーします。次の設定blockをfile editorでscripts/local.shの対応項目に保存してください。WORKERはworkerの管理LAN SSH address、FABRIC_PEERは必要な場合のCX7 addressです。保存内容を確認し、実際のSSH addressで鍵認証を確認してからserverを起動します.

2台repositoryと設定fileを準備
git clone https://github.com/MiaAI-Lab/GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold.git
cd GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold
cp scripts/local.sh.example scripts/local.sh
file editorでscripts/local.shに保存する設定
WORKER=user@192.0.2.2
FABRIC_PEER=192.0.2.12
保存した設定とheadからのSSHを確認
grep -nE 'WORKER=|FABRIC_PEER=' scripts/local.sh
# Replace the reserved address with the actual worker SSH target.
ssh-copy-id user@192.0.2.2
ssh -o BatchMode=yes user@192.0.2.2 true

2台構成は初回起動時にcontainer、checkpoint、DFlash2を準備し、両rankをsmoke testします。成功するとGLM-5.3-Flash-EXL3 is now LIVE! on port 8888と表示されます。3台はstart-tp3.sh、4台はtp4 branchのswitchless ring手順を使います。4台は実験構成のため、起動前にdry runで配線とrank順を確認してください。

2台serverを起動
./start.sh
LIVE表示後にmodel一覧と最初のrequestを確認
curl -fsS http://127.0.0.1:8888/v1/models
curl -fsS http://127.0.0.1:8888/v1/chat/completions -H 'Content-Type: application/json' -d '{"model":"GLM-5.3-Flash-EXL3","messages":[{"role":"user","content":"Say READY in one word."}],"max_tokens":8,"temperature":0}'
3台TP3実験を起動
./start-tp3.sh
4 Spark ring dry run
git clone --branch tp4 https://github.com/MiaAI-Lab/GLM-5.3-Flash-EXL3-2x-DGX-Sparks-TensorFold.git ../glm-flash-tp4
cd ../glm-flash-tp4
DRY_RUN=1 ./start-tp4-switchless.sh
配線確認後に4台tp4を起動
./start-tp4-switchless.sh
4台serverの応答を確認
curl -fsS http://127.0.0.1:8888/v1/models
curl -fsS http://127.0.0.1:8888/v1/chat/completions -H 'Content-Type: application/json' -d '{"model":"GLM-5.3-Flash-EXL3","messages":[{"role":"user","content":"Say READY in one word."}],"max_tokens":8,"temperature":0}'

4台実験は別の検証範囲として判断します

2台から4台へ増える数値は、機器を追加したときのdecode6改善を示します。ただし3台ではレシピパッチが追加され、4台は実験branchのため、3台と同じ範囲の完全性チェックは行われていません。4台の数値はあらゆる構成で保証される値ではなく、特定のトポロジーとbranchで再現するための基準として扱います。

同時throughput7が目的なら合計とrequestあたりのtok/sを両方記録します。利用者が1〜2人で1回答の流れが重要なら、単一リクエスト結果とTTFT8を優先します。リクエスト数が多くてもユーザーごとの待ち時間は長くなることがあるため、自分のprompt9と回答長で測定してください。

文書やグラフを表示したノートPCの周りに積まれた資料と開いたノート
実際のリクエスト数と回答長で最終判断を検証します。

用語の注釈

  1. FP8 — 一つの値を8ビットで表す浮動小数点形式です。

    本文に戻る
  2. KVキャッシュ — 過去トークンのAttention用キー・バリューを保存し、後続トークン生成で再利用するメモリです。容量はコンテキスト長やバッチサイズで変わります。

    本文に戻る
  3. GPU — 多くの計算を並列に処理するプロセッサーです。AIモデルの実行ではモデル計算を担います。

    本文に戻る
  4. ユニファイドメモリ — CPUとGPUが同じ物理メモリ領域を共有する構造です。

    本文に戻る
  5. チェックポイント — 学習済みモデルの重みなどを保存したファイルです。同じモデル系列でも、版や用途によって異なるチェックポイントを使うことがあります。

    本文に戻る
  6. トークンのデコード — 入力とそれまでの回答をもとに、次の出力トークンを順に生成する段階です。

    本文に戻る
  7. スループット — 一定時間に処理・生成した作業量です。トークン/秒やリクエスト/秒など、単位を合わせて比較します。

    本文に戻る
  8. 最初のトークンまでの時間 — リクエスト送信から最初の出力トークンが届くまでの時間です。

    本文に戻る
  9. プロンプト — モデルに送る入力文です。生成モデルでは作りたい結果を説明する文になり、出力の構成や内容を大きく左右します。

    本文に戻る

よくある質問

この記事で最初に確認すべきことは何ですか?
MIAのGLM-5.3-Flash SparkレシピはTensorFold 0.6.0に96個のpatchを追加しています。既定のEXL3 4-bit設定で単一リクエストは2台で60.4、3台で77.6、4台で95.2 tok/sでした。同時処理の合計は2台の4件で108.8、3台の4件で146.2、4台の8件で222.4 tok/sです。4台は実験用tp4 branchを使います。
必要なメモリはどのくらいですか?
各SparkはGB10と128GBユニファイドメモリを使い、サーバー起動時に約110GiBの空きが必要です。2台レシピでは両方にDockerとNVIDIA Container Toolkitを入れ、headからworkerへ鍵認証SSHできることを確認します。チェックポイント、DFlash2、コンテナイメージ用のディスクも確保してください。