# Стенфорд запускает CS336: как собрать языковую модель с нуля в эпоху ИИ-гигантов

Источник: https://www.youtube.com/watch?v=Rvppog1HZJY
Канал: Stanford Online
Опубликовано: 08.04.2025

---

Стенфордский университет представил обновленный курс CS336 «Языковые модели с нуля» (Language Modeling from Scratch) сезона весны 2025 года. Профессора Перси Лян (Percy Liang) и Татсу Хашимото (Tatsu Hashimoto) ставят перед студентами амбициозную задачу: пройти путь от написания базового токенизатора до развертывания систем выравнивания (alignment), чтобы вернуть академическому сообществу понимание того, как на самом деле работают современные ИИ-гиганты.

## 🧠 Философия курса: борьба с «текучими абстракциями»
[[JUMP:01:37]]

Перси Лян утверждает, что современное ИИ-сообщество находится в состоянии кризиса: исследователи все больше отрываются от понимания базовых технологий [01:37]. Если восемь лет назад разработчики сами писали код моделей, а шесть лет назад — хотя бы скачивали веса BERT для тонкой настройки, то сегодня многие ограничиваются лишь промптингом закрытых проприетарных моделей через API [01:52]. 

По мнению Ляна, такие абстракции являются «текучими» (leaky abstractions) — в отличие от языков программирования или операционных систем, в случае с LLM исследователь не понимает, что происходит за фасадом «строка на входе — строка на выходе» [02:30]. Для проведения фундаментальных исследований необходимо «вскрыть стек» и заново научиться проектировать данные, системы и архитектуры в единой связке [02:46].

В курсе выделяют три типа знаний:

*   **Механика:** как устроен трансформер и как параллелизм моделей эффективно использует GPU [06:23].
*   **Мышление:** умение выжимать максимум из «железа» и серьезное отношение к масштабированию (scaling mindset), которое, по словам Ляна, первой применила OpenAI [07:04].
*   **Интуиция:** понимание того, какие решения в данных ведут к успеху. Этому сложнее всего научить, так как архитектуры, работающие на малых масштабах, могут быть неэффективны на больших [07:29].

## 📉 Масштабирование и «горький урок» эффективности
[[JUMP:08:41]]

Обсуждая «Горький урок» (The Bitter Lesson) Ричарда Саттона, Перси Лян подчеркивает: это не значит, что алгоритмы не важны, а имеет значение только масштаб [08:54]. Напротив, по мнению Ляна, важны именно «алгоритмы в масштабе». На больших объемах неэффективность обходится слишком дорого. 

Ключевые факты об эффективности:

*   Исследование OpenAI 2020 года показало, что с 2012 по 2019 год алгоритмическая эффективность при обучении ImageNet выросла в 44 раза [10:13]. 
*   Этот рост происходит быстрее, чем предсказывает закон Мура [10:26].
*   Если не вкладываться в алгоритмы, стоимость обучения модели той же точности была бы в 44 раза выше [10:39].

Лян отмечает, что для GPT-4, по слухам, потребовалось $100 млн и 1,8 триллиона параметров [03:15]. Поскольку детали обучения закрыты по соображениям конкуренции и безопасности [03:45], сообщество должно опираться на открытые наработки (например, от DeepSeek, Meta или Alibaba), чтобы восстановить лучшие практики индустрии [16:25].

## 🏗 Пять столпов создания языковой модели
[[JUMP:26:08]]

Курс CS336 структурирован вокруг пяти ключевых этапов (pillars), которые студенты реализуют самостоятельно. 

### 1. Основы (Basics)
[[JUMP:26:53]]

На этом этапе создается полный пайплайн. Студенты пишут код токенизатора, архитектуру трансформера и цикл обучения. Перси Лян подчеркивает, что с 2017 года оригинальный трансформер оброс множеством улучшений:

*   **Функции активации:** переход от ReLU к swiGLU [29:19].
*   **Нормализация:** использование RMSNorm вместо LayerNorm и изменение её положения в слоях [29:32].
*   **Позиционное кодирование:** внедрение роторных эмбеддингов (RoPE) [29:32].
*   **Внимание:** использование Grouped-Query Attention (GQA) для борьбы с квадратичным ростом вычислительной сложности [30:14].

### 2. Системная оптимизация (Systems)
[[JUMP:33:07]]

Упор делается на Triton (язык для написания кастомных GPU-кернелов от OpenAI) [35:04]. Студенты изучают:

*   **Минимизацию перемещения данных:** Лян приводит аналогию, где память — это склад, а вычислитель — фабрика; главная проблема — стоимость логистики между ними [34:34].
*   **Параллелизм:** Data Parallelism и Tensor Parallelism для распределения обучения на кластеры GPU [36:10].
*   **Инференс:** методы ускорения генерации, такие как спекулятивное декодирование (использование маленькой модели для предсказания токенов, которые затем проверяет большая модель) [38:33].

### 3. Законы масштабирования (Scaling Laws)
[[JUMP:39:59]]

Студенты учатся предсказывать гиперпараметры и потери на больших масштабах, основываясь на малых экспериментах. Основной ориентир — оптимальность по Чинчилле (Chinchilla optimal). По словам Ляна, эмпирическое правило гласит: на каждый параметр модели должно приходиться примерно 20 токенов данных для эффективного обучения [41:41].

### 4. Данные (Data)
[[JUMP:43:53]]

«Данные не падают с неба», — напоминает Лян [46:11]. Процесс превращения сырого дампа Common Crawl в качественный датасет включает:

*   Извлечение текста из HTML/PDF (процесс с потерями) [48:34].
*   Фильтрацию мусора и вредоносного контента с помощью классификаторов [48:53].
*   Дедупликацию данных на уровне корпуса [49:08].

### 5. Выравнивание (Alignment)
[[JUMP:49:37]]

Базовая модель умеет только предсказывать следующий токен. Для создания полезного ассистента применяется Alignment:

*   **SFT (Supervised Fine-Tuning):** обучение на парах «инструкция — ответ». Лян упоминает исследование, согласно которому даже 1000 качественных примеров достаточно, чтобы модель начала следовать инструкциям [51:27].
*   **RLHF (Reinforcement Learning from Human Feedback):** использование методов DPO (Direct Preference Optimization) и GRPO (Group Relative Preference Optimization), популяризированного DeepSeek, для улучшения ответов через систему предпочтений [53:48].

## 🔤 Глубокое погружение в токенизацию
[[JUMP:59:41]]

Токенизация — это фундамент, преобразующий строки в последовательности целых чисел [1:00:10]. Профессор Лян разбирает эволюцию подходов:

1.  **Посимвольный (Character-based):** огромный словарь (если брать Unicode), неэффективное использование памяти [1:05:50].
2.  **Побайтовый (Byte-based):** компактный словарь (256 значений), но очень длинные последовательности, что «убивает» производительность трансформера из-за квадратичного внимания [1:07:53].
3.  **Пословный (Word-based):** проблема с редкими и новыми словами (токен OOV/UNK), бесконечный рост словаря [1:10:11].

**Byte-Pair Encoding (BPE)** стал золотым стандартом благодаря GPT-2 [1:11:11]. Алгоритм, созданный Филиппом Гейджем еще в 1994 году для сжатия данных, был адаптирован для NLP [1:10:26]. Его суть в последовательном слиянии наиболее часто встречающихся пар байтов/токенов в один новый токен [1:12:04]. Это позволяет адаптивно выделять место в словаре для частых комбинаций символов, сохраняя при этом способность собрать любое редкое слово из базовых байтов [1:17:27].

## 🏁 Итоги и логистика
[[JUMP:18:21]]

Курс CS336 славится своей экстремальной нагрузкой. По отзывам студентов прошлого года, только первое домашнее задание по объему работы сопоставимо со всеми пятью заданиями курса CS224N вместе взятыми [20:03]. Студенты пишут код в «пустых файлах» без готовых каркасов, самостоятельно принимая решения по дизайну софта [22:35].

Для вычислений используется кластер из GPU H100, предоставленный компанией Together AI [25:03]. Профессора подчеркивают, что главная цель — научить студентов строить лучшие модели в условиях ограниченного бюджета (compute constrained regime), что сегодня актуально для любого исследователя вне стен Big Tech [55:28].