NVIDIA-NeMo / NVIDIA-NeMo/Automodel
qwen3_omni_moe adapter_config target_modules miss the thinker. namespace, so peft also adapts the talker
@yuhezhang-ai is already working on this.
Since Sep 19, 2026.
- Dominant language
- Python
- Stars
- 960
- Forks
- 316
- Avg merge
- 3d 20h
- Merged PRs (30d)
- 143
Description
what happens
a lora adapter trained on qwen3_omni_moe saves tensor names under thinker. but adapter_config.json target_modules without it:
adapter_model.safetensors : base_model.model.thinker.model.layers.0.self_attn.q_proj.lora_A.weight
adapter_config.json : "model.layers.0.self_attn.q_proj"
peft matches target_modules by suffix, so on the full omni model that entry also matches the talker. the talker gets adapter modules the file has no weights for, so they stay randomly initialized. you serve a model with untrained adapters on a tower you never fine-tuned, with no warning.
why
to_hf and convert_single_tensor_to_hf both add the namespace via _add_thinker_prefix, but the adapter never overrides map_peft_target_module_to_hf, so target_modules go out unchanged. qwen2_5_omni already handles this, its override docstring describes the same failure.
repro
save a lora from qwen3_omni_moe, load it onto Qwen3OmniMoeForConditionalGeneration, and compare get_peft_model_state_dict against the file. 8 extra keys under talker..
fix
pr: #3945
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.