- Дата публикации
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.
Как это работает
Шаблон разворачивает минимальную, но законченную инфраструктуру для приватного ИИ‑кодера.
Архитектура
- Azure Container Apps Environment с поддержкой серверless‑GPU.
- Контейнер с Ollama и Gemma 4:
- Работает на GPU‑профиле (T4 16 ГБ VRAM или A100 80 ГБ VRAM).
- При первом старте сам скачивает выбранную версию Gemma 4, ничего не нужно подготавливать заранее.
- Отдаёт OpenAI‑совместимый API поверх HTTP внутри окружения.
- 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 вас спросят:
- Тип GPU:
- T4 (16 ГБ VRAM) — только для меньших моделей.
- A100 (80 ГБ VRAM) — для всей линейки Gemma 4, включая 26B и 31B.
- Модель — набор зависит от выбранного GPU. Значения по умолчанию подобраны под баланс скорость/качество.
- Пароль для прокси — будет использоваться в basic‑аутентификации.
- Регион — выберите один из регионов с 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; - редактируйте файлы, просите рефакторинг и генерируйте код в нескольких шагах.
Управление затратами и очистка
Когда агент не нужен, есть два варианта:
- Полностью удалить ресурсы:
azd down
Команда удалит все созданные ресурсы в Azure.
- Временно остановить расходы:
- уменьшить количество реплик контейнера с Ollama до нуля в настройках ACA;
- при этом окружение останется, но GPU не будет биллиться.
Это удобно, если вы используете приватного ИИ‑кодера только в пиковые моменты разработки.
Ссылки для старта
- GitHub‑репозиторий шаблона:
gemma4-on-aca— клон,azd up, и через 10–15 минут у вас приватный endpoint. - OpenCode — терминальный ИИ‑агент, который подключается к вашему Gemma 4 endpoint.
- Документация Gemma 4 — детали архитектуры и возможностей моделей.
- Документация Azure Container Apps serverless‑GPU — список регионов и профили нагрузок.