Добро пожаловать в зоопарк моделей
Amazon Bedrock к середине 2026 года превратился в настоящий заповедник фундаментальных моделей. Anthropic Claude 4, Meta Llama 4, Amazon Nova (все модификации), Mistral Large, Cohere Command R+ — список тянется бесконечно. И каждый день появляются новые релизы: вот-вот выйдет Claude 4 Opus, а Nova уже обновилась до версии 2.1. Как в этом многообразии выбрать ту самую модель, которая не разорит бюджет и не будет тормозить на проде?
Раньше инженеры собирали информацию по крупицам: тестили одну модель в консоли, потом другую, сравнивали latency в логах CloudWatch, цену считали в калькуляторе. Фрагментированная информация порождала субъективные решения. И тут AWS выпустила Model Profiler — open-source утилиту, которая переворачивает этот процесс. Вжух — и у вас на руках объективные цифры по всем моделям сразу.
Бенчмаркинг без боли: что внутри коробки?
Model Profiler — это CLI-утилита на Python, которая гоняет одну и ту же задачу (или пайплайн) через разные модели Bedrock и собирает четыре критически важных параметра:
- Total latency — полное время ответа (сеть + инференс).
- Time to first token (TTFT) — задержка до первого токена. Критично для чатов.
- Tokens per second (throughput) — скорость генерации.
- Cost per 1000 tokens — реальный расход $$$.
Плюс он автоматически суммирует затраты за прогон и выводит таблицу в формате CSV. Можно прогонять как простой текст, так и структурированные промпты (JSON schema). А если у вас есть конкретные требования к выходу — это тоже можно замерить.
Разворачиваем и стреляем: пошаговая настройка
Установка тривиальна, но есть нюанс. Инструмент свежий, поэтому лучше ставить из сорцов, а не через pip (версия в PyPI может отставать).
1Клонируем репозиторий
git clone https://github.com/aws-samples/amazon-bedrock-model-profiler.git
cd amazon-bedrock-model-profiler2Создаём виртуальное окружение и ставим зависимости
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txtНе используй boto3 последней версии из PyPI — бери из requirements.txt. Там прописан фикс для новой поддержки потоковой передачи в Bedrock, без него TTFT будет считаться неверно.
3Настройка AWS credentials
Утилита использует ту же цепочку, что и любая AWS SDK. Убедись, что у роли есть права bedrock:InvokeModel на нужные модели. Если планируешь тестировать Anthropic Claude 4 — доступ должен быть отдельно активирован через консоль Bedrock.
4Готовим конфиг
В корне проекта лежит config.yaml. Вот минимальный пример для сравнения Claude 3.5 Haiku и Nova Pro:
models:
- id: anthropic.claude-3-5-haiku-20241022-v1:0
region: us-east-1
- id: amazon.nova-pro-v1:0
region: us-west-2
prompts:
- "Explain quantum computing in one paragraph"
- "Write a Python function to calculate fibonacci numbers"
parameters:
max_tokens: 512
temperature: 0.7
num_iterations: 10 # количество повторений для сглаживанияПараметр num_iterations — твой друг. Ставь не меньше 5, чтобы выкинуть выбросы (сеть могла лагнуть, модель — попасть в throttle).
Запуск: и понеслись
python profiler.py --config config.yaml --output results.csvПрофилирование займёт от пары минут до получаса — зависит от числа моделей и повторов. Результат — CSV с колонками: model_id, prompt_hash, latency_ms, ttft_ms, tokens_per_second, cost_per_1k_tokens.
pandas + matplotlib. Инструмент не встроенная визуализация, но можно быстро нарисовать boxplot по latency.Что означают эти цифры? Интерпретируем правильно
Вот типичная картина после прогона:
| Модель | Latency (ms) | TTFT (ms) | Tokens/s | $/1M tokens |
|---|---|---|---|---|
| Claude 3.5 Haiku | 1200 | 300 | 85 | $2.00 |
| Nova Pro | 1800 | 450 | 55 | $1.80 |
На первый взгляд, Haiku выигрывает по скорости. Но если ваш юзкейс — генерация длинных отчётов (1500+ токенов), разница в throughput становится важнее, а стоимость на единицу объёма может оказаться выше у Nova из-за входного контекста. Тут и помогает фреймворк миграции LLM: сначала профилируем, потом принимаем решение, а не наоборот.
Ещё один подвох: Model Profiler считает cost по on-demand цене. Если вы используете Provisioned Throughput — цифры будут другими. Инструмент не знает про ваши скидки и резервы. Это стоит помнить.
Грабли, на которые я наступил (и вы наступите тоже)
За несколько месяцев использования я собрал коллекцию ошибок, которые вылезают у всех.
- Throttling на стороне Bedrock. Если гнать 10 моделей с 20 итерациями каждая — вы упрётесь в лимит. Решение: разносить по регионам (указывайте разные
regionдля моделей, как в примере выше) или добавитьtime.sleep(1)между вызовами. Инструмент пока не имеет встроенной backoff-логики. - Региональная недоступность. Некоторые модели (например, Llama 4) есть не во всех регионах. Если модель не отвечает — профилировщик падает с
AccessDeniedException. Добавьте try-except в код или предварительно проверьте черезaws bedrock list-foundation-models. - Перекос из-за температуры. Если ставить temperature=0.0 — модель генерирует детерминированно, но latency может быть выше из-за beam search? Не факт. Для сравнения производительности лучите ставить
temperature=0.0и одинаковые параметры. Иначе сравниваете яблоки с апельсинами. - Игнорирование network latency. Вы запускаете профилировщик на своей машине, а модель — в us-east-1. Если ваш VPN или интернет нестабилен — latency будет завышен. Лучше запускать на EC2 в том же регионе, что и Bedrock. Или хотя бы рядом.
- Забыли про structured outputs. Если ваш продакшен использует Structured Outputs, прогоняйте промпты с JSON schema. Model Profiler поддерживает это через поле
response_structureв конфиге. Иначе вы профилируете просто текст, а в реале модель может тратить время на форматирование JSON.
Когда Model Profiler НЕ поможет
Давайте честно: этот инструмент — не серебряная пуля. Он бесполезен, если нужно сравнить модели по качеству ответов (accuracy). Для этого существуют eval sets, человеческая оценка и метрики вроде ROUGE, BLEU, MMLU. Model Profiler — про производительность, не про интеллект.
Также он не учитывает вариативность latency в зависимости от размера контекста. Если ваш средний запрос — 2000 токенов, а профилируете на 100 — цифры будут оптимистичнее реальности. Лучше подсовывать репрезентативные промпты из прода.
И ещё: инструмент не поддерживает агентные пайплайны, мультимодальные запросы (изображения + текст) или цепочки вызовов. Для этого придётся писать кастомный скрипт. AWS это обещает в следующих релизах, но на первое июля 2026 — только простые инференсы.
Совет под занавес: не верьте бенчмаркам на слово
Допустим, вы прогнали профилировщик, получили таблицу. На бумаге Claude 3.5 Haiku кажется идеалом: дёшево и быстро. Но ставите его на прод — и через неделю половина ответов не удовлетворяет юзеров. Приходится регрейдить на более дорогую модель. Профилировщик не заменяет A/B-тестирование на реальном трафике.
Поэтому мой workflow такой:
- Model Profiler сужает круг до 2-3 кандидатов по стоимости и скорости.
- Для каждого кандидата запускаю Reinforcement Fine-Tuning или хотя бы кастомный eval pipeline.
- Прокатываю на 10% трафика, собираю метрики качества (user feedback, automated scoring).
- Только после этого принимаю окончательное решение.
Model Profiler — отличный первый фильтр, но не последняя инстанция. В 2026 году, когда модели становятся всё более специализированными, подход «trust but verify» актуален как никогда. Пользуйтесь инструментом, но держите руку на пульсе реального продакшена.