Перейти к содержимому
ПереводыGoogle и DeepMind

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 нет.

№Курс (оригинал → по-русски)ЛабораторныеВремяПеревод
1Build Your Own Small Language Model → «Постройте свою маленькую языковую модель»1.1–1.5: распределение над следующим словом, n-граммы, сравнение с Gemma, подготовка данных, обучение SLM≈2,5 ччасть 1, часть 2
2Represent Your Language Data → «Представьте свои языковые данные»2.1–2.6: чистка текста, токенизация по символам и словам, подслова Gemma, свой BPE, эмбеддинги, SLM на BPE≈2 ччасть 1, часть 2
3Design and Train Neural Networks → «Спроектируйте и обучите нейросеть»3.1–3.8: сигнал и шум, однослойная сеть, MLP своими руками, гиперпараметры, борьба с переобучением, градиенты в JAX, оптимизаторы Keras≈2,5 ччасть 1, часть 2
4Discover the Transformer Architecture → «Откройте архитектуру трансформера»4.1–4.5: веса внимания Gemma, формула внимания, маска и многоголовое внимание, позиционные эмбеддинги, параметры трансформера≈1,5 ччасть 1, часть 2
5Finetune Your Model → «Дообучите свою модель»5.1–5.6: промпты к SLM, формат диалога, полное дообучение SLM, попытка полного дообучения Gemma, LoRA своими руками, LoRA для Gemma≈2,5 ччасть 1, часть 2
6Align Your Model → «Выровняйте свою модель»в репозитории пока нет—см. ниже
7Accelerate Your Model → «Ускорьте свою модель»7.1–7.6: модели разного размера, FLOPs обучения, «упираемся в стену» памяти, оценка памяти GPU, bfloat16, накопление градиентов≈2 ччасть 1, часть 2
8Capstone: Develop Your Model for Real-World Impact → «Итоговый проект: модель, полезная в реальном мире»8.1–8.9: три трека (классификация, суммаризация, диалог) по три ноутбука6–10 ч на трек + обучениепутеводитель

Сквозной набор данных программы — Africa Galore: 232 коротких абзаца на английском об африканской культуре, еде, природе и истории. На нём обучаются все маленькие модели курсов 1–5, а в итоговом проекте используется его расширенная версия. Набор маленький специально: модель обучается за минуты, а её ошибки легко увидеть глазами.

Курс о выравнивании (alignment) — как сделать так, чтобы модель вела себя полезно, честно и безопасно — есть в списке README, но лабораторных к нему в репозитории нет (на 2 сентября 2026 года). Мы не пересказываем то, чего не видели. Ту же тему в курсе ChinaAI закрывают уроки «Основы RL для языковых моделей», «RLHF — reward model и PPO», «DPO — предпочтения без RL» и «Выравнивание: чего мы хотим от модели и как этого добиться». Когда лабораторные курса 6 появятся, перевод будет на отдельной странице этой группы.

Курс 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
Модуль 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.6FLOPs, память на параметры, градиенты и 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: каждая лабораторная опирается на предыдущие.

Все ноутбуки построены по одному шаблону. Повторяющиеся служебные части переведены здесь один раз, а на страницах курсов мы их пропускаем.

  1. Заголовок, одно предложение о цели и время (например, «15 минут»).
  2. Обзор (Overview) — зачем эта лабораторная и как она связана с предыдущими материалами.
  3. Чему вы научитесь (What you will learn) и Задачи (Tasks) — что именно вы сделаете.
  4. Как пользоваться Colab и, если нужно, Как подключить GPU — переведены ниже.
  5. Импорты — первая ячейка ставит пакет курса ai_foundations и подключает библиотеки.
  6. Основная часть: текст, ячейки с кодом и три вида выделенных блоков:
    • «ℹ️ Info» — справка о функции или понятии; без неё следующие задания не решить;
    • «💻 Your task» — задание: что именно реализовать в следующей ячейке;
    • «💭 Reflection» — вопрос на подумать, «💡 Tip» — совет (в некоторых лабораторных).
  7. Проверка: после почти каждого задания идёт ячейка с функцией из ai_foundations.feedback, которая проверяет ваш код и пишет, что не так.
  8. Итоги (Summary), Литература (References) и Решения (Solutions) — эталонные ответы под раскрывающимися заголовками.

Перевод служебного раздела «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: это заново выполнит все ячейки до текущей.

Перевод раздела «Using Colab with a GPU».

GPU (видеокарта) — особый вид оборудования, который сильно ускоряет некоторые вычисления моделей машинного обучения. Некоторые задания лабораторной тоже пойдут гораздо быстрее на GPU. Чтобы запустить лабораторную на GPU:

  1. В верхнем меню нажмите Runtime (Среда выполнения).
  2. Выберите Change runtime type (Сменить среду выполнения).
  3. Во всплывающем окне в разделе Hardware Accelerator выберите GPU (обычно он называется T4 GPU).
  4. Нажмите Save.

Сессия Colab перезапустится уже с доступом к GPU. Учтите, что доступ к GPU ограничен и иногда получить его не удаётся. Все задания всё равно будут работать, только медленнее, и некоторых ячеек придётся подождать дольше.

Перевод вступления к разделу «Solutions», одинакового во всех лабораторных.

Следующие ячейки содержат эталонные решения заданий. Если вы действительно застряли после собственных попыток, можете заглянуть в них.

Мы советуем смотреть решения только после того, как вы несколько раз попробовали решить задание сами. Лучший способ освоить трудные понятия информатики и искусственного интеллекта — отлаживать свой код по кусочку, пока он не заработает, а не копировать готовое решение.

Если застряли, сначала попробуйте отладить код: например, добавьте print, чтобы видеть, что код делает на каждом шаге. Так вы гораздо глубже поймёте и код, и материал, а заодно потренируетесь решать трудные задачи программирования — пригодится и за пределами курса.

Чтобы увидеть решение задания, нажмите на стрелку слева от его названия. Если вы подсмотрели решение, не копируйте его в ячейки выше: посмотрите и наберите вручную. Так вы поймёте, где ошиблись.

Первая ячейка каждой лабораторной ставит пакет курса:

%%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 и другие).

  1. Окружение. Работайте в WSL (Ubuntu), как в уроке «Python и виртуальное окружение»: JAX с CUDA официально поддерживается только на Linux. Создайте отдельное окружение — у программы свои версии библиотек, не смешивайте их с PyTorch-окружением курса.

    Окно терминала
    mkdir -p ~/gdm && cd ~/gdm
    git clone https://github.com/google-deepmind/ai-foundations.git # ноутбуки и пакет курса
    python3 -m venv .venv-gdm && source .venv-gdm/bin/activate # отдельное окружение
    pip install --upgrade pip
    pip install "jax[cuda12]==0.7.2" # JAX с поддержкой CUDA 12
    pip install -e ./ai-foundations # пакет курса и его зависимости
    pip install jupyterlab tensorflow scikit-learn matplotlib tqdm keras_nlp

    tensorflow нужен только для tf.data (перемешивание и батчи) в лабораторных 1.5, 2.6 и курса 5; без дополнения [and-cuda] он работает на CPU и не мешает JAX. scikit-learn, matplotlib, tqdm и keras_nlp нужны в курсах 3 и 8 (в Colab они стоят заранее).

  2. Одна видеокарта на ноутбук. 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)].

  3. Уберите строки установки. В первой ячейке закомментируйте !pip install … — всё уже стоит, а повторная установка jax[cuda12] может заменить ваши версии. Ячейки с %%capture можно оставить.

  4. Замените 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).

  5. 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 не требуют.

ЛабораторныеГде запускатьПримечание
1.1, 1.2, 1.4, 2.1–2.4, 3.2–3.8, 4.4, 5.2, 7.2, 7.4CPUЧистый 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одна GPULoRA, bfloat16 и накопление градиентов на Gemma 1B / 4B
8.1–8.9одна GPUДообучение Gemma 1B для своего проекта: 1–3 часа

Все лабораторные рассчитаны на одну видеокарту, распределённого обучения в программе нет. Как обучать на всех четырёх картах, разобрано в уроке «Четыре видеокарты: DDP и FSDP на практике».

В лабораторных (Keras 3 + JAX)В курсе ChinaAI (PyTorch)Комментарий
jax.numpy as jnp, jnp.arraytorch.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ошибка нехватки памяти