feat(qwen-image-bench): replace qwen3.6-35b-a3b on GPU1 with the T2I judge (NVFP4)
flukethoughts/Qwen-Image-Bench-NVFP4 — Qwen's text-to-image quality JUDGE (vision-intact, NVFP4) on ana-ml2 GPU 1, replacing qwen3.6-35b-a3b: - stacks/qwen-image-bench/ — vLLM multimodal serve (Qwen3_5ForConditionalGeneration, no text-only patch — vision wanted), GPU1 device pin, :8014. util 0.32 (0.22 KV-starved → crash-loop "no available memory for cache blocks"; util is a fraction of TOTAL so it must clear the ~20GB weight floor). - litellm: removed qwen3.6-35b-a3b + -thinking; added qwen-image-bench + qwen-image-judge alias. Verified live: healthy (KV 9.4GB / 133K tokens), text + IMAGE (vision path) both respond. NOTE: arbo's hero-judge was bound to qwen3.6-35b-a3b — comfy-dev notified to repoint.
This commit is contained in:
@@ -41,40 +41,25 @@ model_list:
|
|||||||
model_info:
|
model_info:
|
||||||
mode: chat
|
mode: chat
|
||||||
|
|
||||||
# --- Qwen3.6-35B-A3B vision-language MoE (official FP8) — vision + chat. vLLM
|
# --- Qwen-Image-Bench (NVFP4) — text-to-image quality JUDGE, vision-intact. vLLM
|
||||||
# on ana-ml2 GPU 1, :8007. Explicit entry shadows the "*" wildcard llama-swap
|
# on ana-ml2 GPU 1, :8014. REPLACED qwen3.6-35b-a3b (operator 2026-06-19; the
|
||||||
# route. REPLACED qwen3.5-9b-fp8 2026-06-14 (the 9B is retired; this is a
|
# qwen36 VL judge was downed + its FP8 weights freed ~33GB). Multimodal — image
|
||||||
# 35B-A3B MoE — served under its TRUE name, never aliased under the old one).
|
# + prompt in, a 5-dim verdict out (overall quality / prompt match / aesthetic /
|
||||||
#
|
# LoRA activation / confidence). qwen-image-judge is a duplicate-entry alias.
|
||||||
# THINKING SPLIT (2026-06-15, operator call — mirrors the glm-5.1 pattern
|
# ⚠️ arbo's hero-judge was bound to qwen3.6-35b-a3b — comfy-dev notified to
|
||||||
# above). One hybrid checkpoint; the per-request `enable_thinking` switch
|
# repoint (different I/O than the old general VL judge). ---
|
||||||
# picks the mode. LiteLLM forwards extra_body verbatim to vLLM, where
|
- model_name: qwen-image-bench
|
||||||
# chat_template_kwargs lands in the chat template. vLLM runs
|
|
||||||
# --reasoning-parser qwen3 so reasoning surfaces as reasoning_content. ---
|
|
||||||
# qwen3.6-35b-a3b: thinking DISABLED by default. The checkpoint defaults
|
|
||||||
# thinking ON; enable_thinking=false forces the empty <think></think> block.
|
|
||||||
# Reasoning is opt-in via qwen3.6-35b-a3b-thinking below.
|
|
||||||
- model_name: qwen3.6-35b-a3b
|
|
||||||
litellm_params:
|
litellm_params:
|
||||||
model: hosted_vllm/qwen3.6-35b-a3b
|
model: hosted_vllm/qwen-image-bench
|
||||||
api_base: http://10.250.50.54:8007/v1
|
api_base: http://10.250.50.54:8014/v1
|
||||||
api_key: os.environ/VLLM_API_KEY
|
api_key: os.environ/VLLM_API_KEY
|
||||||
extra_body:
|
|
||||||
chat_template_kwargs:
|
|
||||||
enable_thinking: false
|
|
||||||
model_info:
|
model_info:
|
||||||
mode: chat
|
mode: chat
|
||||||
# qwen3.6-35b-a3b-thinking: identical upstream checkpoint, thinking ENABLED
|
- model_name: qwen-image-judge
|
||||||
# (opt-in reasoning). The qwen3 reasoning-parser splits <think>…</think> into
|
|
||||||
# reasoning_content; content holds just the answer.
|
|
||||||
- model_name: qwen3.6-35b-a3b-thinking
|
|
||||||
litellm_params:
|
litellm_params:
|
||||||
model: hosted_vllm/qwen3.6-35b-a3b
|
model: hosted_vllm/qwen-image-bench
|
||||||
api_base: http://10.250.50.54:8007/v1
|
api_base: http://10.250.50.54:8014/v1
|
||||||
api_key: os.environ/VLLM_API_KEY
|
api_key: os.environ/VLLM_API_KEY
|
||||||
extra_body:
|
|
||||||
chat_template_kwargs:
|
|
||||||
enable_thinking: true
|
|
||||||
model_info:
|
model_info:
|
||||||
mode: chat
|
mode: chat
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# qwen-image-bench (flukethoughts/Qwen-Image-Bench-NVFP4) — ana-ml2 GPU 1 tunables.
|
||||||
|
# Real .env lives at /opt/docker/compose/qwen-image-bench/.env.
|
||||||
|
|
||||||
|
QIB_IMAGE=vllm/vllm-openai:latest
|
||||||
|
QIB_CONTAINER_NAME=vllm-qwen-image-bench
|
||||||
|
|
||||||
|
# Own port (8007=qwen36 [downed], 8010=qwen-gen, 8011=selene — 8014 free).
|
||||||
|
QIB_PORT=8014
|
||||||
|
QIB_GPU_ID=1
|
||||||
|
|
||||||
|
# Shared GPU 1 (granite/selene/embed/rerank/reward + this). util is a fraction of
|
||||||
|
# TOTAL (96GB), so it must clear the ~20GB weight floor + leave KV: 0.22 (~21GB) left
|
||||||
|
# ~nothing for KV and crash-looped ("no available memory for cache blocks"). 0.32
|
||||||
|
# (~31GB → ~9GB KV) fits the ~37GB freed by downing qwen36 (cf. qwen36's own 0.34).
|
||||||
|
QIB_GPU_MEM_UTIL=0.32
|
||||||
|
QIB_MAX_MODEL_LEN=32768
|
||||||
|
QIB_MAX_NUM_SEQS=8
|
||||||
|
|
||||||
|
# Optional upstream vLLM API key (empty = no auth; internal net only).
|
||||||
|
API_KEY=
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
# qwen-image-bench — flukethoughts/Qwen-Image-Bench-NVFP4 on ana-ml2 GPU 1,
|
||||||
|
# REPLACING qwen3.6-35b-a3b (operator 2026-06-19). Qwen's text-to-image quality
|
||||||
|
# JUDGE model (vision-language, NVFP4 weights / vision tower bf16). NOT generative —
|
||||||
|
# it scores T2I outputs on 5 dims (overall quality, prompt match, aesthetic, LoRA
|
||||||
|
# activation, confidence).
|
||||||
|
#
|
||||||
|
# Arch: Qwen3_5ForConditionalGeneration (dense Qwen3.5 hybrid SSM+attn + vision),
|
||||||
|
# ~17B / ~20GB NVFP4. VISION-INTACT → served as multimodal; NO text-only patch
|
||||||
|
# (unlike the qwen3.5-122b gen model, which had text-only weights). vLLM
|
||||||
|
# production-validated per the model card.
|
||||||
|
#
|
||||||
|
# ⚠️ qwen3.6-35b-a3b was arbo's hero-judge (comfy-dev consumer). Downing it breaks
|
||||||
|
# arbo's judging until comfy-dev repoints to qwen-image-bench (different I/O — a
|
||||||
|
# 5-dim verdict vs a general VL judge). comfy-dev notified.
|
||||||
|
#
|
||||||
|
# DISPLACEMENT: GPU 1 is shared (granite/selene/embed/rerank/reward). qwen3.6 used
|
||||||
|
# util 0.34 (~33GB); down it first, then this fits at util ~0.22 (~21GB). REVERT =
|
||||||
|
# down this, `up -d` the qwen36 stack.
|
||||||
|
#
|
||||||
|
# Tunables in .env.
|
||||||
|
|
||||||
|
name: qwen-image-bench
|
||||||
|
|
||||||
|
services:
|
||||||
|
vllm-qwen-image-bench:
|
||||||
|
image: ${QIB_IMAGE:-vllm/vllm-openai:latest}
|
||||||
|
container_name: ${QIB_CONTAINER_NAME:-vllm-qwen-image-bench}
|
||||||
|
restart: unless-stopped
|
||||||
|
ipc: host
|
||||||
|
ports:
|
||||||
|
- "${QIB_PORT:-8014}:8000"
|
||||||
|
volumes:
|
||||||
|
- /tank/aimodels/huggingface:/hfcache
|
||||||
|
- /tank/aimodels/qwen-image-bench-nvfp4:/model:ro
|
||||||
|
environment:
|
||||||
|
- HF_HOME=/hfcache
|
||||||
|
- HF_HUB_CACHE=/hfcache/hub
|
||||||
|
- VLLM_API_KEY=${API_KEY:-}
|
||||||
|
command:
|
||||||
|
- /model
|
||||||
|
- --served-model-name
|
||||||
|
- qwen-image-bench
|
||||||
|
- --host
|
||||||
|
- 0.0.0.0
|
||||||
|
- --port
|
||||||
|
- "8000"
|
||||||
|
- --gpu-memory-utilization
|
||||||
|
- ${QIB_GPU_MEM_UTIL:-0.32}
|
||||||
|
- --max-model-len
|
||||||
|
- ${QIB_MAX_MODEL_LEN:-32768}
|
||||||
|
- --max-num-seqs
|
||||||
|
- ${QIB_MAX_NUM_SEQS:-8}
|
||||||
|
- --trust-remote-code
|
||||||
|
- --dtype
|
||||||
|
- auto
|
||||||
|
- --enable-prefix-caching
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
reservations:
|
||||||
|
devices:
|
||||||
|
- driver: nvidia
|
||||||
|
device_ids:
|
||||||
|
- "${QIB_GPU_ID:-1}"
|
||||||
|
capabilities:
|
||||||
|
- gpu
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 600s
|
||||||
|
networks:
|
||||||
|
- tnet
|
||||||
|
labels:
|
||||||
|
- homepage.group=AI Systems
|
||||||
|
- homepage.name=Qwen-Image-Bench (T2I judge, NVFP4)
|
||||||
|
- homepage.icon=mdi-image-check
|
||||||
|
- homepage.description=Qwen text-to-image quality judge (NVFP4, vision-intact) on ana-ml2 GPU 1
|
||||||
|
- homepage.href=http://10.250.50.54:${QIB_PORT:-8014}/docs
|
||||||
|
|
||||||
|
networks:
|
||||||
|
tnet:
|
||||||
|
name: traefik-net
|
||||||
|
external: true
|
||||||
Reference in New Issue
Block a user