Awesome
MLX Swift
Installation | Documentation | Examples
MLX Swift is a Swift API for MLX.
MLX is an array framework for machine learning on Apple silicon. MLX Swift expands MLX to the Swift language, making research and experimentation easier on Apple silicon.
Examples
MLX Swift has a few examples, including:
- Large-scale text generation with Mistral 7B
- Training a simple LeNet on MNIST
- Examples that run on macOS or iOS
The MLX Swift Examples repo contains the complete code and documentation for these examples.
Installation
The MLX
Swift package can be built and run from Xcode or SwiftPM. A CMake install is also provided.
More details are in the documentation.
Xcode
In Xcode you can add https://github.com/ml-explore/mlx-swift
as a package
dependency and link MLX
, MLXNN
, MLXOptimizers
and MLXRandom
as needed.
SwiftPM
To use MLX
with SwiftPM you can add this to your Package.swift
:
dependencies: [
.package(url: "https://github.com/ml-explore/mlx-swift", from: "0.10.0")
]
and add the libraries as dependencies:
dependencies: [.product(name: "MLX", package: "mlx-swift"),
.product(name: "MLXRandom", package: "mlx-swift"),
.product(name: "MLXNN", package: "mlx-swift"),
.product(name: "MLXOptimizers", package: "mlx-swift"),
.product(name: "MLXFFT", package: "mlx-swift")]
[!Note] SwiftPM (command line) cannot build the Metal shaders so the ultimate build has to be done via Xcode.
xcodebuild
Although SwiftPM
(command line) cannot build the Metal shaders, xcodebuild
can and
it can be used to do command line builds:
# build and run tests
xcodebuild test -scheme mlx-swift-Package -destination 'platform=OS X'
# build Tutorial
xcodebuild build -scheme Tutorial -destination 'platform=OS X'
CMake
Building with CMake requires both CMake and Ninja to be installed. You can do this with Homebrew:
brew install cmake
brew install ninja
With CMake:
mkdir build
cd build
cmake .. -G Ninja
ninja
./example
Contributing
Check out the contribution guidelines for more information on contributing to MLX. See the docs for more information on building from source, and running tests.
We are grateful for all of our contributors. If you contribute to MLX Swift and wish to be acknowledged, please add your name to the list in your pull request.
MLX Swift was initially developed by David Koski and Ronan Collobert, and is now maintained by David Koski. MLX Swift is built on top of MLX, which was initially developed with equal contribution by Awni Hannun, Jagrit Digani, Angelos Katharopoulos, and Ronan Collobert.
Versions
The MLX
array functions should match MLX as of tag
v0.3.0. The MLXNN
package should match MLX (mlx.nn
) as of tag
v0.0.10.