tinygrad 文档¤
欢迎查阅tinygrad的文档。本页面面向tinygrad库的用户。tinygrad尚未发布1.0版本,但即将到来。该API已经保持相当稳定一段时间了。
虽然你可以pip install tinygrad,但我们建议你从源代码安装:
git clone https://github.com/tinygrad/tinygrad.git
cd tinygrad
python3 -m pip install -e .
安装tinygrad后,尝试MNIST教程。
如果您是张量库的新手,可以通过解决tinygrad-tensor-puzzles中的谜题来学习如何使用它们。
我们还提供开发者文档,并且Di Zhu创建了一系列教程来帮助理解tinygrad的工作原理。
tinygrad 使用指南¤
您将主要交互的类是Tensor。它的功能与PyTorch非常相似,但更具函数式风格。tinygrad支持多种数据类型。tinygrad中的所有操作都是惰性的,这意味着在您实现之前它们不会执行任何操作。
- tinygrad 内置了一个神经网络库,包含一些类、优化器以及加载/保存状态管理功能。
- tinygrad 拥有一个 JIT 编译器来加速运算。使用
TinyJit装饰您的纯函数 - tinygrad 对多 GPU 提供了出色的支持,允许您使用
Tensor.shard对张量进行分片
要了解tinygrad中的训练过程,你应该阅读beautiful_mnist.py
tinygrad 技术栈¤

与PyTorch的差异¤
如果您是从PyTorch迁移过来的,欢迎您。大部分API都是相同的。我们希望您会发现tinygrad既熟悉又莫名有种"更正确的感觉"
tinygrad 没有 nn.Module¤
在tinygrad中,"Module"类并没有什么特别之处,它只是一个普通类。nn.state.get_parameters可用于递归搜索普通类中的有效张量。与PyTorch中的forward方法不同,tinygrad直接使用__call__
tinygrad 是功能性的¤
在tinygrad中,你可以使用x.conv2d(w, b)或x.sparse_categorical_cross_entropy(y)。如果你需要一个地方来保存状态,我们也提供了类似PyTorch的Conv2D类,但所有无状态操作都没有对应的类。
tinygrad 是惰性的¤
当你在tinygrad中执行a+b时,什么都不会发生。只有当你realize张量时,计算才会真正运行。
tinygrad需要@TinyJit才能快速运行¤
PyTorch投入了大量开发工作来使调度非常快速。tinygrad没有这样做。我们有一个简单的装饰器,可以重放装饰函数中使用的内核。