ml-explore/mlx-swift
Swift API for MLX
MLX Swift – 用于 MLX 机器学习数组库的 Swift 绑定
简介 – MLX Swift 是 MLX 的 Swift 语言封装,这是一个面向数组的机器学习框架,可在 Apple Silicon GPU (Metal) 上原生运行,并可通过 CUDA 在 Linux 上运行。它公开了与 Python 版本相同的张量运算、神经网络层和优化器,让您能以 Swift 编写代码,并直接集成到 iOS、macOS 或服务器端 Swift 项目中。
重要性 – Apple 的硬件(M 系列芯片)提供强大的 GPU,但大多数 ML 库无法直接访问。MLX 为您提供了一个与 Metal 对接的低级、高性能张量库,而 MLX Swift 让 Swift 生态系统能够使用它,实现无需离开 Apple 开发堆栈即可进行设备端训练、推理和研究。
核心组件
MLX– 核心张量类型与运算。MLXNN– 构建块神经网络层(卷积、线性、激活等)。MLXOptimizers– 标准优化器,如 SGD、Adam 等。MLXRandom– 可重现的随机数生成。
使用方式
- 将包添加到 Xcode 项目或
Package.swift文件(例如.package(url: "https://github.com/ml-explore/mlx-swift", from: "0.10.0"))。 - 导入所需的模块(
import MLX,import MLXNN, …)并编写 Swift 代码来创建张量、定义模型并执行训练或推理。 - 使用 Xcode(会编译所需的 Metal 着色器)或通过 CMake/Ninja 进行命令行或 Linux 构建。
典型工作流程 –
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 – 一个小型聊天 UI,可从 Hugging Face 加载语言模型和视觉语言模型并在本地执行推理。
- 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 代码的子模块。
社区与贡献 – 该项目在宽松授权下开源,欢迎提交 Pull Request,并维护发布规划的问题视图。贡献受 CONTRIBUTING.md 指导,致谢名单列于 ACKNOWLEDGMENTS.md。
深入了解 – 完整的 API 文档托管于 SwiftPackageIndex,上游的 MLX 文档解释了底层张量库。
总结 – MLX Swift 将 Apple Silicon 加速的 MLX 带入 Swift 世界,让开发者能以熟悉的 Swift API 直接在 iOS/macOS 或 Linux 上编写并执行神经网络代码(包括 LLM、视觉语言模型和扩散模型)。
相关
- 项目
- 项目
- 项目
- 项目
- 项目