NVIDIA 助力火山引擎开源多媒体处理框架 BMF,将抖音、西瓜视频的先进技术推向千行百业

by 英伟达中国

案例简介

火山引擎通过与 NVIDIA 团队合作开发了 BMFBabit Media Framework,多媒体处理框架),提供了丰富的 GPU 即用模块,低门槛的扩展方式,多语言接口以及各类主流框架 SDK 的简单接入,方便用户快速打造高效的全 GPU 视频处理流水线,有效解决开发效率低,链路缺乏整体优化的问题,使得 GPU 能够充分发挥其强大的并行计算能力,应用于各类视频 AI 场景。

客户简介

火山引擎是字节跳动旗下的云服务平台,将字节跳动快速发展过程中积累的增长方法、技术能力和工具开放给外部企业,提供云基础、视频与内容分发、数智平台 VeDI、人工智能、开发与运维等服务,帮助企业在数字化升级中实现持续增长。

视频成为企业数字化增长新动力

在当今人们的生活中,视频化场景已经渗透到了方方面面。QuestMobile 数据显示,截止到 2023 年 5 月,中国移动视频行业整体用户规模达到 10.76 亿,月人均时长达到 64.2 小时[1]。在艾瑞研究院报告的数据中也显示,目前中国用户量排名前 100 的 APP 中,有 69% 搭载了视频类功能,65% 搭载了点播功能,51% 有直播类功能,32% 有实时音视频类功能[2]。视频应用正在从内容、娱乐行业拓展至泛互联网和大量传统行业。

2016 年抖音上线,同年全民直播和短视频时代正式开启。2018 年,业界已经广泛地使用 AI 进行内容理解,视频增强。2019 年则是云游戏的元年,这一年,低延迟成为业务关注焦点。进入 2021 年,市面上已经有大量的基于 AI 的视频增强,特效贴纸,AI 视频编辑的产品出现。如今,以 Stable Diffusion 和大语言模型(LLM)掀起的生成式 AI 浪潮,正席卷整个行业进入另一个全新时代。GPU 不断增强的计算能力和视频图像处理能力,正好和业界的发展完全契合。与图文内容相比,企业自建视频应用对技术积累和资金成本要求较高。为此,火山引擎与 NVIDIA 团队合作,开源了 BMF(Babit Media Framework)多媒体处理框架。该框架是视频化部署的“底座”,可为企业提供从视频生产到消费的全链路场景支持,并能协助帮助开发者低成本构建视频应用。

GPU 加速图像处理,到 GPU 上部署生成式 AI 业务

NVIDIA 自 1999 年发明 GPU 驱动了 PC 游戏市场的增长,并重新定义了现代计算机图形,开启了现代 AI 时代。2012 年,NVIDIA 在 Kepler 架构上添加了硬件视频编解码器,能更好地支持视频串流和直播,也就是现在云游戏和游戏直播的原型。到了 2016 年,以卷积神经网络为代表的深度学习技术为整个图像处理和计算机视觉领域带来革命,NVIDIA 也顺势推出了用于模型推理的 TensorRT,加速深度学习图像处理。2019 年,为了配合深度学习的发展,NVIDIA 发布了 nvJPEG,使得 GPU 可以进行图片编解码。2022 年,NVIDIA 和字节跳动联合开源了 CV-CUDA,把加速进一步推进到前后处理。

图 1. GPU 加速图像处理发展历程

但是从图像处理到视频内容生成,并非一蹴而就。

理想情况下,我们以 ControlNet 为例,它可以配合 Stable Diffusion 进行更精细的文生图。如果单纯向 Stable Diffusion 提供 cute dog 作为 prompt,Stable Diffusion 会生成形态各异的小狗。但是如果用户想要某一个特定姿势的小狗图片,就需要用更加精细的方式控制生成过程。ControlNet 就可以做到这一点。以下图为例,使用 Canny edge detector 生成输入图片的轮廓图,检测出的轮廓会和 prompt 一起被输入 ControlNet 和 Stable Diffusion,即可生成姿势样貌相同,但其他细节不同的可爱小狗了。实际上,在其他场景下我们也可以将 Canny edge detector 替换成其他的传统图像处理或者 AI 算法,比如使用 pose detector 提取人体姿势。类似的技术还可用于文生图、图生图、image inpainting 等。

图 2. ControlNet + Stable Diffusion

部署这样一个业务具体涉及到哪些模块和环节呢?首先,需要图片和视频的编解码,模型的推理(ControlNet/Stable Diffusion),还有前后处理(Canny edge detector)。GPU 有编解码器,可以运行 TensorRT 和 CV-CUDA,能够将这些模块一一加速。理想情况下,开发者应当充分利用 GPU 各种的硬件单元,减少 GPU 和 CPU 之间的拷贝,让视频和图片存留在 GPU;如果涉及跨界点通信,如将处理前后的视频在网络和 GPU 之间传输,还需要结合 GPU Direct RDMA,简化通信链路,大幅降低延迟、提升吞吐。并且开发过程遵循阿姆达尔定律(Amdahl’s law),将尽可能多的环节加速,整体的性能才能最优。

但实际上,火山引擎视频团队遇到了不同模块之间通信不畅,整体性能不高等诸多问题。本质上是因为视频处理变得越来越复杂,环节越来越多。2000 年 FFmpeg 刚出现的时候,需要面对的编解码需求是非常简单的,单机、个人用户、简单处理、容错要求低、用户耐心强。但是用户对于视频处理的要求已经今非昔比,算法和应用的复杂度越来越高,用户体验要求也越来越高。以前用户在电脑前长时间等待编解码完成的耐心,已经被短视频的秒级延迟,甚至 VR/AR、云游戏这样的毫秒级延迟所取代。视频处理涉及的技术栈也越来越多,包括编解码、图像处理、深度学习甚至图像渲染。

NVIDIA 加速火山引擎为视频云提供更理想的处理框架:BMF

面对这些挑战,NVIDIA 和火山引擎紧密合作开发了 BMF,旨在帮助企业和开发者将各类视频的原子能力与方案做到优势互补、协同工作和快速落地。多媒体处理框架 BMF 的整体架构分为应用层、框架层、模块层和异构层,共 4 个部分:

  1. 应用层:即顶层,为用户提供多语言的 API,包括 Python、Go、C++,方便用户根据不同的项目需求进行开发集成。
  • 框架层:即中间层,包括框架对 graph / pipeline 的调度、跨数据类型跨设备的数据流转 ackend、以及常用的跨设备 reformat、color space conversion、tensor 算子等 SDK。
  • 模块层:包含了具备各种原子能力的模块,提供多种语言的模块开发机制,用户可根据自身需要将算法/处理实现为 Python、Go、C++ 语言的任意一种。
  • 异构层:负责提供高效的视频处理算力,包括火山引擎自研的视频编解码芯片 ASIC 。
图 3. BMF 架构图(绿色高亮表示支持 GPU 加速)

火山引擎通过与 NVIDIA 团队深入合作,针对 GPU 相关的框架层能力、处理能力进行了深度优化,从框架层和模块层对 BMF 都进行了深入改造,针对各种场景进行了开发和测试,并且贡献了多种应用层示例。BMF 提供了丰富的 GPU 即用模块,低门槛的扩展方式,多语言接口以及各类主流框架 SDK 的简单接入,方便用户快速打造高效的全 GPU 视频处理流水线,有效解决前文所述的开发效率低,链路缺乏整体优化的问题。这一系列的工作,使得 GPU 能够充分发挥其强大的并行计算能力,应用于各类视频 AI 场景。

比如在大型活动直播、电商直播间等场景中,通过“极致超清”技术,能够有效提升画质体验;针对不同损伤情况的经典影片,通过“AI 修复”技术,能够对损伤后的影片进行全面的画质提升;在 VR/AR 等复杂图像场景中,通过“ VR 360 全景图像技术”帮助图像实现更加高清的效果。

火山引擎总裁谭待表示:在营销、空间、商业和知识的交互体验都在发生变化的视频化时代,视频云技术因其从视频生产,处理、传输至消费的全链路技术能力被赋予了重要使命。随着 AIGCXR 等技术的兴起,新技术与视频云的融合将带来更多创新和价值。

字节跳动视频架构负责人、火山引擎视频云架构技术总监王悦表示:“BMF 框架是基于抖音多年实践打磨出来的,火山引擎又携手 NVIDIA 针对 GPU 相关能力进行了深度优化,使其能够发挥更强大的并行计算能力。

目前,BMF 已经全面开源,包含 BMF 框架层整体开源、9 个开箱即用案例、20+ API 调用范例,旨在帮助开发者低成本地构建视频应用。

欢迎访问 BMF github 页面,了解更多信息。

数据来源:

[1] 资料来源于 QuestMobile 研究院《2023 内容视频化与商业化洞察报告》:https://www.questmobile.com.cn/research/report/1678658723797635073

[2] 资料来源于艾瑞咨询《2022 年中国视频云服务行业研究报告》:https://report.iresearch.cn/report/202207/4038.shtml