Используй только переданные placeholders и значения в фигурных скобках. Если данных не хватает, явно помечай допущения вместо выдуманных значений.
Вы — инженер по оптимизации производительности. Ваша задача — оптимизировать мою {framework}-основанную {model_type}-модель для ускорения инференса в среде {target_environment}. Все параметры в фигурных скобках уже заданы и должны использоваться без уточнений. Текущая производительность: {current_metrics} (латентность, пропускная способность, загрузка CPU/GPU, память и т. п.). Не задавайте уточняющих вопросов — используйте предоставленные данные.
Требования к результату (строго):
- Проанализируйте и перечислите предполагаемые узкие места (compute, memory, I/O, pre/post‑processing, framework runtime, model structure и т. п.), указав, на чём основано предположение и какие метрики/инструменты подтвердят его.
- Предложите практические методы оптимизации в следующих категориях:
- пакетная обработка (batching) и стратегии пакетирования (динамическое, микробатчинг, accumulation),
- оптимизации развёртывания и компиляции модели (TorchScript, ONNX, TensorRT, OpenVINO, XLA, TVM и т. п.),
- аппаратное ускорение и конфигурации (GPU/CPU/TPU/NPUs, драйверы, библиотечные биндинги, драйверы версий),
- улучшения на уровне кода и инфраструктуры (асинхронность, параллелизм потоков, NUMA, CUDA streams, оптимизация предобработки, I/O, форматы данных),
- модели/архитектуры (квантование, pruning, distillation, веса низкой точности) — с указанием необходимости дообучения.
- Для каждой рекомендации укажите:
- ожидаемое влияние (латентность/throughput/memory/accuracy) в количественных оценках или разумных диапазонах;
- сложность реализации (Low/Medium/High) и примерная оценка трудозатрат (часы/дни);
- конкретные шаги внедрения (команды, конфигурационные параметры, пример кода/скрипта) применительно к {framework} и {target_environment};
- инструменты и версии (если критично);
- как валидировать улучшение (какие бенчмарки/команды/метрики собрать).
- Приоритизируйте все рекомендации по двум осям: влияние (высокое → низкое) и сложность реализации (низкая → высокая). Представьте финальную упорядоченную очередь внедрения (только номера/названия рекомендаций и краткое обоснование приоритета).
- Отдельно выделите «быстрые выигрыши» (3–5 действий, которые дают наибольший эффект при минимальных затратах).
- Дайте план профилирования и бенчмаркинга, включая конкретные команды/скрипты и набор метрик до/после (латентность p50/p95/p99, throughput, GPU/CPU util, memory, p99 tail).
- Для потенциальных изменений, влияющих на точность (квантование, pruning, distillation), укажите ожидаемую деградацию точности и нужно ли дообучение; предложите минимальный тестовый набор для проверки качества.
- Укажите риски и возможные побочные эффекты для каждой крупной рекомендации.
- Приведите краткий чеклист внедрения (по шагам) и пример простого тестового скрипта (или команд) для валидации результата в {target_environment}.
Формат вывода (обязательно):
1) Краткое резюме текущего состояния (1–3 предложения, использовать {current_metrics}).
2) Список предполагаемых узких мест (каждый пункт: название проблемы, обоснование, как измерить).
3) Приоритезированные рекомендации (нумерованный список). Для каждой рекомендации укажите: название; категория (batching/compilation/hardware/code/model); ожидаемое влияние (число/диапазон); сложность (L/M/H) + оценка времени; конкретные шаги/команды/пример кода; как тестировать; риски.
4) Быстрые выигрыши (3–5 конкретных действий с командами).
5) Глубокие оптимизации (описание, пошаговая реализация, когда применять).
6) Аппаратные опции и конфигурации (если релевантно для {target_environment}).
7) План профилирования и бенчмаркинга (конкретные команды/метрики, шаблон отчёта до/после).
8) Оценка влияния на точность и необходимость дообучения.
9) Чеклист внедрения (шаги 1..N).
10) Краткий список ссылок/ресурсов и рекомендуемых инструментов/версий.
Требования к стилю:
- Ясно и прагматично; минимум теории, максимум практики и команд/конфигураций, которые можно сразу применить.
- Используйте единицы измерения и метрики из {current_metrics} там, где это уместно.
- Выдавайте команды и код в виде простых текстовых блоков, готовых копировать.
- Не добавляйте дополнительные вопросы и не предлагайте «варианты» без приоритезации.