Дата публикации
ai_products

Gemma 4 на своих GPU в Azure: приватный ИИ‑кодер за одну команду

Что нового

Microsoft предлагает готовый шаблон, который поднимает приватного ИИ‑кодера на базе Gemma 4 в Azure Container Apps (ACA) с серверless‑GPU — одной командой azd up.

Ключевые факты:

  • Полностью приватный агент: все промпты и код остаются внутри вашего Azure‑подписки, ничего не уходит к внешнему провайдеру API.
  • OpenAI‑совместимый API: endpoint работает в формате /v1/chat/completions, его можно использовать с любыми SDK и инструментами, умеющими говорить с OpenAI‑API.
  • Серверless‑GPU: контейнер с Ollama и Gemma 4 крутится на GPU без ручного управления VM, Kubernetes или драйверами.
  • Два контейнера:
    • Ollama + Gemma 4 на GPU (NVIDIA T4 или A100)
    • Nginx‑прокси с basic‑аутентификацией и HTTPS на бесплатном Consumption‑профиле
  • Модели Gemma 4 в шаблоне:

| Модель | Параметры | Архитектура | Контекст | Модальности | Размер на диске | |--------------|-----------|-------------|----------|---------------------|------------------| | gemma4:e2b | ~2B | Dense | 128K | Текст, изображение, аудио | ~7 ГБ | | gemma4:e4b | ~4B | Dense | 128K | Текст, изображение, аудио | ~10 ГБ | | gemma4:26b | 26B (4B активны) | MoE | 256K | Текст, изображение | ~18 ГБ | | gemma4:31b | 31B | Dense | 256K | Текст, изображение | ~20 ГБ |

  • Бенчмарки на Azure Container Apps (Ollama v0.20, Q4_K_M, 32K контекст, регион Sweden Central):

| Модель | GPU | Токенов/с | TTFT (время до первого токена) | Комментарий | |--------------|------|-----------|----------------------------------|-----------------------------------| | gemma4:e2b | T4 | ~81 | ~15 мс | Самая быстрая на T4 | | gemma4:e4b | T4 | ~51 | ~17 мс | Дефолт для T4, баланс качество/скорость | | gemma4:e2b | A100 | ~184 | ~9 мс | Очень высокая скорость | | gemma4:e4b | A100 | ~129 | ~12 мс | Для более лёгких задач | | gemma4:26b | A100 | ~113 | ~14 мс | Рекомендуемый выбор на A100, лучшее рассуждение | | gemma4:31b | A100 | ~40 | ~30 мс | Максимальное качество, заметно медленнее |

  • На T4 gemma4:e4b выдаёт ~51 токен/с, чего достаточно для интерактивной подсказки кода.
  • На A100 gemma4:26b даёт ~113 токен/с и лучше справляется со сложными задачами.
  • Ограничения по GPU: gemma4:26b и gemma4:31b требуют A100 — в 16 ГБ VRAM T4 они не помещаются.
  • Время развёртывания: около 10–15 минут — создание окружения ACA и скачивание модели.

Серверless‑GPU Azure сейчас доступен в регионах: australiaeast, brazilsouth, canadacentral, eastus, italynorth, swedencentral, uksouth, westus, westus3.

Как это работает

Шаблон разворачивает минимальную, но законченную инфраструктуру для приватного ИИ‑кодера.

Архитектура

  1. Azure Container Apps Environment с поддержкой серверless‑GPU.
  2. Контейнер с Ollama и Gemma 4:
    • Работает на GPU‑профиле (T4 16 ГБ VRAM или A100 80 ГБ VRAM).
    • При первом старте сам скачивает выбранную версию Gemma 4, ничего не нужно подготавливать заранее.
    • Отдаёт OpenAI‑совместимый API поверх HTTP внутри окружения.
  3. Nginx‑auth‑прокси:
    • Лёгкий reverse‑proxy.
    • Вешает basic‑аутентификацию на внешний HTTPS‑endpoint.
    • Работает на бесплатном Consumption‑профиле без GPU.

Результат — один HTTPS‑адрес, который вы используете с curl, любым OpenAI‑совместимым SDK или инструментами вроде OpenCode.

Почему именно ACA serverless‑GPU

  • Управление инфраструктурой: вы не трогаете VM, Kubernetes и драйверы GPU — Azure управляет всем этим.
  • Модель биллинга: вы платите за время работы GPU, а не за токены. Это удобно, если у вас много запросов или долгие сессии.
  • Масштабирование: можно масштабировать реплики и в любой момент опустить их до нуля, чтобы временно остановить расходы.

Безопасность и приватность

  • Весь трафик с кодом и промптами идёт внутри вашей Azure‑подписки.
  • Внешний мир видит только HTTPS‑endpoint с basic‑аутентификацией.
  • Никакой сторонний провайдер API не получает доступ к вашему коду или данным.

Что это значит для вас

Для кого это имеет смысл

  • Команды в здравоохранении (HIPAA): код, схемы БД, фикстуры с чувствительными данными остаются в вашей Azure‑подписке.
  • Финтех и трейдинг: вы можете использовать ИИ для анализа и генерации кода, не отдавая торговые алгоритмы и риск‑модели внешнему API.
  • Госзаказчики и подрядчики оборонной отрасли: код, связанный с классифицированными или CUI‑данными, не покидает ваш периметр.
  • Стартапы с чувствительным IP: приватный ИИ‑помощник по коду без риска утечки «секретного соуса» к стороннему вендору.

Типовые сценарии

Хорошо подходит для:

  • Автодополнение и рефакторинг кода в терминале через OpenCode.
  • Быстрый разбор чужого репозитория: «объясни, что делает этот модуль», «предложи архитектуру для этого сервиса».
  • Генерация тестов и миграций БД, когда схема содержит чувствительные поля.
  • Автоматизация внутренних скриптов и CLI‑утилит, где вы не хотите светить код в публичных API.

Где может быть неудобно:

  • Если у вас нет Azure‑подписки и доступа к регионам с serverless‑GPU.
  • Если вы не хотите заниматься инфраструктурой вообще, даже на уровне одной команды разработки.
  • Если вам критичен доступ из России: Azure официально не ориентирован на российских физических лиц, возможны юридические и платёжные ограничения. Для работы потребуется стабильный доступ к Azure, часто через корпоративную инфраструктуру и, при необходимости, VPN.

Как выбирать модель

  • T4, небольшие нагрузки, быстрая реакция:
    • gemma4:e2b — максимальная скорость (~81 токен/с), подходит для автодополнения и коротких подсказок.
    • gemma4:e4b — медленнее (~51 токен/с), но лучше по качеству, хороший базовый вариант для T4.
  • A100, сложные задачи и длинный контекст:
    • gemma4:e2b и gemma4:e4b — когда важна скорость и относительно лёгкие задачи.
    • gemma4:26b — оптимум по качеству рассуждений и скорости (~113 токен/с), удобно для рефакторинга, архитектуры и работы с несколькими файлами.
    • gemma4:31b — когда нужно максимум качества и вы готовы терпеть ~40 токен/с и более длинное TTFT.

Если вы хотите «приватный аналог GitHub Copilot» в терминале, разумный старт — gemma4:e4b на T4 или gemma4:26b на A100.

Место на рынке

Шаблон ориентирован не на конкуренцию с облачными API вроде GPT‑4o или Claude 3.5 Sonnet по сырой мощности, а на контроль над данными и предсказуемую экономику.

Что здесь важно:

  • Модель оплаты: вы платите за время работы GPU, а не за каждый токен. При большом количестве запросов или долгих сессиях это может быть выгоднее, чем поминутное/потокенное тарифицирование в публичных API.
  • Отсутствие rate‑limit от внешнего провайдера: GPU ваш, нет очередей и троттлинга по инициативе стороннего сервиса.
  • Гибкость моделей: вы можете быстро переключаться между размерами Gemma 4 под конкретный сценарий, не зависите от ассортимента внешнего API.

Если вам важен максимум качества и готовые интеграции в IDE из коробки, облачные решения на базе GPT‑4o и аналогов по‑прежнему будут сильнее. Если приоритет — соответствие внутренним политикам безопасности и регуляторике, плюс возможность держать всё в Azure, связка Gemma 4 + ACA выглядит практичным вариантом.

Установка

Для развёртывания нужен установленный Azure CLI и Azure Developer CLI (azd).

git clone https://github.com/simonjj/gemma4-on-aca.git
cd gemma4-on-aca
azd up

Во время azd up вас спросят:

  1. Тип GPU:
    • T4 (16 ГБ VRAM) — только для меньших моделей.
    • A100 (80 ГБ VRAM) — для всей линейки Gemma 4, включая 26B и 31B.
  2. Модель — набор зависит от выбранного GPU. Значения по умолчанию подобраны под баланс скорость/качество.
  3. Пароль для прокси — будет использоваться в basic‑аутентификации.
  4. Регион — выберите один из регионов с serverless‑GPU: australiaeast, brazilsouth, canadacentral, eastus, italynorth, swedencentral, uksouth, westus, westus3.

Процесс займёт примерно 10–15 минут.

Как запустить и проверить

Шаг 1. Проверяем endpoint

После завершения azd up скрипт выведет URL вашего HTTPS‑endpoint.

Проверка через curl:

curl -u admin:<YOUR_PASSWORD> \
  https://<YOUR_PROXY_ENDPOINT>/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemma4:e4b",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

В ответ придёт JSON с сообщением от Gemma 4. Формат полностью совместим с OpenAI‑API, можно использовать существующие клиенты и SDK.

Шаг 2. Подключаем OpenCode

OpenCode — терминальный ИИ‑кодер, который работает поверх OpenAI‑совместимого API. В этом сценарии он превращается в приватный аналог GitHub Copilot в терминале.

Шаблон после azd up автоматически создаёт файл opencode.json с нужной конфигурацией. Если нужно сделать это вручную, пример:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "gemma4-aca": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Gemma 4 on ACA",
      "options": {
        "baseURL": "https://<YOUR_PROXY_ENDPOINT>/v1",
        "headers": {
          "Authorization": "Basic <BASE64_OF_admin:YOUR_PASSWORD>"
        }
      },
      "models": {
        "gemma4:e4b": {
          "name": "Gemma 4 e4b (4B)"
        }
      }
    }
  }
}

Генерация Base64‑строки для заголовка Authorization:

echo -n "admin:YOUR_PASSWORD" | base64

Запуск одноразового запроса кода:

opencode run -m "gemma4-aca/gemma4:e4b" "Write a binary search in Rust"

Этот запрос уйдёт на ваш Gemma 4 в ACA, а ответ придёт прямо в терминал. Все токены генерируются внутри вашей Azure‑подписки.

Для интерактивной работы запустите TUI:

opencode

Дальше:

  • выберите модель через /models;
  • укажите Gemma 4 из провайдера gemma4-aca;
  • редактируйте файлы, просите рефакторинг и генерируйте код в нескольких шагах.

Управление затратами и очистка

Когда агент не нужен, есть два варианта:

  1. Полностью удалить ресурсы:
azd down

Команда удалит все созданные ресурсы в Azure.

  1. Временно остановить расходы:
  • уменьшить количество реплик контейнера с Ollama до нуля в настройках ACA;
  • при этом окружение останется, но GPU не будет биллиться.

Это удобно, если вы используете приватного ИИ‑кодера только в пиковые моменты разработки.

Ссылки для старта

  • GitHub‑репозиторий шаблона: gemma4-on-aca — клон, azd up, и через 10–15 минут у вас приватный endpoint.
  • OpenCode — терминальный ИИ‑агент, который подключается к вашему Gemma 4 endpoint.
  • Документация Gemma 4 — детали архитектуры и возможностей моделей.
  • Документация Azure Container Apps serverless‑GPU — список регионов и профили нагрузок.

Читайте также