NVIDIA-NeMo / NVIDIA-NeMo/Automodel

qwen3_omni_moe adapter_config target_modules miss the thinker. namespace, so peft also adapts the talker

Open
#3,944 0 comments 0 reactions 1 assignee View on GitHub

@yuhezhang-ai is already working on this.

Since Sep 19, 2026.

bug community-request
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.