# 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 - Eval & Retrieval
      - 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
