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ベースのライブラリ – システム言語 Zig で書かれたコア API(
zml.Tensor、zml.Platform、zml.Meshなど)により、低レベルの制御と安全性を提供します。 - 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、プロトタイプからプロダクションデプロイへの明確な道筋を提供します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト