Андрей Карпаты (Andrej Karpathy) — инженер и популяризатор практик глубокого обучения, который сделал «сквозной» подход к ИИ понятным и пригодным для продакшена. Его стиль: минимальный код → прозрачная механика → воспроизводимые эксперименты → аккуратная эксплуатация. В отличие от культуры «магических демо», подход Карпаты фокусируется на том, чтобы любая часть пайплайна была объяснимой и заменяемой: от загрузки данных и цикла обучения до вывода модели в сервис.
Эта страница — не биография, а практическая призма для продуктовых, ML- и инфраструктурных команд 24k.ru. Мы разбираем, как «школа Карпаты» приземляется на повседневную работу с ML, крупными моделями LLM и их эксплуатацией в рамках целостного AI-стека. В блоках ниже — архитектурные решения, метрики «здоровья», чек-листы, таблицы анти-паттернов и FAQ. Для слоя инференса держите под рукой обзор LLM-inference-стека и базовую архитектуру трансформера.
Лид: зачем продуктовой команде «школа Карпаты»
- Понять механизмы. Минимальные реализации/диаграммы делают поведение модели предсказуемым и обучаемым всей командой, а не только «ML-магами».
- Повторяемость важнее разового рекорда. Код, данные, конфиги и метрики версионируются и воспроизводятся без «ручных ритуалов».
- Экономика инференса и простые контракты. Чёткие форматы ответов (JSON/таблицы), короткие подсказки, кэшируемые этапы → стабильный P95 и «цена эпизода».
Суть: «сильный продукт = простая механика + измеримость + дисциплина изменений».
Архитектурная рамка: «от датасета до вывода»
| Слой | Вопрос | Практика «в духе Карпаты» | Артефакты |
| Данные | Что именно учим и почему? | Малошумные выборки, явные фильтры/дедуп, контроль смещений | Манифест данных, версии, хэши |
| Тренировка | Как добиться качества без магии? | Малый работающий цикл (train loop), валидируемые гиперпараметры | Конфиги, логи, чекпоинты |
| Оценка | Что считать и как интерпретировать? | «Золотой набор» задач, utility-скор, кривые ошибок | Отчёты /plots, карточка релиза |
| Инференс | Скольких токенов стоит ответ? | Ограничители длины, ранние остановки, кэш префилла | Правила маршрутизации |
| Оркестрация | Как удержать P95/стоимость? | Раздельные очереди, профили light/standard/heavy | Политики маршрутов |
| Наблюдаемость | Где «течёт» бюджет? | TTFT, P95, неформат, «цена эпизода», error-mix | Дешборды и алерты |
Эта «лестница» описывает путь от сырого датасета к стабильной службе. Переходить на следующую ступень стоит только после фиксации артефактов и метрик на текущей.
Механика обучения: минимализм, который работает
Карпаты — сторонник минимального, но честного цикла обучения. Что это означает на практике:
- Явные шаги. Загрузка батча → префорвард → лосс → бэквард → шаг оптимизатора. Никаких «скрытых магий» в коллбэках, которые усложняют дебаг.
- Простые гиперпараметры. Линии инициализации, шаг обучения, расписание decay — всё в одном месте и под версионным контролем.
- Малые прототипы → масштаб. Сначала «маленькая модель на маленьких данных», затем перенос рецепта на промышленный объём.
- Контроль генерации. Температура, top-k/p, длина — не «искусство», а контракт качества/стоимости, который меняется осмысленно и фиксируется в карточке релиза.
Этот прагматизм и делает проекты воспроизводимыми: новая команда, получая репозиторий, может повторить результат без обратной инженерии.
Инференс как инженерный объект
Инференс — это продукт, а не «хвост тренировки». Чтобы он был предсказуемым:
- Контракты ответа. Никакой «вольной речи», если этого не требует UX. По умолчанию — JSON/таблица, валидация до отдачи клиенту и строгий разбор ошибок.
- Лимиты и ранние остановки. Сокращают «болтовню» модели, удерживают P95 и бюджет.
- Профили вывода. *Light* для коротких ответов, *Standard* для диалогов, *Heavy* для отчётов (в отдельной очереди).
- Кэш префилла/эмбеддингов. Повторно используем состояния и результаты поиска — дешевле и быстрее.
- Маршрутизация очередей. Chat ≠ Long ≠ Offline. Смешивать — ломать P95.
Эти правила простые, но именно они отделяют демо от надёжной службы.
«Цена эпизода»: считать честно
| Компонент | Состав | Как понизить |
| Контекст (ввод) | История, инструкции, примеры | Резюмирование, короткие шаблоны, внешние факты |
| Префилл | Переиспользуемые состояния/кэш | Тёплые пулы, кэширование, дедуп |
| Генерация | Токены/сек, длина | Ограничители, ранние остановки, профили |
| Инструменты | Ретривер, эмбеддинги, классификаторы | Кэш результатов, объединение шагов |
| Ретраи | Неформат/тайм-ауты | Пред-валидация, строгие схемы JSON |
| Пост-обработка | Валидация/логирование | Лёгкие артефакты, единые форматы логов |
Управляя «ценой эпизода», вы управляете маржой продукта на ИИ.
Наблюдаемость и «здоровье» сервиса
Главные метрики:
- TTFT — время до первого токена; влияет на отмены.
- P95 задержек — «длинный хвост», определяет UX при пиках.
- Доля неформата — процент невыполнения контракта JSON/таблицы.
- Utility-скор — полезность на «золотом наборе» задач.
- Цена эпизода — итоговая стоимость полезного ответа.
Минимум раз в неделю команда смотрит отчёт «до/после» изменений, а любые ухудшения выше порога запускают автоматический откат.
Инженерные принципы «школы Карпаты»
1) От простого к надёжному. Малый рабочий прототип лучше «идеальной» архитектуры без воспроизводимости.
2) Публичный код и артефакты. Репозитории с минимальными примерами/блоками снижают входной барьер и повышают культуру «читаемости» стека.
3) Учим представления, а не «красоту текста». Лучшие эмбеддинги и краткие подсказки ↓ контекстные токены и ↓ задержки.
4) Версии и карточки релиза. Каждый релиз — это набор версий (модель, ретривер, шаблоны, лимиты) с влиянием на TTFT/P95/utility.
5) Отладка через визуализацию. Лоссы, распределения длин, доля неформата, диаграммы маршрутов — всё рисуется и хранится рядом с кодом.
Чек-листы внедрения
A) Минимум за 7 дней (любой LLM-продукт)
- Введите контракт вывода (JSON/таблица) и пред-валидатор.
- Поставьте дешборды: TTFT, P95, неформат, utility, цена эпизода.
- Разведите очереди: chat / long / offline.
- Включите кэш префилла и кэш эмбеддингов.
- Введите ограничители длины и ранние остановки.
B) Минимум по данным/обучению
- Опишите манифест данных: источники, фильтры, дедуп, лицензии.
- Заведите золотой набор и скрипты оценки utility.
- Версионируйте чекпоинты и конфиги; сохраните контрольные суммы.
C) Безопасность/риски
- Политики ввода/вывода и фразы отказа.
- Процедуры rollback/канареек; журнал инцидентов.
- Правила хранения логов и PII; анонимизация по умолчанию.
Таблица: анти-паттерны и исправления
| Анти-паттерн | Симптом | Что делать |
| «Одна очередь на всё» | Пики P95, жалобы на задержки | Развести chat/long/offline, ввести профили |
| «Свободный текст всегда» | Неформат, ретраи | Контракты JSON, пред-валидация |
| «Только увеличим модель» | Дорого и нестабильно | Сократить ввод, кэш, профили, короткие шаблоны |
| «Ритуальная отладка» | Неповторяемые результаты | Мини-репро, фиксированные конфиги, версии |
| «Нет карточки релиза» | Нельзя объяснить регресс | Ввести карточки и пороги автo-отката |
Таблица: профили инференса
| Профиль | Где применять | Сильные стороны | Риски |
| Light | Короткий Q&A, инструменты | Низкий TTFT/цена | Возможна потеря «литературности» |
| Standard | Основной диалог | Баланс качества/цены | Нужен динамический batching |
| Heavy | Отчёты/аналитика | Длина/детальность | Отдельная очередь, удар по P95 |
Практические сценарии
1) Корпоративный ассистент. Короткие промпты, строгий JSON, ретривер по проверенным витринам, кэш префилла. Профили: *light* для FAQ, *standard* для диалога, *heavy* для отчётов.
2) Экстрактор → отчёт. Два шага: (а) извлечение фактов в JSON; (б) формирование читаемого ответа. Контракты и валидация снижают ретраи и ручной труд.
3) Разметка и классификация. Кодировщик/эмбеддинги + «тонкие головы»; обучение в коротких циклах, контроль смещений. Экономная эксплуатация с предсказуемым P95.
4) Инструментальные агенты. Чёткий список доступных инструментов, лимит глубины планов, трейсинг шагов и fallback-ответы. Агенты — не «магия», а управляемый пайплайн.
Данные: от манифеста к пользе
- Источник и лицензии. Фиксируйте происхождение и ограничения на использование.
- Фильтры и дедуп. Снижайте шум до обучения.
- Обновления. Дорожная карта пересборок, чтобы не ловить «дрейф» фактов.
- Справедливость. Баланс доменов/языков; прозрачные отчёты по распределениям.
Оценка и «золотые наборы»
Золотой набор — это фиксированная, репрезентативная выборка задач вашего домена. Любая смена модели/шаблонов должна показывать полезность на нём; улучшение «на бенчмарке» без роста utility считается недостаточным для релиза.
Диагностика «длинного хвоста»
- Разделите трейсинг по маршрутам (chat/long/offline).
- Смотрите распределение длины ввода/вывода.
- Сопоставляйте пиковые задержки с событиями (обновление шаблонов, кэш, профили).
- Вводите авто-либо-ручной откат при выходе P95 за порог.
Мини-плейбуки (1–2 недели)
A) −30% P95 Развести очереди, включить ранние остановки и кэш префилла, замерить до/после.
B) −20% «цены эпизода» Сократить ввод, внедрить строгие контракты и пред-валидацию, объединить шаги ретривера.
C) «Нулевая толерантность к неформату» JSON-схемы, валидатор до отдачи, авто-ретраи с мягким тайм-аутом, ежедневный отчёт по неформату.
Часто задаваемые вопросы (FAQ)
Почему так много про минимальные примеры и простые петли обучения? Потому что они делают систему объяснимой и облегчают передачу знаний между разработчиками. Это снижает стоимость сопровождения и ускоряет онбординг.
Большая модель решит всё? Нет. Часто больше выигрыша дают короткие подсказки, кэш, профили и контракты вывода, чем рост параметров.
Нужны ли агенты для каждого кейса? Нет. Агенты полезны там, где есть инструменты/шаги. Ими нужно управлять политиками, трейсингом и лимитами глубины.
Как убедить бизнес вкладываться в наблюдаемость? Покажите корреляцию P95/TTFT/неформат → отмены/удержание. Это прямой драйвер выручки и маржи.
Зачем «жёсткий» JSON, если пользователи любят свободный текст? Контракты не отменяют «человеческий» вывод — они страхуют пайплайн и экономят на ретраях/ручных правках.
Словарь терминов
- Минимальная реализация — краткий, но полный пример механизма без «магии» и скрытых зависимостей.
- Контракт вывода — заранее заданная схема ответа (JSON/таблица) с валидацией до отдачи.
- TTFT — время до первого токена; чувствительная UX-метрика.
- P95 — 95-й перцентиль задержек; показывает «длинный хвост».
- Utility-скор — полезность по «золотому набору» задач домена.
- Цена эпизода — суммарная стоимость полезного ответа модели.
- Профили инференса — режимы *light/standard/heavy* с разными SLO и бюджетами.
- Кэш префилла — сохранение промежуточных состояний для ускорения повторов.
