ライブラリ / SDK
tinygrad/tinygrad avatar
tinygrad/tinygrad

tinygradはIRとカーネルまで読める小さな深層学習スタック

パイトーチは好きですか?マイクログラッドが好きですか?あなたはtinygradが大好きです。ニューラル ネットワーク 結局のところ、ニューラル ネットワークに必要なものの 90% は、まともな autograd/tensor ライブラリです。

スター 33,596フォーク 4,336PythonMIT
GitHub

ひと目でわかる

これは何?
Tensor、自動微分、IRコンパイラ、TinyJit、nnとoptimをPythonでまとめ、CPUからCUDAやWEBGPUまでのランタイムを持つ構成です。
誰に向いている?
tinygradは学習コードだけでなくIRと生成カーネルを読みたい開発者に合います。ソースインストール後、DEBUG=3のmatmul例とDevice.DEFAULTを実行し、使用するアクセラレータのランタイムを確認してください。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 1 日前です。
何の言語で書かれている?
主に Python です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

スタックの構成:テンソル、IR/コンパイラ、JIT、トレーニングユーティリティ

READMEは、tinygradをエンドツーエンドのディープラーニングスタックと定義しています。自動微分を備えたテンソルライブラリ、カーネルを融合および低減するIRとコンパイラ、JITとグラフ実行、そして実際のトレーニングのためのnn、optim、datasetsの4つのコンポーネントを挙げています。プロジェクトは、PyTorchの人間工学、JAXの関数変換とIRベースのAD、TVMのスケジューリングとコード生成からインスピレーションを得ているが、意図的に小さくハッキング可能であると述べています。コンパイラとIR全体が可視であり変更可能であることが核心的な主張です。

PyTorch、JAX、TVMとの比較

READMEには直接的な比較表があります。PyTorchとは、eager Tensor API、自動微分、optim、基本的なデータセットとレイヤーを共有していますが、違いはtinygradのコンパイラとIRが可視でハッキング可能であることです。JAXとは、プリミティブに対するIRベースの自動微分と関数レベルのJIT(TinyJitと呼ばれる)を共有していますが、完全なvmapやpmapはまだありません。READMEはそれがはるかに読みやすいと述べています。TVMとは、複数の低減パス、スケジューリング、カーネルに対するBEAM検索を共有していますが、tinygradはコンパイラだけでなくフロントエンドフレームワークも提供しています。この比較は簡潔で、類似点と相違点を明確にリストアップしています。

遅延評価と融合された行列乗算の例

READMEの短い例が遅延評価を示しています。`DEBUG=3 python3 -c "from tinygrad import Tensor; N = 1024; a, b = Tensor.empty(N, N), Tensor.empty(N, N); (a.reshape(N, 1, N) * b.T.reshape(1, N, N)).sum(axis=2).realize()"` を実行すると、行列乗算が1つのカーネルに融合される様子がわかります。DEBUGを4に変更すると生成されたコードが表示されます。遅延評価システムが明示的な手動融合なしに操作を融合する点が重要です。この例は短く自己完結的で、READMEは試すことを推奨しています。

小さなネットワークと実際のトレーニングループ

READMEには、2つの`kaiming_uniform`レイヤーを持つ完全なLinearNetクラス、フラット化とドット積とReLUを行うフォワードパス、`nn.optim.Adam`、`Context`(TRAINING用)、`sparse_categorical_crossentropy`を使用したトレーニングループが含まれています。ランダムなxとyを実際のMNISTデータローダーに置き換えるように指示しています。また、`examples/beautiful_mnist.py`を、READMEによると約5秒で98%の精度に達する完全版として指摘しています。このコードは、ライブラリのテンソルAPIと自動微分が従来のトレーニングループを書くのに十分であることを示しています。

アクセラレータと約25のオペレーション要件

READMEは、OpenCL、CPU、METAL、CUDA、AMD、NV、QCOM、WEBGPUの8つのアクセラレータをサポートしているとリストアップし、ランタイムファイルへのリンクを提供しています。新しいアクセラレータの追加は簡単で、ターゲットは約25の低レベルオペレーションをサポートするだけでよいと主張しています。デフォルトのアクセラレータを確認するコマンドが提供されています:`python3 -c "from tinygrad import Device; print(Device.DEFAULT)"`。リストはチェックボックスとして提示され、すべてチェックされており、プロジェクトは追加を歓迎しています。

インストール、ドキュメント、貢献ポリシー

推奨されるインストール方法はソースからです:`git clone https://github.com/tinygrad/tinygrad.git`、次に`cd tinygrad`と`python3 -m pip install -e .`。また、`pip install git+https://github.com/tinygrad/tinygrad.git`でmasterを直接インストールする方法もあります。ドキュメントは`docs/`ディレクトリから構築され、docs.tinygrad.orgでホストされています。貢献セクションは異常に明確です:コードゴルフを禁止し、新しい貢献者によるドキュメントや空白文字の変更を禁止し、速度向上の主張にはベンチマークを要求し、バグ修正には回帰テストを求めています。また、AIが書いたように見える貢献はフィードバックなしでクローズされ、投稿者が禁止される可能性があると述べています。このポリシーはコードベースをシンプルで読みやすく保つことを目的としています。

tinygradの読みやすさは、抽象化を減らしていることと、コンパイラの出力を確認できることの組み合わせから来ます。DEBUG=3のmatmul例で遅延評価と融合の動きを見て、DEBUG=4で生成コードまで追えば、Tensor操作がどの段階でカーネルへ下がるかを調べられます。アクセラレータは8種類がREADMEに並びますが、同じ演算性能や機能範囲を意味する比較表ではありません。CPUで小さな例を動かした後、`python3 -c "from tinygrad import Device; print(Device.DEFAULT)"`の結果と対象runtimeファイルを対応させるのが現実的です。vmapとpmapが未実装である点も、既存のJAXコードをそのまま移す用途には制約になります。

PyTorchとの比較はTensor APIやoptimizerなどの共通点を示しますが、互換実装を意味しません。JAXとの比較でもvmapやpmapがまだないとREADMEに書かれているため、既存コードの移植ではAPI差を先に洗い出します。貢献規約が速度主張にベンチマークを求める点は、tinygrad自身が簡潔さと測定可能な変更を重視していることを示します。

編集部の結論

tinygradは学習コードだけでなくIRと生成カーネルを読みたい開発者に合います。ソースインストール後、DEBUG=3のmatmul例とDevice.DEFAULTを実行し、使用するアクセラレータのランタイムを確認してください。vmapやpmapの未実装範囲と、速度向上にベンチマークを求める貢献規約も採用判断に入ります。

公式情報源

  1. Official README
  2. Project repository
  3. Release notes
コミュニティノート

コミュニティノート