
tinygrad 使用入门张量、自动求导与可调试的深度学习编译器【免费下载链接】tinygradYou like pytorch? You like micrograd? You love tinygrad! ❤️项目地址: https://gitcode.com/GitHub_Trending/tiny/tinygradtinygrad 是一个端到端深度学习栈定位在 PyTorch 的易用性和 micrograd 的完全可读之间你用张量 API 写前向与反向背后是一套可读、可改的 IR 编译器把惰性计算融合成少量内核再分发到 CPU、OpenCL、Metal、CUDA 等硬件。适合想读懂深度学习框架内部机制、自定义加速器或需要一个轻量可 hack 训练栈的人。安装只需两步先 clone 仓库https://gitcode.com/GitHub_Trending/tiny/tinygrad再执行python3 -m pip install -e .。 适合哪些场景tinygrad 不是又一个训练框架它的差异化在于整条编译链路对你可见。学习框架原理从 Tensor 到内核代码的每一步调度、融合、代码生成都是可读源码而不是黑盒。接入自己的硬件你的加速器只需实现约 25 个低层 op就能成为一个新后端。真实训练与推理examples/beautiful_mnist.py 约 5 秒训练到 98% 准确率examples/ 目录还提供 YOLOv8、LLaMA、Stable Diffusion 等模型的实现。可视化调试DEBUG3/4查看融合结果与生成代码VIZ1查看计算图。 核心机制请求是怎么被处理的结论先说你在 Python 里写的每个张量运算都不立刻计算。只有当某一步调用.realize()或.backward()时才会触发下面这条链路。建图matmul、relu等操作只是往计算图里登记一个 uop统一 op 节点此时没有任何数据在硬件上流动。调度realize 触发后tinygrad/schedule/ 把图切成一批有明确输入/输出依赖的内核序列。融合与降级tinygrad/codegen/ 与 tinygrad/renderer/ 把相邻操作合并成尽量少的内核并按目标后端生成代码——这就是官方 README 里一个 matmul 被惰性融合成单个内核演示的原理。执行tinygrad/runtime/ 下每个ops_xxx.py对应一种硬件CPU、CL、Metal、CUDA、AMD、NV、QCOM、WebGPU负责编译并提交内核。重放给函数加上TinyJit装饰器后tinygrad/engine/jit.py 会把内核序列捕获一次之后按参数重放减少启动开销。想亲眼看到这条链路最快的方式是开DEBUG3跑一个小模型观察内核数量远少于操作数量。 最小可用示例先验证自动求导from tinygrad import Tensor x Tensor.eye(3).clone() # clone 使其落到设备缓冲 y Tensor([[2.0, 0, -2.0]]) z y.matmul(x).sum() # 只是惰性建图 z.backward() # 这里才真正计算 print(x.grad.tolist()) # dz/dx这段代码验证两件事运算默认惰性不 realize 就不算以及.backward()之后梯度挂在.grad上。它是 README 里与 PyTorch 对齐的最小对照例。再跑一个最小训练循环from tinygrad import Tensor, nn, Context model LinearNet() # 用 __call__ 定义前向 optim nn.optim.Adam([model.l1, model.l2], lr1e-3) with Context(TRAINING1): # 打开训练模式 for step in range(10): optim.zero_grad() loss model(x).sparse_categorical_crossentropy(y).backward() optim.step()这里验证的是建网 → 建优化器 → 前向 → 反向 → 更新的完整闭环。Context(TRAINING1)控制 dropout 等训练态行为退出后自动还原。完整版含数据加载和评估见 examples/beautiful_mnist.py。 关键入口该看哪些文件README.md项目全貌、后端清单、安装与测试命令。docs/quickstart.md零基础上手教程一路做到 MNIST 分类器含 JIT 和权重保存。tinygrad/tensor.pyTensor 本体realize/backward的入口都在这里。tinygrad/engine/jit.pyTinyJit的捕获与重放逻辑。tinygrad/runtime/每个硬件一个ops_xxx.py想接新后端从这里抄。test/各 op 的参考语义行为存疑时先查这里的用例。extra/models/现成的网络实现可当参考代码。tinygrad/nn/state.pysafetensors 格式的权重保存/加载。 常见卡点不确定自己在哪个加速器上跑执行python3 -c from tinygrad import Device; print(Device.DEFAULT)想切换就加DEVCL python3 ...指定后端。打印出来是空的忘了惰性求值.print之前先.realize()或.numpy()。速度慢、日志里内核很多这是内核启动开销在主导给前向加TinyJit装饰器输入输出需是 realize 过的张量再用DEBUG3确认融合后的内核数。loss 不下降训练循环外包一层Context(TRAINING1)否则某些层如 dropout按推理态工作。某个 op 的行为不符合预期到 test/backend/test_ops.py 里搜同名测试以测试断言的语义为准。不知道某个开关干什么全部运行时环境变量在 docs/env_vars.mdDEBUG、DEV、JIT、VIZ是最常用的四个。 继续深入推荐阅读顺序由浅入深通读 docs/quickstart.md把 MNIST 教程亲手跑一遍。顺着 docs/abstractions3.py 和 docs/abstractions4.py 看从 op 到硬件的分层抽象。按 tensor → schedule → codegen → renderer → runtime 的顺序读 tinygrad/ 源码对应上文链路的五步。开VIZ1边跑边看计算图开DEBUG4对照生成代码。跑大一点的模型练手examples/ 里有 llama.py、yolov8.py、stable_diffusion.py推理效果展示在 docs/showcase/。最后可以试一个完整的视觉模型仓库自带 EfficientNet 的分类用例test/models/efficientnet/ 里的推理结果长这样——【免费下载链接】tinygradYou like pytorch? You like micrograd? You love tinygrad! ❤️项目地址: https://gitcode.com/GitHub_Trending/tiny/tinygrad创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考