Files
vllm-omni/vllm_omni/deploy/nemotron_labs_voicechat.yaml
T

82 lines
2.8 KiB
YAML

# NemotronVoiceChat-11B offline speech-to-speech deployment.
# 3 stages on one GPU: thinker (NemotronH AR) -> talker (EAR-TTS AR) -> code2wav
# (RVQ-VAE decode). thinker->talker is token-path only; talker->code2wav ships
# the [frames, 31] code stack via the shared-memory connector.
pipeline: nemotron_voicechat
async_chunk: false
connectors:
connector_of_shared_memory:
name: SharedMemoryConnector
extra:
shm_threshold_bytes: 65536
stages:
- stage_id: 0 # thinker: speech -> frame-locked text (final text output)
max_num_seqs: 1
gpu_memory_utilization: 0.62
enforce_eager: true
enable_prefix_caching: false
async_scheduling: false
max_num_batched_tokens: 8192
max_model_len: 8192
# fp32 matches the NeMo reference exactly (196/196 token parity on the
# acceptance fixture). bf16 is ~2x faster and measured within one word of
# the reference on the same fixture — flip to bfloat16 if you prefer speed
# over exact parity.
dtype: float32
# NemotronH mamba SSM state in fp32 (matches NVIDIA's own vLLM deployment
# of this model; bf16 SSM state accumulates drift over long sequences).
mamba_ssm_cache_dtype: float32
devices: "0"
default_sampling_params:
# Greedy, frame-locked: the example sets max_tokens to the
# exact acoustic frame count per request; text EOS never stops generation.
temperature: 0.0
ignore_eos: true
seed: 0
- stage_id: 1 # talker: text timeline -> 31-quantizer code stacks
max_num_seqs: 1
gpu_memory_utilization: 0.12
enforce_eager: true
enable_prefix_caching: false
async_scheduling: false
skip_tokenizer_init: true
max_num_batched_tokens: 4096
max_model_len: 16384
# fp32 like the NeMo reference: the EAR-TTS MoG/codec-embedding path mixes
# fp32 buffers into the forward, and 1B params in fp32 are cheap.
dtype: float32
devices: "0"
output_connectors:
to_stage_2: connector_of_shared_memory
default_sampling_params:
# Placeholder-token loop; the stage emits stop token 1 after the last
# timeline position. 16383 (not 16384): the request also carries one
# placeholder prompt token, and prompt + max_tokens must fit
# max_model_len.
temperature: 0.0
max_tokens: 16383
stop_token_ids: [1]
detokenize: false
seed: 0
- stage_id: 2 # code2wav: codes -> 22.05 kHz PCM (fp32 codec)
max_num_seqs: 1
gpu_memory_utilization: 0.06
enforce_eager: true
enable_prefix_caching: false
async_scheduling: false
skip_tokenizer_init: true
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
max_tokens: 1
detokenize: false
seed: 0