Transformers documentation
Оптимизации сервера
Оптимизации сервера
transformers serve включает оптимизации для повышения пропускной способности и снижения потребления памяти.
Непрерывная пакетная обработка
Continuous batching динамически группирует и перемешивает запросы, чтобы совместно использовать проходы на GPU. Новые запросы присоединяются к батчу, пока другие проходят стадию prefill. Завершённые запросы исключаются после декодирования. Это повышает загрузку GPU и пропускную способность без ущерба для задержки.
Добавьте --continuous-batching, чтобы включить его.
transformers serve \
--continuous-batching \
--attn-implementation "sdpa"Квантование
Квантование снижает потребление памяти за счёт отображения весов в формат с меньшей точностью. transformers serve совместим со всеми методами квантования в Transformers. Поддерживаются как предварительно квантованные модели, так и квантование во время выполнения.
Предварительно квантованные модели не требуют никаких изменений. Они обеспечивают наилучший баланс между производительностью и точностью. Установите соответствующую библиотеку квантования. Затем передайте предварительно квантованную модель из Hub в аргумент model.
curl http://localhost:8000/v1/responses \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen/Qwen3-8B-GGUF",
"stream": true,
"input": "Tell me a three sentence bedtime story about a unicorn."
}'Используйте --quantization для квантования модели во время выполнения. Это полезно для новых контрольных точек или результатов дообучения, у которых нет предварительно заквантованных весов. Поддерживаются только 4-битное и 8-битное квантование bitsandbytes.
transformers serve \ --quantization bnb-4bit
Бэкенд внимания
Оптимизированный attention backend повышает эффективность использования памяти и ускоряет инференс.
transformers serve \
--continuous-batching \
--attn-implementation "flash_attention_2"Apple Silicon (Metal flash attention)
При использовании --continuous-batching на MPS установите kernels, чтобы переключиться на kernels-community/metal-flash-sdpa. Он работает в 1,66 раза быстрее, чем SDPA, при generate_batch (gsm8k, Qwen2.5-0.5B-Instruct, fp16) и совпадает с ним посимвольно при жадном декодировании.
pip install kernels transformers serve --continuous-batching
Без непрерывного батчинга модели используют внимание по умолчанию (SDPA). Чтобы попробовать другое, передайте --attn-implementation, например kernels-community/metal-flash-sdpa.
Компиляция
torch.compile отслеживает и компилирует цикл декодирования для ускорения вывода.
Compile несовместим с непрерывным батчингом.
transformers serve \ --compile
Тип данных
Типы данных "bfloat16" или "float16" экономят память и повышают пропускную способность.
transformers serve \
--continuous-batching \
--dtype "bfloat16"