Zpět na domů

vLLM Production Stack: základní spuštění v K8s

vLLM Production Stack zajišťuje vysoce výkonný inferenční LLM v Kubernetes. Jsou probírána základní nasazení, nastavení GPU/CPU, tool-calling a multimodální modely s praktickými YAML příklady.

vLLM v produkci: K8s + GPU optimalizace
Advertisement 728x90

vLLM Production Stack: nasazení a základní nastavení pro produkci

vLLM Production Stack usnadňuje nasazení vysokoproduktivního inferenčního provozu LLM v Kubernetes. Sestává ze skupiny instancí vLLM a směrovače pro směrování požadavků. Podporuje kompatibilní rozhraní OpenAI: chat/completions, embeddings, tokenizer, stejně jako přepisování a překlad zvuku. Testovací prostředí: 2 servery s 8× NVIDIA H200 (141 GB), Astra Linux SE 8, Kubernetes 1.30, vLLM 0.17.0, Production Stack 0.1.10.

Příklady konfigurací jsou uvedeny fragmenty YAML. Plné manifesty obsahují standardní pole Kubernetes, která nejsou opakována pro stručnost. Konflikty parametrů jsou uvedeny zvlášť.

Podporované modely a načítání

vLLM podporuje většinu aktuálních LLM. Pro nové modely použijte nightly image. Modely se ve výchozím stavu stahují z Hugging Face. Při absence internetu je možné je připojit prostřednictvím PVC:

Google AdInline article slot
extraVolumeMounts:
  - mountPath: /models/Qwen3-8B
    name: model
    readOnly: true
extraVolumes:
  - name: model
    persistentVolumeClaim:
      claimName: pvc-qwen3-8b

Základní spuštění Qwen3-8B

Nasazení Qwen3-8B s lokálním připojením a OpenAI API:

servingEngineSpec:
  enableEngine: true
  modelSpec:
    - name: qwen3-8b
      repository: vllm-openai
      tag: v0.17.0
      env:
        - name: HF_HUB_OFFLINE
          value: "1"
      modelURL: /models/Qwen3-8B
      extraVolumeMounts:
        - mountPath: /models/Qwen3-8B
          name: model
          readOnly: true
      extraVolumes:
        - name: model
          persistentVolumeClaim:
            claimName: pvc-qwen3-8b
      replicaCount: 1
      requestCPU: 8
      requestGPU: 1
      requestMemory: 16Gi
      vllmConfig:
        extraArgs:
          - --served-model-name
          - Qwen/Qwen3-8B
        gpuMemoryUtilization: 0.98

Proměnná HF_HUB_OFFLINE=1 zakazuje přístup k HF. Přesměrování portu: kubectl port-forward svc/... 9191:9191. Testovací požadavek:

curl -N http://localhost:9191/v1/chat/completions \
  -H "Content-Type: application/json" \
  --data-raw '{
    "model": "Qwen/Qwen3-8B",
    "messages": [
      { "role": "user", "content": "Napiš: Ahoj!" }
    ]
  }'

Model s režimem myšlení vrací blok <think></think>.

Google AdInline article slot

Volání nástrojů a režimy myšlení

Pro volání nástrojů aktivujte serverové možnosti:

extraArgs:
  - --enable-auto-tool-choice
  - --tool-call-parser
  - qwen3_coder

Bez nich agenty selhají s chybou. Režim myšlení/ne-myšlení se nastavuje prostřednictvím --default-chat-template-kwargs:

extraArgs:
  - --default-chat-template-kwargs
  - '{"enable_thinking": false}'

Klientské chat_template_kwargs přepisují serverové. Pro DeepSeek: {"thinking": false}.

Google AdInline article slot

Multimodální modely a CPU backend

Multimodální modely vyžadují vlastní obrázek:

FROM vllm/vllm-openai:v0.17.0
RUN uv pip install --system "vllm[audio]==0.17.0" && \
    uv pip install --system "vllm[video]==0.17.0"

Zvětšete shmSize: "32Gi" pro mm_processor_cache. Je nutné nastavit tensorParallelSize: 1. Pro Qwen3-Omni-30B: --limit-mm-per-prompt.

CPU provoz pro embedding modely (Qwen3-Embedding-0.6B):

env:
  - name: VLLM_CPU_KVCACHE_SPACE
    value: "48"
vllmConfig:
  extraArgs:
    - --served-model-name
    - Qwen3-Embedding-0.6B

VLLM_CPU_KVCACHE_SPACE je povinné s rezervou paměti.

Klíčové parametry spuštění

| Parametr | Účel | Kdy je důležitý |

|----------|------|----------------|

| enablePrefixCaching | Uložení společného prefixu do KV-cache | Společné začátky promptů |

| enableChunkedPrefill | Rozdělení dlouhého prefillu | Dlouhé vstupy, smíšená zátěž |

| maxModelLen | Maximální délka kontextu | Úspora paměti, dlouhý kontext |

| dtype | Typ čísel pro váhy | Fixace přesnosti |

| tensorParallelSize | Rozdělení mezi GPU | Velké modely |

| maxNumSeqs | Maximální počet posloupností v batchu | Paralelizmus, zpoždění |

| gpuMemoryUtilization | Využití paměti GPU | Optimalizace OOM |

gpuMemoryUtilization=0.98 zanechává rezervu pro KV-cache. maxModelLen omezuje kontext pro úsporu paměti. enablePrefixCaching zrychluje opakující se prefixy.

Co je důležité

  • vLLM Production Stack je kompletní K8s obálka s routerem a observabilitou.
  • Pro offline provoz připojujte modely přes PVC, HF_HUB_OFFLINE=1.
  • Volání nástrojů vyžaduje --enable-auto-tool-choice a model-specifický parser.
  • Multimodální modely: vlastní obrázek + shmSize 32Gi + tensorParallelSize.
  • CPU režim: VLLM_CPU_KVCACHE_SPACE s rezervou.

— Editorial Team

Advertisement 728x90

Číst dál