# MiniCPM-o 4.5 default deploy: 2-GPU layout.
#
# Stage 0 (thinker): GPU 0 — multimodal understanding, ~70% mem.
# Stage 1 (talker) : GPU 1 — MiniCPMTTS + Token2Wav, ~75% mem
#                            (covers both the talker LM and the in-process
#                            Token2Wav vocoder that emits the waveform).
#
# Other GPU layouts: minicpmo_4_5_3gpu.yaml, minicpmo_4_5_8x4090.yaml.
async_chunk: false

trust_remote_code: true
enable_prefix_caching: false

stages:
  - stage_id: 0
    max_num_seqs: 1
    gpu_memory_utilization: 0.7
    enforce_eager: true
    tensor_parallel_size: 1
    max_num_batched_tokens: 16384
    devices: "0"
    limit_mm_per_prompt:
      video: 1
    default_sampling_params:
      temperature: 0.0
      top_p: 1.0
      top_k: -1
      max_tokens: 2048
      seed: 42
      detokenize: true
      repetition_penalty: 1.1

  - stage_id: 1
    # Talker only consumes runtime_additional_information[0]; any value > 1
    # makes concurrent requests share request-0's audio (mm_outputs fallback).
    max_num_seqs: 1
    gpu_memory_utilization: 0.75
    enforce_eager: true
    max_num_batched_tokens: 8192
    devices: "1"
    default_sampling_params:
      temperature: 0.0
      top_p: 1.0
      top_k: -1
      max_tokens: 1
      seed: 42
      detokenize: false

# MiniCPM-o 4.5 has only been verified on CUDA devices.  Add per-platform
# overrides here when other backends (ROCm/XPU/NPU) are verified end-to-end.
platforms: {}
