# Optimisations du serveur

`transformers serve` intègre des optimisations pour améliorer le débit et réduire l’utilisation de la mémoire.

## Batching continu

[Continuous batching](../continuous_batching) regroupe et entrelace dynamiquement les requêtes afin de partager les passes avant sur le GPU. Les nouvelles requêtes rejoignent le lot au fur et à mesure que les autres progressent dans la phase de préremplissage. Les requêtes terminées sont retirées après le décodage. Cela augmente l'utilisation du GPU et le débit sans compromettre la latence.

Ajoutez `--continuous-batching` pour l'activer.

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

## Quantification

[La quantification](../quantization/overview) réduit l'utilisation de la mémoire en affectant les poids à une précision inférieure. `transformers serve` est compatible avec toutes les méthodes de quantification de Transformers. Il prend en charge les modèles pré-quantifiés et la quantification à l'exécution.

Les modèles pré-quantifiés ne nécessitent aucune modification. Ils offrent le meilleur équilibre entre performance et précision. Installez la bibliothèque de quantification appropriée. Puis passez le modèle pré-quantifié du Hub à l'argument `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."
  }'
```

Utilisez `--quantization` pour quantiser un modèle à l'exécution. Cette option est utile pour les nouveaux points de contrôle ou les finetunes ne disposant pas de poids pré-quantisés. Seules les quantisations 4 bits et 8 bits de [bitsandbytes](../quantization/bitsandbytes) sont prises en charge.

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

## Backend d'attention

Un [backend d'attention](../attention_interface) optimisé améliore l'efficacité mémoire et accélère l'inférence.

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

### Apple Silicon (Metal flash attention)

Avec `--continuous-batching` sur MPS, installez [kernels](https://github.com/huggingface/kernels) pour passer à [kernels-community/metal-flash-sdpa](https://huggingface.co/kernels-community/metal-flash-sdpa). Il est 1,66 fois plus rapide que SDPA avec `generate_batch` (gsm8k, Qwen2.5-0.5B-Instruct, fp16) et correspond à SDPA jeton par jeton en décodage glouton.

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

Sans le lotissement continu, les modèles conservent leur attention par défaut (SDPA). Passez `--attn-implementation` pour en essayer une autre, comme `kernels-community/metal-flash-sdpa`.

## Compiler

[torch.compile](../perf_torch_compile) trace et compile la boucle de décodage pour une inférence plus rapide.

> [!NOTE]
> Compile est incompatible avec le lotissement continu.

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

## Type de données

Les [types de données](../models#model-data-type) `"bfloat16"` ou `"float16"` économisent de la mémoire et augmentent le débit.

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

