昇腾活动头图 📍 昇腾开发者社区活动入口

近来,大语言模型正从单模态向全模态统一理解与生成革命性跃迁,全模态大模型成为 AI 技术与产业落地的核心赛道,高效训练框架是撬动变革的关键基石。VeOmni 作为全模态开源训练框架,以「模型为中心」分布式设计,直击大模型训练 “并行策略与模型结构紧耦合” 行业痛点,大幅降低工程复杂度与资源开销,兼具灵活性与易用性,是全模态训练的标杆级基础设施。昇腾全面拥抱业界开源生态,高效落地 FSDP/EP/SP等多维并行能力,使能VeOmni原生支持昇腾,为全模态大模型在昇腾平台训练提供高效、可靠的保障。

知识热身-VeOmni框架和Qwen3-VL模型简介

1、VeOmni框架介绍

VeOmni 架构图
图1 VeOmni的架构图
图片来源:arxiv.org/pdf/2508.02317

VeOmni是面向全模态大模型训练的开源框架,采用模块化即插即用架构,能够统一处理图像、音频、文本等多种模态数据,并创新性地提出将并行策略与模型结构解耦,支持FSDP、SP、EP等策略的灵活组合,帮助开发者专注于模型创新,同时保持训练过程的高效性与可扩展性。

VeOmni框架的核心特征如下:

· 灵活性和模块化:采用模块化设计,支持用户使用解耦组件,根据自身需要使用和替换组件。

· 全模态模型原生支持:用户能够轻松地跨设备和加速器扩展全模态模型。

· Torch 原生功能:充分利用 PyTorch 的原生功能,确保最大的兼容性和性能。

2、Qwen3-VL介绍

Qwen3-VL 模型结构图
图2 Qwen3-VL模型结构图
图片来源:arxiv.org/pdf/2511.21631

Qwen3-VL模型沿用了Qwen2.5-VL的三组件架构:视觉编码器、视觉–语言融合器以及大语言模型,并在此基础上进行了三项关键改进:它采用动态分辨率的SigLIP-2视觉编码器增强图像适应性;通过DeepStack跨层融合机制,将多级视觉特征注入语言模型以提升细粒度理解;针对视频任务,用交错式旋转位置编码和显式文本时间戳替代传统方案,显著优化了长视频建模与时间定位能力。这些架构升级使其成为更强大的多模态基础模型。

VeOmni支持昇腾的特性进展与规划

1、已支持模型

模型列表 模型尺寸
Wan2.1 14B
Qwen2.5-VL 7B
Qwen3 8B-Dense
30B-Moe
Qwen3-VL 8B-Dense
30B-Moe

2、已支持特性

为保证大模型训练的高效性,昇腾在VeOmni框架下已支持多项关键技术特性。下表汇总了在并行策略、内存优化、算子优化及数据策略等方面的具体实现,旨在最大化资源利用率,突破内存瓶颈,提升整体训练性能:

特性类型 特性名称
训练后端 FSDP
FSDP2
并行策略 EP
Ulysses CP
Async Ulysses CP
内存优化 FSDP offload、激活值offload、细粒度offload
重计算
算子优化 RMS Norm、ROPE、GMM等融合算子
数据策略 Dynamic batching
Omnidata processing
性能监测 profiling
显存快照

3、规划中的特性

昇腾致力于提供高效的端到端解决方案,一方面紧跟前沿,确保主流模型快速可用;另一方面夯实后端,支持LoRA微调与后训练,保证模型输出更好地契合实际场景。

特性类别 特性名称
模型支持 Qwen3 Next、Qwen3 Omni、Wan 2.2、InternVL3.5
微调能力支持 LoRA微调
强化学习后训练支持 veRL训练引擎
训练性能优化 ViT数据负载均衡

快速上手-在昇腾上部署基于VeOmni框架的Qwen3-VL模型训练

为了快速体验VeOmni框架的训练流程,下面以Qwen3-VL模型为例,展示完整的端到端操作步骤。

1、环境安装

详细安装步骤请参考 VeOmni 昇腾环境安装文档

通过上述步骤安装完成后,Qwen3-VL 训练的基础环境配置如下:

软件名称 软件版本
Python == 3.11
CANN == 8.5.0
torch == 2.7.1
torch_npu == 2.7.1
transformers == v4.57.3

2、数据准备

可自行下载coco数据集,并将coco数据放到VeOmni代码仓根目录下,层级如下:

VeOmni
├── coco
│  └── train2017 
│       ├── 000000000009.jpg
│       ├── 000000000025.jpg
│       ├── 000000000030.jpg
│       ├── 000000000034.jpg
│       └── ........
├── sharegpt4v_instruct_gpt4-vision_cap100k.json
│  ........(原仓代码)

其中,sharegpt4v_instruct_gpt4-vision_cap100k.json 可从 ShareGPT4V 数据集 下载,下载后按以下脚本处理 VeOmni 需要的数据格式:

import json
with open('sharegpt4v_instruct_gpt4-vision_cap100k.json', 'r', encoding='utf-8') as f:
    data = json.load(f)
filtered_data = []
for item in data:
    if item.get('image', '').startswith('coco'):
        new_item = item.copy()
        image_path = new_item.pop('image')
        new_item['images'] = [image_path]
        filtered_data.append(new_item)
with open('sharegpt4v_instruct_gpt4-vision_cap100k_coco.json', 'w', encoding='utf-8') as f:
    json.dump(filtered_data, f, ensure_ascii=False, indent=4)

3、开始训练

1)权重准备

Qwen3-VL 30B 的权重可通过 Hugging Face 官方渠道获取:Qwen3-VL-30B-A3B-Instruct 模型页

也可通过VeOmni权重下载脚本进行下载:

python3 scripts/download_hf_model.py \
    --repo_id Qwen/Qwen3-VL-30B-A3B-Instruct \
    --local_dir .

2)启动训练

配置好数据集和权重之后,将如下启动脚本的对应路径加以更新,即可实现Qwen3-VL的训练:

bash train.sh tasks/omni/train_qwen_vl.py configs/multimodal/qwen3_vl/qwen3_vl_moe.yaml \
--model.model_path ./Qwen3-VL-30B-A3B-Instruct \
--data.train_path ./sharegpt4v_instruct_gpt4-vision_cap100k_coco.json \
    --data.dataloader_type native \
    --data.datasets_type iterable \
    --data.source_name sharegpt4v_sft \
    --data.num_workers 8 \
    --train.micro_batch_size 3

4、训练效果

下图为 Qwen3-VL 模型的训练损失(Loss)曲线:其中红色曲线代表基于昇腾NPU的训练结果,蓝色曲线表示业界设备的训练结果。从Loss曲线特征可见,收敛趋势跟参考曲线高度一致,损失数值也基本吻合,表明在昇腾NPU上的训练效果跟业界相持平。

训练 Loss 曲线
图3 训练过程Loss损失曲线

五、结语

昇腾团队跟随VeOmni社区路线规划,已构建NPU专用CI流水线与开箱即用Docker镜像,并为Qwen3-VL/Qwen3/Wan2.1等主流模型提供并行训练支持,同时实现多类昇腾优化融合算子以提升性能。未来,昇腾将持续增强VeOmni在昇腾设备上的技术竞争力,欢迎广大开发者积极参与体验。

相关链接:

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐