まずは128Kで様子見。余裕なら 262144 も可
llama-cli \
-hf unsloth/Qwen3-Coder-Next-GGUF:UD-Q4_K_XL \
--jinja \
--fit on \
-c 131072 \
--flash-attn on \
-t 16 \
--seed 3407 \
--temp 1.0 \
--top-p 0.95 \
--min-p 0.01 \
--top-k 40 \
-cnvllama-cli \
-hf unsloth/Qwen3-Coder-Next-GGUF:UD-Q6_K_XL \
--jinja \
--fit on \
-c 131072 \
--flash-attn on \
-t 16 \
--seed 3407 \
--temp 1.0 \
--top-p 0.95 \
--min-p 0.01 \
--top-k 40 \
-cnvllama-server \
-hf unsloth/Qwen3-Coder-Next-GGUF:UD-Q4_K_XL \
--jinja \
--fit on \
-c 131072 \
--flash-attn on \
--host 0.0.0.0 \
--port 8080 \
--alias qwen3-coder
time curl -s http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" -d '{"model":"qwen3-coder","messages":[{"role":"user","content":"Hello!"}], "max_tokens":100}' > /dev/null
real 0m0.415s
user 0m0.003s
sys 0m0.004s ちょっと実験
# 現在のserverをkill(Ctrl+C or pkill -f llama-server)
pkill -f llama-server
# 最適化された設定で再起動
llama-server \
-hf unsloth/Qwen3-Coder-Next-GGUF:UD-Q4_K_XL \
--jinja \
--fit off \
-c 8192 \
-b 512 \
-np 1 \
--flash-attn on \
--host 0.0.0.0 \
--port 8080 \
--alias qwen3-coderllama-server
-hf unsloth/Qwen3-Coder-Next-GGUF:UD-Q4_K_XL
--jinja
--fit off
-c 8192
-np 1
--batch-size 512
--flash-attn on
--host 0.0.0.0
--port 8080
--alias qwen3-coder
$ time curl -s http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" -d '{"model":"qwen3-coder","messages":[{"role":"user","content":"Hello!"}], "max_tokens":100}' > /dev/null
real 0m0.416s <<< 0.5 前後
user 0m0.004s
sys 0m0.004s
3. Strix Halo 側の「おもてなし」設定
Mac からの要求を効率よくさばくために、Strix Halo 側の llama-server に以下の設定を追加
| オプション | 意味 | 理由 |
|---|---|---|
--cont-batching | 連続バッチ処理 | 複数のリクエスト(チャットと補完など)を同時にさばける。 |
--slot-save-path | KVキャッシュ保存 | 大規模な Swift コードの文脈を次回以降も高速に再利用できる。 |
--defrag-threshold 0.1 | メモリ整理 | 長時間の開発でもコンテキストのフラグメンテーションを防ぐ。 |
GitHub Copilot for Xcode
$ brew install --cask github-copilot-for-xcode理想
| コンポーネント | 役割 | メモリ消費 (目安) |
|---|---|---|
| Qwen3-Coder-Next (Q4_K_XL) | 推論メインエンジン | 約 50 GB |
| KV Cache (128K context) | 長大なコードの文脈維持 | 約 30 GB |
| Qwen3-Embedding (0.6B) | ドキュメントの高速検索用 | 約 2 GB |
| Vector DB (AnythingLLM内蔵) | 知識の蓄積 | 約 1-2 GB |
| 余裕 (OS / IDE / ブラウザ) | 快適な作業用 | 残り 約 40 GB |
[!TIP] 「RAGを介さず直接読み込ませる」のもアリ Strix Halo 128GB であれば、128K 程度のコンテキストなら RAG を使わずとも「最新のドキュメント全文(Markdown)」をプロンプトの冒頭にコピペして渡すだけで、RAG より高精度に理解してくれるケースが多いです。RAG は「数万ファイルある場合」に使い、数個のライブラリ程度なら「直接流し込む」のが今のトレンドです。
Repomix
Codex
https://unsloth.ai/docs/basics/claude-codex
~/.codex/config.toml がわからん
Tailscale
MagicDNS(http://ms-s1-max:8080 のような形式)を使いつつ、「ケーブルが繋がっている時は Thunderbolt、それ以外は Wi-Fi や Tailscale」を全自動で切り替える
-
デスクで Thunderbolt 接続時(⚡️モード)
-
MagicDNS(
ms-s1-max)を叩くと、OS は100.x.y.zへ行こうとします。 -
上で設定したルートがあるため、パケットは Wi-Fi を無視して Thunderbolt ケーブルへ直接流れます。
-
結果:USB4 v2.0 (40Gbps) の速度で爆速推論。
-
-
居間(Wi-Fi モード)
-
ケーブルを抜くと、Thunderbolt ブリッジが「オフ」になります。
-
Mac は「あ、直結ルート(192.168.10.2)が死んでるな」と判断し、自動的に通常の Tailscale 経路(Wi-Fi 経由) に切り替えます。
-
結果:設定変更なしでそのまま繋がる。
-
-
カフェ(外出モード)
-
居間と同じく、物理ルートがないため Tailscale がインターネット経由で MS-S1 Max を探しに行きます。
-
結果:設定変更なしでそのまま繋がる。
-
sudo route -n add -host [MS-S1-MaxのTailscale-IP] 192.168.10.2ステップ 3:さらに「確実」にするための設定(重要)
Mac の [システム設定] > [ネットワーク] > [右下の…マーク] > [サービスの順序を設定…] で、以下の順に並べる
- Thunderbolt ブリッジ (一番上!)
- Tailscale
- Wi-Fi
1. iperf3 をインストールする
両方のマシンにツールを入れます。
-
MS-S1 MAX (Ubuntu) 側:
sudo apt update && sudo apt install iperf3 -y -
MacBook Air 側:
brew install iperf3
2. 計測を実行する
まず Ubuntu 側を「待ち受け(サーバー)」状態にし、Mac から「攻撃(クライアント)」を仕掛けます。
手順 ①: MS-S1 MAX (Ubuntu) でサーバー起動
ターミナルで以下を叩きます。
iperf3 -s手順 ②: Mac から接続テスト(Thunderbolt 経由)
Mac のターミナルで、Thunderbolt 用に設定した固定IP(例: 192.168.10.2)を指定して実行します。
iperf3 -c 192.168.10.23. 結果の読み方(ここが重要)
計測が終わると、Bitrate という項目に数字が出ます。ここで「どの経路を通っているか」がわかります。
-
10 Gbps 〜 20 Gbps 程度: おめでとうございます! Thunderbolt 経由です。 物理的な Thunderbolt Bridge (IP over Thunderbolt) は理論値 40Gbps ですが、オーバーヘッドの関係で実測は 10〜20Gbps 前後に落ち着くことが多いです。それでも Wi-Fi より圧倒的に速いです。
-
500 Mbps 〜 800 Mbps 程度: 残念ながら Wi-Fi 6 経由です。 指定した IP が間違っているか、Mac の「サービスの順序」で Wi-Fi が優先されています。
-
10 Mbps 〜 100 Mbps 程度: Tailscale (リレーモード) 経由の可能性があります。 この場合は非常に遅く、開発には向きません。
もし Ubuntu 側で Thunderbolt が認識されているか不安な場合
Ubuntu のターミナルで以下のコマンドを打って、thunderbolt0(またはそれに類する名前)のインターフェースが存在し、IPアドレスが割り当てられているか確認してください。
ip addr show | grep -A 5 thunderboltもしインターフェースが表示されない場合は、以下のコマンドで手動でリンクを立ち上げる必要があるかもしれません:
sudo ip link set dev thunderbolt0 up