Деплой Qwen 3.8 Max: от Hugging Face до продакшена

Пошаговое руководство: выбор железа, квантование AWQ/GGUF, vLLM-сервер, нагрузочное тестирование, мониторинг и сравнение стоимости self-hosted vs API.

2.5T
параметров MoE
25
минут чтения
ADVANCED
уровень

# 1. Почему self-hosted Qwen 3.8 Max?

Qwen 3.8 Max — крупнейшая open-source модель с лицензией Apache 2.0. Это значит: деплой на своём железе, файнтюнинг на своих данных, коммерческое использование без отчислений. Ни одна проприетарная модель такой свободы не даёт.

💰 Быстрый расчёт окупаемости:

API Alibaba Cloud: $1.50/1M output токенов. При 10M токенов/день = $450/мес. Аренда 4×H100 на Vast.ai: ~$2,400/мес (обслуживает 50M+ токенов/день). Порог окупаемости self-hosted: >15M токенов/день.

# 2. Выбор железа

КонфигурацияVRAMТокенов/секКачество$/мес*
BF16 (8×H100)640 GB45-55100%$4,800
AWQ 4-bit (4×H100)320 GB25-3591%$2,400
GGUF Q4_K_M (4×A100)320 GB20-3090%$2,200
GGUF IQ3_M (3×H100)240 GB18-2587%$1,800

* Аренда на Vast.ai / RunPod, цены на июль 2026.

# 3. Пошаговый деплой с vLLM

Шаг 1: Скачиваем модель

pip install huggingface_hub

# AWQ 4-bit (рекомендуемая для 4×H100)
huggingface-cli download Qwen/Qwen3.8-Max-AWQ \
  --local-dir /models/qwen-3.8-max-awq

# GGUF (для llama.cpp / Ollama):
huggingface-cli download Qwen/Qwen3.8-Max-GGUF \
  --include "qwen3.8-max-Q4_K_M.gguf" \
  --local-dir /models/qwen-3.8-max-gguf

Шаг 2: Запускаем vLLM

python -m vllm.entrypoints.openai.api_server \
  --model /models/qwen-3.8-max-awq \
  --quantization awq \
  --tensor-parallel-size 4 \
  --max-model-len 262144 \
  --gpu-memory-utilization 0.92 \
  --enable-prefix-caching \
  --max-num-seqs 64 \
  --enable-metrics \
  --port 8000

Шаг 3: Проверка

curl http://localhost:8000/v1/models
# → {"data": [{"id": "qwen-3.8-max-awq", ...}]}

curl http://localhost:8000/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"qwen-3.8-max-awq","messages":[{"role":"user","content":"Привет!"}],"max_tokens":100}'

# 4. Квантование: теория и практика

СхемаVRAM (4×H100)Perplexity ↑Движок
AWQ 4-bit290 GB+0.8%vLLM, TGI
GPTQ 4-bit295 GB+1.0%vLLM, TGI
GGUF Q4_K_M300 GB+1.1%llama.cpp

Рекомендация для production: AWQ 4-bit. Лучшее соотношение качество/VRAM, поддержка continuous batching в vLLM, стабильная latency под нагрузкой. GGUF — для локального использования (Ollama).

# 5. Нагрузочное тестирование

pip install locust

# locustfile.py
from locust import HttpUser, task, between

class QwenUser(HttpUser):
    wait_time = between(0.5, 2.0)
    @task
    def chat(self):
        self.client.post("/v1/chat/completions", json={
            "model": "qwen-3.8-max-awq",
            "messages": [{"role":"user","content":"Напиши quicksort на Python"}],
            "max_tokens": 256
        })

# Запуск: locust -f locustfile.py --host http://localhost:8000
# → http://localhost:8089 → 50 users, ramp-up 10/sec

# Ожидаемые результаты (AWQ 4-bit, 4×H100):
# - P50 latency: 800ms
# - P95 latency: 1800ms
# - Throughput: 45 tok/s per user
# - TTFT: 120ms

# 6. Мониторинг в production

# Prometheus-метрики vLLM (--enable-metrics)
# docker-compose.yml
services:
  prometheus:
    image: prom/prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
  grafana:
    image: grafana/grafana
    ports: ["3000:3000"]

# Ключевые алерты:
# - vllm:gpu_cache_usage_perc > 0.95 → GPU memory pressure
# - vllm:request_latency_p95 > 5000ms → degradation
# - vllm:num_requests_waiting > 100 → queue overflow risk

# 7. Self-hosted vs API — итоговое сравнение

КритерийSelf-hostedAPI (Alibaba)
Контроль данныхПолныйДанные в облаке
ФайнтюнингДа, на своих данныхОграничен
МасштабированиеРучное (GPU)Авто
Цена < 10M tok/день$2,400+/мес$150/мес
Цена > 50M tok/деньДешевле$750+/мес × N
DevOps нагрузкаВысокаяНулевая

Рекомендация Qantcore