Gemma 4 на MI300X: $1,99 в час, MCP и цена простоя GPU

Три вилки для соло без своей AMD-карты: on-demand MI300X в облаке, деплой с ноутбука через MCP без ROCm на столе или «спящий» droplet с почасовкой, пока инстанс не снесёте. В разборе Gemma 4 E2B на vLLM с вызовом инструментов, 21 MCP-команда без shell и почасовка из поля price_hourly в API DigitalOcean.
MCP: агентные «руки» без AMD на столе
Python MCP-сервер (server.py, stdio) отдаёт 21 инструмент через @mcp.tool. Subprocess только списком аргументов, shell не вызывается. Процесс сидит на workstation без AMD GPU; к карте идут SSH и DigitalOcean v2 API (контур AMD Developer Cloud). Команды цепляются к droplet по тегу и не трогают чужие инстансы.
Создать или уничтожить GPU-droplet через MCP нельзя: почасовые решения остаются у человека в консоли. Агенту оставили deploy, логи, ячейки benchmarking_suite.py и SRE-пробы. Бесконечный счётчик он сам не откроет.
Toolkit лежит в репозитории github.com/xbill9/gemma4-dev/tree/main/gpu-vllm-mi300x-2b, рядом с постом на Dev.to.
На workstation нужны Python 3 и DIGITALOCEAN_ACCESS_TOKEN в .env (mode 0600) рядом с сервером. На droplet: Docker с /dev/kfd, /dev/dri и Hugging Face token для gated weights. Локально нет rocm-smi и hipcc; ROCm-команды в home shell здесь сигнал неверной машины, не «мелкий баг агента».
Стек inference: Gemma 4 E2B и vLLM с вызовом инструментов
Модель google/gemma-4-E2B-it, bf16 reference. Образ vllm/vllm-openai-rocm:nightly-rocm100, внутри сборка 0.3.1.dev3+g0bfc7a15d. Одна AMD Instinct MI300X (gfx942, CDNA 3), 191,7 GiB HBM3; хост gpu-mi300x1-192gb-devcloud, регион atl1.
Параметры serving: --enable-auto-tool-choice, парсеры gemma4 для reasoning и tool calls, max-model-len 32768, gpu-memory-utilization 0.90, multimodal с audio: 0 (в ROCm-образе нет vllm[audio] extras). После docker run endpoint отвечает примерно через 160 с: веса, torch.compile, capture графов. В статусе разведены «контейнер up» и «endpoint answering».
В логе engine: 155,04 GiB KV-памяти, 9 026 017 токенов в GPU KV cache, concurrency 275,45× при max_model_len 32768. verify_capabilities закрыл text, thinking, tool calling и vision (4/4); audio не гоняли.
Throughput: что возвращает карта за час аренды
В шапке бенча зафиксированы 305 tok/s на одном потоке, 10 284 tok/s при 64 streams и 2 713 tok/s на dollar-hour. Скрипт benchmarking_suite.py, три прогона на ячейку, уникальный seed против prefix cache; сетка 16 ячеек, 12 runnable, четыре infeasible при context 32 768.
Медиана output tok/s (worst-cell CV 7,96%):
| context | 1 stream | 4 | 16 | 64 |
|---|---|---|---|---|
| 128 | 340,9 | 1 124,1 | 3 569,1 | 10 284,0 |
| 1 024 | 305,1 | 969,1 | 2 653,6 | 5 398,2 |
| 8 192 | 192,8 | 445,5 | 688,2 | 702,7 |
При context 1024 и одном потоке: 32,67 ms TTFT и 3,04 ms на output token. На тяжёлой prefill-ячейке в логе 48 583 tok/s (64 streams × 1024 context). Длинный context бьёт по prefill, не по KV (тяжёлая ячейка около 5,8% KV pool в той же арифметике).
Пик на 128×64 не лечит агента с окном 32k. Считайте нагрузку, concurrency и доллар-час, а не одну строчку таблицы.
$1,99 в час: биллинг, destroy и ловушки для IDE-агента
On-demand $1,99 per hour из поля DigitalOcean v2 API droplet.size.price_hourly, не с маркетингового прайса. Power off не гасит meter droplet; остановка только при destroy. stop_vllm (docker rm -f vllm) чистит GPU-память, хост всё равно тикает по часу.
Сравнение MI300X с TPU v5e/v6e и NVIDIA L4 в tok/s per dollar-hour идёт на других сборках vLLM, часто spot, не тот же стенд. При matched on-demand MI300X даёт 1,4×–2,9× tok/$ к v5e на четырёх уровнях concurrency; при лёгком трафике и терпимом preemption spot v5e может выиграть в tok/$.
Минимальный биллинг и квоты DigitalOcean в первичном тексте не разобраны: зафиксировано только off vs destroy. Рублей и локальной регуляторики там нет; соло планирует бюджет от долларовой ставки API и привычки сносить droplet после теста.
Перед тем как IDE-агент получит доступ к MCP, пропишите allowlist инструментов, кто жмёт destroy и какой context (короткий vs 32k) вы реально меряете. Без этого 10 284 tok/s с короткой ячейки не переживут ваш длинный чат.
Источники
- Serving Gemma 4 on an AMD MI300X: What $1.99 an Hour Buys, основной разбор; дата доступа при обогащении: 2026-09-18 (UTC).
- Репозиторий toolkit: github.com/xbill9/gemma4-dev/tree/main/gpu-vllm-mi300x-2b, MCP и скрипты деплоя (ссылка из поста).