Этот интерактивный гайд разбирает файл microgpt.py построчно: от загрузки данных и собственного autograd
до внимания, Adam-обновления и генерации новых имён. Все объяснения ниже даны на русском языке и в светлой теме.
Нажимайте этапы, чтобы увидеть роль каждого блока в файле. Это поможет сначала понять общую логику, а уже потом детали.
Выберите модуль и посмотрите, что он делает, где находится и какая у него ключевая идея.
В `Value.backward()` градиенты идут по графу в обратном топологическом порядке. Ниже мини-симулятор на выражении
loss = ReLU(a*b + c)^2 в стиле класса `Value`.
В коде каждое новое положение добавляет свои `k` и `v` в кэш (`keys/values`) и вычисляет веса внимания через softmax. Ниже демонстрация той же идеи: матрица показывает, на какие прошлые символы смотрит каждый текущий символ.
В этом `microgpt.py` веса создаются вручную матрицами без bias и без trainable-параметров в нормализации. Формула ниже соответствует строкам создания `state_dict`.
Переключайте этапы цикла `for step in range(num_steps)` и смотрите, что происходит в этот момент и какие строки отвечают за шаг.
В строках 177-181 параметры обновляются вручную по формулам Adam. Подставьте свои числа и посмотрите один шаг обновления.
При инференсе логиты делятся на `temperature` (строка 195), затем делается softmax и случайный выбор. Ниже видно, как температура сжимает или выравнивает распределение вероятностей.
Этот файл ценен тем, что показывает не «оптимальный» production-код, а чистую суть алгоритма. Если вы поняли пункты ниже, то устройство GPT уже в руках.
`Value` хранит число + локальные производные `backward()` строит топологический порядок и гонит градиент назад `gpt()` получает 1 токен и обновляет контекст через `keys/values` attention = softmax(dot(q, k)) * v ошибка = средний NLL по последовательности Adam обновляет каждый scalar-parameter отдельно inference: temperature + random.choices
Быстрый порядок чтения файла: 1) строки 29-72 (autograd), 2) 74-90 (инициализация весов), 3) 92-144 (`gpt`), 4) 151-184 (обучение), 5) 186-200 (генерация).