Портирование семейства Gemma-4 (E2B, E4B, 12B, 31B, 26B-A4B MoE) на AWS Inferentia2. Разбираем общие проблемы, особенности каждой модели и эволюцию рецепта сборки. Начните портировать свои модели уже сегодня!
Семейство Gemma-4 включает модели от 2B до 31B параметров, включая разреженные MoE. Официальный стек AWS (optimum-neuron, Neuron vLLM) не поддерживает эти архитектуры — ни общие KV-кэши, ни MoE. В этой статье я покажу, как вручную портировать каждую модель, используя единый подход: трассировку реального forward, ручной тензорный параллелизм и ModelBuilder. В конце вы сможете запустить любую модель Gemma-4 на Inferentia2 с точностью до токена.
Все пять моделей имеют общую основу: softcap 30, словарь на 262144 токена, связанные эмбеддинги, GQA и перемежающееся скользящее + глобальное внимание. Различия — в плотности, наличии Per-Layer Embeddings (PLE) и KV-шеринга.
| Модель | Параметры (всего/активных) | Тип | PLE | KV-шеринг | TP | Скорость |
|---|---|---|---|---|---|---|
| E2B | ~5B/2B | плотная | ✅ | ✅ | 1 | ~44 tok/s |
| E4B | ~8B/4B | плотная | ✅ | ✅ | 2 | ~34 tok/s |
| 12B | 12B | плотная | — | — | 2 | prefill ~101 ms |
| 31B | 31B | плотная | — | — | 8 | prefill ~115 ms |
| 26B-A4B | 26B/~4B | MoE | — | — | 8 | prefill ~77 ms |
Все пять моделей декодируют токен-в-токен идентично CPU fp32-эталону и отвечают: «Столица Франции — Париж». Это жёсткий критерий корректности.
optimum-neuron и Neuron vLLM не имеют класса модели Gemma-4. Их графовые построители не могут выразить KV-шеринг или MoE. Все порты — ручные, на основе transformers 5.13.0.
Softcap 30, 262144-токенный словарь, связанные эмбеддинги, GQA, перемежающееся скользящее + глобальное внимание. Схема обслуживания: host-side эмбеддинги, устройство выполняет prefill + decode с on-device KV-кэшем, жадный decode сравнивается с host fp32-эталоном.
Используйте aws_neuronx_venv_pytorch_2_8_nxd_inference venv + pip install transformers==5.13.0. Добавьте shim для transformers.utils.fx, чтобы neuronx_distributed импортировался. Установите export PATH=$VENV/bin:/opt/aws/neuron/bin — это фиксит ошибку импорта libneuronpjrt-path.
30·tanh(x/30) монотонен, поэтому не меняет жадный argmax. Удалите его из графа устройства и применяйте на хосте при семплировании.
Самые сложные архитектурно: Per-Layer Embeddings (отдельный вклад эмбеддингов на каждый слой), cross-layer KV-шеринг (многие слои заимствуют K/V у соседей) и MatFormer (вложенность). KV-шеринг не выражается в vendor-построителе, но отлично трассируется как обычные графовые зависимости через torch_neuronx.trace. E2B помещается на одно ядро 16 ГБ; E4B требует TP=2.
Поставляется как Gemma4UnifiedForConditionalGeneration, но без загрузки аудио/визуального энкодера — используйте model.language_model. PLE и KV-шеринг отсутствуют. Проблема: sliding_window=1024 переполняет SBUF Neuron, поэтому принудительно используйте eager-реализацию внимания.
Архитектурно прост: нет PLE, нет KV-шеринга. Сложность в масштабе: нужно 8 ядер, ручной тензорно-параллельный трейсер для E4B падает с OOM. Здесь обязателен NxD ModelBuilder: компилируете один ранг, шардите веса по рангам. Компиляция ~39 минут, пик памяти 182 ГБ. Глобальные слои (nkv=4) реплицируются, а не шардируются.
Единственная разреженная модель: общий плотный MLP + 128 экспертов MoE, четыре layernorm, роутер с собственным масштабом. Экспертный forward — data-dependent gather/scatter, который не трассируется. Решение: вычисляйте все 128 экспертов, маскируйте top-8 (статическая форма). «A4B» означает ~4B активных параметров, но все 128 экспертов (~49 ГБ) reside — экономия на compute, не на памяти.
Главный урок: равенство устройства и эталона не гарантирует корректность. Примеры:
как буквальные символы (правильные токены — <|turn|>/). Устройство и CPU выдали одинаковый мусор — SEQ_MATCH True на бессмыслице.Вывод: проверяйте не только равенство, но и осмысленность вывода («Париж»).
Начните с портирования E2B на одном ядре, затем переходите к более крупным моделям. Используйте готовые образы Docker: xbill9/gemma4-optb и аналоги. Полный код и deep-dive — в сопутствующих статьях серии.
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →