AI Research Foundations: обзор программы
Путеводитель по восьми курсам Google DeepMind и UCL: что в каждом курсе, в каком порядке проходить лабораторные вместе с курсом ChinaAI и как запускать их на своей машине вместо Colab.
AI Research Foundations («Основы исследований в ИИ») — программа из восьми коротких курсов, которую Google DeepMind сделала вместе с Университетским колледжем Лондона (UCL). Она проводит через все строительные блоки современной языковой модели: от n-граммной модели на листке бумаги до дообучения Gemma с LoRA и подсчёта памяти видеокарты. Каждый курс — это статьи и видео на платформе Google Skills плюс практические лабораторные в Colab. Лабораторные открыты в репозитории google-deepmind/ai-foundations — их мы и переводим.
Эта страница — путеводитель: что в каком курсе, где перевод, в каком порядке проходить лабораторные вместе с курсом ChinaAI, как устроена типичная лабораторная и как запустить её у себя на машине, а не в Colab.
Восемь курсов программы
Заголовок раздела «Восемь курсов программы»Курсы выходят по очереди, начиная с первого. На момент перевода в репозитории есть лабораторные курсов 1–5, 7 и 8;
папки course_6 нет.
| № | Курс (оригинал → по-русски) | Лабораторные | Время | Перевод |
|---|---|---|---|---|
| 1 | Build Your Own Small Language Model → «Постройте свою маленькую языковую модель» | 1.1–1.5: распределение над следующим словом, n-граммы, сравнение с Gemma, подготовка данных, обучение SLM | ≈2,5 ч | часть 1, часть 2 |
| 2 | Represent Your Language Data → «Представьте свои языковые данные» | 2.1–2.6: чистка текста, токенизация по символам и словам, подслова Gemma, свой BPE, эмбеддинги, SLM на BPE | ≈2 ч | часть 1, часть 2 |
| 3 | Design and Train Neural Networks → «Спроектируйте и обучите нейросеть» | 3.1–3.8: сигнал и шум, однослойная сеть, MLP своими руками, гиперпараметры, борьба с переобучением, градиенты в JAX, оптимизаторы Keras | ≈2,5 ч | часть 1, часть 2 |
| 4 | Discover the Transformer Architecture → «Откройте архитектуру трансформера» | 4.1–4.5: веса внимания Gemma, формула внимания, маска и многоголовое внимание, позиционные эмбеддинги, параметры трансформера | ≈1,5 ч | часть 1, часть 2 |
| 5 | Finetune Your Model → «Дообучите свою модель» | 5.1–5.6: промпты к SLM, формат диалога, полное дообучение SLM, попытка полного дообучения Gemma, LoRA своими руками, LoRA для Gemma | ≈2,5 ч | часть 1, часть 2 |
| 6 | Align Your Model → «Выровняйте свою модель» | в репозитории пока нет | — | см. ниже |
| 7 | Accelerate Your Model → «Ускорьте свою модель» | 7.1–7.6: модели разного размера, FLOPs обучения, «упираемся в стену» памяти, оценка памяти GPU, bfloat16, накопление градиентов | ≈2 ч | часть 1, часть 2 |
| 8 | Capstone: Develop Your Model for Real-World Impact → «Итоговый проект: модель, полезная в реальном мире» | 8.1–8.9: три трека (классификация, суммаризация, диалог) по три ноутбука | 6–10 ч на трек + обучение | путеводитель |
Сквозной набор данных программы — Africa Galore: 232 коротких абзаца на английском об африканской культуре, еде, природе и истории. На нём обучаются все маленькие модели курсов 1–5, а в итоговом проекте используется его расширенная версия. Набор маленький специально: модель обучается за минуты, а её ошибки легко увидеть глазами.
Курс 6. Align Your Model
Заголовок раздела «Курс 6. Align Your Model»Курс о выравнивании (alignment) — как сделать так, чтобы модель вела себя полезно, честно и безопасно — есть в списке README, но лабораторных к нему в репозитории нет (на 2 сентября 2026 года). Мы не пересказываем то, чего не видели. Ту же тему в курсе ChinaAI закрывают уроки «Основы RL для языковых моделей», «RLHF — reward model и PPO», «DPO — предпочтения без RL» и «Выравнивание: чего мы хотим от модели и как этого добиться». Когда лабораторные курса 6 появятся, перевод будет на отдельной странице этой группы.
Как проходить вместе с курсом ChinaAI
Заголовок раздела «Как проходить вместе с курсом ChinaAI»Курс ChinaAI написан на PyTorch, лабораторные AI Research Foundations — на JAX и Keras. Это плюс, а не минус: увидев
ту же идею в другом фреймворке, вы отделяете суть от синтаксиса. Но не смешивайте их в одном проекте и не переносите
привычки одного фреймворка в другой (в JAX массивы неизменяемы, в Keras цикл обучения спрятан в model.fit).
Порядок в программе DeepMind такой: сначала языковая модель целиком (курсы 1–2), потом нейросети (курс 3), потом трансформер изнутри (курс 4). В ChinaAI нейросети идут раньше (ступень 3), а языковые модели — на ступени 4. Удобнее всего идти по ChinaAI и делать лабораторные как дополнительную практику к своим урокам:
flowchart LR S3["Ступень 3: нейросети"] --> C3["Курс 3: лаб. 3.2–3.8"] S41["4.1 Языковые модели"] --> C1["Курс 1: лаб. 1.1–1.3"] S42["4.2–4.3 Токены и эмбеддинги"] --> C2["Курс 1: 1.4; курс 2: 2.1–2.5"] S44["4.4–4.5 Внимание и трансформер"] --> C4["Курс 4: 4.1–4.5"] S46["4.6 GPT с нуля"] --> C15["1.5, 2.6, 3.1"] S5["Ступень 5: масштаб и точность"] --> C7["Курс 7: 7.1–7.6"] S6["Ступень 6: SFT и LoRA"] --> C5["Курс 5: 5.1–5.6"] S10["Ступень 10: выпускной проект"] --> C8["Курс 8: итоговый проект"]
| Модуль ChinaAI | Лабораторные | Зачем |
|---|---|---|
| 3.1 «Нейрон, слой, MLP», 3.3 «nn.Module, оптимизаторы, цикл обучения» | 3.2, 3.3, 3.4, 3.7, 3.8 | Та же сеть на JAX и Keras: граница решений, MLP вручную, jax.grad, оптимизаторы |
| 2.1 «Обобщение, переобучение, регуляризация», 3.4 «Остаточные связи и регуляризация» | 3.5, 3.6 | Гиперпараметры, weight decay, dropout, ранняя остановка на живых кривых обучения |
| 4.1 «Что такое языковая модель» … «Генерация текста и сэмплирование» | 1.1, 1.2, 1.3 | Распределение над следующим словом, n-граммы по словам, сравнение с Gemma |
| 4.2 «Зачем нужны токены», «Byte Pair Encoding с нуля», «Токенизаторы современных моделей» | 1.4, 2.1, 2.2, 2.3, 2.4 | Словарь и id токенов, чистка, закон Ципфа, подслова, свой BPE |
| 4.3 «Слова как векторы» | 2.5 | Эмбеддинги Gemma: близость, аналогии, t-SNE |
| 4.4 «Scaled dot-product self-attention», «Многоголовое внимание» | 4.1, 4.2, 4.3 | Карты внимания Gemma, формула внимания, маска и головы |
| 4.5 «Позиционное кодирование и RoPE», «Блок трансформера» | 4.4, 4.5 | Почему без позиций внимание не видит порядка; сколько параметров в каждом слое |
| 4.6 «GPT на PyTorch», «Цикл обучения LLM» | 1.5, 2.6, 3.1 | Обучить свою SLM, сравнить токенизаторы, увидеть недо- и переобучение |
| 5.1 «Законы масштабирования», 5.4 «Смешанная точность», 5.7 «Как устроена видеокарта» | 7.1–7.6 | FLOPs, память на параметры, градиенты и Adam, bfloat16, накопление градиентов |
| 6.1 «От базовой модели к ассистенту», «SFT» | 5.1, 5.2, 5.3 | Шаблон диалога, маскирование, полное дообучение маленькой модели |
| 6.2 «LoRA и QLoRA», «Практика — LoRA-дообучение Qwen» | 5.4, 5.5, 5.6 | Почему полное дообучение не влезает, LoRA своими руками и на Gemma |
| 10 «План выпускного проекта» | 8.1–8.9 | Шаблон проекта: данные → дообучение → оценка; можно взять за основу своего |
Если хочется пройти программу DeepMind отдельным треком (например, для повторения после ступени 4), идите по порядку курсов 1 → 2 → 3 → 4 → 5 → 7 → 8: каждая лабораторная опирается на предыдущие.
Как устроена каждая лабораторная
Заголовок раздела «Как устроена каждая лабораторная»Все ноутбуки построены по одному шаблону. Повторяющиеся служебные части переведены здесь один раз, а на страницах курсов мы их пропускаем.
- Заголовок, одно предложение о цели и время (например, «15 минут»).
- Обзор (Overview) — зачем эта лабораторная и как она связана с предыдущими материалами.
- Чему вы научитесь (What you will learn) и Задачи (Tasks) — что именно вы сделаете.
- Как пользоваться Colab и, если нужно, Как подключить GPU — переведены ниже.
- Импорты — первая ячейка ставит пакет курса
ai_foundationsи подключает библиотеки. - Основная часть: текст, ячейки с кодом и три вида выделенных блоков:
- «ℹ️ Info» — справка о функции или понятии; без неё следующие задания не решить;
- «💻 Your task» — задание: что именно реализовать в следующей ячейке;
- «💭 Reflection» — вопрос на подумать, «💡 Tip» — совет (в некоторых лабораторных).
- Проверка: после почти каждого задания идёт ячейка с функцией из
ai_foundations.feedback, которая проверяет ваш код и пишет, что не так. - Итоги (Summary), Литература (References) и Решения (Solutions) — эталонные ответы под раскрывающимися заголовками.
Как пользоваться Google Colab
Заголовок раздела «Как пользоваться Google Colab»Перевод служебного раздела «How to use Google Colaboratory (Colab)».
Google Colaboratory (Google Colab) — платформа, на которой можно запускать код на Python прямо в браузере. Код записан в ячейках (cells), которые выполняются на удалённом сервере.
Чтобы запустить ячейку, наведите на неё курсор и нажмите кнопку run слева — круг с треугольником (▶). Можно
также щёлкнуть по ячейке и нажать Ctrl+Enter (на Mac — ⌘+Enter). Попробуйте на этой ячейке — она напечатает
сегодняшний день недели:
from datetime import datetime
print(f"Today is {datetime.today():%A}.")Обратите внимание: порядок запуска ячеек важен. Работая над лабораторной, всегда запускайте все ячейки по порядку, иначе код может не сработать. Если вы сделаете перерыв, Colab может отключить вас от сервера — тогда перед продолжением нужно снова выполнить все ячейки. Чтобы это было проще, выделите ячейку, на которой остановились, и выберите в меню Runtime → Run before (Среда выполнения → Выполнить предшествующие) или нажмите Ctrl/⌘+F8: это заново выполнит все ячейки до текущей.
Как подключить GPU в Colab
Заголовок раздела «Как подключить GPU в Colab»Перевод раздела «Using Colab with a GPU».
GPU (видеокарта) — особый вид оборудования, который сильно ускоряет некоторые вычисления моделей машинного обучения. Некоторые задания лабораторной тоже пойдут гораздо быстрее на GPU. Чтобы запустить лабораторную на GPU:
- В верхнем меню нажмите Runtime (Среда выполнения).
- Выберите Change runtime type (Сменить среду выполнения).
- Во всплывающем окне в разделе Hardware Accelerator выберите GPU (обычно он называется
T4 GPU). - Нажмите Save.
Сессия Colab перезапустится уже с доступом к GPU. Учтите, что доступ к GPU ограничен и иногда получить его не удаётся. Все задания всё равно будут работать, только медленнее, и некоторых ячеек придётся подождать дольше.
Решения
Заголовок раздела «Решения»Перевод вступления к разделу «Solutions», одинакового во всех лабораторных.
Следующие ячейки содержат эталонные решения заданий. Если вы действительно застряли после собственных попыток, можете заглянуть в них.
Мы советуем смотреть решения только после того, как вы несколько раз попробовали решить задание сами. Лучший способ освоить трудные понятия информатики и искусственного интеллекта — отлаживать свой код по кусочку, пока он не заработает, а не копировать готовое решение.
Если застряли, сначала попробуйте отладить код: например, добавьте print, чтобы видеть, что код делает на каждом
шаге. Так вы гораздо глубже поймёте и код, и материал, а заодно потренируетесь решать трудные задачи
программирования — пригодится и за пределами курса.
Чтобы увидеть решение задания, нажмите на стрелку слева от его названия. Если вы подсмотрели решение, не копируйте его в ячейки выше: посмотрите и наберите вручную. Так вы поймёте, где ошиблись.
Пакет ai_foundations
Заголовок раздела «Пакет ai_foundations»Первая ячейка каждой лабораторной ставит пакет курса:
%%capture# Ставим пакет курса прямо из репозитория на GitHub.!pip install "git+https://github.com/google-deepmind/ai-foundations.git@main"В пакете — всё, что не относится к теме конкретной лабораторной: загрузчики набора Africa Galore и моделей Gemma
(generation), готовые слои трансформера (transformers), токенизатор BPE (tokenization), функции обучения
(training), графики (visualizations) и автоматические проверки ваших решений (feedback.course_N). Строка
%%capture прячет вывод установки, ! в начале строки означает «выполнить как команду терминала».
Как запускать лабораторные на своей машине
Заголовок раздела «Как запускать лабораторные на своей машине»Colab удобен, но бесплатная T4 — это 16 ГБ памяти и очередь. У вас мощнее машина: четыре RTX 4080 по 32 ГБ.
Ниже — как запустить те же ноутбуки локально в JupyterLab. Требования взяты из pyproject.toml репозитория
(Python ≥ 3.10, jax==0.7.2, keras==3.13.2, keras_hub==0.26.0, gemma==3.0.0 и другие).
-
Окружение. Работайте в WSL (Ubuntu), как в уроке «Python и виртуальное окружение»: JAX с CUDA официально поддерживается только на Linux. Создайте отдельное окружение — у программы свои версии библиотек, не смешивайте их с PyTorch-окружением курса.
Окно терминала mkdir -p ~/gdm && cd ~/gdmgit clone https://github.com/google-deepmind/ai-foundations.git # ноутбуки и пакет курсаpython3 -m venv .venv-gdm && source .venv-gdm/bin/activate # отдельное окружениеpip install --upgrade pippip install "jax[cuda12]==0.7.2" # JAX с поддержкой CUDA 12pip install -e ./ai-foundations # пакет курса и его зависимостиpip install jupyterlab tensorflow scikit-learn matplotlib tqdm keras_nlptensorflowнужен только дляtf.data(перемешивание и батчи) в лабораторных 1.5, 2.6 и курса 5; без дополнения[and-cuda]он работает на CPU и не мешает JAX.scikit-learn,matplotlib,tqdmиkeras_nlpнужны в курсах 3 и 8 (в Colab они стоят заранее). -
Одна видеокарта на ноутбук. JAX по умолчанию сразу забирает 75% памяти каждой видимой GPU. Чтобы одна лабораторная не заняла все четыре карты, запускайте Jupyter так:
Окно терминала # Видна только первая карта; память выделяется по мере надобности, а не 75% сразу.CUDA_VISIBLE_DEVICES=0 XLA_PYTHON_CLIENT_PREALLOCATE=false jupyter labВторую лабораторную параллельно можно открыть на другой карте:
CUDA_VISIBLE_DEVICES=1 … jupyter lab --port 8889. Проверить, что JAX видит GPU:python -c "import jax; print(jax.devices())"→[CudaDevice(id=0)]. -
Уберите строки установки. В первой ячейке закомментируйте
!pip install …— всё уже стоит, а повторная установкаjax[cuda12]может заменить ваши версии. Ячейки с%%captureможно оставить. -
Замените
google.colab. В Colab секреты читаются черезuserdata.get(...), а Google Drive монтируется черезdrive.mount(...). Локально:import os# Вместо: from google.colab import userdata# os.environ["KAGGLE_USERNAME"] = userdata.get("KAGGLE_USERNAME")# ключи Kaggle берутся из переменных окружения или файла ~/.kaggle/kaggle.json,# поэтому эти строки просто удалите.# Вместо: drive.mount('/content/drive') и путей '/content/drive/MyDrive/...'DATA_DIR = os.path.expanduser("~/gdm/data") # обычная локальная папкаos.makedirs(DATA_DIR, exist_ok=True)и замените в путях
'/content/drive/MyDrive/'наDATA_DIR + '/'. Это нужно в лабораторных 5.4, 5.6, 7.3, 7.5, 7.6 (Kaggle) и во всех ноутбуках курса 8 (Drive и Kaggle). -
Kaggle для Gemma через Keras. Лабораторные 5.4, 5.6, 7.3, 7.5, 7.6 и курс 8 загружают Gemma 3 через
keras_hubс сайта Kaggle. Один раз: зарегистрируйтесь на kaggle.com, на странице модели Gemma 3 нажмите «Request Access» и примите лицензию, в настройках аккаунта создайте API-ключ (скачаетсяkaggle.json) и положите его в~/.kaggle/kaggle.json(chmod 600 ~/.kaggle/kaggle.json). Лабораторные курсов 1–4 и 7.1 берут Gemma из открытого хранилища через пакетgemmaи Kaggle не требуют.
Что запускать на CPU, а что на GPU
Заголовок раздела «Что запускать на CPU, а что на GPU»| Лабораторные | Где запускать | Примечание |
|---|---|---|
| 1.1, 1.2, 1.4, 2.1–2.4, 3.2–3.8, 4.4, 5.2, 7.2, 7.4 | CPU | Чистый Python, NumPy, JAX на маленьких массивах |
| 1.3, 2.5, 4.1–4.3, 7.1 | одна GPU (можно и CPU, но медленно) | Инференс Gemma 1B (в 7.1 и 4B) через пакет gemma |
| 1.5, 2.6, 3.1, 4.5, 5.1, 5.3 | одна GPU | Обучение маленьких трансформеров на Keras: минуты |
| 5.4, 7.3 | одна GPU | Эти лабораторные должны упасть с нехваткой памяти на T4 16 ГБ. На карте 32 ГБ «стена» для Gemma 1B может не наступить — это разобрано в переводах |
| 5.5, 5.6, 7.5, 7.6 | одна GPU | LoRA, bfloat16 и накопление градиентов на Gemma 1B / 4B |
| 8.1–8.9 | одна GPU | Дообучение Gemma 1B для своего проекта: 1–3 часа |
Все лабораторные рассчитаны на одну видеокарту, распределённого обучения в программе нет. Как обучать на всех четырёх картах, разобрано в уроке «Четыре видеокарты: DDP и FSDP на практике».
Keras и JAX для того, кто учится на PyTorch
Заголовок раздела «Keras и JAX для того, кто учится на PyTorch»| В лабораторных (Keras 3 + JAX) | В курсе ChinaAI (PyTorch) | Комментарий |
|---|---|---|
jax.numpy as jnp, jnp.array | torch.tensor | Массивы JAX неизменяемы: вместо x[0] = 1 пишут x = x.at[0].set(1) |
jax.grad(f)(params) | loss.backward(), param.grad | В JAX градиент — это новая функция, а не поле тензора |
keras.layers.Dense(n) | nn.Linear(in, n) | Keras сам узнаёт размер входа при первом вызове |
model.compile(optimizer, loss) + model.fit(x, y, epochs) | свой цикл for epoch …: loss.backward(); opt.step() | В Keras цикл обучения спрятан внутри fit |
keras.optimizers.Adam(learning_rate=…) | torch.optim.Adam(params, lr=…) | Те же алгоритмы, другие имена аргументов |
os.environ["KERAS_BACKEND"] = "jax" | — | Keras 3 умеет работать поверх JAX, TensorFlow и PyTorch; в программе везде JAX |
Подробная таблица и тот же конвейер данных на PyTorch — в конце второй части курса 1.
Словарик
Заголовок раздела «Словарик»| English | Русский |
|---|---|
| lab, notebook, cell | лабораторная, ноутбук, ячейка |
| runtime, hardware accelerator | среда выполнения, аппаратный ускоритель |
| coding activity | задание с кодом |
| reflection | вопрос для размышления |
| reference solution | эталонное решение |
| small language model (SLM) | маленькая языковая модель |
| fine-tuning, full-parameter fine-tuning | дообучение, полное дообучение (всех параметров) |
| parameter-efficient fine-tuning (PEFT), LoRA | экономное дообучение, LoRA (низкоранговая адаптация) |
| alignment | выравнивание |
| capstone project | итоговый проект |
| out-of-memory (OOM) error | ошибка нехватки памяти |