zml/zml
Any model. Any hardware. Zero compromise. Built with @ziglang / @openxla / MLIR / @bazelbuild
ZML – 生产级推理栈
是什么 – ZML 是一个开源框架,可在多种加速器(NVIDIA CUDA、AMD ROCm、Intel OneAPI、Google TPU、AWS Trainium/Inferentia)上以高性能运行 AI 模型(LLM、视觉模型等)。你只需用 Zig 语言编写一次模型,即可将其编译为每个硬件目标的原生指令集,无需手动编写设备特定代码。
核心组件
- Zig 基础库 – 核心 API(
zml.Tensor、zml.Platform、zml.Mesh等)使用系统语言 Zig 编写,提供低级别控制和安全性。 - MLIR 与 Bazel – 构建管道使用 MLIR 作为中间表示,并通过 Bazel(经 Bazelisk)为每个后端进行编译和链接。
- 统一 VFS – 模型可通过虚拟文件系统层从本地路径、Hugging-Face(
hf://)、HTTP(S) 或 S3 URL 加载。 - 平台标志 – 在构建或运行时,使用
--@zml//platforms:cuda=true等标志启用目标平台。
如何尝试
- 安装 Bazelisk(唯一依赖项)。macOS:
brew install bazelisk;Linux:下载二进制文件。 - 运行小型 MNIST 演示(下载预训练模型,编译并分类一个随机数字):
bazel run //examples/mnist - 运行 LLM 示例(Llama-3.2、Qwen-3.5 或 LFM-2.5)。如需,认证 Hugging Face:
添加bazel run //tools/hf -- auth login bazel run //examples/llm -- --model=hf://meta-llama/Llama-3.2-1B-Instruct --prompt="What is the capital of France?"--@zml//platforms:cuda=true(或rocm、oneapi、tpu、neuron)以在特定加速器上运行。
代码示例 – 用 Zig 编写的最小 MNIST 模型展示了 API 风格:
const Mnist = struct {
fc1: Layer,
fc2: Layer,
// … layer definition omitted …
pub fn forward(self: Mnist, input: zml.Tensor) zml.Tensor {
var x = input.flatten().convert(.f32);
for (self.layers) |layer| { x = layer.forward(x); }
return x.argMax(0).indices.convert(.u8);
}
};
模型通过 zml.io.load 加载,编译为选定平台,并在不依赖硬件的情况下以相同调用点执行。
下一步
- 浏览其他示例(
sharding、io、benchmark)。 - 遵循
docs/tutorials/中的教程编写自己的模型。 - 阅读部署指南(
docs/howtos/deploy_on_server.md)以在生产环境中服务模型。
社区与许可 – ZML 采用 Apache-2.0 许可,拥有 Discord 社区,并通过标准 GitHub 工作流接受贡献。
TL;DR – ZML 允许你用 Zig 语言编写一次 AI 模型,并通过 Bazel/MLIR 后端编译为在任何主流加速器上高效运行的代码。它提供 MNIST 和多个 LLM 家族的即开即用示例、统一模型加载 VFS,以及从原型到生产部署的清晰路径。
相关
- 项目
- 项目
- 项目
- 项目
- 项目