Скажу честно: когда модель впервые «заговорила», я понял, что мой компьютер умнее меня хотя бы тем, что не просит второй кофе.
В этой главе из книги Себастиана Рашки мы наконец-то запускаем обучение. Сначала — мини‑сетап: около двадцати тысяч символов из «The Verdict» Эдит Уортон. Для такого объёма ожидать шедевров на выходе наивно, но первые фразы уже складываются. Дальше — магия переноса: подгружаем публичные веса GPT‑2 на 124M параметров, и ответ становится подозрительно связным — вот она, сила правильных весов.
Про случайность и сиды. В идеальном мире один manual_seed правит всё. В реальном — случайность прячется в хелперах, порядок вызовов плавает, и байт‑в‑байт совпадений с книгой не ждите. Смотрите не на идентичность чисел, а на поведение: лосс на трейне должен убывать плавно, валидация — рано выходить на плато.
Оптимизаторы. Раньше мы делали «градиент умножить — вычесть». Теперь — AdamW: zero_grad → forward → loss.backward → step. Интуиция простая: адаптивные шаги и «инерция», чтобы не вязнуть в кочках ландшафта лосса. Детали — на потом, но этого уже хватает, чтобы поехать.
Скорость и деньги. Книжный пример «на макбуке — несколько минут» у меня на RTX 3090 занял около 11 секунд. GPU против CPU — это пропасть, даже на игрушках. А сколько стоит натренировать свой 124M по‑взрослому? Карпати писал, что уложил 124M GPT‑2 в ~$20 на своем llm.c с 10B токенов FineWeb. Хочется померить свои токены/сек, прикинуть эпоху, а там — или оставить десктоп гудеть, или арендовать A100 и посчитать бюджет.
Про «меморизацию» и попугаев. Модель неизбежно что‑то запомнит; задача — не превращать вывод в кальку. Помогают температура (делаем распределение ровнее/острее перед softmax) и top‑k (отрезаем хвост редких токенов). В паре они дают живость без хаоса.
Наконец, загрузка весов от OpenAI. Код лучше копировать, а не набирать вручную. И да, у GPT‑2 размеры эмбеддингов растут с моделью: 768 — это про 124M, дальше больше.
Итог: у нас есть рабочая LLM. Следующий шаг — заставить её классифицировать текст. Что ж, впереди либо прогулка, либо новый кроличий нор.
