面对算力瓶颈,如何利用CPU解决全链路智能编码?

news2025/1/10 3:24:16

编者按:英特尔是半导体行业和计算创新领域的全球领先厂商。与合作伙伴一起,英特尔推动了人工智能、5G、智能边缘等转折性技术的创新和应用突破,驱动智能互联世界。不久前,英特尔正式发布了第四代英特尔®至强®可扩展处理器,旨在为增长最快的工作负载提升性能。那么,第四代至强®到底强在哪里?LiveVideoStackCon 2023上海站邀请到英特尔至强产品线软件架构师谢义为我们介绍:当面对算力瓶颈时,英特尔是如何利用CPU解决全链路智能编码的。

注:文章根据谢义演讲内容整理,有删改。

1554638d4305615d866e0198eb847775.jpeg

最近一年,关于AI和AIGC的讨论远比以往更加火热。大模型、多模态、AIGC工具……很多专家认为,AIGC一定会对整个编解码行业产生巨大的革新。

本文会着重介绍目前用到的一些处理,例如降噪、超分和内容识别等。虽然技术角度看GPU是第一选择,但缺卡在业内已经是一个公开的秘密。即便不缺卡,一次性购入大量GPU卡,也有非常大的风险。但由于现今大模型接棒,毫无疑问CPU仍是市场内的第一选择。

智能化编码面临的算力瓶颈

图中是一个视频转码推流的一般性流程图。主播将视频上传到上行CDN,然后再由视频处理中心进行各种前处理,包括内容理解,审核,编辑,增强和超分,然后进行编码,再推送到下行CDN,供观众观看。

4cd1ead8d579cb56cf933df76f42cb71.png

红色框部分都是和AI相关的部分。智能化编码中,AI所需算力已经超过编码本身。1080p的数据超成4K,编码只需要20几个物理核,但是如果要超分,就需要一张GPU卡。一张GPU卡5000块一个月,对比下来成本优势一目了然。

根据相关视频企业公开的财报,视频转码和带宽的成本占到公司全年收入的10%左右。随着AIGC的发展,未来肯定不局限于10%,因此成本问题是我们的痛点之一。

ee0ac60167f8f8733d4fc4d2869479e0.png

CPU全链路智能化编码的优势就在于成本节约,运维简单。下面举一个更具体的例子:

我们都知道转码方式有很多种,但CPU有两个不可替代的优势:1.高灵活性;2.高复用性。CPU的升级几乎没有成本,只需升级一下软件部分即可,以云为基础,申请一个虚拟主机,无论是docker还是container都可以随用随放,十分自由灵活,成本很低。

由于超分部分对算力的要求非常高,需要通过GPU来辅助,但同时也会引发一些问题:客户将高要求的AI负载迁移到GPU上,将编码和前处理完全分离。这就像在一间屋子里解码——发送到另一间屋子进行前处理——再转回来编码。这不仅让流程变得冗长,也对运维造成了极大负担,数据的反复调度也造成了一定时延的增加。

CPU全链路智能化编码正是解决了这一痛点。

英特尔®第四代至强®可扩展处理器及AMX赋能智能化编码

接下来会介绍英特尔®第四代至强®可扩展处理器及其内置的AI加速器AMX,以及如何利用AMX和英特尔成熟的软件栈和工具链帮助视频编解码工作者,打造全链路智能化编码。

据最新的统计数据,英特尔®至强®服务器在中国市场的数据中心的占有率保持在80%以上,可以说至强®服务器是数据中心的基石。第四代至强®一个重要的革新就是内置了数个硬件加速器,用于不同应用场景的性能加速,例如之前需要外置的PCIE插卡就已经内置在CPU内部。

5c25765bbcf313e82d9d4f670fd92dab.png

从左往右第一个AMX适用于AI;QAT负责压缩、解压和加解密;DLB负责Load Balance,CDN负责负载均衡,自动dispatch到闲散的资源上;DSA负责内存拷贝,不需要CPU参与,异步拷贝不仅速度快,而且不占用CPU内存;IAA负责存内分析,更多和数据库相关,IAA可以在不解压数据的情况下分析数据。

bbce007a8cbb42db004d1e72d8406184.png

AMX的全称是Advanced Matrix eXensions,高级矩阵扩展指令集。它在AVX512的基础之上做了进一步的扩展。AMX有两个核心思想,一个是Tiles,一个是TMUL。Tiles是物理上两地寄存器的叠加,16个AVX512叠加在一块。TMUL是针对两地Tiles的矩阵运算。最新的至强®每一颗物力核上都有一个内置的AMX,充当AI 的加速卡。

e58cb64a77b0725eeab8e9a8edc2c154.png

和大多数加速卡一样,AMX加速的是量化精度。目前第四代至强®支持的是BF16和INT8,未来也会很快支持FP8和FP16。BF16的表达范围和FP32一模一样,只是精度比FP32小一点。目前绝大多数的场景,BF16已经足够。对于训练来说FP16足矣,而推理则只需要INT8。

c6ce49192ac97b10c1979310ac52893c.png

AMX是如何加速矩阵乘的呢?我们在做大的矩阵时可以把矩阵拆成16*64,然后一次性计算。如果算力不够,可以用oneDNN和MLKDNN处理,而AMX加速矩阵乘计算,算力是前一代产品的8倍。

5fbe823cefcdbcf526c01cd42a2a3764.png

这张图是至强®服务器峰值计算能力的演进过程。从2019年开始的第二代至强®可扩展处理器支持VNNI,最新发布的第四代至强®可扩展处理器支持AMX,可以看到每个指令周期的计算能力得到8倍的提升。

e1a9f16459176cc47e3bf3342ec65197.png

硬件性能只是一方面,软件生态某种意义上说对开发者来说更为关键。这是一张英特尔® AMX的软件生态图,从下往上,从最底层的操作系统到虚拟化KVM、HyperV,再到核心AI计算库都是英特尔开发的。在框架层面,主流的TF和PyTorch也都包含在内,除此之外英特尔还提供了丰富的推理工具。这些成熟的软件生态使得我们的开发者可以专注于算法创新,而不用考虑如何部署等细节,开箱即用。

13b95aa25b004aba847359d00f2e236b.png

BF16和INT8的高算力对将AI从GPU迁到CPU之上确实有很大的帮助,但如何保证精度呢?英特尔有一个工具叫做INC,内置了很多专门用于精度的校正算法。作为开发者,只需要做三件事:输入模型、输入数据集和输入精度要求即可。INC会根据客户的输入进行tuning,直到有一个用户满意的算法。如果最终达不到设定的精度要求,还可以对某些层进行回滚,从而保证设定的精度可以达到要求。

a0b1dedde8f6070e5c82ec64894f139b.png

回到视频编解码领域,我们知道视频前处理是在FFmpeg解码之后,对YUV或者RGB数据进行处理,处理结束后再送到编码器x264或者x265编码。由于整个pipeline中,数据的处理速度并不一致,因此为了让整个过程的数据顺滑地流动起来,就需要做一部分的改造,比如解码后的raw data放入一个buffer队列中,AI推理异步从这个队列中取数据做推理,并把推理后的结果送到编码器中,这需要一定量针对FFmpeg的开发工作。幸运的是,英特尔已经帮用户做好了。FFmpeg中有一个英特尔的OpenVINO后端,用户直接使用就行。FFmpeg的DNN AI推理后端,目前只支持2个后端,一个是Tensorflow,另外一个就是英特尔的OpenVINO。

总结:FFmpeg已经集成了OpenVINO作为AI 的后端推理引擎且英特尔有专门的团队去维护,大家可以放心使用。

5e7a9b7e3dc793c51fe2ccde51c63d32.png

这是一个和合作伙伴的实际案例。在视频增强和目标检测这两个场景下,使用了英特尔®第四代至强®可扩展处理器AMX优化的AI推理性能相对上一代平台分别提升了1.86倍和1.95倍。与此同时,精度损失被控制在可接受的范围,这也使得英特尔的客户在CPU上实现了全链路智能化编码,大幅降低了部署成本和运维成本。

后记:本次,LiveVideoStackCon 2023上海站特设了MINI圆桌环节,特别邀请到了英特尔和互联网头部企业的技术大咖们。各位参与者围绕当下技术圈中备受关注的热门话题展开讨论,共同参与了趣味十足的“YES or NO”互动环节!

197ad40ab020e6c0501db0fec916ce82.jpeg

f8c466bf66096a5b777a4afa1edee477.jpeg

543788f966f9db09a9cf8b85e513182d.jpeg

向左滑动查看更多

各位与会者围绕当下技术圈中备受关注的热门话题展开讨论,共同探讨了行业内的新发展、新方向。我们相信,在各位技术人的不懈努力下,AI加速下的智能化编码一定会发展得越来越好。


92ec5e7bfe8b412cb5a204e2e3661db8.jpeg

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络-物理层(二)- 传输方式

计算机网络-物理层(二)- 传输方式 串型传输与并行传输 串行传输:是指数据是一个比特一个比特依次发送的,因此在发送端和接收端之间,只需要一条数据传输线路即可 并行传输:是指一次发送n个比特而不是一个比特,因此发送…

前端架构师的能力要求:打造可靠、灵活和可扩展的Web应用

随着互联网技术迅猛发展,现代Web应用程序变得越来越复杂且功能强大。作为一名前端架构师,在这个快节奏且竞争激烈的环境中,你需要具备广泛而深入地技术知识,并且有能力设计、开发和维护高度可靠、灵活和可扩展性强的Web应用。 深入…

popen/pclose 函数

函数作用 如果说system在一定程度上是execl的优化版,那么popen就一定程度上是system的优化版,使用popen不仅可以运行代码,还可以获取运行的输出结果(但是system和exec族函数还是非常重要的,也有自己的特定应用场景&am…

从0开始搭建ns3环境以及NetAnim简单使用

一、环境准备 ns3是基于GNU/Linux平台使用C开发的工具软件,在windows系统中安装使用ns3环境,可以使用虚拟机VMware并安装ubuntu系统来实现,现将本教程所用到的虚拟机和系统镜像放到网盘提供下载 名称链接提取码VMware Workstation 17 Proht…

Docker镜像查看下载删除镜像文件的相关命令

1.镜像相关命令 本地查看有哪些镜像文件: docker images镜像的名称就是我们常见的一些软件,镜像相当于把软件和软件所需要的运行环境打包到一个镜像文件里面,将来在通过这个镜像文件创建出对应的容器,容器有了以后这些软件自动的…

system函数

函数作用 执行一个shell的命令 其实通过查看system函数的源码就会发现,system函数调用后会进行一次fork,然后就会在子进程中运行“execl("/bin/sh", "sh", "-c", command, (char *) 0);” 而“sh -c XXX” 这个命令&…

IC设计仿真云架构

对于IC仿真来说,最重要的是要安全、可维护、高性能的的HPC环境环境。 那么云上如何搭建起一套完整的IC仿真云环境呢? 这种架构应该长什么样子? 桌面虚拟化基础架构 将所有桌面虚拟机在数据中心进行托管并统一管理;同时用户能够…

学习笔记整理-JS-04-流程控制语句

文章目录 一、条件语句1. if语句的基本使用2. if else if多条件分支3. if语句算法题4. switch语句5. 三元运算符 二、循环语句1. for循环语句2. for循环算法题3. while循环语句4. break和continue5. do while语句 三、初识算法1. 什么是算法2. 累加器和累乘器3. 穷举法4. 综合算…

python根据已有列计算其他列

根据已有列计算其他列 1、根据已有列新增列2、根据已有列修改其他列 读取数据源 import pandas as pd # 读取智能大师号码信息 path1 r../excelFile-j/flower.csv df_data pd.read_csv(path1) # df_data 内容1、根据已有列新增列 方式一:根据单列 df_data["…

Python遥感开发之分段读取和保存遥感数据

Python遥感开发之分段读取和保存遥感数据 1 分段读取数据2 实现分批读取数据以及进行计算3 实现分批保存成TIF文件(所有完整代码)4 分段TIF整合到一个TIF5 生成一个空白TIF(每个像元值为0的TIF) 前言:当遇到批量读取大…

DIP: Spectral Bias of DIP 频谱偏置解释DIP

On Measuring and Controlling the Spectral Bias of the Deep Image Prior 文章目录 On Measuring and Controlling the Spectral Bias of the Deep Image Prior1. 方法原理1.1 动机1.2 相关概念1.3 方法原理频带一致度量与网络退化谱偏移和网络结构的关系Lipschitz-controlle…

DCMM数据管理成熟度之数据治理-数据治理沟通

​01 标准原文 1 概述 数据治理沟通旨在确保组织内全部利益相关者都能及时了解相关政策、标准、流程、角色、职责、计划的最新情况,开展数据管理和应用相关的培训,掌握数据管理相关的知识和技能。数据治理沟通旨在建立与提升跨部门及部门内部数据管理能力,提升数据资产意识,…

读发布!设计与部署稳定的分布式系统(第2版)笔记31_版本问题

1. 在软件与外部环境之间的许多交汇点上,版本控制基本上处于混乱状态 1.1. 不应该为了更新自身系统的API,而让服务消费者被迫与你同时发布新版本 1.2. 多数服务新版本的发布应该具有兼容性 2. 分层的“约定”栈 2.1. 连接握手和持续时间 2.2. 请求组…

华为在ospf area 0单区域的情况下结合pbr对数据包的来回路径进行控制

配置思路: 两边去的包在R1上用mqc进行下一跳重定向 两边回程包在R4上用mqc进行下一跳重定向 最终让内网 192.168.10.0出去的数据包来回全走上面R-1-2-4 192.168.20.0出去的数据包来回全走 下面R1-3-4 R2和R3就是简单ospf配置和宣告,其它没有配置&#…

Python爬虫(十一)_案例:使用正则表达式的爬虫

本章将结合先前所学的爬虫和正则表达式知识,做一个简单的爬虫案例,更多内容请参考:Python学习指南 现在拥有了正则表达式这把神兵利器,我们就可以进行对爬取到的全部网页源代码进行筛选了。 下面我们一起尝试一下爬取内涵段子网站&#xff1…

《C语言深度解剖》.pdf

🐇 🔥博客主页: 云曦 📋系列专栏:深入理解C语言 💨吾生也有涯,而知也无涯 💛 感谢大家👍点赞 😋关注📝评论 C语言深度解剖.pdf 提取码:yunx

使用cloud-int部署nginx

参考 azure创建虚拟机,创建虚拟机注意入站端口规则开放80端口,高级中使用自定义数据,初始化虚拟机,安装nginx 连接CLI,验证是否安装成功 访问虚拟机IP查看是否部署成功 参考文档: https://learn.microsoft.com/zh-cn…

代码随想录算法训练营之JAVA|第二十八天|122. 买卖股票的最佳时机 II

今天是第28天刷leetcode,立个flag,打卡60天。 算法挑战链接 122. 买卖股票的最佳时机 IIhttps://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/ 第一想法 题目理解:找到一个升序的段,然后累加每一个升序的段头尾的…

ORCA优化器浅析——CXform base class for all transformations

CXform CXforml类作为所有transformation的基础类,其包含了pattern成员m_pexpr。主要是在exploration和implementation expression流程中使用,主要调用Transform函数。其还包含返回相关xforms的集合函数,比如PbsIndexJoinXforms等。 class …

Centos7多台服务器免密登录

准备四台服务器: docker0 docker1 docker2 docker3 在docker0服务器上生成公钥和私钥 [rootwww ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory /root/.ssh. Enter passp…