Signed-off-by: amy-why-3459 <wuhaiyan17@huawei.com> Co-authored-by: Cursor <cursoragent@cursor.com>
120 lines
3.5 KiB
YAML
120 lines
3.5 KiB
YAML
# MiniCPM-o 4.5 three-stage deploy on one large-memory GPU.
|
||
pipeline: minicpmo_4_5
|
||
async_chunk: true
|
||
|
||
trust_remote_code: true
|
||
enable_prefix_caching: false
|
||
|
||
connectors:
|
||
connector_of_shared_memory:
|
||
name: SharedMemoryConnector
|
||
extra:
|
||
connector_get_sleep_s: 0.01
|
||
connector_get_max_wait_first_chunk: 3000
|
||
connector_get_max_wait: 300
|
||
codec_chunk_frames: 25
|
||
codec_left_context_frames: 3
|
||
# HiFT capture buckets are derived from codec_chunk_frames and
|
||
# codec_left_context_frames. (#5869)
|
||
# A future initial_codec_chunk_frames shape will use lazy capture unless
|
||
# HiFTGraphWrapper.derive_capture_bucket_size explicitly includes it.
|
||
enable_hift_graph: true
|
||
enable_cfm_graph: true
|
||
cfm_max_graphs: 32
|
||
|
||
stages:
|
||
- stage_id: 0
|
||
max_num_seqs: 4
|
||
# Leave headroom on the shared GPU for Talker KV + concurrent Code2Wav.
|
||
gpu_memory_utilization: 0.55
|
||
enforce_eager: false
|
||
tensor_parallel_size: 1
|
||
max_num_batched_tokens: 16384
|
||
devices: "0"
|
||
# Required for MiniCPM interleaved image/audio Daily-Omni packs (~78% recipe).
|
||
# Keep these in YAML so they are applied through --deploy-config.
|
||
interleave_mm_strings: true
|
||
media_io_kwargs:
|
||
video:
|
||
fps: 1
|
||
num_frames: 128
|
||
limit_mm_per_prompt:
|
||
# Daily-Omni MiniCPM pack: up to 64 interleaved image/audio pairs (1fps).
|
||
image: 64
|
||
audio: 64
|
||
video: 1
|
||
default_sampling_params:
|
||
temperature: 0.0
|
||
top_p: 1.0
|
||
top_k: -1
|
||
max_tokens: 2048
|
||
seed: 42
|
||
detokenize: true
|
||
# 1.0 for MCQ accuracy; 1.1 can bias short A–D answers.
|
||
repetition_penalty: 1.0
|
||
|
||
- stage_id: 1
|
||
max_num_seqs: 4
|
||
# Leave device-level headroom for the colocated HiFi-GAN cuDNN workspace.
|
||
gpu_memory_utilization: 0.15
|
||
enforce_eager: false
|
||
max_num_batched_tokens: 8192
|
||
# Talker context is 4096 (tts_config.max_position_embeddings).
|
||
max_model_len: 4096
|
||
devices: "0"
|
||
output_connectors:
|
||
to_stage_2: connector_of_shared_memory
|
||
# Talker is a single-vocab codec LM. These knobs go to vLLM's Sampler
|
||
# (head_code logits). EOS is tts_config.eos_token_id (num_audio_tokens-1).
|
||
default_sampling_params:
|
||
temperature: 0.8
|
||
top_p: 0.8
|
||
top_k: 100
|
||
repetition_penalty: 1.02
|
||
min_tokens: 50
|
||
max_tokens: 4096
|
||
seed: 42
|
||
detokenize: false
|
||
|
||
- stage_id: 2
|
||
max_num_seqs: 4
|
||
gpu_memory_utilization: 0.18
|
||
enforce_eager: true
|
||
enable_chunked_prefill: false
|
||
max_num_batched_tokens: 65536
|
||
max_model_len: 65536
|
||
devices: "0"
|
||
input_connectors:
|
||
from_stage_1: connector_of_shared_memory
|
||
default_sampling_params:
|
||
temperature: 0.0
|
||
top_p: 1.0
|
||
top_k: -1
|
||
max_tokens: 65536
|
||
detokenize: true
|
||
|
||
platforms:
|
||
cuda:
|
||
stages:
|
||
- stage_id: 1
|
||
# Four Talker streams need much less KV than automatic sizing.
|
||
# Leave single-GPU headroom for concurrent Stage 2 diffusion batches.
|
||
kv_cache_memory_bytes: 2147483648 # 2 GiB
|
||
|
||
npu:
|
||
stages:
|
||
- stage_id: 0
|
||
max_num_batched_tokens: 8192
|
||
compilation_config:
|
||
cudagraph_mode: PIECEWISE
|
||
- stage_id: 1
|
||
max_num_batched_tokens: 8192
|
||
compilation_config:
|
||
cudagraph_mode: PIECEWISE
|
||
- stage_id: 2
|
||
# Stage 2 stays outer-eager and captures only exact-shape CFM DiT
|
||
# estimator kernels through the NPU platform patch.
|
||
additional_config:
|
||
code2wav_enable_npu_graph: true
|
||
code2wav_max_npu_graphs: 32
|