资料来源:火山引擎-开发者社区

多模态时代的训练痛点,终于有了“特效药”
当大模型从单一语言向文本 + 图像 + 视频的多模态进化时,算法工程师们的训练流程却陷入了 “碎片化困境”:

  • 当业务要同时迭代 DiT、LLM 与 VLM时,很难在一套代码里顺畅切换;
  • 而当模型形态一旦变化,底层并行组合和显存调度往往需要大量手工改写,耗时耗力;
  • DIT 模型蒸馏需要大量的资源消耗,但是缺少高效的训练 infra 支持来提升效率……

这些困扰行业的痛点,字节跳动的工程师们早就遇到了 —— 于是,VeOmni 应运而生。作为字节内部验证过的 “统一多模态训练框架”,它经过内部千卡级别真实训练任务检验,训练了 UI-Tars1.5 等重要模型,为了能将字节跳动核心 AI Infra 能力服务更多用户,字节跳动决定开源 VeOmni,火山引擎基于进一步上支持了视频模型训练等功能,让 VeOmni 支持了更多模型训练场景,可以更好地服务更多用户。
VeOmni 是什么?一套框架,搞定所有多模态训练
VeOmni 是字节 Seed 团队与火山机器学习平台、IaaS 异构计算团队联合研发的统一多模态模型训练框架,核心定位是三个统一:“统一多模态、统一并行策略、统一算力底座”。
它通过统一的 API 将 LoRA 轻量微调、FSDP、Ulysses 和 Expert Parallel 等多种混合并行策略以及自动并行搜索能力内置于框架内部。无论是百亿级语言模型、跨模态视觉语言模型,还是 480P/720P、长序列的文本到视频(T2V)或图像到视频(I2V)生成模型,开发者都能够基于统一的训练流程快速启动训练。
框架支持在千卡级 GPU 集群上自动完成权重张量的切分、通信拓扑的优化、动态显存回收和异步 checkpoint。在开源的 Wan 2.1 等模型上实测显示,相较于同类开源方案,VeOmni 能够将训练吞吐提高超过 40%,同时显著降低显存使用与跨节点通信带宽压力。
借助 VeOmni,字节跳动成功实现了“支持最快落地的新模型形态、最大化超大规模算力利用率、最小化业务改动成本”三大目标,有效弥补了开源社区训练框架在扩展性和抽象层面上的不足,为包括 LLM 和 VLM 在内的多模态生成场景提供了一条统一且高效的训练路径。
火山引擎的用户可在机器学习平台中运用 VeOmni 的强大功能。
五大核心优势,破解训练效率瓶颈
VeOmni 的 “高效” 不是口号,而是用技术细节堆出来的。我们拆解了多模态训练的核心痛点,给出了针对性解决方案:
显存计算双优化:用最少的额外计算,换最多的显存
传统 “大颗粒” 重计算要么全关、要么全开,往往用 10%–20% 的额外计算只换一点显存。VeOmni 不一样 —— 它先给每个前向张量算一笔 “ROI 账”:省 1MB 显存需要付出多少微秒计算。然后按 ROI 排序,只选性价比最高的算子重计算(比如 gate1_mul 省 40MB 只要 180μs,down_proj 要 4000μs,差距 22 倍!)。
VeOmni框架在训练启动前自动把 ROI 排序,同等显存收益只选择性价比最高的算子进入重计算池:例如 gate1_mul 和 down_proj 都可回收约 40 MB,但前者只需180µs、后者要 4000µs,差距达 22 倍。这样就能在保证显存不会超出的前提下,把额外计算开销压到最低。


结果是:显存够用的前提下,额外计算开销压到最低。实测显示,相比按层重计算,VeOmni 的 Recompute 占比从 60% 降到 30%(Recompute 越低,效率越高),对 DiT 720P 视频训练、千亿 LLM 长序列训练效果显著。
混合并行 “组合拳”:一键匹配最优算力切分方案,显存峰值降 55%
VeOmni 内置多维并行体系,支持 FSDP、Ulysses 和 Expert Parallel (EP) 等多种并行原语,通过启动脚本可以一键进行笛卡尔组合,自动搜索最优的算力切分方案:

  • FSDP 负责将参数、梯度和优化器状态切片到各个 GPU,突破显存瓶颈,横向扩批简单可靠;
  • Ulysses Parallel 针对长序列任务,将注意力沿 head 维度拆解,有效缓解单卡显存压力;
  • Expert Parallel 专门适用于 MoE 模型,可高效支持超大规模专家网络的训练。

这套并行体系已被应用于字节跳动内部多种模型的训练中,在处理 480P 和 720P 分辨率的 T2V/I2V 任务时,通过 FSDP 和 Ulysses 的组合,单轮迭代显存峰值可降低至原有基线的 45%。
算子级性能深挖:小核算子融合,访存次数降百倍
针对 DiT 中大量“小核算子”导致的访存抖动,VeOmni 把注意力-FFN-残差链路重写为单核 Kernel,长序列下显存碎片显著减少,访存次数下降数百倍。


跨模型通吃:LLM/VLM/ 视频生成,一套框架全搞定
VeOmni 的优化不是 “针对性补丁”,而是对 生成式视频模型、千亿级语言模型 与 视觉语言模型 全部生效:

  • DiT 训练显存减半;
  • LLM 长上下文窗口训练从“手动调显存”变为“自动无感切分”;
  • VLM 双塔/单塔架构在 Ring 模式下可线性扩展到更多 GPU,负载均衡无需改代码。

凭借“算子粒度重计算 + 混合并行 + 算子融合/升级”三大引擎,VeOmni 把原本困扰开源框架的扩展瓶颈彻底拆解,为字节跳动以及合作伙伴在多模态内容生成和大模型服务化道路上提供了即插即用、极致高效的算力底座。
蒸馏加速:减少推理步数,降低推理成本
在生成式模型的推理中,步数蒸馏是提升效率的关键一环。然而,蒸馏的训练周期极长,需要的计算资源也十分庞大。VeOmni 集成了轨迹蒸馏、分布匹配蒸馏(DMD)、自回归蒸馏等学界前沿方法,并将框架原生的训练加速能力(如显存优化、混合并行等)应用在蒸馏算法上,极大地减少了蒸馏的迭代周期和资源消耗。用户可通过启动脚本指定蒸馏目标:

  • 支持 DMD 等效果优秀的蒸馏方法,能将模型稳定蒸馏至 4 步、8 步等目标步数甚至更少;
  • 支持蒸馏掉 CFG(无分类器引导)以消除冗余计算;
  • 支持用户自由编排蒸馏工作流,例如组合 “轨迹蒸馏预处理 + DMD 精调” 的多阶段蒸馏逻辑。

经由 VeOmni 蒸馏出的模型能够显著减少推理所需步数,同时保持生成结果的高质量,这对于降低计算成本、加速模型部署具有重要意义。
实测性能:比开源方案快 40%,多场景数据说话
VeOmni 的效率不是 “自说自话”,而是用真实模型测试验证的,以 Wan2.1-14B 模型为例(Lora 训练):

  • 计算型大卡:I2V 720P 训练速度比开源方案快 48% 以上,T2V 720P 快 44.4% 以上;
  • 访存型大卡:I2V 720P 快 59.5% 以上,T2V 720P 快 57.4% 以上;
  • 小参数量模型(Wan2.1-1.3B):T2V 480P 训练速度提升 51% 以上。

卡型 1(计算型大卡)
I2V 训练速度:


T2V 训练速度:


卡型 2(访存型大卡)
I2V 训练速度:


T2V 训练速度:


不管是大模型还是小模型,不管是计算型还是访存型硬件,VeOmni 都能让算力发挥到极致!
上手超简单:火山平台一键训练,性能分析可视化
VeOmni 不是 “专家专属工具”,而是开箱即用。目前,火山引擎在机器学习平台和 AI 云原生训练套件 TrainingKit 上都提供了 VeOmni 训练的最佳实践。下面我们以机器学习平台实践为例,介绍基于 VeOmni 训练框架对开源模型 Wan 进行 lora 训练,后续我们将推出基于 TrainingKit 的 VeOmni 部署实践。
创建训练任务
在快速入门选择需要训练的模型,并且配置实例规格及模型输出路径。


查看训练任务详情
创建任务后可在「任务详情-日志」中查看训练详情。


GPU 性能分析
1.导航到 自定义任务 > 任务详情 页面,在目标任务的管理页面单击 创建性能分析。


2.完成采集后,可在性能分析结果列表页面管理所有分析任务。点击「查看详情」将跳转至 perfetto 中展示性能分析火焰图。
每个 Worker 节点会根据其拥有的 GPU 数量或进程数生成多个进程文件。平台会将这些文件聚合成一个单一的结果文件,并根据 perfetto 的限制进行自动分片。


从训练到推理,全链路打通
目前火山引擎机器学习平台提供的数据集是用来训练飞天效果的 Lora 数据集,客户也可以自己选择合适的数据集进行预处理后来进行训练,具体使用方法随后更新。
获取输出结果
在一键训练的时候客户指定了训练的模型结果保存的地方,如下图所示。

  • 输出模型结果保存文件路径类似下图
checkpoints/  
├── global\_step\_xxx/           # 每次保存的权重快照  
│   ├── extra\_state/            # 训练状态(按 rank 切分)  
│   │   └── extra\_state\_rank\_*.pt  
│   ├── hf\_ckpt/                # HuggingFace 兼容格式  
│   │   ├── config.json  
│   │   └── diffusion\_pytorch\_model.safetensors  
│   ├── model/                  # 模型参数分片  
│   │   └── \_\_*\_*.distcp  
│   └── optimizer/              # 优化器状态分片  
│       └── \_\_*\_*.distcp  
└── latest\_checkpointed\_iteration.txt  # 记录最新步数  
  • 客户可以到 hf_ckpt下看到保存的 Lora 训练权重,得到的路径为 checkpoints/global_step_xxx/hf_ckpt/diffusion_pytorch_model.safetensors

使用脚本进行权重格式转换

  • 将下列代码保存为 convert.py

#!/usr/bin/env python  # convert.py  ——  把 “blocks.…default.weight” → “diffusion\_model.blocks.…weight”  from pathlib import Path  
from safetensors.torch import load\_file, save\_file  
import sys  if len(sys.argv) != 2:  sys.exit(f"用法: python {Path(\_\_file\_\_).name} <input.safetensors>")  inp = Path(sys.argv[1]).expanduser().resolve()  
out = inp.with\_name(inp.stem + "\_styleB.safetensors")  tensors = load\_file(str(inp))  
converted = {}  for k, v in tensors.items():  # 若无前缀则加 diffusion\_model.  ifnot k.startswith("diffusion\_model."):  k = "diffusion\_model." + k  # 去掉 .default.  k = k.replace(".default.", ".")  converted[k] = v  save\_file(converted, str(out))  
print(f"✓ 已保存: {out}")    
  • 执行下面的命令,得到转换后的权重
python convert.py   
yourpath/checkpoints/global\_step\_xxx/hf\_ckpt/diffusion\_pytorch\_model.safetensors     


使用 Vefuser 推理
训练完的模型,用火山 veFuser 推理更高效 ——veFuser 是火山引擎的扩散模型服务框架,针对 VeOmni 训练的 LoRA / 全量微调模型做了优化,能实现 “超低延迟” 视频生成。从训练到部署,全链路流畅!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93233.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93233.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/93233.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

配置docker pull走http代理

之前写了一篇自建Docker镜像加速器服务的博客&#xff0c;需要用到境外服务器作为代理&#xff0c;但是一般可能没有境外服务器&#xff0c;只有http代理&#xff0c;所以如果本地使用想走代理可以用以下方式 临时生效&#xff08;只对当前终端有效&#xff09; 设置环境变量…

OpenAI 开源模型 gpt-oss 本地部署详细教程

OpenAI 最近发布了其首个开源的开放权重模型gpt-oss&#xff0c;这在AI圈引起了巨大的轰动。对于广大开发者和AI爱好者来说&#xff0c;这意味着我们终于可以在自己的机器上&#xff0c;完全本地化地运行和探索这款强大的模型了。 本教程将一步一步指导你如何在Windows和Linux…

力扣-5.最长回文子串

题目链接 5.最长回文子串 class Solution {public String longestPalindrome(String s) {boolean[][] dp new boolean[s.length()][s.length()];int maxLen 0;String str s.substring(0, 1);for (int i 0; i < s.length(); i) {dp[i][i] true;}for (int len 2; len …

Apache Ignite超时管理核心组件解析

这是一个非常关键且设计精巧的 定时任务与超时管理组件 —— GridTimeoutProcessor&#xff0c;它是 Apache Ignite 内核中负责 统一调度和处理所有异步超时事件的核心模块。&#x1f3af; 一、核心职责统一管理所有需要“在某个时间点触发”的任务或超时逻辑。它相当于 Ignite…

DAY 42 Grad-CAM与Hook函数

知识点回顾回调函数lambda函数hook函数的模块钩子和张量钩子Grad-CAM的示例# 定义一个存储梯度的列表 conv_gradients []# 定义反向钩子函数 def backward_hook(module, grad_input, grad_output):# 模块&#xff1a;当前应用钩子的模块# grad_input&#xff1a;模块输入的梯度…

基于 NVIDIA 生态的 Dynamo 风格分布式 LLM 推理架构

网罗开发&#xff08;小红书、快手、视频号同名&#xff09;大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等方…

《吃透 C++ 类和对象(中):拷贝构造函数与赋值运算符重载深度解析》

&#x1f525;个人主页&#xff1a;草莓熊Lotso &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言&#xff1a;生活是默默的坚持&#xff0c;毅力是永久的…

Python 环境隔离实战:venv、virtualenv 与 conda 的差异与最佳实践

那天把项目部署到测试环境&#xff0c;结果依赖冲突把服务拉崩了——本地能跑&#xff0c;线上不能跑。折腾半天才发现&#xff1a;我和同事用的不是同一套 site-packages&#xff0c;版本差异导致运行时异常。那一刻我彻底明白&#xff1a;虚拟环境不是可选项&#xff0c;它是…

[ 数据结构 ] 时间和空间复杂度

1.算法效率算法效率分析分为两种 : ①时间效率, ②空间效率 时间效率即为 时间复杂度 , 时间复杂度主要衡量一个算法的运行速度空间效率即为 空间复杂度 , 空间复杂度主要衡量一个算法所需要的额外空间2.时间复杂度2.1 时间复杂度的概念定义 : 再计算机科学中 , 算法的时间复杂…

一,设计模式-单例模式

目的设计单例模式的目的是为了解决两个问题&#xff1a;保证一个类只有一个实例这种需求是需要控制某些资源的共享权限&#xff0c;比如文件资源、数据库资源。为该实例提供一个全局访问节点相较于通过全局变量保存重要的共享对象&#xff0c;通过一个封装的类对象&#xff0c;…

AIStarter修复macOS 15兼容问题:跨平台AI项目管理新体验

AIStarter是全网唯一支持Windows、Mac和Linux的AI管理平台&#xff0c;为开发者提供便捷的AI项目管理体验。近期&#xff0c;熊哥在视频中分享了针对macOS 15系统无法打开AIStarter的修复方案&#xff0c;最新版已完美兼容。本文基于视频内容&#xff0c;详解修复细节与使用技巧…

LabVIEW 纺织检测数据传递

基于 LabVIEW 实现纺织检测系统中上位机&#xff08;PC 机&#xff09;与下位机&#xff08;单片机&#xff09;的串口数据传递&#xff0c;成功应用于煮茧机温度测量系统。通过采用特定硬件架构与软件设计&#xff0c;实现了温度数据的高效采集、传输与分析&#xff0c;操作简…

ECCV-2018《Variational Wasserstein Clustering》

核心思想 该论文提出了一个基于最优传输(optimal transportation) 理论的新型聚类方法&#xff0c;称为变分Wasserstein聚类(Variational Wasserstein Clustering, VWC)。其核心思想有三点&#xff1a;建立最优传输与k-means聚类的联系&#xff1a;作者指出k-means聚类问题本质…

部署 Docker 应用详解(MySQL + Tomcat + Nginx + Redis)

文章目录一、MySQL二、Tomcat三、Nginx四、Redis一、MySQL 搜索 MySQL 镜像下载 MySQL 镜像创建 MySQL 容器 docker run -i -t/d -p 3307:3306 --namec_mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD123456 m…

VR全景导览在大型活动中的应用实践:优化观众体验与现场管理

大型演出赛事往往吸引海量观众&#xff0c;但复杂的场馆环境常带来诸多困扰&#xff1a;如何快速找到座位看台区域&#xff1f;停车位如何规划&#xff1f;附近公交地铁站在哪&#xff1f;这些痛点直接影响观众体验与现场秩序。VR全景技术为解决这些问题提供了有效方案。通过在…

OpenJDK 17 JIT编译器堆栈分析

##堆栈(gdb) bt #0 PhaseOutput::safepoint_poll_table (this0x7fffd0bfb950) at /home/yym/openjdk17/jdk17-master/src/hotspot/share/opto/output.hpp:173 #1 0x00007ffff689634e in PhaseOutput::fill_buffer (this0x7fffd0bfb950, cb0x7fffd0bfb970, blk_starts0x7fffb0…

功能测试中常见的面试题-二

二、测试设计与用例编写题解释等价类划分 (Equivalence Partitioning) 和边界值分析 (Boundary Value Analysis)&#xff1f;并举例说明。等价类划分 (EP)&#xff1a; 将输入域划分为若干组&#xff08;等价类&#xff09;&#xff0c;假设同一组内的数据对揭露程序错误具有等…

SOLi-LABS Page-4 (Challenges)--54-65关

sql-54 翻译一下页面&#xff0c;得知我们只有十次机会。id参数是单引号闭合。 ?id-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schemadatabase()-- 我得到的表名是igsyiz2p7z。&#xff08;每个人得到的应该都不一样&#…

docker代码如何在vscod上修改

基于 docker-compose.yml文件&#xff08;包含 ​​emqx​​&#xff08;MQTT服务&#xff09;、​​backend​​&#xff08;后端服务&#xff09;、​​mysql​​&#xff08;数据库&#xff09;&#xff09;的详细运行、调试、增改删操作说明&#xff0c;结合流程图示意&…

HTML5 CSS3 从入门到精通:构建现代Web的艺术与科学

本文将带你系统地学习掌握现代Web前端的基础与核心&#xff0c;最终能够独立构建语义清晰、布局灵活、交互丰富的专业级网站。 第一章&#xff1a;夯实基础 - HTML5语义化与结构艺术 1.1 告别<div>混沌&#xff1a;语义化标签的力量 <header><h1>网站标题…