Files
vLLM-4x-RTX-3090/docker-compose.yml
T
MOVZXandHinata d9ca3bc4f2 feat: Set concurrency and the CUDA graph list from .env
MAX_SEQS and the prefill chunk were fixed in the start profile, so any
change to concurrency needed an edit to the script. Read both from .env,
and validate them before the engine starts. The chunk must be at least
the sequence count, the rule vLLM applies at scheduler.py:309. A
MAX_SEQS whose full context exceeds the 924,993-token pool prints a
note, because that shape preempts and recomputes instead of failing.

The captured graph list was a fixed [1,2,4,8,12,16], which covers a
decode batch of 4 requests and nothing wider. One decode step is K+1 = 4
tokens per request, so the list now follows MAX_SEQS: 1, 2, 4, then
every 4 tokens up to MAX_SEQS x 4. At the shipped 4 it produces the old
list exactly. Above 8 graphs a note prints, since each size costs
capture time and graph VRAM.

Drop --mm-processor-cache-gb. This workload sends each image once, so
the cache never had a hit to keep, and vLLM's own 4 GiB default is the
better base.

Co-Authored-By: Hinata <hinata@idihore.id>
Signed-off-by: MOVZX <movzx@yahoo.com>
2026-10-18 02:04:50 +07:00

65 lines
2.2 KiB
YAML

services:
vllm:
image: ${IMAGE:-vllm}:${IMAGE_TAG:-latest}
container_name: ${CONTAINER_NAME:-vllm}
build:
context: .
args:
MAX_JOBS: ${MAX_JOBS:-32}
ARCH: ${ARCH:-8.6}
additional_contexts:
ops: ./artifacts
uvcache: ${UV_CACHE_DIR:-${HOME}/.cache/uv}
pipcache: ${PIP_CACHE_DIR:-${HOME}/.cache/pip}
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
command: ["${MODEL_MOUNT_PATH:-/models/Qwen3.8-Flash-Next}"]
shm_size: 16g
ulimits:
memlock: -1
stack: 67108864
ports:
- "${HOST_BIND_ADDR:-0.0.0.0}:${HOST_PORT:-8080}:8000"
environment:
MODEL_NAME: ${MODEL_NAME:-Hinata}
PORT: 8000
SCALES: /opt/vllm/qsa_kv_scales.json
VLLM_API_KEY: ${VLLM_API_KEY:-}
PLE_HOME: ${PLE_HOME:-0}
CUDA_VISIBLE_DEVICES: ${CUDA_VISIBLE_DEVICES:-0,1,2,3}
AUTO_TOPO: ${AUTO_TOPO:-0}
AUTO_TOPO_NCCL: ${AUTO_TOPO_NCCL:-legacy}
AUTO_TOPO_BIND: ${AUTO_TOPO_BIND:-0}
LANE_GPUS: ${LANE_GPUS:-}
LANE_CPUS: ${LANE_CPUS:-}
TOPO_TIMEOUT: ${TOPO_TIMEOUT:-20}
GUARD: ${GUARD:-warn}
COUNTERS: ${COUNTERS:-0}
VLLM_LOG_STATS_INTERVAL: ${VLLM_LOG_STATS_INTERVAL:-1}
MAX_SEQS: ${MAX_SEQS:-4}
MAX_BATCHED_TOKENS: ${MAX_BATCHED_TOKENS:-2048}
QWEN38_ABLITERATION: ${QWEN38_ABLITERATION:-Qwen3.8-Flash-Next-Uncensored}
volumes:
- "${MODEL_DIR:?Set MODEL_DIR in .env}:${MODEL_MOUNT_PATH:-/models/Qwen3.8-Flash-Next}:ro"
- ${ABLITERATION_DIR:-./abliteration}:/opt/qwen38/abliteration:ro
- ${CACHE_HOST_DIR:-./.vllm-cache}:/cache
- ${SCALES:-${MODEL_DIR}/qsa_kv_scales.json}:/opt/vllm/qsa_kv_scales.json:ro
- ./start.sh:/opt/vllm/start.sh:ro
restart: unless-stopped
stop_grace_period: 20s
logging:
driver: json-file
options:
max-size: ${LOG_MAX_SIZE:-100m}
max-file: ${LOG_MAX_FILE:-14}
healthcheck:
interval: ${HEALTHCHECK_INTERVAL:-60s}
timeout: ${HEALTHCHECK_TIMEOUT:-90s}
start_period: ${HEALTHCHECK_START_PERIOD:-30m}
retries: ${HEALTHCHECK_RETRIES:-3}