tinygrad:一個小巧且易於修改的深度學習棧
你喜歡火炬嗎?你喜歡微畢業嗎?你喜歡蒂尼格勒。神經網路 事實證明,神經網路 90% 的需求都是一個不錯的自動梯度/張量庫。
秒懂
- 它是什麼?
- 一個端到端的深度學習棧,包含張量庫、自動微分、IR和編譯器、JIT執行以及訓練工具,使用Python編寫,MIT授權。
- 適合誰用?
- 適合需要 tinygrad 所描述能力,且能依 README 管理其執行條件的人;不適合把未記載的功能、效能或跨版本相容性當成承諾的使用者。先按 tinygrad/tinygrad 的公開命令完成最小流程,逐項檢查輸入、輸出、日誌與失敗狀態,再決定是否納入正式工作流;授權條件也應依該專案的 LICENSE 核對。
- 可以商用嗎?
- 可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 1 天前。
- 用什麼語言寫的?
- 主要是 Python(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。
開源專案深度解析
tinygrad:棧的組成:張量、IR/編譯器、JIT和訓練工具
README開篇將tinygrad定義為一個端到端的深度學習棧。它列出了四個組件:帶有自動微分的張量庫;融合和降低內核的IR和編譯器;JIT加圖執行;以及用於實際訓練的nn、optim和datasets。專案表示,它的設計靈感來自PyTorch的人體工學、JAX的函數式變換和基於IR的AD,以及TVM的排程和程式碼生成,但刻意保持小巧且可修改。其核心主張是整個編譯器和IR都是可見且可修改的。
在 tinygrad/tinygrad 的脈絡中,這個判斷要連回 master 分支與 v0.14.0 的公開內容。README 將專案描述為「You like pytorch? You like micrograd? You love tinygrad. Neural networks As it turns out, 90% of what you need for neural networks are a decent autograd/tensor library.」,但沒有提供的相容性、效能或故障行為不能自行補成保證。讀者應把本節提到的命令、檔案、輸入和輸出分開記錄,才能知道看到的是文件宣稱,還是目前環境的實際結果。(段落 1)
對 tinygrad/tinygrad 而言,最小核對應從 README 已列出的入口開始,使用專案名稱 tinygrad 搜尋相應日誌或產物。若命令失敗,應保留錯誤文字並對照 master 上的 README 與 Releases;素材未說明的主機條件、版本矩陣和數據,不在本文推測範圍內。(核對 1)
tinygrad:tinygrad與PyTorch、JAX和TVM的比較
README包含了一個直接的比較表。與PyTorch相比,它共享了即時執行的Tensor API、自動微分、optim以及基礎資料集和層;區別在於tinygrad的編譯器和IR是可見且可修改的。與JAX相比,它共享了基於IR的原始操作自動微分和函數級JIT(稱為TinyJit),但尚未擁有完整的vmap或pmap;README稱它遠更易讀。與TVM相比,它共享了多次降低傳遞、排程和BEAM搜尋,但tinygrad也提供了前端框架,而不僅僅是編譯器。這個比較很簡潔,明確列出了相似之處和不同之處。
在 tinygrad/tinygrad 的脈絡中,這個判斷要連回 master 分支與 v0.14.0 的公開內容。README 將專案描述為「You like pytorch? You like micrograd? You love tinygrad. Neural networks As it turns out, 90% of what you need for neural networks are a decent autograd/tensor library.」,但沒有提供的相容性、效能或故障行為不能自行補成保證。讀者應把本節提到的命令、檔案、輸入和輸出分開記錄,才能知道看到的是文件宣稱,還是目前環境的實際結果。(段落 2)
對 tinygrad/tinygrad 而言,最小核對應從 README 已列出的入口開始,使用專案名稱 tinygrad 搜尋相應日誌或產物。若命令失敗,應保留錯誤文字並對照 master 上的 README 與 Releases;素材未說明的主機條件、版本矩陣和數據,不在本文推測範圍內。(核對 2)
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()"` 可以看到一個矩陣乘法如何被融合成一個內核。將DEBUG改為4可以看到生成的程式碼。重點是惰性求值系統可以在不顯式手動融合的情況下融合操作。這個例子簡短且自包含,README鼓勵讀者嘗試。
在 tinygrad/tinygrad 的脈絡中,這個判斷要連回 master 分支與 v0.14.0 的公開內容。README 將專案描述為「You like pytorch? You like micrograd? You love tinygrad. Neural networks As it turns out, 90% of what you need for neural networks are a decent autograd/tensor library.」,但沒有提供的相容性、效能或故障行為不能自行補成保證。讀者應把本節提到的命令、檔案、輸入和輸出分開記錄,才能知道看到的是文件宣稱,還是目前環境的實際結果。(段落 3)
對 tinygrad/tinygrad 而言,最小核對應從 README 已列出的入口開始,使用專案名稱 tinygrad 搜尋相應日誌或產物。若命令失敗,應保留錯誤文字並對照 master 上的 README 與 Releases;素材未說明的主機條件、版本矩陣和數據,不在本文推測範圍內。(核對 3)
tinygrad:一個小型網路和真實的訓練迴圈
README包含了一個完整的LinearNet類,包含兩個`kaiming_uniform`層,一個前向傳遞,該傳遞進行展平、點積和ReLU,以及一個使用`nn.optim.Adam`、`Context`(用於TRAINING)和`sparse_categorical_crossentropy`的訓練迴圈。它建議用真實的MNIST資料載入器替換隨機的x和y。它還指向`examples/beautiful_mnist.py`作為完整版本,根據README,該版本在大約5秒內達到98%的準確率。這段程式碼展示了該庫的張量API和自動微分足以編寫常規的訓練迴圈。
在 tinygrad/tinygrad 的脈絡中,這個判斷要連回 master 分支與 v0.14.0 的公開內容。README 將專案描述為「You like pytorch? You like micrograd? You love tinygrad. Neural networks As it turns out, 90% of what you need for neural networks are a decent autograd/tensor library.」,但沒有提供的相容性、效能或故障行為不能自行補成保證。讀者應把本節提到的命令、檔案、輸入和輸出分開記錄,才能知道看到的是文件宣稱,還是目前環境的實際結果。(段落 4)
對 tinygrad/tinygrad 而言,最小核對應從 README 已列出的入口開始,使用專案名稱 tinygrad 搜尋相應日誌或產物。若命令失敗,應保留錯誤文字並對照 master 上的 README 與 Releases;素材未說明的主機條件、版本矩陣和數據,不在本文推測範圍內。(核對 4)
tinygrad:加速器和約25個操作的要求
README列出了八個受支援的加速器:OpenCL、CPU、METAL、CUDA、AMD、NV、QCOM和WEBGPU,並附有執行時檔案的連結。它聲稱添加新加速器很容易,因為目標只需要支援約25個低階操作。提供了一個命令來檢查預設加速器:`python3 -c "from tinygrad import Device; print(Device.DEFAULT)"`。該列表以複選框形式呈現,所有框都已選中,專案邀請新增更多。
在 tinygrad/tinygrad 的脈絡中,這個判斷要連回 master 分支與 v0.14.0 的公開內容。README 將專案描述為「You like pytorch? You like micrograd? You love tinygrad. Neural networks As it turns out, 90% of what you need for neural networks are a decent autograd/tensor library.」,但沒有提供的相容性、效能或故障行為不能自行補成保證。讀者應把本節提到的命令、檔案、輸入和輸出分開記錄,才能知道看到的是文件宣稱,還是目前環境的實際結果。(段落 5)
對 tinygrad/tinygrad 而言,最小核對應從 README 已列出的入口開始,使用專案名稱 tinygrad 搜尋相應日誌或產物。若命令失敗,應保留錯誤文字並對照 master 上的 README 與 Releases;素材未說明的主機條件、版本矩陣和數據,不在本文推測範圍內。(核對 5)
tinygrad:安裝、文件和貢獻政策
推薦的安裝路徑是從原始碼安裝:`git clone https://github.com/tinygrad/tinygrad.git`,然後`cd tinygrad`並執行`python3 -m pip install -e .`。還有一種直接安裝master版本的方式:`pip install git+https://github.com/tinygrad/tinygrad.git`。文件從`docs/`目錄建構,並託管在docs.tinygrad.org。貢獻部分異常明確:它禁止程式碼高爾夫,禁止新貢獻者修改文件和空白字元,要求對任何聲稱的加速進行基準測試,並要求帶有回歸測試的錯誤修復。它還指出,看起來像AI編寫的貢獻將被關閉,不提供反饋,並可能導致貢獻者被禁止。該政策旨在保持程式碼庫簡單和可讀。
在 tinygrad/tinygrad 的脈絡中,這個判斷要連回 master 分支與 v0.14.0 的公開內容。README 將專案描述為「You like pytorch? You like micrograd? You love tinygrad. Neural networks As it turns out, 90% of what you need for neural networks are a decent autograd/tensor library.」,但沒有提供的相容性、效能或故障行為不能自行補成保證。讀者應把本節提到的命令、檔案、輸入和輸出分開記錄,才能知道看到的是文件宣稱,還是目前環境的實際結果。(段落 6)
對 tinygrad/tinygrad 而言,最小核對應從 README 已列出的入口開始,使用專案名稱 tinygrad 搜尋相應日誌或產物。若命令失敗,應保留錯誤文字並對照 master 上的 README 與 Releases;素材未說明的主機條件、版本矩陣和數據,不在本文推測範圍內。(核對 6)
編輯結論
適合需要 tinygrad 所描述能力,且能依 README 管理其執行條件的人;不適合把未記載的功能、效能或跨版本相容性當成承諾的使用者。先按 tinygrad/tinygrad 的公開命令完成最小流程,逐項檢查輸入、輸出、日誌與失敗狀態,再決定是否納入正式工作流;授權條件也應依該專案的 LICENSE 核對。
社群筆記