Перейти к содержимому
ПереводыИсследователи и авторы

ARENA: путеводитель по практикуму

Путеводитель по программе ARENA (Alignment Research Engineer Accelerator): пять глав ноутбуков с тестами — основы, трансформеры и механистическая интерпретируемость, RL и RLHF, оценка LLM и агенты, наука о выравнивании; карта наборов упражнений к урокам курса, пересказ вводных частей главы 1 (трансформер с нуля и введение в TransformerLens) и как запускать на 4× RTX 4080.

ARENA (Alignment Research Engineer Accelerator) — очная программа подготовки инженеров-исследователей в области безопасности ИИ, материалы которой выложены в открытый доступ. Это не лекции, а ноутбуки с упражнениями: вы пишете функции по описанию, а встроенные тесты сразу проверяют результат. К каждому набору есть решения, а у большинства — лекция-видео. Главный автор — Каллум Макдугалл; глава о трансформерах и интерпретируемости во многом основана на ноутбуках и видео Нила Нанды, автора библиотеки TransformerLens.

На странице «Учимся у создателей» ARENA названа лучшим практикумом по интерпретируемости. Для нашего ученика это практика к ступеням 4, 6, 7 и 9: собрать GPT-2 своими руками, найти индукционные головы, обучить разреженный автоэнкодер, написать DQN, PPO и RLHF, построить оценку и агента.

Чего ждать по уровню: упражнения рассчитаны на людей, уверенно знающих Python и PyTorch. У каждого упражнения есть оценка сложности и важности по пятибалльной шкале и ориентир по времени. Авторы прямо советуют пропускать неважные упражнения и подглядывать в решения, если застряли, — «чтобы скорее добраться до интересного».

flowchart LR
C0["Гл. 0. Основы: einops, CNN и ResNet, оптимизация, backprop, VAE и GAN"] --> C1["Гл. 1. Трансформеры и интерпретируемость"]
C0 --> C2["Гл. 2. RL: бандиты → DQN → VPG → PPO → RLHF, MCTS"]
C1 --> C2
C1 --> C3["Гл. 3. Оценка LLM и агенты"]
C1 --> C4["Гл. 4. Наука о выравнивании"]
Главы ARENA и их зависимости (наша схема по README).
НаборО чёмУрок курса
0.0 Предварительные знаниячто нужно знать по математике и Python; упражнения на einops и einsum0.3.1–0.3.2, ступень 1
0.1 Трассировка лучейразминка на тензорных операциях: батчевые вычисления без цикловступень 0.3
0.2 CNN и ResNetсвои свёртки 1D и 2D, сборка ResNet, загрузка весов, дообучение3.5.1–3.5.2, 3.4.2
0.3 ОптимизацияSGD, momentum, Adam своими руками, подбор гиперпараметров с Weights & Biases1.4.2, 3.3.3
0.4 Backpropсвой механизм автоматического дифференцированиямодуль 3.2
0.5.1–0.5.2 VAE и GANпорождающие модели на картинках9.1.3

Глава 1. Трансформеры и интерпретируемость

Заголовок раздела «Глава 1. Трансформеры и интерпретируемость»
НаборО чёмУрок курсаСтатус
1.1 Трансформер с нуляGPT-2 на чистом PyTorch, обучение, сэмплирование, KV-кэш4.5.1, 4.6.2–4.6.4обязательно
1.2 Введение в механистическую интерпретируемостьTransformerLens, индукционные головы, хуки, обратная разработка цепей по весам9.3.1обязательно
1.3.1 Линейные пробызонды (линейный зондлинейный зондEN linear probeЛогистическая или линейная регрессия на замороженных активациях модели. Показывает, что свойство линейно извлекаемо, но не доказывает, что модель его использует.) на «геометрию истины» и обман9.3.1по выбору
1.3.2 Векторы функций и управлениевекторы задач из in-context learning, steering, библиотека nnsight9.3.1по выбору
1.3.3 Интерпретируемость с SAESAELens и Neuronpedia, поиск понятий с разреженными автоэнкодерами9.3.2по выбору
1.3.4 Activation Oraclesмодели, которые отвечают на вопросы об активациях другой модели9.3.2по выбору
1.4.1 Indirect Object Identificationцепь, которая дописывает «Джон и Мэри пошли в магазин, Джон отдал сумку…» → «Мэри» в GPT-2 small; patching и абляции9.3.1по выбору, рекомендован
1.4.2 Цепи из SAEсвязи латентов SAE между слоями, транскодеры9.3.2по выбору
1.5.1 Классификатор скобокобратная разработка маленькой модели, проверяющей баланс скобок9.3.1по выбору, самый лёгкий
1.5.2 Grokking и модульная арифметикаоднослойный трансформер складывает по модулю через преобразование Фурье9.3.1; само явление — 11.4.1 и ДЗ s11-hw06-grokkingпо выбору
1.5.3 OthelloGPTмодель, обученная на ходах «Отелло», хранит доску внутри9.3.1по выбору
1.5.4 Игрушечные модели суперпозиции и SAEтеория суперпозиции (суперпозиция признаковсуперпозиция признаковEN superpositionМодель хранит больше признаков, чем у неё измерений, раскладывая их по почти ортогональным направлениям. Работает, пока признаки редко активны одновременно.) и SAE на игрушечных моделях9.3.2по выбору

Рекомендованный порядок с домашней страницы главы: из 1.1 обязательны разделы 1 и 2 (свой трансформер), из 1.2 — разделы 1–3; дальше — что интересно. Из необязательного сильнее всего советуют 1.5.1 (легче остальных), 1.4.1 (лучшее введение в интерпретируемость через цепи) и самый подробный практический набор по SAE. Большинство наборов занимают 1–3 дня.

НаборО чёмУрок курса
2.1 Введение в RLбандиты и табличные методы по Саттону и Барто6.0.1, 6.0.2
2.2.1 DQNDeep Q-Network на CartPole6.0.2
2.2.2 VPG«ванильный» градиент политики — основа PPO6.0.3
2.3 PPOсвой PPO: CartPole за ~30 секунд, формирование награды, Atari и MuJoCo6.0.3
2.4 RLHFPPO для своего трансформера из главы 1: буфер, фазы rollout и обучения, RLHFTrainer6.3.2
2.5 MCTS и AlphaZeroпоиск по дереву Монте-Карло с моделью среды—

Сделана вместе с Apollo Research. Нужен платный API (OpenAI или Anthropic) — дешёвая замена описана на странице «Учимся у создателей»: локальная модель через OpenAI-совместимый сервер.

НаборО чёмУрок курса
3.1 Введение в оценкимодель угроз и спецификация свойства, которое меряем (пример — стремление к власти)7.3.1, 9.3.4
3.2 Генерация набора данных~300 вопросов с помощью LLM, их оценка и фильтрация, проверка на смещения7.3.1
3.3 Запуск оценок в Inspectбиблиотека UK AISI: CoT или нет, сколько примеров в промпте и т. д.7.3.2
3.4 LLM-агентыагент для арифметики, затем агент для «Википедийной гонки»; методы выявления способностей8.3.1, 8.3.2
3.5 AI Controlпротоколы контроля: «красная» и «синяя» команды, мониторинг бэкдоров в коде9.3.4

Самая новая глава: 4.1 эмерджентное рассогласование (после дообучения на небезопасном коде модель становится «плохой» в целом); 4.2 наука о рассогласовании; 4.3 интерпретация рассуждающих моделей («якоря мыслей» — предложения цепочки рассуждений, сильнее всего влияющие на ответ); 4.4 «психология» LLM и векторы персоны; 4.5 агенты- исследователи. Это материал к уроку 9.3.3 и дальше — для тех, кто хочет заниматься исследованиями.

Набор — это «чистая» реализация GPT-2 на PyTorch с нуля, архитектурно повторяющая библиотеку TransformerLens, с которой дальше идёт вся глава. Материал основан на серии видео Нила Нанды. Четыре раздела:

  1. Входы и выходы трансформера. Зачем он нужен — моделировать текст; что такое причинное внимание; токенизация; логиты и как получить из них распределение по словарю.
  2. Чистая реализация. Трансформер собирается по модулям, как ResNet в главе 0, и в конце в него загружаются готовые веса GPT-2, чтобы сверить ответы с эталоном.
  3. Обучение. Цикл обучения на наборе коротких историй; падение кросс-энтропии объясняется через свойства данных (сначала модель выучивает частоты биграмм).
  4. Сэмплирование. Жадный выбор, температура, штраф за частоту, top-k, top-p, лучевой поиск и KV-кэш. Вторую половину раздела авторы разрешают пропустить.

Зачем вообще трансформер. Авторы начинают с короткой формулы: трансформеры существуют, «чтобы моделировать текст». Модель в стиле GPT-2 получает последовательность и выдаёт распределение вероятностей следующего токена; сэмплируя из него и дописывая токен в конец, получаем генерацию. Важная деталь обучения: из последовательности длины nn модель делает nn предсказаний сразу — по одному на каждый префикс, p(x1),p(x2∣x1),…,p(xn∣x1…xn−1)p(x_1), p(x_2 \mid x_1), \ldots, p(x_n \mid x_1 \ldots x_{n-1}). Поэтому обучение такое эффективное. Чтобы модель не «подглядывала» в токен, который должна предсказать, внимание делают причинным (причинная (каузальная) маскапричинная (каузальная) маскаEN causal maskЗапрещает токену смотреть на будущие позиции — оценки выше диагонали заменяются на −∞ до softmax. Нужна, чтобы GPT-подобная модель училась предсказывать следующий токен на всех позициях сразу.): информация течёт только вперёд.

Авторы предлагают образ, который стоит запомнить: очередь людей, у каждого по слову. Каждый может спросить что-то у стоящих позади, но не у стоящих впереди, и должен угадать слово человека перед собой.

Архитектура в терминах интерпретируемости. Главный объект — остаточный поток (остаточный потокостаточный потокEN residual streamВектор шириной d, который течёт сквозь все блоки. Каждый подслой читает из него и дописывает поправку, так что выход = вход + сумма всех поправок.): сумма выходов всех предыдущих слоёв, она же вход каждого следующего. Через него модель «помнит», передаёт информацию между слоями и хранит то, что внимание переносит между позициями. Отсюда — logit lens (logit lenslogit lens («логит-линза»)EN logit lensПрименить финальную нормализацию и LM-голову к остаточному потоку промежуточного слоя — «что модель предсказала бы, если бы остановилась здесь» (nostalgebraist, 2020).): поток посреди модели можно сразу перевести в распределение по токенам, и предсказания поздних слоёв оказываются на удивление осмысленными.

  • Внимание — единственная часть трансформера, которая переносит информацию между позициями. Головы слоя работают независимо, их выходы складываются в поток. Каждая голова строит шаблон внимания (паттерн вниманияпаттерн вниманияEN attention patternМатрица весов внимания одной головы размера T×T; строка i показывает, как позиция-запрос i распределила внимание между позициями 0…i.) — распределение по предыдущим токенам — и одинаково переносит информацию от каждого источника к каждому получателю. Аналогия Q/K/V из ARENA: запрос — «ищу имя, встретившееся раньше»; ключ — «я имя», например «Мэри»; значение — само имя, то, что реально переносится. Ещё одна интуиция: внимание — это «обобщённая свёртка», которая не навязывает локальность, а сама решает, какие токены важны друг для друга.
  • MLP работает с каждой позицией отдельно и одинаково, ничего не перенося. Когда внимание собрало нужное в одну позицию, MLP «думает»: вычисляет, ищет факты. Обычно на MLP приходится большая часть параметров (часто около 2/3). Полезная интуиция — MLP как пары «ключ → значение»: столбцы WinW^{in} — входные направления нейронов, строки WoutW^{out} — выходные; нейрон, «узнав» свой признак, дописывает в поток своё выходное направление. Что именно происходит внутри MLP — по словам авторов, большая открытая проблема интерпретируемости.
  • Дальше — LayerNorm, эмбеддинги токенов и позиций и «разэмбеддинг» WUW_U, переводящий поток в логиты.

1.2 Введение в механистическую интерпретируемость: вступление

Заголовок раздела «1.2 Введение в механистическую интерпретируемость: вступление»

Набор знакомит с библиотекой TransformerLens. Нил Нанда, её автор, объясняет во вступлении, зачем её написал: цель механистической интерпретируемости (механистическая интерпретируемостьмеханистическая интерпретируемостьEN mechanistic interpretabilityОбратная разработка обученной нейросети — поиск внутри неё понятных алгоритмов (схем) и доказательство вмешательством, что модель действительно их использует.) — взять обученную модель и по её весам восстановить алгоритмы, которые она выучила; инструментов, чтобы использовать и обучать модели, много, а чтобы заглядывать внутрь — мало. Главный принцип библиотеки — короткий цикл «идея эксперимента → результат», чтобы исследование «ощущалось как игра».

Сквозная тема набора — индукционные цепи: простейший механизм обучения в контексте. Четыре раздела:

  1. Введение в TransformerLens — загрузка HookedTransformer, токенизатор, кэш всех активаций, визуализация шаблонов внимания библиотекой circuitsvis.
  2. Поиск индукционных голов — игрушечная двухслойная модель только из внимания (без MLP, LayerNorm и смещений; позиции добавляются только к запросам и ключам — так индукционные головы появляются в 2–3 раза раньше). Свои детекторы голов «на текущий токен», «на предыдущий токен», «на первый токен».
  3. Хуки — функции, которые читают или меняют активации во время прямого прохода; атрибуция логитов и абляции.
  4. Обратная разработка по весам — QK- и OV-цепи, класс FactoredMatrix, оценки композиции голов.

Что такое индукционная голова (индукционная головаиндукционная головаEN induction headПара голов, которая находит в контексте прошлое появление текущего токена и копирует токен, шедший после него ([A][B] … [A] → [B]). Механизм in-context learning (Olsson и др., 2022).). Это голова второго слоя, которая смотрит на токен, стоявший сразу после предыдущего вхождения текущего токена, и копирует его: увидев «… Гарри Поттер … Гарри», она предсказывает «Поттер». Цепь из двух голов: голова «предыдущего токена» в слое 0 записывает в каждую позицию, какой токен стоял перед ней, а индукционная голова в слое 1 через K-композицию ищет позиции, где «предыдущий токен» совпадает с текущим. ARENA объясняет, почему эти головы так важны (пересказ):

  • они появляются скачком, фазовым переходом, — по данным авторов, примерно между 2 и 4 млрд токенов обучения, — и на кривой потерь виден заметный «горб»;
  • на них приходится большая часть способности использовать далёкий контекст — одно из главных преимуществ трансформеров над RNN и LSTM;
  • тот же механизм используется в более сложных задачах — переводе и обучении по примерам.

Задачка из набора: почему индукционная голова не может возникнуть в однослойной модели? Ответ: оценка внимания зависит только от токена-запроса и токена-ключа, а индукции нужно смотреть на ключ по значению соседнего с ним токена — эту информацию в позицию ключа должна сначала перенести другая голова.

Красивая проверка: подайте модели последовательность случайных токенов, повторённую дважды. На первой половине потери высокие (угадать нечего), на второй — резко падают: модель «узнаёт» повтор, хотя в обучающих данных ничего подобного не было. Такое обобщение за пределы распределения — сильное свидетельство того, что цепь понята правильно.

  1. Самый простой путь — Colab. У каждого набора на странице есть ссылки «exercises» и «solutions» на ноутбуки в Colab. Это вариант, который авторы рекомендуют большинству.
  2. Локально. Клонируйте репозиторий git clone https://github.com/ARENA-education/ARENA_materials.git. Скрипт install.sh рассчитан на облачные машины (RunPod, Vast.ai): ставит Miniconda, окружение arena-env с Python 3.13 и пакеты из requirements.txt (PyTorch 2.11+, TransformerLens, einops, jaxtyping, wandb, Inspect и др.). На своей машине лучше прочитать скрипт и выполнить нужные шаги вручную в отдельном окружении (урок 0.1).
  3. Упражнения лежат в chapterN_*/exercises/partNN_*/: файлы упражнений, решений и тестов. Правите файл упражнений, запускаете ячейку с тестом — видите, прошло или нет.
  4. Ошибки в материалах авторы просят сообщать в канал #errata их Slack.

Проверьте интуицию «MLP как пары ключ → значение» из набора 1.1 — без библиотек и скачиваний:

import numpy as np
rng = np.random.default_rng(0)
d_model, d_mlp = 8, 32 # как в GPT-2: d_mlp = 4 * d_model
W_in = rng.normal(size=(d_model, d_mlp)) # столбцы W_in — «входные направления» нейронов
W_out = rng.normal(size=(d_mlp, d_model)) # строки W_out — «выходные направления»
x = rng.normal(size=d_model) # вектор остаточного потока в одной позиции
gelu = lambda z: 0.5 * z * (1 + np.tanh(np.sqrt(2 / np.pi) * (z + 0.044715 * z**3)))
whole = gelu(x @ W_in) @ W_out # MLP целиком (без смещений)
by_neuron = sum(gelu(x @ W_in[:, i]) * W_out[i, :] for i in range(d_mlp)) # сумма вкладов нейронов
print(np.allclose(whole, by_neuron)) # True: MLP = сумма «ключ → значение» по нейронам
acts = gelu(x @ W_in)
top = np.argsort(-np.abs(acts))[:3]
print("сильнее всего сработали нейроны", top, "с активациями", acts[top].round(2))

Ожидаемый вывод:

True
сильнее всего сработали нейроны [8 4 9] с активациями [7.77 7.08 5.69]

Дальше — по плану:

  1. После уроков 4.6.2–4.6.4 сделайте 1.1 целиком (разделы 1–3 обязательно, 4 — по желанию): это проверка того, что ваш GPT совпадает с эталонным до знака.
  2. После урока 9.3.1 — 1.2, затем 1.5.1 и 1.4.1.
  3. После урока 9.3.2 — 1.5.4 (теория) и практический набор по SAE.
  4. После урока 6.3.2 — 2.3 и 2.4 (RLHF на своём трансформере).
ENRU
mechanistic interpretabilityмеханистическая интерпретируемость
residual streamостаточный поток
attention pattern, attention headшаблон внимания, голова внимания
logit lens, direct logit attributionlogit lens, прямая атрибуция логитов
induction head / circuit, previous token headиндукционная голова / цепь, голова предыдущего токена
K-composition, QK / OV circuitK-композиция, QK- / OV-цепь
hook, activation cacheхук, кэш активаций
ablation, activation patchingабляция, подмена активаций
linear probe, steering vector, function vectorлинейный зонд, вектор управления, вектор функции
sparse autoencoder (SAE), transcoderразреженный автоэнкодер, транскодер
superpositionсуперпозиция
grokkingгрокинг (внезапное обобщение после долгого переобучения)
threat model, elicitationмодель угроз, выявление способностей
AI controlконтроль ИИ