Micrograd — автоград в 150 строк кода, который стоит изучить каждому ML-разработчику
Репозиторий давно не обновлялся
Последнее обновление было 1 год назад.
Когда я впервые открыл исходники PyTorch, меня озадачила сложность реализации autograd — механизма автоматического вычисления градиентов. Как объяснить коллеге-джуниору основы обратного распространения ошибки, если сам фреймворк скрывает всю магию под капотом? Именно эту проблему решает micrograd от Андрея Карпати — минималистичная реализация autograd менее чем в 150 строк кода.
Что в коробке?
Micrograd — это:
- Автоматическое дифференцирование (autograd) для скалярных значений
- Простейшая нейросетевая библиотека поверх него (а-ля PyTorch)
- Визуализация вычислительного графа
- Полноценный пример обучения MLP-классификатора
Главный козырь проекта — наглядность. Вместо тысяч строк кода промышленного фреймворка вы получаете всю суть в нескольких компактных модулях.
Как это работает? Разбираем на примерах
Базовые операции с градиентами
Рассмотрим простейший пример из документации:
from micrograd.engine import Value
a = Value(-4.0)
b = Value(2.0)
c = a + b
d = a * b + b**3
# ... и другие операции
g.backward() # Вот оно, волшебство!
print(f'{a.grad:.4f}') # Градиент по a
print(f'{b.grad:.4f}') # Градиент по b
Что здесь происходит:
- Создаем «умные» скаляры через
Value - Строим вычислительный граф операциями
- Вызываем
backward()для автоматического расчета градиентов
Нейросети? Легко!
Несмотря на простоту, micrograd позволяет собирать настоящие нейронные сети:
from micrograd.nn import Neuron, Layer, MLP
# Нейрон с двумя входами
n = Neuron(2)
x = [Value(1.0), Value(-2.0)]
y = n(x)
# Многослойный перцептрон
model = MLP(2, [16, 16, 1]) # 2 входа, два скрытых слоя по 16 нейронов, 1 выход
В репозитории есть полный пример обучения такого MLP на dataset «две луны»:

Почему стоит попробовать?
- Образовательная ценность — лучший способ понять autograd
- Минимализм — 100 строк на autograd + 50 строк нейросетей
- Наглядность — встроенная визуализация графов
- Совместимость — API похож на PyTorch
# Визуализация вычислительного графа
dot = draw_dot(y)
Под капотом: как устроен micrograd
- Вычислительный граф строится динамически через перегрузку операторов
- Обратное распространение реализовано рекурсивно
- Нейросети — просто композиция слоев из
Neuron - Оптимизация — классический SGD «в лоб»
Кому будет полезен?
- Новичкам в ML — чтобы понять основы autograd
- Опытным разработчикам — для экспериментов с механикой градиентов
- Преподавателям — отличная кодовая база для курсов
- Исследователям — платформа для прототипирования новых идей
Установка и начало работы
pip install micrograd
Для тестов понадобится PyTorch (как эталонная реализация):
python -m pytest
Вывод: 150 строк, которые стоит изучить
Micrograd — идеальный проект для «разбора на запчасти». За полчаса чтения кода вы поймете принципы, на которых работают современные фреймворки. Это как учебник по машинному обучению, где каждая глава умещается в один файл .py.
Советую:
- Клонируйте репозиторий
- Запустите demo.ipynb
- Поэкспериментируйте с engine.py
- Попробуйте добавить свои операции
P.S. Автор — Андрей Карпати, бывший директор по ИИ в Tesla, ныне работающий в OpenAI. Его мини-проекты (как nanoGPT) всегда стоят внимания.
