# Стэнфорд запустил курс CS336 по созданию LLM: от байтовых токенов до GPU-ядер

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

---

В Стэнфордском университете стартовал курс CS336 «Языковые модели с нуля» (Language Modeling from Scratch) под руководством профессоров Перси Ляна (Percy Liang) и Татсу Хасимото (Tatsu Hashimoto) [0:05]. Этот уникальный курс ставит своей целью преодолеть растущий разрыв между исследователями ИИ и фундаментальными технологиями. По мнению Перси Ляна, современное сообщество «кризисно» отдалилось от основ: если раньше учёные сами обучали модели, то сегодня многие ограничиваются лишь написанием промптов к закрытым проприетарным системам [2:33]. Философия курса проста: чтобы по-настоящему понять технологию, её нужно собрать своими руками — от токенизатора и архитектуры трансформера до систем оптимизации и этапов выравнивания (alignment) [3:57].

## 🏗️ Проблематика современных LLM и философия курса
[[JUMP:01:49]]

Профессора Лян и Хасимото отмечают, что индустриализация языковых моделей создала барьер для академических исследований [4:13]. Обучение моделей уровня GPT-4 требует сотен миллионов долларов и кластеров из сотен тысяч графических процессоров (GPU) уровня NVIDIA H100 [4:27]. При этом компании-лидеры (OpenAI, Google) перестали раскрывать технические подробности архитектур и данных из-за конкуренции и соображений безопасности [4:39].

Перси Лян выделяет три уровня знаний, которые даёт курс:

*   **Механика:** как устроены трансформеры и параллелизм на GPU [7:05].
*   **Мышление (Mindset):** умение выжимать максимум из оборудования и воспринимать масштабирование (scaling) как первостепенный фактор [7:31].
*   **Интуиция:** понимание того, какие данные и архитектурные решения ведут к успеху. Этому сложнее всего научить, так как решения, эффективные на малых масштабах, могут не работать на больших [8:25].

Лян подчеркивает, что эффективный алгоритм сегодня важнее, чем когда-либо. По данным исследования OpenAI, с 2012 по 2019 год алгоритмическая эффективность выросла в 44 раза — это быстрее, чем действие закона Мура [11:16].

## 🗓️ Пять столпов создания языковой модели
[[JUMP:27:14]]

Курс разбит на пять ключевых этапов, которые студенты проходят последовательно, создавая работающую систему.

### 1. Основы (Basics)
Студенты реализуют токенизатор BPE (Byte Pair Encoding) и базовую архитектуру трансформера [28:38]. Преподаватели отмечают, что современная рецептура LLM включает множество мелких улучшений по сравнению с оригинальной статьёй 2017 года: функции активации SwiGLU, rotary positional embeddings (RoPE), RMS Norm и различные типы внимания (sliding window, GQA) [30:17].

### 2. Системная оптимизация (Systems)
[[JUMP:33:57]]
Этот блок посвящен тому, как заставить код работать быстро на GPU. Ключевая проблема здесь — «текучесть» абстракций и стоимость перемещения данных между памятью и вычислительными ядрами [35:10]. Студенты пишут кастомные ядра на языке Triton, чтобы минимизировать затраты на движение данных, и осваивают методы параллелизма (Data Parallelism, FSDP) [35:54]. Также рассматривается эффективность инференса: технологии speculative decoding и оптимизация фаз pre-fill и decode [39:30].

### 3. Законы масштабирования (Scaling Laws)
[[JUMP:40:50]]
Участникам предстоит научиться предсказывать поведение большой модели на основе малых экспериментов. Применяется концепция «оптимальности по Чинчилле» (Chinchilla optimal): поиск идеального баланса между размером модели и количеством токенов [41:31]. В качестве практического задания студентам выдается ограниченный бюджет вычислительных мощностей (FLOPs), на котором они должны найти лучшие гиперпараметры для целевой модели [43:10].

### 4. Работа с данными (Data)
[[JUMP:44:43]]
Профессор Лян утверждает: «Данные не падают с неба». Процесс превращения сырого интернета (Common Crawl) в качественный датасет — это грязная и сложная работа [47:01]. Около 90% данных в сети — это «мусор» (трафик-хостелы, спам, ошибки парсинга) [48:15]. Студенты учатся фильтрации, дедупликации и классификации контента, чтобы модель не тратила драгоценные вычислительные циклы на изучение низкокачественного текста [56:45].

### 5. Выравнивание (Alignment)
[[JUMP:50:40]]
На финальном этапе базовая модель превращается в полезного ассистента. Это достигается через:

*   **SFT (Supervised Fine-Tuning):** обучение на парах «вопрос-ответ» [51:47].
*   **Обучение с подкреплением (RL):** использование алгоритмов DPO (Direct Preference Optimization) и более современных методов вроде GRPO от компании DeepSeek для улучшения ответов на основе предпочтений [53:46].

## ✂️ Токенизация: как текст становится числами
[[JUMP:1:00:28]]

Первая лекция подробно разбирает процесс токенизации. Перси Лян выделяет несколько подходов:

1.  **Посимвольный:** приводит к слишком длинным последовательностям и неэффективному использованию словаря [1:05:51].
2.  **Побайтовый:** элегантен, но катастрофически увеличивает длину входа (сжатие 1:1), что неэффективно для квадратичного внимания трансформера [1:08:50].
3.  **Пословный:** страдает от проблемы «неизвестных слов» (ООV) и бесконечного словаря [1:10:34].

Решением остается **BPE (Byte Pair Encoding)** — алгоритм 1994 года, изначально созданный для сжатия данных [1:11:16]. Он берет сырые байты и последовательно объединяет наиболее часто встречающиеся пары в новые токены [1:12:41]. Это позволяет адаптивно выделять место в словаре для частых комбинаций (например, слогов или частых слов), сохраняя возможность собрать любое редкое слово из отдельных байтов. Коэффициент сжатия обычного токенизатора GPT-2 составляет около 1.6 байта на токен [1:05:02].

## 🛠️ Практика и инструменты курса
[[JUMP:23:43]]

Организация курса отличается спартанскими условиями: студенты пишут код с «чистого листа» (без шаблонов), организуя структуру проекта по своему усмотрению [23:31]. Хотя использование ИИ-инструментов вроде Cursor или Copilot не запрещено, Лян предупреждает, что они могут помешать получению реального опыта [25:35]. Вычисления проводятся на кластере с GPU H100, предоставленном компанией Together AI [25:51].