22 августа 2026 мы заново открыли репозиторий, который накануне снова всплыл в русскоязычных ИИ-лентах. Пост LLMScience 1023 звучал как слоган: GPT Андрея Карпаты на чистом C, миллионы токенов в секунду на ноутбуке. Рядом в поиске стоят «microgpt c», «Karpathy gpt c» и «lambda gpt с нуля». Цифры в README другие, чем в пересказе, и модель не чат. Ниже сверка с vixhal-baraiya/microgpt-c, файлом src/microgpt.c и docs/PERFORMANCE.md.
Что такое microgpt Карпаты и зачем порт на C
В феврале 2026 Андрей Карпаты выложил microgpt: один файл примерно на 200 строк чистого Python, без pip и без NumPy. Внутри датасет, посимвольный токенизатор, скалярный autograd, трансформер в духе GPT-2, Adam, обучение и сэмплинг. Это арт-проект, не продукт: сжатие линии micrograd, makemore и nanoGPT до алгоритма, который читается сверху вниз.
Модель крошечная: 4192 параметра, словарь из 27 символов (латиница плюс служебный BOS), имена из makemore. Задача: выучить статистику имён и породить новые правдоподобные. Карпаты пишет прямо: всё остальное в индустрии это эффективность, не другая математика. Python на скалярах медленный, шаг обучения идёт секунды. Порт на C убирает autograd-граф и считает forward и backward руками. Запрос «microgpt c» как раз про этот шаг: тот же GPT, уже без интерпретатора.
Что лежит в репозитории. Сверка 22 августа 2026
Репозиторий на месте. Лицензия MIT, копирайт 2026 Vishal (TheVixhal). На странице GitHub в день сверки 829 звёзд. Это не зеркало llm.c и не обёртка над PyTorch. Состав, который мы открыли:
- src/microgpt.c: один файл, 1492 строки. Обучение, ручной backward, Adam, сэмплинг, два SIMD-бэкенда;
- Makefile: make run, флаги под хост, линковка только -lm;
- data/names.txt: 32 033 имени, по одному в строке;
- docs/PERFORMANCE.md: откуда миллионы ток/с и чем инференс отличается от обучения.
Внешних библиотек нет: ни BLAS, ни CUDA, ни Python. Архитектура совпадает с эталоном Карпаты: N_EMBD=16, N_HEAD=4, N_LAYER=1, BLOCK_SIZE=16. В MLP squared ReLU, RMSNorm, обучаемые позиции, causal attention с KV-кэшем. Шагов обучения 20 000, Adam со стартовым lr 3e-3. Файл требует x86-64 с AVX2 или AArch64 с NEON. Скалярного запасного пути нет. На старом gcc без -std=c99 сборка падает на объявлениях внутри for.
Как собрать microgpt c и что вы увидите
Нужны git, компилятор C и make. GPU не нужен. В корне: git clone https://github.com/vixhal-baraiya/microgpt-c.git, затем make run. На x86 Makefile сам добавляет -mavx2 -mfma, иначе clang не соберёт интринсики. На ARM64 хватает -march=native. Бинарь читает корпус: по умолчанию имена, любой файл с одной записью в строке тоже сгодится.
На 20 000 шагов лосс в README гуляет около 2,2. После обучения печатаются новые имена и строка вроде c fp32+NEON 10168430 tok/sec. kayley и amari это не «модель заговорила». Это строки из распределения, на котором учили. Если вы мерите «токены в секунду» как SLA продукта, это другой контур: здесь нет очереди, нет prefill на длинном промпте и нет p99. Как мерить живой инференс: time to first token и запуск инференса LLM.
Откуда 10 млн ток/с и почему это не ChatGPT
Таблица в README и в PERFORMANCE.md одна. Замер однопоточный, цикл сэмплирования на 5 млн токенов, fp32.
- Apple M5 Pro, NEON: 10 168 430 ток/с, медиана 15 прогонов;
- AMD Ryzen 5 5600H, AVX2: 6 927 775 ток/с, медиана 5 прогонов.
Округлённо это 10,1 млн и 6,9 млн из постов. На Hacker News прогон на Ryzen 9 9800X3D и корпусе Shakespeare Карпаты дал около 7,65 млн ток/с. Порядок тот же, железо и датасет другие. Это независимая проверка, не копия README.
Почему быстро: 4192 параметра в fp32 это примерно 16 КБ весов, они живут в L1. Инференсный путь gpt_forward_infer не хранит активации для backprop. Веса пакуют в column-major, префикс (token, pos) выносят в таблицу, сэмплер сливает softmax и выбор. Авторы пишут: упираются в ширину выдачи инструкций, не в простой. Около половины времени это MLP.
На отложенном наборе модель не зубрила список. Учили на 20 000 из 32 033 имён: 2,2054 ната на символ на своих, 2,2039 на 12 033 невиданных. Интерполированный триграмм с почти впятеро большим числом параметров проигрывает. Для учебной GPT это важнее красивого ток/с.
Чего цифра не значит. Это не 10 млн ток/с у Qwen 27B и не ответ на «как запустить инференс». Модель не пишет код и не заменяет облачный чат. Если нужна локальная модель для кода на одной 3090, это другая полка: Qwen 3.8-27B на RTX 3090.
AVX2, NEON и почему две цифры нельзя сравнивать в лоб
Два бэкенда считают один алгоритм, ядра разные. NEON идёт по 4 float, AVX2 по 8. Авторы сами предупреждают: M5 Pro против Ryzen 5 5600H это не дуэль ISA. В их замере M5 Pro держит 5,27 FMA на цикл. На задаче без простоев широкое ядро почти линейно даёт пропускную способность. AVX2-путь настроен слабее: константы NEON подбирали A/B на ARM, на x86 этого почти не повторяли.
Россетта 2 на Apple Silicon даёт 2 225 024 ток/с на том же AVX2-бинаре, треть натива. Эмулятор режет 256-битный AVX2 на пары 128-битного NEON. Для проверки корректности годится, для таблицы скорости нет. Из тупиков в PERFORMANCE.md полезно одно: батч из нескольких независимых последовательностей ещё не снимали. Тогда matvec станет matmul, и веса начнут переиспользоваться.
Karpathy GPT на C: microgpt-c и llm.c
Запрос «Karpathy gpt c» склеивает два репозитория. Их нельзя ставить в одну строку «C быстрее Python».
- microgpt-c это порт учебного microgpt. 4k параметров, CPU, SIMD, имена, секунды до сэмплов. Цель: прочитать forward, backward и Adam без фреймворка.
- llm.c это воспроизведение GPT-2 и мини-серии GPT-3 на C/CUDA. GPU, большие датасеты, сравнение с PyTorch. Цель: претрейн, не генератор имён.
Чужие порты той же идеи рядом: ленточный autograd, OpenBLAS, SME2 под Apple Silicon. У vixhal-baraiya свой ход: ручной backward, отдельные ядра AVX2 и NEON, инференс без активаций обучения. Это не «единственный правильный C». Это самый разошедшийся в августе 2026 атомный вариант с таблицей на двух машинах.
Порт на C имеет смысл после Python-файла. Иначе SIMD закроет смысл, ради которого microgpt написали. Карта более свежих работ про агентов и test-time scaling: курс Georgia Tech LLM 2026.
«Lambda GPT с нуля»: когда нужна аренда, а когда нет
Русский запрос «lambda gpt с нуля» почти всегда про другую лекцию Карпаты. В build-nanoGPT он собирает GPT-2 на 124 млн параметров и говорит: если своей карты нет, арендуйте облачный GPU, он рекомендует Lambda. Это маршрут «воспроизвести GPT-2 за час и примерно 10 долларов», не маршрут «понять softmax».
microgpt-c отвечает наоборот. Lambda, CUDA и 124M здесь не нужны. Корпус 228 КБ, обучение на CPU за секунды, миллионы ток/с именно потому, что модель игрушечная. Снимать Lambda, чтобы прогнать make run, значит платить за простой карты.
Практическая развилка:
- Понять алгоритм GPT: Python microgpt, затем microgpt-c на своём CPU. Это «GPT с нуля» в смысле кода, не весов ChatGPT.
- Воспроизвести GPT-2: build-nanoGPT или llm.c, уже с GPU. Lambda или любой облачный бокс имеет смысл, если дома нет 24 ГБ.
- Собрать продукт с агентом: чужой API или локальная 7B-27B. Учебный C-файл сюда не подставляют.
Путаница из одной склейки запросов. Человек арендует A100 и час смотрит, как gcc собирает 1500 строк. Либо ждёт от microgpt-c ответов как у облачной модели и решает, что «трансформеры не работают». Каркас «с нуля» для сайта в редакторе другой: вайб-кодинг, как собрать сайт через AI.
Что это даёт вайб-кодеру
Большую часть недели вы не компилируете RMSNorm руками. Один вечер имеет смысл, если нужно одно из трёх: перестать путать маркетинговые ток/с с железом; прочитать forward и Adam перед llm.c или llama.cpp; собрать мелкий генератор (имена, SKU) без Python в рантайме. MIT, один бинарь, свой корпус. Это узкий кейс, не «свой ChatGPT в 4k параметров».
Чего не делать. Не публиковать 10 млн ток/с в карточке API. Не ждать, что AVX2 ускорит облачную модель. Не считать squared ReLU секретом фронтира. Карпаты в FAQ microgpt говорит прямо: механика это функция из токенов в распределение, «понимание» вы дорисовываете сами. В Makefile включён -ffast-math. Для генератора имён это нормально. PERFORMANCE.md фиксирует расхождение инференсного и обучающего forward порядка 1e-6 при логитах около 8. Это шум fp32. Если форк разъехался на 0,1, вы сломали ядро, а не ускорили.
Коротко
MicroGPT-C на 22 августа 2026 это живой порт microgpt Карпаты на чистый C: один файл, libc, AVX2 или NEON, 4192 параметра, имена, MIT. В README 6 927 775 ток/с на Ryzen 5 5600H и 10 168 430 ток/с на Apple M5 Pro. Мы сверили репозиторий, датасет на 32 033 строки и PERFORMANCE.md. Запрос «microgpt c» закрывается этим файлом. «Karpathy gpt c» чаще должен вести к llm.c, если вам нужен GPT-2. «lambda gpt с нуля» это лекция про 124M и аренду GPU, не make run на ноутбуке.
Читайте Python-оригинал, затем C-порт, и только потом снимайте облачную карту. Миллионы ток/с здесь про кэш и узкий SIMD, не про чат, который пишет вам код. Первичный код: vixhal-baraiya/microgpt-c. Эталон алгоритма: microgpt Карпаты.
