実行プログラムと拡張機能
最終更新
M5 Ultra 2台でGLM-5.3 744Bを動かす:メモリと接続条件
GLM-5.3全体を2台に分散しますが、各Macに256GBのメモリと有線接続が必要です。
TensorFold 1.0.8はkindlingaiのtrellis-coded EXLR8 home profileを使い、GLM-5.3 744B全体を2台のM5 Ultraで実行します。各機器は256GBユニファイドメモリ1を備え、チェックポイント2をrankごとに取得し、有線で接続します。context 8192、parallel 4では各rankに159.6GBが必要です。単一ストリームのdecode3はMTP4有効時31–32 tok/s、無効時21 tok/s、prefill5は約200 tok/sでした。
1つのモデルを2台のMacのrankに分けます
TensorFoldのGLM-5.3 EXLR8経路は、チェックポイントのexpertとattention6 headを2つのrankに分けます。1台のMacに744Bモデル全体を載せる方式ではありません。各rankは同じリクエストを処理し、モデルの担当部分を計算します。
ここで扱う数値はGLM-5.3 744B全体のhome profileに限ります。Flashモデルは別のチェックポイントと実行経路を使うため、メモリや速度の数値を混ぜません。セットアップ前に両方のMacでモデル名、メモリ容量、TensorFoldのバージョンをそろえてください。

rankごとのメモリとMTPの数値を確認します
各Macが取得するファイルはexpert重みの半分139.5GiBと、各rankに共通する全体ファイル11GBです。これはチェックポイントのファイル容量です。別の測定値として、context 8192・parallel 4で実行中のrankは159.6GBのメモリを使います。ファイル容量と実行時メモリは対象も単位も異なるため、256GBのMacでもOS、アプリ、cache用の余地を残します。
| 設定 | 値 | 読み方 |
|---|---|---|
| モデル | GLM-5.3 744B全体 · EXLR8 home | Flashは対象外 |
| 機器 | M5 Ultra 2台 · 各256GB | 有線リンクでrank接続 |
| 条件 | context 8192 · parallel 4 | rankごとに159.6GB |
| decode | MTP有効31–32 · 無効21 tok/s | 単一ストリーム |
2台のM5 Ultraでは、単一ストリームのdecodeはMTP無効時21 tok/s、有効時31–32 tok/sでした。prompt7のprefillは約200 tok/sです。これらは単一ストリームのdecodeとprompt処理の結果であり、同時利用時のthroughput8や長時間平均速度ではありません。
両rankのファイルを用意してリンクを確認します
TensorFold 1.0.8を導入し、両方のMacで同じcheckpoint revisionを--node 0/2と--node 1/2で取得します。この番号は分割downloadの担当を示します。serveではrank 1を先に起動し、5分以内にrank 0を起動します。
tensorfold pull kindlingai/glm-5.3-exlr8-k2-k3-k4@f459f5d0272a529403dd9b3fd32f771f4250a0d4 --exlr8 home --node 0/2 --dir ~/models/glm-5.3-exlr8-hometensorfold pull kindlingai/glm-5.3-exlr8-k2-k3-k4@f459f5d0272a529403dd9b3fd32f771f4250a0d4 --exlr8 home --node 1/2 --dir ~/models/glm-5.3-exlr8-homeまず両方の Mac でネットワークを準備します。MCDMA の Thunderbolt fabric 設定に従って Recovery で RDMA を有効にし、ケーブル接続されたインターフェースと相手側アドレスを確認します。この構成は内蔵 Thunderbolt RDMA 経路を使い、Mac・ConnectX ドライバー用の別個のセキュリティ変更手順は適用しません。
MCDMA リポジトリのルートから通常の macOS ターミナルで以下のビルドを実行します。build/rpc/libmcdma-fabric.dylib が生成され、公式の fabric 接続チェックを通過したら rank JSON を準備します。
git clone https://github.com/ashhart/MCDMA.git
cd MCDMA
make -C rpc
ls -l build/rpc/libmcdma-fabric.dylib
printf '%s\n' "$PWD/build/rpc/libmcdma-fabric.dylib"両Macのmodel folderを~/models/glm-5.3-exlr8-homeにそろえます。Mac Aにrank0.json、Mac Bにrank1.jsonを保存します。libraryは先ほど表示した絶対path、deviceとviaは実際のRDMA deviceとケーブルpeer addressです。192.0.2.xと/path/toを実値に変更し、rank 1、rank 0の順で起動します。両方がreadyならMac Aの8080 portへrequestを送ります.
{
"rank": 0,
"library": "/path/to/MCDMA/build/rpc/libmcdma-fabric.dylib",
"links": [{"peer": 1, "device": "rdma_en4", "via": "en4/192.0.2.2", "port": 7490, "name": "speedup"}]
}{
"rank": 1,
"library": "/path/to/MCDMA/build/rpc/libmcdma-fabric.dylib",
"links": [{"peer": 0, "device": "rdma_en4", "via": "en4/192.0.2.1", "port": 7490, "name": "speedup"}]
}tensorfold serve ~/models/glm-5.3-exlr8-home --speed-up "$HOME/models/glm-5.3-exlr8-home/rank1.json" --context 8192 --parallel 4 --temperature 0tensorfold serve ~/models/glm-5.3-exlr8-home --speed-up "$HOME/models/glm-5.3-exlr8-home/rank0.json" --context 8192 --parallel 4 --temperature 0 --name glm-5.3curl -fsS http://127.0.0.1:8080/v1/chat/completions -H 'Content-Type: application/json' -d '{"model":"glm-5.3","messages":[{"role":"user","content":"Say READY in one word."}],"max_tokens":8,"temperature":0}'
最初の応答後に実用範囲を決めます
両rankが準備できて応答が返れば、リンクは動作しています。contextとparallelは一度に1つずつ変更します。contextを長くすると各リクエストが保持する状態が増え、parallelを増やすと同時に必要なメモリも増えます。応答時間とメモリ圧力を一緒に記録すると、作業に合う設定を見分けやすくなります。

用語の注釈
ユニファイドメモリ — CPUとGPUが同じ物理メモリ領域を共有する構造です。
本文に戻るチェックポイント — 学習済みモデルの重みなどを保存したファイルです。同じモデル系列でも、版や用途によって異なるチェックポイントを使うことがあります。
本文に戻るトークンのデコード — 入力とそれまでの回答をもとに、次の出力トークンを順に生成する段階です。
本文に戻るMTP — 複数の将来トークンを一度に予測する学習目標、またはそれを行うモデル構成です。投機的デコーディングでは、その予測を候補トークンとして提案できます。
本文に戻るプリフィル — LLMが入力プロンプトを読み、各トークンの内部表現を計算する段階です。プロンプトが長いほど処理するトークンが増えます。
本文に戻るAttention — 入力トークン間の関連度を計算し、各位置の情報を現在の表現に反映するニューラルネットワーク演算です。
本文に戻るプロンプト — モデルに送る入力文です。生成モデルでは作りたい結果を説明する文になり、出力の構成や内容を大きく左右します。
本文に戻るスループット — 一定時間に処理・生成した作業量です。トークン/秒やリクエスト/秒など、単位を合わせて比較します。
本文に戻る
よくある質問
- この記事で最初に確認すべきことは何ですか?
- TensorFold 1.0.8はkindlingaiのtrellis-coded EXLR8 home profileを使い、GLM-5.3 744B全体を2台のM5 Ultraで実行します。各機器は256GBユニファイドメモリを備え、チェックポイントをrankごとに取得し、有線で接続します。context 8192、parallel 4では各rankに159.6GBが必要です。単一ストリームのdecodeはMTP有効時31–32 tok/s、無効時21 tok/s、prefillは約200 tok/sでした。
- 必要なメモリはどのくらいですか?
- 各Macが取得するファイルはexpert重みの半分139.5GiBと、各rankに共通する全体ファイル11GBです。これはチェックポイントのファイル容量です。別の測定値として、context 8192・parallel 4で実行中のrankは159.6GBのメモリを使います。ファイル容量と実行時メモリは対象も単位も異なるため、256GBのMacでもOS、アプリ、cache用の余地を残します。
