ml-explore/mlx-swift

Swift API for MLX

MLX Swift – MLX 機械学習配列ライブラリのための Swift バインディング

概要 – MLX Swift は、MLX(Apple シリコン GPU (Metal) 上でネイティブに動作し、CUDA を介して Linux 上でも動作する配列指向の機械学習フレームワーク)の Swift 言語ラッパーです。Python 版と同じテンソル演算、ニューラルネットワーク層、オプティマイザを公開しており、Swift でコードを記述して iOS、macOS、またはサーバーサイド Swift プロジェクトに直接統合できます。

重要性 – Apple のハードウェア(M シリーズチップ)は強力な GPU を搭載していますが、ほとんどの ML ライブラリからは直接アクセスできません。MLX は Metal と通信する低レベルで高性能なテンソルライブラリを提供し、MLX Swift はそれを Swift エコシステムで利用可能にすることで、Apple の開発スタックを離れることなく、デバイス上でのトレーニング、推論、研究を可能にします。

主要コンポーネント

  • MLX – コアテンソル型と演算。
  • MLXNN – ニューラルネットワーク層のビルディングブロック(畳み込み、線形、活性化など)。
  • MLXOptimizers – SGD、Adam などの標準的なオプティマイザ。
  • MLXRandom – 再現可能な乱数生成。

使用方法

  1. Xcode プロジェクトまたは Package.swift ファイルにパッケージを追加します(例: .package(url: "https://github.com/ml-explore/mlx-swift", from: "0.10.0"))。
  2. 必要なモジュールをインポートし(import MLX, import MLXNN, …)、テンソルの作成、モデルの定義、トレーニングや推論を実行する Swift コードを記述します。
  3. Xcode(必要な Metal シェーダーをコンパイルします)でビルドするか、コマンドラインや Linux ビルド用に CMake/Ninja を使用します。

典型的なワークフロー –

import MLX, MLXNN, MLXOptimizers

let x = MLXArray.randomNormal(shape: [64, 784])   // input batch
let model = Sequential {
    Linear(inFeatures: 784, outFeatures: 128)
    Relu()
    Linear(inFeatures: 128, outFeatures: 10)
}
let opt = Adam(parameters: model.parameters, learningRate: 0.001)

let logits = model(x)
let loss = softmaxCrossEntropy(logits, targets: …)
opt.step(loss: loss)

同じコードが、ビルドフラグに応じて macOS/iOS (Metal GPU) または Linux (CPU/CUDA) 上で実行されます。

リポジトリに含まれるサンプル –

  • MNISTTrainer – 古典的な MNIST データセットで LeNet モデルをトレーニングし、iOS および macOS で実行可能。
  • MLXChatExample – Hugging Face から言語モデルと視覚言語モデルを読み込み、ローカルで推論を実行する小さなチャット UI。
  • LLMEval – LLM とトークナイザーをダウンロードし、プロンプトからテキストを生成。
  • StableDiffusionExample – デバイス上で Stable Diffusion 拡散モデルを実行して画像を生成。
  • llm-tool – Hugging Face の任意の LLM を使用して迅速にテキスト生成を行うためのコマンドラインユーティリティ。 すべてのサンプルは付属の mlx-swift-examples リポジトリにあり、Python MLX エコシステムからモデルを移植する方法を示しています。

インストールオプション

  • Xcode – リポジトリを Swift Package として追加し、必要なライブラリをリンクします。複雑な依存関係グラフの場合は、提供されている xcode/MLX.xcodeproj を介して MLX をフレームワークとしてビルドすることもできます。
  • SwiftPM (CLI) – Package.swift でパッケージを宣言します。Metal シェーダーは依然として Xcode でコンパイルする必要があることに注意してください。
  • CMake/Ninja – macOS (Metal) および Linux (CPU または CUDA) で動作します。基盤となる C-MLX コードのサブモジュールを最初に初期化する必要があります。

コミュニティと貢献 – このプロジェクトは寛容なライセンスの下でオープンソース化されており、プルリクエストを歓迎し、リリース計画の Issue ビューを維持しています。貢献は CONTRIBUTING.md に従って行われ、謝辞は ACKNOWLEDGMENTS.md に記載されています。

詳細情報 – 完全な API ドキュメントは SwiftPackageIndex でホストされており、アップストリームの MLX ドキュメントで基盤となるテンソルライブラリについて説明されています。


要約 – MLX Swift は Apple シリコンで加速された MLX を Swift の世界にもたらし、開発者が使い慣れた Swift API を使用して、iOS/macOS または Linux 上で直接ニューラルネットワークコード(LLM、視覚言語モデル、拡散モデルを含む)を記述および実行できるようにします。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト