GitHub - ml-explore/mlx-swift-examples: Examples using MLX Swift (original) (raw)
Documentation
Developers can use these examples in their own programs -- just import the swift package!
- Porting and implementing models
- MLXLLMCommon -- common API for LLM and VLM
- MLXLLM -- large language model example implementations
- MLXVLM -- vision language model example implementations
- MLXEmbedders -- popular Encoders / Embedding models example implementations
- StableDiffusion -- SDXL Turbo and Stable Diffusion mdeol example implementations
- MLXMNIST -- MNIST implementation for all your digit recognition needs
MLX Swift Examples
Example MLX Swift programs.
- MNISTTrainer: An example that runs on both iOS and macOS that downloads MNIST training data and trains aLeNet.
- LLMEval: An example that runs on both iOS and macOS that downloads an LLM and tokenizer from Hugging Face and generates text from a given prompt.
- VLMEval: An example that runs on iOS, macOS and visionOS to download a VLM and tokenizer from Hugging Face and analyzes the given image and describe it in text.
- MLXChatExample: An example chat app that runs on both iOS and macOS that supports LLMs and VLMs.
- LinearModelTraining: An example that trains a simple linear model.
- StableDiffusionExample: An example that runs on both iOS and macOS that downloads a stable diffusion model from Hugging Face and and generates an image from a given prompt.
- llm-tool: A command line tool for generating text using a variety of LLMs available on the Hugging Face hub.
- ExampleLLM: A command line tool using the simplified API to interact with LLMs.
- image-tool: A command line tool for generating images using a stable diffusion model from Hugging Face.
- mnist-tool: A command line tool for training a a LeNet on MNIST.
Interacting with LLMs
See also MLXLMCommon. You can easily use a wide variety of open weight LLM and VLMs in your code. You can use this simplified API:
let model = try await loadModel(id: "mlx-community/Qwen3-4B-4bit") let session = ChatSession(model) print(try await session.respond(to: "What are two things to see in San Francisco?") print(try await session.respond(to: "How about a great place to eat?")
Or use the underlying API to control everything aspect of the evaluation.
Running
The application and command line tool examples can be run from Xcode or from the command line:
./mlx-run llm-tool --prompt "swift programming language"
Note: mlx-run
is a shell script that uses xcode
command line tools to locate the built binaries. It is equivalent to running from Xcode itself.
See also:
Installation of libraries
The MLXLLM, MLXVLM, MLXLMCommon, MLXMNIST, MLXEmbedders, and StableDiffusion libraries in the example repo are available as Swift Packages.
Add the following dependency to your Package.swift
.package(url: "https://github.com/ml-explore/mlx-swift-examples/", branch: "main"),
Then add one or more libraries to the target as a dependency:
.target( name: "YourTargetName", dependencies: [ .product(name: "MLXLLM", package: "mlx-swift-examples") ]),
Alternatively, add https://github.com/ml-explore/mlx-swift-examples/
to the Project Dependencies
and set the Dependency Rule
to Branch
and main
in Xcode.