# Otimizações de servidor

`transformers serve` inclui otimizações para melhorar a taxa de transferência e reduzir o uso de memória.

## Loteamento contínuo

O [Continuous batching](../continuous_batching) agrupa e intercala dinamicamente as solicitações para compartilhar as passadas de forward na GPU. Novas solicitações entram no lote conforme as outras avançam na etapa de prefill. As solicitações concluídas saem após a decodificação. Isso aumenta a utilização da GPU e o throughput sem comprometer a latência.

Adicione `--continuous-batching` para ativá-lo.

```sh
transformers serve \
  --continuous-batching \
  --attn-implementation "sdpa"
```

## Quantização

[Quantização](../quantization/overview) reduz o uso de memória mapeando os pesos para uma precisão menor. O `transformers serve` é compatível com todos os métodos de quantização do Transformers. Ele suporta modelos pré-quantizados e quantização em tempo de execução.

Modelos pré-quantizados não requerem nenhuma alteração. Eles oferecem o melhor equilíbrio entre desempenho e precisão. Instale a biblioteca de quantização apropriada. Em seguida, passe o modelo pré-quantizado do Hub para o argumento `model`.

```sh
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."
  }'
```

Use `--quantization` para quantizar um modelo em tempo de execução. Isso é útil para novos checkpoints ou finetunes sem pesos pré-quantizados. Apenas a quantização de 4 bits e 8 bits do [bitsandbytes](../quantization/bitsandbytes) é suportada.

```sh
transformers serve \
  --quantization bnb-4bit
```

## Backend de atenção

Um [backend de atenção](../attention_interface) otimizado melhora a eficiência de memória e acelera a inferência.

```sh
transformers serve \
  --continuous-batching \
  --attn-implementation "flash_attention_2"
```

### Apple Silicon (atenção flash Metal)

Com `--continuous-batching` no MPS, instale [kernels](https://github.com/huggingface/kernels) para alternar para [kernels-community/metal-flash-sdpa](https://huggingface.co/kernels-community/metal-flash-sdpa). Ele executa 1,66x mais rápido que o SDPA com `generate_batch` (gsm8k, Qwen2.5-0.5B-Instruct, fp16) e corresponde a ele token por token sob decodificação gulosa.

```sh
pip install kernels
transformers serve --continuous-batching
```

Sem o loteamento contínuo, os modelos mantêm a atenção padrão (SDPA). Passe `--attn-implementation` para tentar outra, como `kernels-community/metal-flash-sdpa`.

## Compilar

[torch.compile](../perf_torch_compile) rastreia e compila o loop de decodificação para uma inferência mais rápida.

> [!NOTE]
> Compile é incompatível com continuous batching.

```sh
transformers serve \
  --compile
```

## Tipo de dados

Os [tipos de dados](../models#model-data-type) `"bfloat16"` ou `"float16"` economizam memória e aumentam a taxa de transferência.

```sh
transformers serve \
  --continuous-batching \
  --dtype "bfloat16"
```

