Support upstream Omni class for ROMA loading

This commit is contained in:
Xin Wang
2026-08-27 13:45:25 +08:00
parent 655d27a4ca
commit 5e34563739
+26 -7
View File
@@ -149,14 +149,31 @@ def load_qwen_omni(
elif backbone_loader == "roma": elif backbone_loader == "roma":
try: try:
from transformers import Qwen2_5OmniModel from transformers import Qwen2_5OmniModel
except ImportError as error: except ImportError:
raise RuntimeError( # The ROMA transformers fork exposes the full wrapper as
"The ROMA loader requires transformers.Qwen2_5OmniModel. " # Qwen2_5OmniModel. Upstream Transformers releases instead use
"Use the ROMA/Qwen2.5-Omni environment rather than an older " # Qwen2_5OmniForConditionalGeneration for the same full
"Transformers installation." # Thinker+Talker checkpoint layout. The latter is already
) from error # available in the Qwen/MS-SWIFT image used by this project.
try:
from transformers import Qwen2_5OmniForConditionalGeneration
except ImportError as error:
raise RuntimeError(
"The ROMA loader requires either "
"transformers.Qwen2_5OmniModel (ROMA fork) or "
"Qwen2_5OmniForConditionalGeneration (upstream "
"Transformers)."
) from error
loaded = Qwen2_5OmniModel.from_pretrained( full_model_class = Qwen2_5OmniForConditionalGeneration
full_model_class_name = (
"Qwen2_5OmniForConditionalGeneration"
)
else:
full_model_class = Qwen2_5OmniModel
full_model_class_name = "Qwen2_5OmniModel"
loaded = full_model_class.from_pretrained(
model_id, model_id,
output_loading_info=True, output_loading_info=True,
**model_kwargs, **model_kwargs,
@@ -203,6 +220,7 @@ def load_qwen_omni(
metadata = { metadata = {
"loader": "roma", "loader": "roma",
"full_model_class": full_model_class_name,
"checkpoint_layout": "full_qwen2_5_omni", "checkpoint_layout": "full_qwen2_5_omni",
"ignored_checkpoint_keys": unexpected, "ignored_checkpoint_keys": unexpected,
"ignored_checkpoint_key_policy": "thinker.gate_*_only", "ignored_checkpoint_key_policy": "thinker.gate_*_only",
@@ -218,6 +236,7 @@ def load_qwen_omni(
} }
print( print(
"ROMA backbone loaded cleanly: " "ROMA backbone loaded cleanly: "
f"full_model_class={full_model_class_name}, "
f"gate_modules_present={gate_modules_present}, " f"gate_modules_present={gate_modules_present}, "
f"ignored_gate_tensors={len(unexpected)}; " f"ignored_gate_tensors={len(unexpected)}; "
"Talker/Token2Wav released.", "Talker/Token2Wav released.",