name: omni-pipeline

# Apply together with docker-compose.pipeline.yml on a Linux MI300X host.
# This file grants only the standard ROCm character devices. It does not pull
# images, download models, publish additional ports, or start a service.
x-rocm-mi300x: &rocm-mi300x
  devices:
    - /dev/kfd:/dev/kfd
    - /dev/dri:/dev/dri
  group_add:
    - video
    - render
  security_opt:
    - seccomp=unconfined
  environment:
    HIP_VISIBLE_DEVICES: "${HIP_VISIBLE_DEVICES:-0}"
    ROCR_VISIBLE_DEVICES: "${ROCR_VISIBLE_DEVICES:-0}"
    HSA_ENABLE_SDMA: "${HSA_ENABLE_SDMA:-1}"

services:
  minicpm-worker:
    <<: *rocm-mi300x
  asr:
    <<: *rocm-mi300x
  qwen:
    <<: *rocm-mi300x
    environment:
      HIP_VISIBLE_DEVICES: "${HIP_VISIBLE_DEVICES:-0}"
      ROCR_VISIBLE_DEVICES: "${ROCR_VISIBLE_DEVICES:-0}"
      HSA_ENABLE_SDMA: "${HSA_ENABLE_SDMA:-1}"
      QWEN_REQUIRE_GPU_ARCH: gfx942
      OMNI_HARDWARE_PROFILE: mi300x_single
      # DFlash2 stays off here. It can only be requested through the launcher's
      # separately pinned parity/benchmark canary gate.
      QWEN_DFLASH2_CANARY: "${QWEN_DFLASH2_CANARY:-0}"
  h3-worker:
    <<: *rocm-mi300x
  hunyuan:
    <<: *rocm-mi300x
