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 等标志启用目标平台。

如何尝试

  1. 安装 Bazelisk(唯一依赖项)。macOS:brew install bazelisk;Linux:下载二进制文件。
  2. 运行小型 MNIST 演示(下载预训练模型,编译并分类一个随机数字):
    bazel run //examples/mnist
    
  3. 运行 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,以及从原型到生产部署的清晰路径。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目