Сжатие и оптимизация модели под заданные ограничения
Промпт задаёт поэтапную стратегию сжатия модели через квантизацию, прунинг и дистилляцию, включая целевые пороги, команды и конфиги, rollout, валидацию качества и резервные меры при срыве ограничений.
Используй только переданные placeholders и значения в фигурных скобках. Если данных не хватает, явно помечай допущения вместо выдуманных значений.
Действуй как специалист по развёртыванию и оптимизации моделей. Входные параметры (подставь реальные значения):
- model_type: {model_type} (архитектура/фреймворк/размер, напр. "GPT-J 6B на PyTorch")
- target_environment: {target_environment} (аппаратура и ПО, напр. "edge-устройство ARM Cortex-A76 с 4 GB RAM" или "cloud GPU: AWS g4dn.xlarge с CUDA 11 + Triton")
- constraints: {constraints} (жёсткие ограничения: целевой латентность, память, энергопотребление, формат развертывания, совместимость с ONNX/TensorRT, допустимое падение качества и т.п.)
- current_metrics: {current_metrics} (текущие измерения: размер модели, F1/ROUGE/EM/перплексия/latency/throughput и т.д.)
Задача: разработать детализированную, пошаговую стратегию сжатия и оптимизации модели, используя квантизацию, прунинг и дистилляцию знаний, с учётом заданных входных параметров и ограничений. Выход должен быть структурирован в следующих секциях и содержать конкретику (инструменты, команды/конфиги, ожидаемые компромиссы, метрики валидации):
1) Краткое резюме (2–4 предложения)
- Коротко описать выбранную общую стратегию и почему она подходит под указанные constraints.
2) Предпосылки и допущения
- Перечислить все сделанные допущения (напр. доступность обучающих/валидационных данных, возможность дообучения, поддерживаемые форматы/библиотеки в окружении).
- Указать критические риски и ограничения.
3) Целевые показатели и пороги приемлемости
- Ясно перечислить целевые значения: допустимое падение качества (например, ΔF1 ≤ 1%), целевой latency/throughput, максимальный размер модели/память, энергопотребление и т.д.
- Привести метрики для проверки успеха.
4) Пошаговая стратегия (фазы)
- Для каждой фазы дать: цель, используемые методы (квантизация/прунинг/дистилляция/микширование методов), подробные шаги, ожидаемый эффект (оценочный диапазон в % для размера/латентности/качества), зависимости между шагами.
- Примерная последовательность: профиль производительности → легкая квантизация (например, 16→8-bit) → структурный/неструктурный прунинг (порог/процент) с дообучением → агрессивная квантизация (INT8/FP8/пост-квантизация + калибровка) → дистилляция знаний (teacher → compressed student) → апостериорная оптимизация (сжатие весов, компиляция в ONNX/TensorRT/TVM).
- Для каждого шага укажите критерии перехода к следующему шагу (например, если accuracy drop ≤ допустимый порог и latency достигнут).
5) Рекомендованные инструменты и примеры конфигураций/команд
- Перечислить конкретные инструменты/библиотеки для каждой задачи и, где уместно, дать пример команд или конфигурационных фрагментов:
- Квантизация: bitsandbytes, Hugging Face Optimum + Intel Neural Compressor, ONNX Runtime quantization, NVIDIA TensorRT, QAT/пост-квантизация.
- Прунинг: PyTorch Prune API, SparseML, Transformers + pruning scripts, Structured pruning tools.
- Дистилляция: Hugging Face Trainer с distillation loss, Knowledge Distillation scripts, TinyBERT/DistilBERT-подходы, TinyGrad/LoRA/QLoRA (если релевантно).
- Компиляция и рантайм оптимизация: ONNX + ORT, TensorRT, TVM, OpenVINO.
- Примеры команд/фрагментов конфигов (короткие, воспроизводимые) для ключевых инструментов.
- Указать совместимость инструментов с target_environment и ограничения.
6) Ожидаемые компромиссы и количественные оценки
- Для каждой техники дать типичные диапазоны улучшений и потерь (например: INT8 квантизация — размер ~2x, latency ~1.5–2x лучше, drop в точности 0–2%; прунинг 20–50% весов — размер и latency пропорционально, но риск деградации генеративного качества; дистилляция — может восстановить точность при существенном уменьшении параметров).
- Указать на взаимодействие эффектов (напр. прунинг + квантизация совместно может ухудшать качество сильнее, чем по отдельности).
7) План валидации и тестирования качества
- Набор тестов: функциональные регрессионные тесты, task-specific тесты (QA, NER, генерация), A/B тесты на проде, стресс-тесты по latency и throughput.
- Методы валидации: вычисление заданных метрик на hold-out и реальном трафике, статистические тесты (понимание значимости изменений), мониторинг деградации в проде.
- Минимальные требования для приёмки каждой фазы (например, Δmetric ≤ порог и нет ухудшения критических сценариев).
8) Роллаут и мониторинг
- Предложить rollout-процедуру (canary → 10% → 50% → full), механизмы быстрого отката.
- Метрики для мониторинга в проде (latency p95/p99, error rate, user-perceived quality), алерты и логирование.
9) Оценка ресурсов и примерный таймлайн
- Оценка требуемого времени для каждой фазы (ориентировочно) и необходимых ресурсов (GPU часы, объём данных, люди).
- Пороговые точки для принятия решения "остановиться" или "продолжать агрессивную оптимизацию".
10) План резервных мер (fallback)
- Что делать, если целевые ограничения не достигаются (напр. уменьшить функциональность, использовать модель меньшего размера, частичная оффлоадинг на сервер).
Формат вывода: чётко разделённые подпункты 1–10, списки и таблицы там, где уместно; привести конкретные примеры команд/конфигов и оценочные численные диапазоны. Не добавлять общую лексику — только практические, воспроизводимые инструкции.
ChatGPT, Claude, GigaChat, Алиса ИИ, По нейросетям, Типы промптов, Яндекс GPT