View in English

  • Apple Developer
    • 今すぐ始める

    「今すぐ始める」を詳しく見る

    • 概要
    • 学ぶ
    • Apple Developer Program

    最新情報

    • 最新ニュース
    • Hello Developer
    • プラットフォーム

    プラットフォームを詳しく見る

    • Appleプラットフォーム
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    • App Store

    特集

    • デザイン
    • 配信
    • ゲーム
    • アクセサリ
    • Web
    • Home
    • CarPlay
    • テクノロジー

    テクノロジーを詳しく見る

    • 概要
    • Xcode
    • Swift
    • SwiftUI

    特集

    • アクセシビリティ
    • App Intent
    • Apple Intelligence
    • ゲーム
    • 機械学習とAI
    • セキュリティ
    • Xcode Cloud
    • コミュニティ

    コミュニティを詳しく見る

    • 概要
    • 「Appleに相談」イベント
    • コミュニティによるイベント
    • デベロッパフォーラム
    • オープンソース

    特集

    • WWDC
    • Swift Student Challenge
    • デベロッパストーリー
    • App Store Awards
    • Apple Design Awards
    • Apple Developer Center
    • ドキュメント

    ドキュメントを詳しく見る

    • ドキュメントライブラリ
    • テクノロジー概要
    • サンプルコード
    • ヒューマンインターフェイスガイドライン
    • ビデオ

    リリースノート

    • 注目のアップデート
    • iOS
    • iPadOS
    • macOS
    • watchOS
    • visionOS
    • tvOS
    • Xcode
    • ダウンロード

    ダウンロードを詳しく見る

    • すべてのダウンロード
    • オペレーティングシステム
    • アプリ
    • デザインリソース

    特集

    • Xcode
    • TestFlight
    • フォント
    • SF Symbols
    • Icon Composer
    • サポート

    サポートを詳しく見る

    • 概要
    • ヘルプガイド
    • デベロッパフォーラム
    • フィードバックアシスタント
    • お問い合わせ

    特集

    • アカウントヘルプ
    • App Reviewガイドライン
    • App Store Connectヘルプ
    • 近日導入予定の要件
    • 契約およびガイドライン
    • システムステータス
  • クイックリンク

    • イベント
    • ニュース
    • Forum
    • サンプルコード
    • ビデオ
 

ビデオ

メニューを開く メニューを閉じる
  • コレクション
  • すべてのビデオ
  • 利用方法

その他のビデオ

  • 概要
  • Summary
  • トランスクリプト
  • コード
  • MLXによる分散推論と分散トレーニング

    MLXを利用すると、複数のMacに機械学習ワークロードを分散させて規模を拡張できます。相互接続の効率化、大規模モデルの推論、リクエストのバッチ処理、分散トレーニングなどの課題に取り組むための方法を確認しましょう。高価なクラウドインフラストラクチャの代わりに数台のMacを使用して、要求の厳しいAIワークロードを処理する方法を学ぶことができます。

    関連する章

    • 0:00 - Introduction
    • 2:09 - Distributed communication
    • 4:32 - Setting up your cluster
    • 10:33 - Distributed inference and fine-tuning
    • 13:35 - Model parallelism strategies
    • 15:53 - Distributed fine-tuning
    • 18:34 - CLI, Python, Swift, and C++ APIs
    • 20:45 - Next steps

    リソース

    • MLX Swift LM on GitHub
    • MLX Swift Examples
    • MLX Examples
    • MLX Swift
    • MLX LM - Python API
    • MLX Explore - Python API
    • MLX Framework
    • MLX
      • HDビデオ
      • SDビデオ

    関連ビデオ

    WWDC26

    • MLXを利用したMac上でのローカルのエージェントAIの実行
    • MLXを活用したSwiftでの数値計算

    WWDC25

    • AppleシリコンでのMLXの導入
    • MLX:Appleシリコンでの大規模言語モデルの実行
  • このビデオを検索

    こんにちは Tatianaです MLXチームのリサーチサイエンティストです ローカルLLMの分野では 目覚ましい進歩が続いています モデルはどんどん大きくなり 驚くべき新機能を次々と備えています より賢くなり 複雑な問題にも対応できるようになっています 性能向上に伴い、用途も広がり 長いコンテキスト、難しいタスクに より複雑なワークフローも こなせるようになっています やがて1台のマシンのメモリや 計算能力、帯域幅が限界になります WWDC 26の動画「Run local agentic AI on the Mac using MLX」では ローカルでAIエージェントを 動かす方法を紹介しています でも複数のデバイスがあれば ローカルAIをさらに活用できます より大きなLLMを実行したり 高速化したりできるのです 分散推論とトレーニングによって 今日はMLXを使って複数のMacに スケールアウトする方法を詳しく解説します 手元にあるハードウェアを 活用する方法です まずコマンドラインインターフェイスで モデルを起動し 自分のマシンで動かします 次にPython APIで 実験的な活用方法を紹介し 最後にSwiftで アプリへの直接組み込み方法を説明します では始めましょう まずハードウェアと ソフトウェアの全体スタックを確認します Appleシリコンで分散ワークロードを 実現するためのものです 次に4台のM3 Ultraを クラスタにまとめる方法を説明します マシンを接続するトポロジーの 選び方から順を追って解説します 高速通信の有効化と 分散ジョブの起動も紹介します クラスタが準備できたら いよいよ楽しい部分です 高速かつローカルな分散LLMの 推論とファインチューニングです MLXで実行し、1台のMacとの パフォーマンスを比較します MLXがモデルをクラスタ全体に どう分散するかも確認します ほとんどの例は コマンドラインインターフェイスで示しますが 最後に分散通信が Python、Swift、C++ APIからも 利用できることをお見せします まずAppleシリコンの 分散通信から見ていきましょう 高速なデータの送受信には マシン同士を物理的な リンクで接続する必要があります インターコネクトと呼ばれるものです さらにトランスポートプロトコル つまり バイトを送り出す仕組みも あるマシンのメモリから 別のマシンのメモリに届けるものが必要です macOS 26.2以降では Remote Direct Memory Accessプロトコル 略してRDMAが Thunderbolt 5で サポートされるようになりました RDMAはあるマシンのメモリから 別のマシンのメモリへ直接データを転送し CPUとOSのオーバーヘッドの 多くを回避します Thunderbolt経由のRDMAで 高帯域幅 低レイテンシな通信が 分散ワークロードに必要な形で 実現できます ただしRDMA単体では2台のマシン間の 生のデータ転送しかできません 分散プログラムにはより高レベルの ものが必要です 通信バックエンド データの送受信のための 通信プリミティブを提供し 個々のマシン間だけでなく グループ全体で 調整するためのものです この2つの操作は 分散トレーニングと推論の基本要素です ここでJACCLの出番です

    JACCLはオープンソースの 集合通信ライブラリで Appleが開発しました Thunderbolt経由のRDMAを活用し 集合通信プリミティブを提供します マシン間のデータ転送や グループ全体での 結果の結合に使えます 低レベルのトランスポートを 自分で管理する必要はありません 機械学習に限らずAppleシリコンで 動くあらゆる分散ワークロードに 活用できます スタックの最後のピースは 機械学習フレームワークです 分散推論とトレーニングに 通信バックエンドを活用する それがMLXです MLXはAppleシリコンのために Appleが構築した オープンソースの機械学習ライブラリです 低レイテンシな分散通信に JACCLを活用し クラスタ全体の分散ジョブを オーケストレーションするツールも提供します MLXが初めての方は動画 「Getting Started with MLX on Appleシリコン」(WWDC25)をご覧ください

    これでスタック全体が 理解できました 全部まとめてクラスタを 構築しましょう 同じタスクに協力して 取り組むマシン群です 4台のM3 Ultraを使います クラスタのセットアップには Thunderbolt 5ケーブルで接続が必要です 接続方法にはさまざまな 種類があります トポロジーは通信時間に 直接影響します まず通信時間を決定する 要素を見ていきましょう 次に実際にマシンを 接続する方法を確認します JACCLがサポートするトポロジーと それぞれのトレードオフです 続いて高速通信のために マシンで RDMAを有効にする方法を説明します 最後にMLXを使ってクラスタで 分散ジョブを起動します

    通信時間には2つの 要素があります レイテンシと転送時間です レイテンシは各通信操作に かかる固定コストで 送信するデータ量とは 無関係です

    転送時間はリンクを通じて データを移動するコストで メッセージサイズに比例して リンクの帯域幅にも 依存して増加します

    小さなメッセージでは データ移動コストが微小なため レイテンシが支配的になります

    大きなメッセージでは 逆のトレードオフになります 通信がレイテンシ律速か 帯域幅律速かによって 適したトポロジーが 異なります

    JACCLはメッシュとリングの 2つをサポートします フルメッシュでは全マシンが 互いに直接接続されるため グループ通信のレイテンシが 最小になります リングでは各ノードが 隣接する2つのノードとのみ接続します 隣接しないノード間の通信は 中間マシンを経由する必要があり レイテンシが増加します ただしリングはマシンごとの ケーブルとポート数が少なく より多くのノードへの スケールアウトが容易です 各ノードの接続が2つだけなので 余分なThunderboltポートを使って 隣接ノードへ2本または3本のケーブルを 引くことができます(Macの種類による) リンクあたりの帯域幅が向上し 転送時間を短縮できます マシンがメッシュ接続されている場合 各通信の経路を柔軟に メッシュトポロジーかリングトポロジーに 切り替えられます

    JACCLの優れた点は 最適なトポロジーを自動的に選択することです メッセージサイズと 通信操作に応じて レイテンシが重要な場合はメッシュ 帯域幅が重要な場合はリングです この柔軟性を活かすため 全M3 Ultraをメッシュ接続しましょう

    全M3 Ultraを接続したので 次に全マシンで RDMAを有効にします マシンの設定を開き 「RDMA」を検索します

    を クリックします

    RDMAを有効にして再起動します

    完了です MacはThunderbolt 5ケーブルで 接続され RDMAが有効になりました 次に分散プログラムを 起動する方法が必要です

    1つの方法はローカルネットワーク 経由で行うことです WiFiまたはEthernetが使えます クラスタへSSHアクセスできる 任意のマシンから たとえば私の場合はMacBookから 各Macに接続して プログラムを起動すると その後は 全マシンが直接 Thunderboltリンクで通信します MLXにはこれをすべて代わりに やってくれる起動ヘルパーがあります

    MacBookでmlx.launchを実行すれば クラスタをオーケストレーションできます 実行したい実行可能ファイルと クラスタを記述した JSON hostfileを渡します すると各ノードにSSH接続し 指定したhostfileのホスト名を使って すべてのマシンで 実行可能ファイルを起動します クラスタを記述するhostfileの 形式を見ていきましょう ノードごとに1エントリの JSON配列です 「ssh」はmlx.launchがマシンに 接続するホスト名です 「ips」はローカルネットワーク上の マシンのIPアドレスで JACCLがノード間の 初期調整に使用します 「rdma」はRDMAデバイス名の リストです Thunderboltのピア接続ごとの デバイス名です

    手動で作成することもできますが MLXには 自動生成してくれるヘルパースクリプト `mlx.distributed_config`もあります ホスト名のリストと 出力パスを渡します 設定に環境変数を 埋め込むこともできます 起動時にすべてのノードで 自動的に設定されます ここでは MLX_METAL_FAST_SYNCH=1を設定します GPUとCPU間の同期を 高速化するためです 分散タスクでは重要な設定で 計算は GPUで実行され 通信はCPUで行われます --auto-setupフラグを 渡すこともできます Thunderboltネットワークを 自動的に設定するためです --backendの引数で メッシュかリングかを指定します メッシュの場合、この例のように --backendにjacclを指定します リングの場合は jaccl-ringに変更します このコマンドを実行して クラスタのhostfileを生成しましょう

    まずすべてのホストが SSH経由で到達可能か確認します 次に各マシンの Thunderboltポートを確認して どのマシンが物理的に どれと接続されているかを調べ トポロジーマップを構築します --auto-setupを渡したので Thunderbolt Bridgeを無効化して 全マシンで 各ThunderboltリンクをRDMA用に 設定します 最後にmlx.launchに必要な 情報をJSON hostfileに書き出します --auto-setupフラグなしでは スクリプトは設定コマンドを出力するだけなので 内容を確認してから 自分で実行できます

    これでクラスタの準備が 整いました いよいよ楽しい部分へ 分散言語モデルの推論と ファインチューニングです 最も手軽な始め方は コマンドラインインターフェイスと MLX LMです MLX LMはMLXをベースにした オープンソースの Pythonパッケージで コマンドラインツールと 言語モデルをローカルで実行するための Python APIを提供します Appleシリコン向けです 動画「Explore large language models on Appleシリコン with MLX」を WWDC25でご覧になれば 1台のデバイスで始められます

    昨年ご紹介したように 1台のMacでモデルとチャットするには コマンドラインインターフェイスで mlx_lm.chatを使います ターミナルで実行し 使用するモデルを指定します たとえばQwen 3.6と 応答の最大トークン数です 内部ではMLX LMが1台のマシンで モデルを読み込んで実行します

    同じモデルをクラスタ上でコマンドライン インターフェイスを使って実行するには コマンドをmlx.launchで ラップします MacBookのターミナルで mlx.launchを実行し --hostfileでクラスタの 設定ファイルを指定します ダブルダッシュの後にまったく同じ mlx_lm.chatコマンドを渡します ただし各ノード上の実行可能ファイルへの リモートパスを使います コマンドはほとんど同じで MLX LMがモデルを分割して 分散推論を調整してくれます 各MacにMLXなどの必要なライブラリを インストールしておく必要があります 実行可能ファイルも全マシンから アクセス可能である必要があります コマンドラインインターフェイス 1行でクラスタ全体にまたがる モデルを実行できます 両方を並べて試してみましょう Qwen 3.6と 270億パラメータのモデルで 1台のM3 Ultraと4台で チャットします 両方でmlx_lm.chatを 既に起動しています 左側ではモデルが 1台のM3 Ultraにロードされています 右側では4台のマシンに 分散されています 両方に「Implement a transformer model in MLX.」と プロンプトしてみます

    かなり印象的な スピードアップです クラスタは約3倍の速度で トークンを生成します 1台のマシンと比べて Qwen 3.6モデルで ご覧のように複数のMacで モデルを実行すると 推論速度を大幅に 向上できます 正確なスピードアップはモデルの サイズとアーキテクチャに依存します ただし時間の改善だけが 分散処理を使う理由ではありません 1台のマシンには大きすぎる モデルも存在します たとえばKimi 2.6は合計 1兆のパラメータを持っています 8ビット量子化を施しても 重みだけで約1テラバイトの メモリが必要です 1台のM3 Ultraには収まりませんが 4台なら収めることができます では実際にどのように重みと計算を マシン間で分割するのでしょうか MLXとMLX LMはパイプライン並列と テンソル並列 2つのアプローチをサポートします

    パイプライン並列は モデルを深さ方向に分割します この場合、各マシンが レイヤーのグループを担当し データはマシンを 順番に通過します 推論の速度向上にはなりません 各トークンはそれでも レイヤーグループを 順に通過する必要があるからです ただし通信がシンプルです マシンはレイヤーグループの境界で 活性化値を交換するだけです テンソル並列は モデルを幅方向に分割します この場合、各マシンが すべてのレイヤーの一部を担当し 全マシンが同じトークンを 同時に処理します レイヤーごとの計算が並列化されるため 推論速度が向上します トレードオフとして 通信頻度がはるかに高くなります すべてのレイヤーと すべてのトークンで発生します 低レイテンシが重要となるため このケースではメッシュトポロジーが 重要です 全マシンが1ホップで 互いに到達できるからです

    テンソル並列はMLX LMのデフォルトの シャーディング戦略です パイプライン並列で モデルを分割するには コマンドに--pipelineフラグを 追加するだけです すべてのモデルがパイプライン並列を サポートするわけではありません では1兆パラメータの Kimi 2.6とチャットしてみましょう クラスタ上で

    以前と同様にMacBookから mlx.launchを使います hostfileを指定します --pipelineフラグは渡さないので テンソル並列を使います 少し待ちます mlx.launchが全マシンに接続し MLX LMがモデルを ロードして分割します そしてチャットを開始します

    モデルがロードされました モデルにプロンプトします 「Implement machine learning architecture for GPT in Python with MLX」

    できました。コマンド1つで 巨大な1兆パラメータのモデルが 手元のMacにまたがってローカルで動き 質問に答えています

    MLXとMLX LMを使えば 言語モデルの推論だけでなく 手元のハードウェアで モデルのファインチューニングもできます 高速で効率的、完全プライベート データがマシンを離れることはありません まず1台のMacから始めて クラスタへのスケールを確認します 1台のマシンでファインチューニングや トレーニングする場合 トレーニングデータを バッチに分割します 複数のサンプルのセットです 各バッチに対して Macは勾配を計算し モデルの重みを更新します このプロセスをトレーニング データセットに対して1回以上繰り返します モデルが目標の品質に 達するまでです トレーニングデータを 速く処理するほど ファインチューニングの 完了が早まります 複数のマシンで これをどう速くできるでしょうか アイデアはシンプルです すべてのMacで モデルを複製します 各マシンは異なるバッチのデータを受け取り ローカルで勾配を計算します 次に勾配を平均化して モデルの更新に全バッチの 情報を使います モデルは複製されるためこれを データ並列トレーニングと呼びます データは各マシンで 並列に処理されます これがスピードアップの源です N台のマシンでデータを N倍まで高速に処理できます 素晴らしいですね MLX LMでデータ並列を 使う方法を見てみましょう 以前と同様、1台のデバイスとの 唯一の違いは ジョブをmlx.launchで 起動することです MacBookから リモートマシン上の mlx_lm.loraへのパスを指定します データシャーディングはMLX LMが処理し コマンドはほぼ同じです --batch-sizeをデバイス数で スケールします 各マシンが引き続き 以前と同じサンプル数を 各ステップで処理します 90億パラメータのQwen 3.5を ファインチューニングしてみましょう 1台のマシンとクラスタで モデルが1秒あたりに処理する トークン数を比較します 左側では1台のデバイスで ファインチューニングを起動し 右側ではクラスタで mlx.launchとhostfileを使って リモートマシン上の mlx_lm.loraへのパスを指定します まずデータとモデルを読み込み トレーニングが開始されます 1台のM3 Ultraは約180トークン毎秒を 処理します クラスタでは約600トークン毎秒で 処理でき ファインチューニングで 3倍以上の高速化になります MLXを使えばデバイスをローカルの トレーニングクラスタに変えられます クラウドに移行せずに 効率的なファインチューニングが可能です これまでコマンドラインインターフェイスで 分散推論と MLX LM内のファインチューニングを 行ってきました ただしMLXはより細かな制御を 提供します シャーディングと 分散操作に対して 柔軟なPython、Swift、C++ APIを 通じてです PythonとC++でモデルの 実験が可能になり Swiftでモデルをアプリに 組み込むこともできます 例を見てみましょう Python APIとMLX LMで 分散推論を実行するには まず通信用の分散グループを 初期化します 次に使用する並列処理の 種類を定義します たとえばテンソル並列です 最後にsharded_load関数で モデルをシャードします その後は1台のデバイスとまったく同じように モデルを使えます MLX LMがすべての分散通信を 内部で処理します

    モデルとそのシャーディングを より細かく制御するには MLX自体の低レベルプリミティブを 使用できます たとえばシンプルなLinearレイヤーを 定義した後 shard_linear関数でテンソル並列として シャードできます all reduceなどの基本的な 分散操作も制御できます PythonやSwift、C++でJACCL経由で 分散グループを初期化した後 テンソルに対して全Macにまたがる 集合分散和を実行します 対応するMLXプリミティブを 使用します セッションの最初に 述べたように JACCLは単体でも利用できます あらゆるアプリケーションで 活用できます 分散通信を必要とする ML以外のアプリケーションでも JACCLはMLXなしでビルドでき C++ APIを提供します 通信プリミティブとして JACCLグループを初期化した後 全Macにまたがる集合分散和を 再び実行します テンソルに対してですが 今回はMLXではなくJACCL直接です 高レベルと低レベルの 両方のAPIがわかりました MLXとJACCLを使った 分散推論とトレーニングの MLXで高度な分散ワークフローを 構築する準備ができました

    このセッションを通じて 完全なスタックを見てきました 分散トレーニングと推論を Appleシリコンで実現する Thunderbolt経由のRDMAから MLXとMLX LMに 至るまでです 1台から複数デバイスへのスケールが いかに簡単かをお見せしました そのメリットとして 推論の高速化、1兆パラメータモデルの 実行能力 そして高速な ファインチューニングがあります 1台のデバイスのコードに 最小限の変更を加えるだけです コマンドラインインターフェイス、 Python、Swift、C++ APIをサポートします 分散クラスタを使えばMLXで動く ローカルAIエージェントを実行できます 高速でプライベート 自分のハードウェアで動作します 詳しくはWWDC 2026の動画 「Run local agentic AI on the Mac using MLX」をご覧ください 高度な分散機能について さらに詳しく知りたい場合は カスタム並列戦略や トレーニングループを含む ドキュメントをご確認ください MLX LMの組み込みサーバーを使って モデルを分散配信することもできます Appleシリコン上のMLXで 何を作るか楽しみにしています

    • 8:31 - Hostfile format for a 4-node MLX cluster

      [
        {
          "ssh": "m3-ultra-0",
          "ips": ["192.168.1.10"],
          "rdma": [null, "rdma_en5", "rdma_en4", "rdma_en3"]
        },
        {
          "ssh": "m3-ultra-1",
          "ips": ["192.168.1.11"],
          "rdma": ["rdma_en5", null, "rdma_en4", "rdma_en3"]
        },
        {
          "ssh": "m3-ultra-2",
          "ips": ["192.168.1.12"],
          "rdma": ["rdma_en5", "rdma_en4", null, "rdma_en3"]
        },
        {
          "ssh": "m3-ultra-3",
          "ips": ["192.168.1.13"],
          "rdma": ["rdma_en5", "rdma_en4", "rdma_en3", null]
        }
      ]
    • 8:56 - Generate the cluster hostfile with mlx.distributed_config

      mlx.distributed_config \
          --hosts m3-ultra-0,m3-ultra-1,m3-ultra-2,m3-ultra-3 \
          --output "m3-ultra-jaccl.json" \
          --env MLX_METAL_FAST_SYNCH=1 \
          --auto-setup \
          --backend jaccl
    • 11:04 - Run distributed LLM inference with mlx_lm.chat

      # Single-device LLM inference
      mlx_lm.chat --model "Qwen/Qwen3.6-27B" --max-tokens 2048
      
      # Distributed LLM inference across the cluster
      mlx.launch --hostfile "m3-ultra-jaccl.json" -- \
          /remote/path/to/mlx_lm.chat --model "Qwen/Qwen3.6-27B" --max-tokens 2048
    • 15:03 - Run distributed inference with pipeline parallelism

      # Tensor parallelism (default)
      mlx.launch --hostfile "m3-ultra-jaccl.json" -- \
          /remote/path/to/mlx_lm.chat --model "moonshotai/Kimi-K2.6" \
                                       --max-tokens 2048
      
      # Pipeline parallelism — append --pipeline flag
      mlx.launch --hostfile "m3-ultra-jaccl.json" -- \
          /remote/path/to/mlx_lm.chat --model "moonshotai/Kimi-K2.6" \
                                       --max-tokens 2048 \
                                       --pipeline
    • 17:18 - Run distributed fine-tuning with mlx_lm.lora

      # Single-device fine-tuning
      mlx_lm.lora --model "Qwen/Qwen3.5-9B" \
                   --data "mlx-community/wikisql" \
                   --train --batch-size 4
      
      # Distributed fine-tuning (scale --batch-size by number of devices)
      mlx.launch --hostfile "hostfile.json" -- \
          /remote/path/to/mlx_lm.lora --model "Qwen/Qwen3.5-9B" \
                                        --data "mlx-community/wikisql" \
                                        --train --batch-size 16
    • 19:01 - Distributed inference with the MLX LM Python API

      import mlx.core as mx
      from mlx_lm import stream_generate
      from mlx_lm.utils import sharded_load
      
      # Initialise distributed backend
      group = mx.distributed.init(strict=True, backend="jaccl")
      # Define parallelism
      tensor_group, pipeline_group = group, None
      
      # Shard the model
      model, tokenizer = sharded_load("moonshotai/Kimi-K2.6", pipeline_group, tensor_group)
      for response in stream_generate(model, tokenizer, prompt, max_tokens=1024):
          if group.rank() == 0:
              print(response.text, end="", flush=True)
    • 19:31 - Shard a layer with the MLX Python API

      import mlx.core as mx
      import mlx.nn as nn
      
      # Initialise distributed backend
      group = mx.distributed.init(strict=True, backend="jaccl")
      
      # Define layer and shard it column-wise
      layer = nn.Linear(1024, 1024)
      sharded_layer = nn.layers.distributed.shard_linear(
          layer, strategy="all-to-sharded", group=group
      )
      data = mx.random.normal((1, 1, 1024))
      output = sharded_layer(data)
      mx.eval(output)
    • 19:47 - All-reduce across devices in Python, Swift, and C++

      # Python
      import mlx.core as mx
      world = mx.distributed.init(strict=True, backend="jaccl")
      data = mx.full((4,), float(world.rank()), dtype=mx.float32)
      result = mx.distributed.all_sum(data, group=world)
      mx.eval(result)
      
      # Swift
      let group = try DistributedGroup(strict: .ring)
      let data = rank == 0
          ? MLXArray(converting: [1.0, 2.0, 3.0])
          : MLXArray(converting: [5.0, 6.0, 7.0])
      let result = try group.allSum(data)
      
      // C++
      namespace mx = mlx::core;
      auto world = mx::distributed::init(/* strict */ true, "jaccl");
      mx::array data = mx::full({4}, static_cast<float>(world.rank()), mx::float32);
      mx::array result = mx::distributed::all_sum(data, world);
      mx::eval(result);
    • 20:06 - Standalone distributed sum with the JACCL C++ API

      #include <jaccl/jaccl.h>
      #include <iostream>
      
      int main() {
          // Initialize JACCL group
          auto group = jaccl::init();
          std::cout << "Rank " << group->rank() << " of " << group->size() << std::endl;
          // Perform all-reduce sum
          float data[10] = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f};
          float output[10];
          group->all_sum(data, output, sizeof(data), jaccl::Float32);
          std::cout << "Result: " << output[0] << std::endl;
          return 0;
      }
    • 0:00 - Introduction
    • Overview of why distributed AI becomes necessary as models grow larger, and a preview of what the session covers: CLI tools, Python API, and Swift for embedding distributed workflows in your apps.

    • 2:09 - Distributed communication
    • A walkthrough of the full hardware and software stack enabling distributed workloads on Apple silicon: RDMA over Thunderbolt 5 for low-latency data movement, JACCL (open-source collective communication library), and MLX as the ML framework that ties them together.

    • 4:32 - Setting up your cluster
    • How to physically connect four M3 Ultras into a cluster — understanding latency vs. bandwidth trade-offs, choosing between mesh and ring topologies, enabling RDMA in System Settings, and using mlx.distributed_config and mlx.launch to configure and orchestrate the cluster.

    • 10:33 - Distributed inference and fine-tuning
    • How to run distributed LLM inference with MLX LM using a single CLI command — wrapping mlx_lm.chat with mlx.launch to shard a 27B-parameter Qwen model across four M3 Ultras, achieving nearly 3x the token generation rate of a single machine.

    • 13:35 - Model parallelism strategies
    • How MLX LM splits large models across machines using tensor parallelism (splitting by width for faster inference) and pipeline parallelism (splitting by depth for simpler communication) — including a demo running the 1-trillion-parameter Kimi 2.6 model across four Macs.

    • 15:53 - Distributed fine-tuning
    • How data-parallel training accelerates fine-tuning by replicating the model across machines, processing different data batches in parallel, and averaging gradients — demonstrated fine-tuning Qwen 3.5 (9B) at over 3x throughput on the cluster versus a single M3 Ultra.

    • 18:34 - CLI, Python, Swift, and C++ APIs
    • How to use MLX's fine-grained Python, Swift, and C++ APIs for distributed inference — initializing a distributed group, sharding models with tensor parallelism, using low-level all_reduce primitives, and leveraging JACCL standalone for non-ML distributed workloads.

    • 20:45 - Next steps
    • Summary of the full distributed stack — from RDMA over Thunderbolt to MLX and MLX LM — and next steps including the companion session on local agentic AI, documentation on custom parallelism strategies, and the built-in MLX LM distributed server.

Developer Footer

  • ビデオ
  • WWDC26
  • MLXによる分散推論と分散トレーニング
  • メニューを開く メニューを閉じる
    • iOS
    • iPadOS
    • macOS
    • tvOS
    • visionOS
    • watchOS
    Open Menu Close Menu
    • Swift
    • SwiftUI
    • Swift Playground
    • TestFlight
    • Xcode
    • Xcode Cloud
    • SF Symbols
    メニューを開く メニューを閉じる
    • アクセシビリティ
    • アクセサリ
    • Apple Intelligence
    • App Extension
    • App Store
    • オーディオとビデオ(英語)
    • 拡張現実
    • デザイン
    • 配信
    • 教育
    • フォント(英語)
    • ゲーム
    • ヘルスケアとフィットネス
    • アプリ内課金
    • ローカリゼーション
    • マップと位置情報
    • 機械学習とAI
    • オープンソース(英語)
    • セキュリティ
    • SafariとWeb(英語)
    メニューを開く メニューを閉じる
    • 英語ドキュメント(完全版)
    • 日本語ドキュメント(一部トピック)
    • チュートリアル
    • ダウンロード
    • フォーラム(英語)
    • ビデオ
    Open Menu Close Menu
    • サポートドキュメント
    • お問い合わせ
    • バグ報告
    • システム状況(英語)
    メニューを開く メニューを閉じる
    • Apple Developer
    • App Store Connect
    • Certificates, IDs, & Profiles(英語)
    • フィードバックアシスタント
    メニューを開く メニューを閉じる
    • Apple Developer Program
    • Apple Developer Enterprise Program
    • App Store Small Business Program
    • MFi Program(英語)
    • Mini Apps Partner Program
    • News Partner Program(英語)
    • Video Partner Program(英語)
    • セキュリティ報奨金プログラム(英語)
    • Security Research Device Program(英語)
    Open Menu Close Menu
    • Appleに相談
    • Apple Developer Center
    • App Store Awards(英語)
    • Apple Design Awards
    • Apple Developer Academy(英語)
    • WWDC
    最新ニュースを読む。
    Apple Developerアプリを入手する。
    Copyright © 2026 Apple Inc. All rights reserved.
    利用規約 プライバシーポリシー 契約とガイドライン