В Стэнфордском университете стартовал курс CS336 «Языковые модели с нуля» (Language Modeling from Scratch) под руководством профессоров Перси Ляна (Percy Liang) и Татсу Хасимото (Tatsu Hashimoto) . Этот уникальный курс ставит своей целью преодолеть растущий разрыв между исследователями ИИ и фундаментальными технологиями. По мнению Перси Ляна, современное сообщество «кризисно» отдалилось от основ: если раньше учёные сами обучали модели, то сегодня многие ограничиваются лишь написанием промптов к закрытым проприетарным системам . Философия курса проста: чтобы по-настоящему понять технологию, её нужно собрать своими руками — от токенизатора и архитектуры трансформера до систем оптимизации и этапов выравнивания (alignment) .
🏗️ Проблематика современных LLM и философия курса 1:49
Профессора Лян и Хасимото отмечают, что индустриализация языковых моделей создала барьер для академических исследований . Обучение моделей уровня GPT-4 требует сотен миллионов долларов и кластеров из сотен тысяч графических процессоров (GPU) уровня NVIDIA H100 . При этом компании-лидеры (OpenAI, Google) перестали раскрывать технические подробности архитектур и данных из-за конкуренции и соображений безопасности .
Перси Лян выделяет три уровня знаний, которые даёт курс:
- Механика: как устроены трансформеры и параллелизм на GPU .
- Мышление (Mindset): умение выжимать максимум из оборудования и воспринимать масштабирование (scaling) как первостепенный фактор .
- Интуиция: понимание того, какие данные и архитектурные решения ведут к успеху. Этому сложнее всего научить, так как решения, эффективные на малых масштабах, могут не работать на больших .
Лян подчеркивает, что эффективный алгоритм сегодня важнее, чем когда-либо. По данным исследования OpenAI, с 2012 по 2019 год алгоритмическая эффективность выросла в 44 раза — это быстрее, чем действие закона Мура .
🗓️ Пять столпов создания языковой модели 27:14
Курс разбит на пять ключевых этапов, которые студенты проходят последовательно, создавая работающую систему.
1. Основы (Basics)
Студенты реализуют токенизатор BPE (Byte Pair Encoding) и базовую архитектуру трансформера . Преподаватели отмечают, что современная рецептура LLM включает множество мелких улучшений по сравнению с оригинальной статьёй 2017 года: функции активации SwiGLU, rotary positional embeddings (RoPE), RMS Norm и различные типы внимания (sliding window, GQA) .
2. Системная оптимизация (Systems) 33:57
Этот блок посвящен тому, как заставить код работать быстро на GPU. Ключевая проблема здесь — «текучесть» абстракций и стоимость перемещения данных между памятью и вычислительными ядрами . Студенты пишут кастомные ядра на языке Triton, чтобы минимизировать затраты на движение данных, и осваивают методы параллелизма (Data Parallelism, FSDP) . Также рассматривается эффективность инференса: технологии speculative decoding и оптимизация фаз pre-fill и decode .
3. Законы масштабирования (Scaling Laws) 40:50
Участникам предстоит научиться предсказывать поведение большой модели на основе малых экспериментов. Применяется концепция «оптимальности по Чинчилле» (Chinchilla optimal): поиск идеального баланса между размером модели и количеством токенов . В качестве практического задания студентам выдается ограниченный бюджет вычислительных мощностей (FLOPs), на котором они должны найти лучшие гиперпараметры для целевой модели .
4. Работа с данными (Data) 44:43
Профессор Лян утверждает: «Данные не падают с неба». Процесс превращения сырого интернета (Common Crawl) в качественный датасет — это грязная и сложная работа . Около 90% данных в сети — это «мусор» (трафик-хостелы, спам, ошибки парсинга) . Студенты учатся фильтрации, дедупликации и классификации контента, чтобы модель не тратила драгоценные вычислительные циклы на изучение низкокачественного текста .
5. Выравнивание (Alignment) 50:40
На финальном этапе базовая модель превращается в полезного ассистента. Это достигается через:
- SFT (Supervised Fine-Tuning): обучение на парах «вопрос-ответ» .
- Обучение с подкреплением (RL): использование алгоритмов DPO (Direct Preference Optimization) и более современных методов вроде GRPO от компании DeepSeek для улучшения ответов на основе предпочтений .
✂️ Токенизация: как текст становится числами 1:00:28
Первая лекция подробно разбирает процесс токенизации. Перси Лян выделяет несколько подходов:
- Посимвольный: приводит к слишком длинным последовательностям и неэффективному использованию словаря .
- Побайтовый: элегантен, но катастрофически увеличивает длину входа (сжатие 1:1), что неэффективно для квадратичного внимания трансформера .
- Пословный: страдает от проблемы «неизвестных слов» (ООV) и бесконечного словаря .
Решением остается BPE (Byte Pair Encoding) — алгоритм 1994 года, изначально созданный для сжатия данных . Он берет сырые байты и последовательно объединяет наиболее часто встречающиеся пары в новые токены . Это позволяет адаптивно выделять место в словаре для частых комбинаций (например, слогов или частых слов), сохраняя возможность собрать любое редкое слово из отдельных байтов. Коэффициент сжатия обычного токенизатора GPT-2 составляет около 1.6 байта на токен .
🛠️ Практика и инструменты курса 23:43
Организация курса отличается спартанскими условиями: студенты пишут код с «чистого листа» (без шаблонов), организуя структуру проекта по своему усмотрению . Хотя использование ИИ-инструментов вроде Cursor или Copilot не запрещено, Лян предупреждает, что они могут помешать получению реального опыта . Вычисления проводятся на кластере с GPU H100, предоставленном компанией Together AI .