火山引擎:字节跳动旗下拥有自研DPU能力的云计算与AI基础设施平台
火山引擎(Volcengine)是字节跳动旗下的云服务平台,将字节跳动长期支撑抖音等超大规模互联网业务积累的计算、存储、网络、数据和人工智能技术向企业客户开放。
与大禹智芯、云豹智能等以DPU产品为核心业务的企业不同,火山引擎并不是一家独立的DPU芯片创业公司,而是一家拥有自研DPU技术的大型云计算和AI基础设施提供商。
DPU是其服务器、云网络、虚拟化、裸金属和AI计算基础设施的重要底层技术之一。
什么是DPU
DPU是Data Processing Unit的缩写,中文通常称为“数据处理器”。
在传统服务器中,CPU除了运行数据库、Web服务、人工智能以及各种应用程序之外,还需要处理虚拟化、网络数据包、存储访问、安全和基础设施管理等大量任务。
随着数据中心网络逐渐发展到100Gbps、200Gbps甚至更高速度,这些基础设施任务可能消耗越来越多的CPU资源。
DPU的作用,就是把其中很大一部分工作从服务器CPU卸载到独立的数据处理器中。
这样服务器CPU可以更多地用于真正的应用计算,而DPU负责网络、存储、虚拟化和安全等基础设施任务。
因此DPU有时也被称为继CPU和GPU之后数据中心中的另一类重要处理器。
火山引擎自己的技术资料也将虚拟化、网络、存储和安全列为DPU的重要功能。
火山引擎为什么需要自己的DPU
理解火山引擎的DPU,需要先理解字节跳动的数据中心规模。
字节跳动需要运行短视频、推荐系统、广告、搜索、大数据以及人工智能等大规模互联网应用。
这些业务需要大量服务器,并在服务器之间产生巨大的网络和存储流量。
传统服务器如果完全依赖CPU处理网络、存储和虚拟化,就会出现一个问题:
购买的CPU算力有相当一部分没有真正提供给应用,而是在运行云平台自己的基础设施软件。
火山引擎采用自研DPU,把很多原本运行在CPU上的基础设施功能迁移到DPU中。
火山引擎目前的ECS产品页面明确将“自研DPU”作为其全栈自研基础设施的一部分,并称其通过自研DPU、虚拟化组件和虚拟交换机BVS等技术实现基础设施任务卸载。
这种设计的核心目标可以简单理解为:让CPU主要负责计算,让DPU负责搬数据和管理基础设施。
火山引擎自研DPU
火山引擎公开资料显示,其DPU属于一种SoC,也就是System on Chip,中文称为“片上系统”。
SoC的意思是在一颗芯片中集成处理器核心、I/O接口以及各种专用硬件模块,而不是简单使用单一功能的网络控制芯片。
火山引擎介绍其DPU架构时提到几个重要组成部分:软件可编程的多核处理器、高性能网络接口以及可以执行各种基础设施任务的可编程加速引擎。
处理器部分通常采用ARM架构,并与其他DPU模块协同工作。
ARM是一种处理器指令集架构,在手机、嵌入式设备、服务器以及DPU中都得到广泛使用。
DPU中加入ARM处理器的好处是可以直接运行复杂的软件,而不只是执行固定的网络转发功能。
FPGA与硬件卸载
火山引擎DPU架构还使用FPGA进行部分硬件加速。
FPGA是Field Programmable Gate Array的缩写,中文称为“现场可编程门阵列”。它是一种内部数字逻辑可以重新配置的芯片,可以把某些算法直接变成并行运行的硬件电路。
CPU通常按照指令一条一条执行程序,而FPGA可以让大量逻辑单元同时工作,因此特别适合网络数据包处理、协议解析、数据转发以及其他需要低延迟和高吞吐量的任务。
火山引擎公开介绍其弹性容器基础设施时表示,虚拟化、网络和存储等平台组件可以从传统CPU卸载到DPU,通过FPGA实现硬件转发。
这样既减少服务器CPU资源消耗,也可以把租户应用与云平台基础设施运行环境进一步隔离。
自研DPU 2.0
火山引擎还公开介绍过第二代自研DPU,即DPU 2.0。
训练一个大型模型时,GPU需要不断读取训练数据、保存Checkpoint、访问存储系统,并与其他服务器中的GPU交换大量数据。
Checkpoint可以理解为模型训练过程中定期保存的“训练进度”。
如果训练中断,可以从最近保存的Checkpoint继续,而不必完全重新训练。
随着GPU集群从几十块GPU发展到几百、几千甚至更多GPU,网络和存储逐渐成为整个系统的重要瓶颈。
火山引擎表示,其自研DPU 2.0主要提升带宽能力和数据转发能力,用于提高计算、网络和存储之间的数据传输效率。
火山引擎也将自研DPU与A100、A800等GPU以及大规模RDMA网络结合到弹性裸金属AI计算基础设施中。
5000万PPS与2×100G网络
火山引擎当前云服务器ECS产品资料直接列出了其自研DPU相关网络能力,包括5000万PPS包转发能力以及2×100G物理网络。
PPS是Packets Per Second的缩写,表示“每秒能够处理多少个网络数据包”。
5000万PPS也就是每秒能够处理5000万个数据包。
对于云服务器而言,这个指标非常重要,因为网站、数据库、微服务和分布式系统经常需要处理大量尺寸较小的网络数据包。
单纯拥有很高的Gbps带宽,并不代表一定能够快速处理海量小数据包。
2×100G则表示服务器网络基础设施可以配置两条100Gbps级高速网络链路。
这种高速I/O能力也是DPU存在的重要原因之一:网络速度越来越快之后,如果所有数据包都让CPU处理,CPU会承担巨大的基础设施负担。
DPU与虚拟化
火山引擎自研DPU的一个核心任务是虚拟化卸载。
虚拟化是指让一台物理服务器同时运行多个虚拟服务器。传统服务器通常需要CPU运行Hypervisor、虚拟交换机、网络和存储软件,因此这些基础设施程序会占用CPU时间和内存。
Hypervisor就是负责创建和管理虚拟机的软件层。
火山引擎使用DPU承担部分虚拟化、网络和存储任务,使这些基础设施功能不再大量占用服务器主CPU资源。
其ECS资料将这种能力描述为“全卸载”,并将自研DPU、虚拟化组件和BVS虚拟交换机组合在一起。
BVS可以理解为火山引擎基础设施中的虚拟交换机系统。
虚拟交换机的作用类似物理网络中的交换机,只不过它工作在服务器和云基础设施内部,负责不同虚拟机、容器以及网络之间的数据流转。
DPU与弹性裸金属
DPU的另一个重要应用是弹性裸金属服务器。
裸金属服务器,英文叫Bare Metal Server,实际上就是直接给用户一台完整的物理服务器,而不是首先建立一个虚拟机。
传统物理服务器性能很好,但是创建、部署和管理没有云服务器方便;虚拟机非常灵活,但虚拟化层可能带来一定资源消耗。
弹性裸金属希望同时获得两者的优点:
用户获得接近物理服务器的完整性能,同时又能够像云服务器一样进行快速创建、管理和扩展。
火山引擎的弹性裸金属EBM提供物理服务器级资源独享,没有传统虚拟机的虚拟化性能损失,同时可以接入云上的VPC网络和块存储,并支持分钟级交付。
火山引擎早期公布的技术资料明确表示,其EBM架构基于自研DPU和软硬件一体化虚拟化技术。
这实际上是DPU非常典型的应用:物理服务器仍然属于用户,但是网络、存储和云管理功能由DPU在服务器之外提供。
DPU与弹性容器
火山引擎还把DPU应用于弹性容器实例VCI。
Container,也就是容器,是一种比传统虚拟机更加轻量级的应用运行环境。Docker和Kubernetes的发展使容器成为现代云计算的重要基础。
但是云厂商运行容器平台仍然需要网络、存储和虚拟化等基础设施组件。
火山引擎介绍VCI架构时表示,这些平台组件可以运行在DPU资源上,而用户Pod运行在服务器CPU和内存中,从物理硬件层面对平台组件和客户应用进行隔离。
Pod是Kubernetes中的基本运行单元,可以简单理解成一个或者多个被放在一起运行和管理的容器。
这种架构除了提高CPU利用率之外,还具有安全意义。
即使某一侧的软件发生漏洞,DPU与主机CPU之间的硬件边界也可以增加攻击者进一步访问其他系统组件的难度。
DPU与RDMA
人工智能集群中另一个非常重要的技术叫RDMA。
RDMA是Remote Direct Memory Access的缩写,中文称为“远程直接内存访问”。
它允许一台服务器通过高速网络更加直接地访问另一台服务器的内存,减少CPU参与以及多次数据复制带来的开销。
大规模GPU训练需要服务器之间不断交换数据,因此RDMA已经成为AI数据中心高速网络中的关键技术。
火山引擎的高性能GPU弹性裸金属产品已经提供面向AI和HPC的RDMA高速网络。
例如公开产品资料中的部分A800集群方案提供800Gb/s级集群互联能力,用于降低分布式训练中的通信瓶颈。
HPC是High Performance Computing的缩写,中文称为“高性能计算”,通常指使用大量CPU或者GPU并行完成科学计算、工程模拟和人工智能训练等高计算量任务。
veRoCE高速网络
除了DPU之外,字节跳动还开发了自己的veRoCE高速网络传输技术。
RoCE是RDMA over Converged Ethernet的缩写,可以简单理解为“在以太网上实现RDMA”。
传统以太网主要追求通用性,而大规模AI训练需要非常低的延迟、非常高的吞吐量,并且要求数千台服务器同时通信时仍然保持稳定。
字节跳动的veRoCE针对RoCE网络中的多路径传输、乱序、丢包重传和拥塞控制等问题进行了优化,并保持与通用RDMA verbs接口兼容。
火山引擎公开资料显示,这一技术面向包括大语言模型训练和大规模集群通信在内的高性能场景。
DPU加RDMA再加高速网络,实际上共同组成了火山引擎AI基础设施的重要数据传输层。
DPU在AI服务器中的作用
很多人看到AI数据中心时首先想到的是GPU,例如NVIDIA H100、H200或者其他AI加速器。
但GPU本身只负责计算还不够。
GPU还必须不断从存储系统取得数据,并与其他GPU交换参数和中间结果。如果一块GPU计算速度很快,但是网络速度跟不上,那么GPU就会花大量时间等待数据。
因此现代AI服务器越来越接近一种异构计算系统:
DPU负责网络、存储、虚拟化以及基础设施数据处理。
三种处理器各自负责最适合自己的任务。
从这个角度看,DPU并不是GPU的竞争者,而是帮助GPU更充分发挥计算能力的基础设施处理器。
火山引擎与独立DPU公司的区别
火山引擎与NVIDIA、AMD以及大禹智芯、云豹智能等DPU企业存在一个重要区别。
一些DPU企业的商业模式是开发芯片、智能网卡或者DPU板卡,然后把产品销售给服务器厂商、云厂商或者企业数据中心。
火山引擎则首先是一家云服务平台。
它开发DPU的主要目的,是把DPU集成进自己的云服务器、裸金属、容器、网络、存储和AI计算基础设施,再以云服务的方式把这些能力提供给用户。
因此用户购买火山引擎云服务器时,可能已经在使用DPU技术,却并不需要单独购买或者配置一块DPU卡。
这是大型云厂商发展DPU的一条典型路线。
火山引擎在DPU产业中的位置
从DPU产业分类来看,火山引擎比较适合归入:大型云计算厂商自研DPU。
这一类别与独立DPU芯片公司有所不同。
大型云厂商拥有非常庞大的服务器集群,如果DPU能够让每台服务器多释放几个百分点甚至更多的CPU资源,在数十万乃至更大规模的服务器集群中,就可能带来非常明显的成本、功耗和性能收益。
同时,云厂商可以同时控制服务器硬件、虚拟化、操作系统、网络、存储和数据中心软件,因此特别适合采用软硬件协同的DPU设计。
火山引擎目前公开的ECS基础设施已经明确将自研DPU作为全栈自研能力之一,并将其与自研虚拟化、虚拟交换机以及服务器基础设施结合使用。
总结
火山引擎是字节跳动旗下的云计算与AI服务平台,同时也是中国大型互联网云厂商中拥有自研DPU技术能力的重要参与者之一。
火山引擎并不是以单独销售DPU芯片为主要商业模式,而是把DPU作为云计算基础设施中的核心组成部分,用于卸载传统CPU承担的虚拟化、网络、存储和安全任务,并应用于ECS云服务器、弹性裸金属、弹性容器以及大规模AI计算集群。
火山引擎公开的基础设施资料显示,其自研DPU已经与虚拟化组件、虚拟交换机、高速网络和服务器系统形成软硬件协同架构,并公布了5000万PPS包转发和2×100G物理网络等能力。
面向人工智能基础设施,火山引擎还发展了DPU 2.0、RDMA以及veRoCE等技术,用于解决GPU集群中的计算、网络和存储数据传输问题。
从处理器产业的角度看,火山引擎展示了DPU发展的另一条重要路线:
DPU不一定作为一颗独立芯片销售给最终客户,它也可以隐藏在大型云平台内部,成为用户看不到但每天都在工作的“基础设施处理器”。
随着AI集群规模越来越大,CPU、GPU、DPU之间的分工会越来越明显。
CPU负责通用计算和系统控制,GPU负责AI计算,而DPU负责高速移动和管理数据。
对于火山引擎这样的超大规模云平台而言,DPU正在从一块“智能网卡”逐渐演变成整个云计算和AI数据中心架构中的关键基础设施处理器。
