Модуль 9. AI-стек Yandex Cloud: карта сервисов и деньги

Цель модуля: получить карту AI-стека Yandex Cloud и не потеряться в ней: какой сервис за что отвечает в задаче дообучения, как устроены доступы (folder_id, сервисный аккаунт, API-ключ, роли), где живут квоты GPU-конфигураций и как не сжечь грант забытым ноутбуком. После модуля у вас есть рабочий каталог, сервисный аккаунт с ключом и проверенный curl-ом вызов базовой модели.

Перед началом: модули 4–8 — вы знаете, что тюните, на каких данных и как будете это оценивать. Инструменты: консоль Yandex Cloud, curl, python3 (для практики модулей 10–11). Нужен аккаунт Yandex Cloud со стартовым грантом. Трудоёмкость: ~2 ч (разбор 50 мин · практика 70 мин).

🔥 «Дообучим в облаке» — в каком сервисе?

План тюнинга готов, грант получен. Разработчик открывает консоль Yandex Cloud и видит каталог из сотни сервисов. Действует по привычке бэкендера: поднимает виртуальную машину с GPU, ставит на неё Jupyter, неделю колдует с драйверами — и тратит половину гранта ещё до первого обучения. А нужна была ему была связка из двух вызовов SDK в AI Studio.

Вторая классика — обратная: команду предупредили «GPU дорого», она об этом помнит ровно до первого trainer.train(). Ноутбук с A100 остался работать на выходные; в понедельник грант закончился. Обучение шло 40 минут.

Обе истории — про отсутствие карты. Этот модуль даёт её: какие сервисы участвуют, кто за что отвечает, где деньги утекают. Карта — не энциклопедия, а способ за минуту ответить «куда идти с этой задачей».

📖 9.1. Карта: кто чем занимается в задаче дообучения

Карта AI-стека Yandex Cloud

На схеме — три контура. Прочитайте её как маршрут вашего запроса: вы (скрипт или ноутбук) идёте либо в AI Studio через SDK, либо в DataSphere-ноутбук; результат — либо URI дообучённой модели, либо свои чекпойнты; дальше — ваш сервис с fallback и логами (модуль 12).

AI Studio (Foundation Models) — управляемые модели Яндекса: генерация YandexGPT и YandexGPT Pro через REST API (есть OpenAI-совместимый режим), эмбеддинги для поиска (модуль 1), ассистенты. Для этого курса главное: LoRA-дообучение YandexGPT Lite и классификаторов на его базе — без единой строки про GPU (модуль 10). Веса чужих моделей туда не загрузить.

DataSphere — Jupyter-ноутбуки с GPU-конфигурациями: любые open-weights модели с HuggingFace, свой код, transformers + PEFT (модуль 11). Платите за время работы конфигурации — отсюда правило «ноутбук с GPU выключай».

Object Storage — S3-совместимое хранилище: датасеты до тюнинга, чекпойнты и адаптеры после. Между проектами DataSphere и на случай «перенести куда угодно».

Обвязка: Serverless Containers и API Gateway, если нужен свой прокси над моделями; ВМ с GPU (vLLM/Ollama) — если в проде нужны собственные веса (модуль 11).

ЗадачаКуда идтиМодуль
Вызов YandexGPT из кодаAI Studio, REST API10, 12
Дообучение YandexGPT Lite (стиль, формат)AI Studio, тюнинг через SDK10
Классификатор на базе YandexGPT LiteAI Studio10
QLoRA на Qwen/Llama, свои весаDataSphere + Object Storage11
Поиск по базе знаний (эмбеддинги)AI Studio, эмбеддинги— (курс по RAG)

Актуальные состав и возможности сервисов сверяйте с документацией: https://aistudio.yandex.ru и https://yandex.cloud/ru/docs/datasphere/.

📖 9.2. Доступы: folder_id, сервисный аккаунт, API-ключ, роль

У каждого вызова в YC есть три вопроса: «в каком каталоге?», «кто спрашивает?», «что ему можно?». Ответы — folder_id, сервисный аккаунт (SA) и роль.

  • folder_id — идентификатор каталога, «пространство имён» для ресурсов. Любой SDK-клиент создаётся с ним; без folder_id облако не знает, куда положить ваш датасет и откуда списать юниты.
  • Сервисный аккаунт — «робот» для программных вызовов, а не для людей. Заводите отдельного SA под задачу тюнинга — его можно отозвать, не трогая людей.
  • API-ключ vs IAM-токен. API-ключ — постоянный секрет для сервисных сценариев (SDK AI Studio принимает его в параметре auth); IAM-токен — временный, для человеко-ориентированных вызовов. Для скриптов тюнинга практичнее API-ключ.
  • Роль ai.languageModels.user — минимальная роль для работы с моделями AI Studio, ровно её выдаёт туториал дообучения сервисному аккаунту. Принцип наименьших привилегий работает и здесь: не выдавайте SA роль администратора каталога «на всякий случай».

Главное правило: ключи — в секретах, не в коде и не в репозитории. Утёкший в git API-ключ — это чужие траты вашего гранта до лимита каталога. Для практики: переменные окружения локально, секреты проекта в DataSphere (переменные API_KEY и FOLDER_ID — их будет читать ноутбук модулей 10–11). Коммит ключа даже «на минуту» — уже утечка: история git бессмертна.

bash
# Загрузка секретов из окружения — единый паттерн для модулей 10 и 11
export FOLDER_ID="b1g..."           # идентификатор каталога
export API_KEY="AQVN..."            # API-ключ сервисного аккаунта
# ничего из этого не должно попасть в git: проверьте .gitignore

📖 9.3. DataSphere: конфигурации GPU и квоты

DataSphere-проект — это ноутбуки и ресурсы; каждой ячейке назначается конфигурация вычислений. Для QLoRA важны GPU-конфигурации (детали — модуль 11):

КонфигурацияGPUVRAMДля чего в этом курсе
gt4.1NVIDIA T416 ГБQLoRA моделей 3–4B; самый дешёвый вход
g1.1NVIDIA V10032 ГБQLoRA 7–8B с запасом по памяти
g2.1NVIDIA A10080 ГБбольшие модели/контексты; дороже всех

Существуют и другие (g1.2/g1.4, g2.2/g2.4, gt4i.1 на T4i 24 ГБ; часть — только для юрлиц) — полный список и характеристики смотрите в документации: https://yandex.cloud/ru/docs/datasphere/concepts/configurations.

Квоты — то, о чём думают до старта, а не во время него. По умолчанию квоты на GPU-конфигурации часто равны 0–1 инстансу — запрос на GPU может просто отклониться. Проверьте квоты своего каталога заранее и поднимите нужные через запрос в техподдержку (это может занять время — ещё аргумент делать это до того, как сядете учить модель). Хранилище проекта DataSphere — до 4096 ГБ, для датасетов и чекпойнтов курса этого достаточно с запасом.

📖 9.4. Деньги: грант, юниты и выключенный ноутбук

Стартовый грант YC покрывает эксперименты курса, но только при двух привычках: считать до, выключать после.

Юниты DataSphere. Тарификация — за время работы вычислительной конфигурации; у каждой конфигурации своя ставка в юнитах за час (актуальные тарифы смотрите в документации DataSphere). Следствие: цена зависит от того, как долго живёт конфигурация, а не только от того, идёт ли обучение. Ноутбук с A100, забытый на выходные, стоит как десяток полноценных прогонов обучения.

Правила, которые сохраняют грант:

  1. Ноутбук с GPU выключай. Закончили ячейку с обучением или ушли на обед — остановите интерпретатор/конфигурацию. Проверяйте индикатор активной конфигурации перед тем, как закрыть вкладку: закрытая вкладка ≠ остановленный GPU.
  2. Начинайте с дешёвой конфигурации. Отладка кода — на CPU или gt4.1; переходите на g1.1/g2.1, только когда код уже работает.
  3. Тюнинг YandexGPT Lite (модуль 10) — это тоже юниты за GPU-время обучения, но без ваших забот о конфигурации: облако считает само.
  4. Оценка до запуска. Прикидка из трёх чисел: ставка конфигурации в юнитах × ожидаемые часы × запас ×2 на повторы и отладку. Сравните с остатком гранта — до, а не после.

Панель биллинга в консоли — ваш дашборд на весь курс; заглядывайте туда после каждой практики модулей 9–11.

📖 9.5. Компромиссы

  • AI Studio тюнинг vs DataSphere QLoRA. AI Studio — быстро, без GPU-опыта, но только YandexGPT Lite и без весов на руках; DataSphere — любые модели и полная свобода ценой вашей возни с конфигурацией, квотами и юнитами.
  • API-ключ vs IAM-токен. Ключ удобен для скриптов и ноутбуков, но живёт вечно — утечка дороже; IAM-токен истекает сам, но его надо обновлять.
  • Дешёвая конфигурация vs скорость. gt4.1 экономит грант, но обучение дольше; g2.1 быстрее, но ставка в юнитах выше. Для первых прогонов время дешевле денег — наоборот только в проде.
  • Минимальная роль vs «чтобы точно работало». ai.languageModels.user закрывает задачи курса; широкие роли упрощают старт и расширяют радиус аварии при утече ключа.
  • Секреты в DataSphere vs переменные окружения. Секреты проекта удобны команде и не утекают в ноутбуки; env-переменные проще для локальных скриптов и требуют дисциплины с .gitignore.

💻 Практика

Нужен аккаунт Yandex Cloud со стартовым грантом. Всё делается в консоли и терминале; стоимость практики — копейки на генерации base-модели.

  1. Каталог (10 мин). В консоли создайте отдельный каталог для курса (например, llm-course). Скопируйте его folder_id — он понадобится в каждом скрипте модулей 10–11.
  2. Сервисный аккаунт и роль (10 мин). В разделе каталога создайте SA (например, gpt-user) и назначьте ему роль ai.languageModels.user. Больше ролей не нужно.
  3. API-ключ (10 мин). Для SA выпустите API-ключ. Экспортируйте в окружение: export FOLDER_ID=... и export API_KEY=... (паттерн из 9.2). Проверьте, что файл с ключами не попадает в git.
  4. Проверка curl-ом (20 мин). Убедитесь, что ключ и роль работают — вызовите генерацию базовой модели. Формат запроса меняется между версиями API, поэтому точные URL и заголовки сверьте с актуальной документацией AI Studio (https://aistudio.yandex.ru/docs/ru/); по смыслу запрос таков:
bash
# Схема запроса: точный URL/заголовки сверьте с документацией AI Studio
curl -s "https://llm.api.cloud.yandex.net/foundationModels/v1/completion" \
  -H "Authorization: Api-Key ${API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "modelUri": "gpt://'${FOLDER_ID}'/yandexgpt-lite",
    "completionOptions": {"temperature": 0.6, "maxTokens": 100},
    "messages": [{"role": "user", "text": "Привет! Кто ты?"}]
  }'

В ответе — JSON с текстом. Если 40x — читайте тело ошибки: обычно это (folder_id не тот, у SA нет роли, ключ скопирован с пробелом). 5. Разбор ответа (10 мин). Поймите структуру ответа: где текст, где токены, что такое modelVersion. Это ваш первый «вызов модели из кода» — в модуле 10 его делает SDK, а в модуле 12 — бэкенд. 6. Гигиена (10 мин). Убедитесь, что папка с ключами в .gitignore (git status чист). Ключ из практики можно удалить и выпустить новый к модулю 10 — пара минут.

🧩 Quiz "Проверь себя"

1. Зачем проекту DataSphere правило «ноутбук с GPU выключай»?
2. Что из перечисленного НЕЛЬЗЯ делать с API-ключом?
3. Какая роль нужна сервисному аккаунту для задач тюнинга и генерации AI Studio?
4. Квоты на GPU-конфигурации по умолчанию часто 0–1. Когда этим заниматься?
5. Где дообучают YandexGPT Lite под стиль ответов?

✅ Итоги модуля

  • Нарисовать по памяти контуры карты: AI Studio, DataSphere, Object Storage, обвязка — и кто из них отвечает за вашу задачу.
  • Создать каталог курса, сервисный аккаунт с ролью ai.languageModels.user и API-ключ.
  • Проверить вызов базовой модели curl-ом и разобрать структуру ответа.
  • Назвать GPU-конфигурации gt4.1/g1.1/g2.1 и их VRAM.
  • Проверить квоты каталога до запуска любого обучения.
  • Сформулировать три правила сохранения гранта из 9.4.

🔗 Мостик к Модулю 10

Карта получена, доступы работают, curl вернул первый ответ. Начинаем с самого дешёвого и короткого пути на карте: LoRA-тюнинг YandexGPT Lite прямо через AI Studio SDK — от pip install до собственного URI дообучённой модели. Датасет у вас уже лежит с модуля 5, golden set — с модуля 8; в модуле 10 они встретятся.