Construir um framework do zero para entender o que o PyTorch esconde
Todo campo maduro de sistemas acaba precisando de uma versão didática: o Unix teve o MINIX, os compiladores tiveram o Tiger. Agora o PyTorch tem o TinyTorch, um currículo gratuito e open source em que você constrói um framework de machine learning completo — de tensores a transformers — em Python puro, usando a própria API do PyTorch.
São 20 módulos que rodam em um notebook com 4 GB de RAM, sem GPU e sem conta em nuvem. O projeto está em tinytorch.ai e nasceu no curso CS 249r de Harvard; hoje é mantido por Andrea (ETH Zurich) dentro do projeto Machine Learning Systems, que já ultrapassou 27 mil estrelas no GitHub e roda em mais de 50 universidades.
Por que isso importa para o PyTorch — e não só para estudantes
Todo framework depende de uma população pequena de gente capaz de raciocinar sobre ele por dentro: quem identifica um vazamento de memória no cache de tensores, quem sabe quando o gradient checkpointing vale o recompute, quem olha um treino lento e nomeia o gargalo antes de abrir o profiler. Essa população não cresce sozinha.
Hoje, a maioria chega aos internals do PyTorch por acidente, sob pressão de um bug. Construir a coisa do zero muda o caminho de chegada de forma permanente: depois de implementar autograd, você não consegue “desver” o grafo computacional; depois de perfilar a própria alocação de memória, não consegue “dessaber” o custo. Empresas já usam o TinyTorch em onboarding de novos engenheiros e em workshops de depuração.
As quatro camadas e as decisões de design
Os 20 módulos se organizam em quatro tiers, dirigidos por uma CLI chamada tito e entregues como notebooks Jupyter. Você precisa de Python e conforto com NumPy — nada de GPU, conta em nuvem ou background prévio em sistemas de ML. Três decisões fazem o trabalho pedagógico:
- Sistemas desde o primeiro dia: o Módulo 01 entrega um método
memory_footprint()antes de ensinar multiplicação de matrizes. Você aprende que um batch de 32 imagens do ImageNet custa 19 MB calculando, não lendo. - Revelação progressiva: a classe
Tensorfica limpa até o Módulo 05; no 06 você implementaenable_autograd(), que adicionarequires_grad,.grade.backward()à classe que você já entende. - Construir para validar: seis marcos históricos provam que sua implementação funciona — do Perceptron de Rosenblatt (1958) ao transformer (2017), incluindo uma CNN que precisa bater 75% no CIFAR-10.
A API espelha o PyTorch deliberadamente. Quem constrói loss.backward() aqui reconhece a forma da versão de produção depois; nada do que você aprende precisa ser “desaprendido”. O que o TinyTorch não é: não há dispatcher, camada C++/CUDA, JIT nem distribuição — e ele é lento, algo entre 100 e 10.000 vezes mais lento que o PyTorch. Essa lentidão, segundo os autores, virou o melhor acidente do projeto: quando o Conv2d de um aluno leva 97 segundos num batch que o PyTorch limpa em 10 ms, o argumento pela vetorização deixa de ser algo que se lê e passa a ser algo que aconteceu.
Lições para quem mantém currículo aberto
O post extrai quatro lições transferíveis: espelhar a API de produção exatamente; decidir o piso de hardware antes da lista de features; investir tanto no caminho do instrutor quanto no do aluno (autograding NBGrader, rubricas, scripts de validação); e planejar a sucessão antes de precisar dela — com compromisso de manutenção até 2027 e transição de governança ao longo de 2026-2027.
O projeto é transparente sobre os limites: ainda não há medição controlada de resultados de aprendizado, e o escopo é single-node e CPU-only — não ensina kernels de GPU, treino distribuído nem sincronização de gradientes. Para a comunidade brasileira de ML, onde o acesso a GPU costuma ser o maior gargalo, o TinyTorch é uma porta de entrada concreta: tudo roda em um notebook antigo, offline, em português se alguém localizar os datasets.
Descubra mais sobre noticiAI
Assine para receber nossas notícias mais recentes por e-mail.



