# Tối ưu hóa máy chủ

`transformers serve` bao gồm các tối ưu hóa để cải thiện thông lượng và giảm mức sử dụng bộ nhớ.

## Lô liên tục

[Continuous batching](../continuous_batching) nhóm động và xen kẽ các yêu cầu để chia sẻ các bước truyền tiến trên GPU. Các yêu cầu mới tham gia vào lô khi các yêu cầu khác đang tiến hành prefill. Các yêu cầu hoàn tất sẽ rời khỏi lô sau khi giải mã. Điều này tăng cường mức sử dụng GPU và thông lượng mà không làm ảnh hưởng đến độ trễ.

Thêm `--continuous-batching` để bật tính năng này.

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

## Lượng tử hóa

[Quantization](../quantization/overview) giảm mức sử dụng bộ nhớ bằng cách ánh xạ trọng số sang độ chính xác thấp hơn. `transformers serve` tương thích với tất cả các phương pháp quantization trong Transformers. Nó hỗ trợ các mô hình đã được quantization trước và quantization thời gian thực.

Các mô hình đã lượng tử hóa trước không yêu cầu bất kỳ thay đổi nào. Chúng cung cấp sự cân bằng tốt nhất giữa hiệu suất và độ chính xác. Cài đặt thư viện lượng tử hóa phù hợp. Sau đó, truyền mô hình đã lượng tử hóa trước từ Hub vào đối số `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."
  }'
```

Sử dụng `--quantization` để lượng tử hóa một mô hình khi chạy. Điều này hữu ích cho các checkpoint hoặc finetune mới không có trọng số đã được lượng tử hóa trước. Chỉ hỗ trợ lượng tử hóa 4-bit và 8-bit của [bitsandbytes](../quantization/bitsandbytes).

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

## Backend chú ý

Một [backend attention](../attention_interface) được tối ưu hóa cải thiện hiệu quả bộ nhớ và tăng tốc suy luận.

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

### Apple Silicon (Metal flash attention)

Với `--continuous-batching` trên MPS, hãy cài đặt [kernels](https://github.com/huggingface/kernels) để chuyển sang [kernels-community/metal-flash-sdpa](https://huggingface.co/kernels-community/metal-flash-sdpa). Nó chạy nhanh hơn 1,66 lần so với SDPA khi dùng `generate_batch` (gsm8k, Qwen2.5-0.5B-Instruct, fp16) và khớp hoàn toàn từng token với SDPA khi giải mã theo phương pháp tham lam (greedy decoding).

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

Nếu không có continuous batching, các mô hình sẽ giữ nguyên cơ chế attention mặc định (SDPA). Truyền `--attn-implementation` để thử một cơ chế khác, chẳng hạn như `kernels-community/metal-flash-sdpa`.

## Biên dịch

[torch.compile](../perf_torch_compile) theo dõi và biên dịch vòng lặp giải mã để suy luận nhanh hơn.

> [!NOTE]
> Compile không tương thích với continuous batching.

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

## Kiểu dữ liệu

Các [kiểu dữ liệu](../models#model-data-type) `"bfloat16"` hoặc `"float16"` giúp tiết kiệm bộ nhớ và tăng thông lượng.

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

