MacとDGX Sparkで作るLLMハイブリッド環境構築ガイド

MacとDGX Sparkを組み合わせ、SSH、vLLM、Ollama、RAGなどの役割分担でLLMハイブリッド環境を作るためのガイド。

MacとDGX Sparkで作るLLMハイブリッド環境構築ガイドのイメージイラスト

この記事でわかること

MacとDGX Sparkをどうつなぎ、どちらに何を担当させるかを構成パターン別に整理した記事です。

  • DGX Sparkの位置づけと基本構成
  • MacからDGX Sparkへアクセスする方法
  • RAG、推論、UIの役割分担

おすすめ読者: Mac中心の開発環境に、NVIDIA GPU推論基盤を追加したい人。

読む前の注意: コマンド、ライブラリ、モデルの仕様は環境やバージョンで変わります。実行前に手元の環境と公式情報を確認してください。

LLMハイブリッド環境構築のイメージイラスト

MacとDGX Sparkを活用したLLMハイブリッド環境構築ガイド

概要

NVIDIA DGX SparkとMac(Mac Studio / MacBook)を組み合わせることで、それぞれの強みを最大限に活かしたハイブリッドなLLM環境を構築できます。DGX Sparkが持つ強力な「計算能力」と、Macが備える広大な「メモリ帯域幅」を最適に組み合わせることで、単体のデバイスでは実現不可能な、極めて効率的なLLM推論パフォーマンスを引き出すことが可能です。


1. DGX Sparkの基本仕様

項目 仕様
チップ NVIDIA Grace Blackwell (ARM64 + Blackwell GPU)
メモリ 128GB 統一メモリ (273 GB/s)
AI性能 1 TFLOPS (FP4) / 100 TFLOPS (FP16)
OS DGX OS (Ubuntu 24.04 ベース)
ポート USB-C x4, 10GbE x1, QSFP (200 Gbps) x2
サイズ・重量 150mm x 150mm x 50.5mm / 1.2kg

DGX SparkはCUDAエコシステムを完全にサポートしているため、vLLM、Ollama、PyTorchなどの主要なツールをそのまま利用可能です。


2. Mac × DGX Spark:主要な組み合わせパターン

パターンA:SSHトンネルによるリモートGPUとしての活用(最も一般的)

Macを開発環境やユーザーインターフェース(UI)の操作端末とし、DG的なDGX SparkにLLMの推論やトレーニングといった高負荷な計算処理を任せる構成です。

具体的なセットアップ手順:

  1. DGX Sparkの初期セットアップ
  2. WiFiまたはEthernetでネットワークに接続し、初回起動時の設定ウィザードを完了させます。

  3. MacからのSSH接続(パスワードまたは公開鍵認証)

  4. .local 名前解決ができるか確認します。
    bash dns-sd -G v4 spark-XXXX.local
  5. SSHで接続します。
    bash ssh user@spark-XXXX.local

  6. Docker Model Runner (DMR) の活用
    DGX Spark上でDMRを起動すると、OpenAI互換のAPIエンドポイント(http://localhost:12434/engines/v1)が公開されます。これにより、Mac側からトンネル越しにアクセス可能になります。

  7. SSHトンネルの確立
    ```bash
    # DGX SparkのLLMサーバーをMacのローカルポートにフォワード
    ssh -N -L 12434:localhost:12434 user@spark-XXXX.local

# Jupyter Labを利用する場合
ssh -N -L 8888:localhost:8888 user@spark-XXXX.local
```

  1. VS CodeやOpen WebUIからのアクセス
    Mac上のブラウザやVS Codeから、フォワーディングされたポート経由でLLMを操作します。実際の計算処理はすべてDGX Spark側で行われます。

メリット:
- Macを軽量なIDEやUI操作用のデバイスとして活用できる
- 全ての計算負荷をDGX Sparkへ集約できる
- VS CodeのRemote機能と組み合わせることで、さらにスムーズな開発が可能


パターンB:EXOフレームワークによるDisaggregated Inference(高性能ハイブリッド)

EXOLabsが開発したオープンソースフレームワーク「EXO」を使用すると、MacとDGX Sparkを単一のLLM推論クラスタとして統合できます。

基本的な仕組み:
- Pre-fillフェーズ(プロンプト処理) → DGX Spark(高い計算能力を活用)
- Decodeフェーズ(トークン生成) → Mac(高いメモリ帯域幅を活用)

この役割分担により、LLM推論における2つの異なる特性を最適に活用できます。

ベンチマーク結果(Llama-3.1 8Bの場合):

構成 Pre-fill時間 Generation時間 合計時間 速度向上
DGX Spark 単体 1.47s 2.87s 4.34s 1.9x
Mac Studio M3 Ultra 単体 5.57s 0.85s 6.42s 1.0x(基準)
DGX Spark + M3 Ultra 1.47s 0.85s 2.32s 2.8x

ハイブリッド構成(Combined setup)により、Mac Studio単体と比較して約2.8倍の高速化を実現します。

EXOの動作原理:
- 層ごとのKVキャッシュをパイプライン形式で転送します。
- 1層目のpre-fill完了と同時に、Layer 1のKVデータをM3 Ultraへ送信しながら、DGX Spark上で2層目以降の処理を並行して実行します。
- 10GbE接続環境下でも十分なオーバーラップが可能です(コンテキストが長くなるほど効果が顕著になります)。


パターンC:Mac StudioとDGX Sparkの役割分担(RAG + Inferenceの分離)

EXOのような分散フレームワークを使用せず、用途に応じてデバイスを使い分けるアプローチです。

構成例:

デバイス 担当タスク
DGX Spark RAGパイプライン(埋め込み生成、リランキング)、バックグラウンド処理
Mac Studio LLM推論(トークン生成)、対話セッション

この構成のメリット:
- RAGのクエリ処理をDGX Sparkに任せることで、Mac Studioのメモリ競合を回避できます。
- 397Bといった超大規模モデルの推論性能を維持できます。
- Mac Studioの広大なメモリ(最大512GB)を推論専用として最大限活用できます。

参考ベンチマーク:
- Embedding速度: Mac Studio M3 Ultra (112.0 sentences/s) > DGX Spark CUDA (76.6 sentences/s)
- 理由: エンベディングモデルは主にメモリ帯域幅に依存するため、高い帯域を持つMacが有利です。


パターンD:NVIDIA SyncまたはLM Linkによる統合リモートアクセス

NVIDIA Sync(macOS版):
- MacにNVIDIA Syncアプリをインストール。
- DGX Sparkのホスト名・ユーザー名・パスワードを入力して接続。
- VS Code Remoteから、直接DGX Spark上のファイルを編集・実行できます。

LM Studio + LM Link:
- DGX Spark上でLM Studio(Headless版: llmster)をセットアップ。
- MacにLM Studioクライアントをインストール。
- LM Link(Tailscaleベースの暗号化VPN)を経由して、MacからDGX Spark上のモデルをローカルにあるかのように呼び出せます。


3. DGX Spark単体でのLLM運用方法

Ollamaを使用する場合

# モデルのプル
ollama pull llama3.1:8b

チャットの開始

ollama run llama3.1:8b

vLLMを使用する場合

# コンテナのプル
docker pull nvcr.io/nvidia/vllm:25.11-py3

サーバーの起動

vllm serve meta-llama/Llama-3.1-8B-Instruct —host 0.0.0.0 —port 8000

Docker Model Runner (DMR) を使用する場合

# DMRの起動
docker run -d -p 12434:80 --name dmr 
  nvcr.io/nvidia/dm-runner:latest

OpenAI互換APIとしてアクセス

curl http://localhost:12434/engines/v1/chat/completions -H “Content-Type: application/json” -d ’{“model”:“model-name”,“messages”:[{“role”:“user”,“content”:“Hello”}]}’


4. Macからのアクセス方法(詳細)

SSH接続の設定

# .ssh/config への設定例
Host dgx
    HostName spark-XXXX.local
    User your_username
    IdentityFile ~/.ssh/id_ed25519

ポートフォワーディングを有効にして接続

ssh -N -L 8888:localhost:8888 -L 12434:localhost:12434 dgx &

JupyterLabのリモート活用

# DGX Spark上でJupyter Labを起動
jupyter lab --no-browser --port=8888

Mac側からトンネル経由で接続

ssh -N -L 8888:localhost:8888 dgx

ブラウザで http://localhost:8888/lab にアクセス

VS Code Remoteでの活用

  1. MacにVS Codeをインストール。
  2. Remote - SSH 拡張機能をインストール。
  3. ssh dgx を使用して、DGX Sparkのファイルシステムに直接アクセス。
  4. 推論コードの実行は、すべてDGX Spark上で行われます。

5. 注意事項・課題

ネットワーク環境

  • DGX SparkとMacは、同一LAN環境(Ethernet接続を推奨)に接続してください。
  • Wi-Fiでも接続可能ですが、レイテンシの安定性に欠ける場合があります。
  • 10GbEポートを利用できる場合は、有線接続を強く推奨します。

GPUメモリの管理

  • DGX Sparkの128GBの統一メモリから、OSやDocker、CUDAのオーバーヘッドを差し引くと、実質利用可能なメモリは約111GB程度です。
  • vLLMを使用する際は、--gpu-memory-utilization を110程度に設定し、OOM(メモリ不足)を防止してください。

熱設計

  • 連続稼働時にはサーマルスロットリングが発生する可能性があります。
  • 通風口を確保し、周囲の温度を30℃以下に保つよう管理してください。

NVIDIA Syncに関する注意

  • macOS版が存在しますが、パスの重複など互換性の問題が発生することがあります。
  • 接続がうまくいかない場合は、従来のSSH接続を利用するのが最も確実です。

6. まとめ:推奨される組み合わせパターン

ユースケース おすすめのパターン
LLM推論・Fine-tuning パターンA(SSHトンネル + vLLM/DMR)
Jupyter Notebook作業 パターンA(SSHトンネル + JupyterLab)
最高性能のInference(推論) パターンB(EXO分散フレームワーク)
RAG + Inferenceの分離 パターンC(役割分担)
手軽なリモートアクセス パターンD(NVIDIA Sync / LM Link)

DGX SparkとMacを組み合わせることで、それぞれの強みを最大限に活用したLLM開発環境を実現できます。用途や目的に応じて、最適なパターンを選択してください。


参考情報

よくある質問

Macだけで十分な場合との違いは?

小規模モデルや開発用途はMacだけでも扱えますが、大きなモデルやGPU最適化を試す場合はDGX Spark側に処理を寄せる利点があります。

ネットワーク越しの推論で注意することは?

速度だけでなく、認証、ポート公開、TLS、ログ、タイムアウト設定を確認してください。

RAGはどちらで動かすべきですか?

前処理や検索はMacや別サーバー、重い生成はDGX Sparkなど、負荷と管理しやすさで分けるとよいです。