Instructions to use ZhangYuchi/modelbest-Qwen-2.5-Omni-7B-SFT-only with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use ZhangYuchi/modelbest-Qwen-2.5-Omni-7B-SFT-only with Transformers:
# Load model directly from transformers import AutoProcessor, AutoModel processor = AutoProcessor.from_pretrained("ZhangYuchi/modelbest-Qwen-2.5-Omni-7B-SFT-only") model = AutoModel.from_pretrained("ZhangYuchi/modelbest-Qwen-2.5-Omni-7B-SFT-only", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Qwen2.5-Omni-7B SFT (with observations) — OmniGAIA fine-tune
This is a fully fine-tuned version of Qwen/Qwen2.5-Omni-7B on the OmniGAIA training data, trained as a tool-integrated omni-modal agent that natively reasons over video + audio + image and calls external tools (web_search, page_browser, code_executor, read_image/audio/video).
The key differences from the recipe in the OmniGAIA paper are:
- Training data source. We use the raw
with_obstrajectories from the OmniGAIA train split as-is, rather than re-synthesizing trajectories via hindsight-guided tree exploration (the paper's OmniAtlas-SFT recipe). - Long-context handling via sliding window. Long trajectories are split via sliding window (width=8192, overlap=4096) at user/assistant pair boundaries, so all observation context still fits in the model context window during training instead of being truncated.
- Role-level masking equivalent to the paper's masked SFT. Original
role=tool(observation) messages are normalized torole=userto fit the Qwen2.5-Omni chat template. Combined withms-swift's default--loss_scale default(which only computes loss onassistantturns), this means only assistant tokens contribute to the loss; tool / observation content is fully masked, functionally the same as the paper's trajectory-level masked SFT.
The training objective is functionally equivalent to OmniAtlas-SFT (only assistant tokens are supervised; tool / observation tokens are masked). The improvement over the paper's 7B numbers is therefore attributable to the training-data recipe (raw
with_obstrajectories + sliding-window long-context handling), not to a different loss target.
This is checkpoint-150 (epoch ≈ 1.28), which gave the most stable validation performance during training.
Evaluation on OmniGAIA (Pass@1, official protocol)
Evaluated using the official OmniGAIA eval script (run_base_agent_original_paper.py) with DeepSeek-V3.2 as the LLM judge, same tools/active-perception setup as published baselines.
| Seed | Pass@1 (LLM_Equal) | EM | Avg tool calls | Non-empty rate |
|---|---|---|---|---|
| 42 | 16.94 | 8.61 | 12.16 | 100% |
| 1337 | 15.28 | 5.28 | 12.27 | 100% |
| 2024 | 14.44 | 6.11 | 11.91 | 100% |
| 7 | 16.39 | 4.17 | 11.86 | 100% |
| Mean ± std (4 seeds) | 15.76 ± 1.12 | 6.04 ± 1.89 | 12.05 | 100% |
Comparison to OmniGAIA paper baselines (Qwen2.5-Omni-7B family)
| Method | Pass@1 |
|---|---|
| Qwen2.5-Omni-7B (zero-shot) | 3.6 |
| + OmniAtlas-SFT (paper) | 11.4 |
| + OmniDPO (paper) | 13.3 |
| + with_obs SFT (this model) | 15.76 |
The cross-seed variance comes mainly from (i) real-time
web_searchresults drifting between runs, and (ii) DeepSeek-V3.2 judge non-determinism, not from the model itself (vLLM is run in greedy mode).
Per-difficulty breakdown (averaged over 4 seeds)
| Level | Count | Pass@1 |
|---|---|---|
| Easy | 122 | 25.41 |
| Medium | 160 | 12.97 |
| Hard | 78 | 7.05 |
Training
| Item | Value |
|---|---|
| Base model | Qwen/Qwen2.5-Omni-7B |
| Trainer | ms-swift (full-param SFT, bf16) |
| Train data | OmniGAIA train split, kept as with_obs cached dataset (~2,150 trajectories), split via sliding window (width=8192, overlap=4096) → 4,682 windows |
| Epochs | 2 |
| Effective batch | 1 × 8 GPUs × gradient_accumulation_steps=5 |
| Learning rate | 1e-5, warmup ratio 0.03 |
| Max length | 8,192 |
| Precision | bf16 |
| Attention | flash_attention_2 |
| Other | padding_free, use_liger_kernel, gradient & vit_gradient checkpointing, DeepSpeed ZeRO-2 |
This checkpoint corresponds to global step 150 / 234 (epoch ≈ 1.28). Later checkpoints (200, 234) showed slightly higher train loss reduction but no monotonic Pass@1 gain in our evaluation, so we use step 150 for the leaderboard submission.
Data contamination self-check
We verified that no test-set question text from test_metadata.json appears verbatim in any training sample (0 / 2,151 overlap). The training set shares media with the test set (~23%) because the OmniGAIA dataset is constructed from a shared media pool — this is the same condition under which all OmniAtlas / Qwen baselines in the paper were evaluated, so the comparison is apples-to-apples.
How to use
from transformers import Qwen2_5OmniForConditionalGeneration, AutoProcessor
model_path = "ZhangYuchi/modelbest-Qwen-2.5-Omni-7B-SFT-only"
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
model = Qwen2_5OmniForConditionalGeneration.from_pretrained(
model_path,
torch_dtype="bfloat16",
device_map="auto",
trust_remote_code=True,
)
For best results with OmniGAIA-style multi-turn tool-use evaluation, serve it with vLLM:
vllm serve <model_path> \
--trust-remote-code \
--tensor-parallel-size 1 \
--max-model-len 32768 \
--max-num-seqs 1 \
--max-num-batched-tokens 32768
and drive it via the OmniGAIA agent loop (run_base_agent_original_paper.py --enable-active-perception ...) with web_search, page_browser, code_executor, and read_image/audio/video tools.
Intended use & limitations
- Designed for omni-modal agentic QA with multi-turn tool use over video + audio + image.
- Inherits all limitations of
Qwen2.5-Omni-7B(audio perception errors on long clips, vision recognition errors on rare entities, etc.). - The training data is heavy on tool-call trajectories — direct one-shot answers without tool use are not what this checkpoint is optimized for.
Caveats and known limitations (read this before comparing to the paper)
Functionally equivalent loss masking, different role wrapper.
tool/ observation messages are remapped torole=user(to satisfy the Qwen2.5-Omni chat template), andms-swiftthen masks all non-assistanttokens via--loss_scale default. The end effect — supervising onlyassistanttokens (reasoning +tool_call) — matches the paper's trajectory-level masked SFT, but the on-disk role schema differs. Downstream tooling that special-casesrole=toolmay not recognize the observation segments in this dataset / format.Trajectories are not re-synthesized. The paper's OmniAtlas-SFT uses hindsight-guided tree exploration with Gemini-3-Flash to synthesize new tool-integrated trajectories. This model trains directly on the raw
with_obstrajectories shipped in the OmniGAIA train split, without any re-synthesis or trajectory cleanup.No DPO / RLHF stage. The paper reports its strongest 7B number with
OmniAtlas-SFT + OmniDPO. This model is SFT-only.Shared media pool between train and test. The OmniGAIA train and test sets are constructed from a shared media pool (~23% of train trajectories share at least one media file with a test item, even though no test-set question text appears verbatim in any train sample — see "Data contamination self-check" above). This is a property of the benchmark itself, the same as all baselines in the paper.
What this implies for the reported numbers:
- The 15.76 Pass@1 figure is achieved under the same evaluation protocol and the same effective training objective (masked SFT) as the paper's 7B baselines. The headroom over the paper's
+OmniAtlas-SFT (11.4)and+OmniDPO (13.3)therefore reflects differences in training data recipe (rawwith_obs+ sliding window) rather than a different loss mask. - A clean apples-to-apples ablation (paper-style trajectory synthesis vs raw
with_obs, holding everything else fixed) has not been run in this codebase, so the per-component contribution of "raw with_obs" vs "sliding window" vs "different trajectory pool" is not yet decomposed. - Use this checkpoint as a strong reproducible 7B starting point for OmniGAIA. If you intend to extend this for a publication, please run the corresponding ablations.
License
Apache-2.0, inherited from the base Qwen2.5-Omni-7B.
Citation
If you use this model, please also cite the underlying base model and the OmniGAIA benchmark:
@misc{qwen25omni,
title = {Qwen2.5-Omni Technical Report},
author = {Qwen Team},
year = {2025},
}
@misc{omnigaia,
title = {OmniGAIA: Towards Native Omni-Modal AI Agents},
author = {RUC-NLPIR et al.},
year = {2026},
url = {https://huggingface.co/spaces/RUC-NLPIR/OmniGAIA-Leaderboard},
}
- Downloads last month
- 14
Model tree for ZhangYuchi/modelbest-Qwen-2.5-Omni-7B-SFT-only
Base model
Qwen/Qwen2.5-Omni-7B