-01-
总体介绍
多媒体技术的发展历程中,从最初的有线无线通讯容量,到2G、3G、4G,再到现在的5G,变化是显而易见的。在这个过程中,人们会发现3G时代经历时间短,而4G则持续时间长。这是因为4G能够更充分地容纳对于生活体验或生活方式的需求。其中最重要的一点是可以更便捷地接入音视频数据和信息,包括现在的短视频。正是因为有了更大更宽的数据通路,能够将我们想呈现的内容传输到用户侧。
在3G和4G出现之前,包括在G出现之前,Codec技术一直存在,压缩能力也并不是到4G之后才有突飞猛进的。恰恰是因为现在随着做管道的能力变宽后,可容纳更多的数据,这是从“不能”到“能”的过程。 现在有了AI技术,更希望它能够发挥出更好的作用,加速从“不能”到“能”的变化过程。以前需要1万人干一年的工作,现在有了10万人,只需要半年就可以完成。
这种技术的冲击加速了中国市场的发展。在5G时代,有些人可能会感到疑惑“为什么没有感受到5G带来的翻天覆地的变化?”。其实,需要的是找到或者说转变用户的需求,从以前的“不能”或者受限到现在的“能”。以前大家认为WiFi是很重要的东西,但现在已经不再关心饭店是否有WiFi,因为手机已经可以通过室内小基站实现对应的诉求。
下一步,需要确保用户看到的内容是否符合他们的需求,比如在延迟和画质量方面如何满足用户的诉求?除了娱乐生活中的短视频,在工作中是否也和视频息息相关?早些年,出现了多媒体技术,但却没有相对应的产品,因为多媒体技术已经融入到了云或端的用户体验当中,不需要专门的技术。如果想要将“能”变得“更好”,需要逐步实现音视频技术的智能化。
智能化的方向不仅仅是生活和娱乐,还包括交通、政务服务、出行、健康等领域。这些数据往往需要通过视频作为媒介进行传输,而不是单纯的文字,例如企业的数字服务等。“我们是看到的每一本书其实都是对人思想的一个裁剪”,所以视频记录的意义在于记录人与信息所有者面对面交流的过程,因此视频业务不仅仅是娱乐活动,还包括很多其他领域,之后也有很多机会去拓展这些领域。
这里有两个案例。第一个案例是关于终端计算能力,比如手机和手表等边缘设备,它们本身具有很强的计算能力,这对于完成业务非常有帮助。第二个案例是关于ADAS的,它的算力需求呈倍数增长,这意味着需要拥有更大的计算平台来支持业务,这是之前很少考虑到的。因为在之前,更多地关注于在CPU、GPU或DSP上进行计算。但是需要更深入地了解其计算逻辑,以便将编码、解码和增强等技术合理地交付到这些IP上。实际上,这些IP的能力非常强大,如果仅关注CPU的计算能力,会发现自己受到限制。
在最近的讨论中发现,人们更多地在关注应用,那么,应用如何去下沉到实际的计算平台?就需要充分考虑的计算平台有什么,首先运行的平台是CPU,但从计算能力的角度来看,CPU并不是最强的。对于视频、图像或音频处理,DSP和GPU更有潜力,需要挖掘这些潜力。此外,NPU在峰值计算能力在各方面都比CPU强得多。
上图主要内容是关于ChatGPT的发展。随着算法不断推进,计算能力和计算平台也在提升。不必担心计算平台的浪费,或是不能自主对自身部署平台进行升级。因为随着算法的演进带来更高性能的同时,会关注其参数,参数可能和神经网络的突触是相关联的。实际上,这也是提升计算能力和计算平台的注解。
人们不应该先框定应用平台,而是应该从计算趋势或算法性能出发,考虑如何推动计算平台的变化。这样的思路会带来很多选择,也会有合理的理由要求计算平台不断演进,因为算法或性能的提升是随着计算能力的变化而带来的。
关于计算平台的演进,前面提到了数字化的方式。这些数字化方式对个体带来了哪些影响呢?这些方式包括与家人、商业伙伴、同事以及虚拟人进行交流和沟通。这样的连接方式为此带来了更多的沟通选择,不再局限于声音,而是可以通过视频等方式进行互动。
近些年已经看到了技术的发展,从4K的普及到慢慢进入视野的8K,这对音视频编解码带来了很大的挑战。虽然2K已经相对容易实现,但4K仍然具有一定挑战性,那么对于8K又该如何解决呢?这是一个当前面临的问题,虽然可能并不紧迫,但已经清晰可见。
面对这个问题,该如何解决?在虚拟现实(VR)和增强现实(AR)设备中,对延迟要求很低,数据从SOC加载到DDR内,然后再传输到CPU,然后反复在多层缓存中传递,能否保持低延迟?还是必须采用直接点对点的逻辑,避免经过任何中间环节? 因此,在处理设计方案时,需要考虑到这些新的连接方式和连接数目带来的影响。
例如,低延迟显示、更大的数据量和吞吐量需求,这些方案将对处理平台带来变化。过去,人们几乎不考虑语音的问题,但现在语音已成为一个不可忽视的关键词。那么,如何合理分配云端和端侧的工作任务?如何在保证延迟的同时降低有效负载?这些都是需要优化和考虑的因素。
-02-
AI和Codec的趋势
在面对这些新的变化趋势和挑战的情况下,人工智能(AI)和编解码器(Codec)也在发生变化,这种变化包括两个方面: 第一方面,随着大模型的引入,不断为其提供越来越多的数据。然而,这样的数据本身存在两个问题。第一点,是数据的有效性。
在高级任务中,数据中可能存在脏点,影响模型本身的准确性,即使使用超出量级的模型,也很难达到百分之百准确率,因此需要确保数据质量,提高模型准确性。第二点,是在一些浅层任务中,可能存在天然的数据集构建问题。例如,在进行SR时,很难获取点对点完全真实的Ground Truth。
因此,数据集可能存在缺陷或不足,但正在不断努力弥补这些缺陷或不足,这样的弥补其实是意味着“我们如何去把我们之前看到的,单纯地通过模型数量的增加去解决问题”,变成需要综合考虑模型、数据集、计算方式和训练方式等因素,而不是仅仅通过增加模型数量来解决问题。特别是在使用大模型时,需要考虑如何采用分布式训练来提高训练效率,这是现在需要解决的问题。
第二方面,如何有效提升数据计算的有效性,同样存在三点问题。第一是对于NPU和AI来说,这是一个致命的问题。对于AI的幻灭,其中一个重要原因是虽然提升了计算容量,但是实际交付给用户时,用户发现容量很大,比如有10TOPS,但实际上每秒只能用到5TOPS,甚至只有2TOPS,这个问题在第一代NPU中非常普遍,那么如何充分调整计算维度呢?
第二是数据类型。在进行AI算法时,很多计算类型是通过渐次的数据传输或数据近似来完成的,这本来就是一个近似过程,那么是否可以考虑引入一些与AI加速相关的计算维度,而不是仅仅做LP32或LP64这样的计算维度。这样的计算维度可以提高整个计算性能,特别是在进行数据复用时。例如,可以将一个64bit乘法器简单地折成两个32bit乘法器,这样的技术增加可以带来可观的算力膨胀。
第三点问题,是关于数据中心的能力激进。图片展示的是2023年ISSCC公布的“未来十年计算效率的改革”,可以看到数据量在不断上升。这样的上升意味着什么呢?如果回顾前面的内容会发现,首先,随着单位算力成本的下降,计算中心或者所谓的算力焦虑会比预期的来得更早。再次,随着计算中心的算力增加和计算效率提高,可以获得更显著的效益。
过去,训练大网络模型可能最昂贵的不是采购GPU卡的问题,而是长时间的耗电费用。如果能使计算变得更高效,即使节省1%或10%的能源消耗,对于进行大模型训练或数据中心来说都将带来质的收益。此外,这种效益对于模型部署后的运维非常重要,因为它带来的是长期的收益。 开发一个模型可能是阶段性的,训练模型时更注重精度,而在模型运营阶段时,更注重运营成本。因此在运营模型时,可以调整计算需求,以降低运营成本。
这一部分,就是需要考虑拓展业务的多个维度。首先,随着通道扩展和参数增加,可以为用户提供更多的数据维度,这些用户不仅可以是人,还可以是机器或传感器等级联设备,把任务点打开。尽管最终的目标是为人服务,比如在港口或矿山等地方,面积极大,如果一直依赖人力,那么在布设视频流等方面将面临巨大的挑战。因此,如何实现智能控制和交互成为关键,视频信息中可能有效信息只有1%左右,对于最终进行判断来说并不都是有用的。这也是为什么VCM可以超过VVC50%以上收益的核心原因之一。
其次,在进行控制算法时,数据控制并不需要人的主观体验。这种主观体验的需求往往是人的先入为主,但在设计系统方案时可以合理优化。 第三,需要考虑特征传递的方案。对于人来说,可能对特征有精度的需求。但是对于机器来说,在数据变化或损失时,例如在后端恢复或机器判断方面,可以接受一定程度的数据变化。因此,在进行VCM和人类视觉方面会有显著的差异。随着智能水平的提高,更多的视频数据或类似的数据表达应该是为机器判断而设计的,而人更关注结果。
对于用户体验的提升,无论是与机器相关的技术还是人类的感知,都在发生变化。以下是对于人类感知方面一些直观的例子: 首先是8K大屏。在去年的世界杯中,进行了一项调查,发现那些已经体验过8K的人很难再回到4K的观赛体验,因为8K带来的沉浸感和与之匹配的声音设计给用户带来了不可逆转的体验。因此,应该尝试拓宽用户的需求,而不是被迫做出调整,要主动去关注这些变化。 第二个例子是元宇宙。这是一个大家都在讨论的概念。在元宇宙中,需要考虑的是交互体验是什么,以及如何将这种交互体验传递给与之交互的人。
我认为这是未来对于Codec和AI生成技术的一个重要挑战和关注点。 第三个例子是"enjoy work"。作为技术开发人员,特别是音视频开发人员,应该提供一些产品,使工作变得更轻松。这不仅包括远程工作方式,还包括与客户和同事沟通等方面。特别是在过去几年的远程工作经历中,是否感觉到工作方式的流畅性?记得去年在疫情比较严重时,正好赶上业务高峰期,发现在连续与同事远程沟通的时候,效率实际上是下降的。这需要自己去调整和优化。现在很多跨国公司已经开始签署永久的“home office”协议,这种工作方式对于如何设计数据通路、用户界面甚至是专用的硬件设备都有一定的关联。
-03-
NPU与VPU的形态
需要考虑用户的需求和变化,并希望这些变化能够进一步下沉到所提供的更高效的硬件方案中。
第一代NPU具有出色的“并行空间”和“堆叠计算”的能力。然而,随着时间的推移,就需要思考如何将这些计算能力有效地应用于所需的业务部署。因此,我们将进一步对计算进行抽象,包括一维、二维和三维计算的优化。这为下一代NPU的架构设计提供了契机,以更好地满足业务需求,并对现有的AI算法计算层进行适当的支持和抽象。致力于与业务紧密结合,并积极探索如何支持和优化现有的AI算法计算层。 在这个方面,需要思考一个问题,即之前提到的计算抽象是否合理。对于每种计算类型,在不同的情况下,其优化效率可能不同。
因此,需要如何充分利用当前的资源,来实现最佳的优化效果呢?举个例子,假设有两类任务,它们可以映射为三维计算,可以将“低维”映射为“高维”,但这种映射可能导致计算资源的浪费。然而,为了将所有计算任务都推送到专用硬件上,必然需要在一定程度上牺牲一些计算资源和代价。
在从单核任务向多核任务的转变中,面临一个问题:如何将高计算需求的任务推送到两个适合的计算类型上?然而,这样的计算类型可能存在一些不匹配,从而导致计算资源的浪费。在这种情况下,可以考虑将计算核拆分或实例化多个case,针对不同的case部署不同的任务,以充分利用整体的计算能力。 此外,还存在一些与同步相关的问题。在整个AI加速过程中,除了利用率之外,还会遇到一个瓶颈,即不是计算逻辑本身,例如卷积操作,现在已经有一些较好的加速方法或近似手段。
相反,瓶颈主要出现在"前处理"和"后处理"阶段,因为必须将这些计算逻辑迁移到GPU、DSP甚至是CPU上,这可能成为一个短板。 因此,需要考虑如何对当前的计算任务进行分割,将“前处理”和“后处理”分别抽象出来,先给到部分“前处理”逻辑,将“后处理”任务分为几类,因为目前计算逻辑主要偏向于一些Mac阵列,而“前处理”和“后处理”更多涉及数据重排和逻辑运算。从这个角度来看,可以对其进行功能性的划分,从之前的“计算逻辑抽象”转变为现在的“功能逻辑抽象”。
另外一个重要的方面是关于当前VPU架构的一些特点。可以将其划分为预测单元、滤波单元,以及语义解码和pixel解码等。在VSE中,进行语法元素的反向解析,而在后续阶段,对pixel进行处理,形成了VPE和VSE的结构。同时,还将一些后处理集成在其中。
例如,当设计VPU时,如果只能按照原始分辨率进行输出,这与实际用户需求很可能不符。一个最直接的例子就是家里的电视,近年来,国内普遍采用的分辨率可能平均已达到了4K,然而海外用户的情况却千差万别,许多用户甚至仍然使用低分辨率的显示设备。在这种情况下,如果VPU可以在这一阶段支持不同显示终端或显示类型的需求,那么数据将会获得很大的优势。如果没有这样一个单元,那么在数据输出后,需要将其存储到DDR中,然后在经过额外的处理单元,无论是DSP、GPU还是NPU。
在经过这一段之后,数据可能需要再次写入DDR,然后发送到输出接口上,整个延迟会比目前使用的方案要大得多。 另外一个需要考虑的因素是功耗的矩阵问题。对于用户来说,频繁的读写操作会导致功耗的不断增加,因为读写本身对功耗是不友好的。特别是在边缘侧的部署中,很多时候问题并不在于计算能力不足或算法映射能力不足,而是在于虽然可以将其部署并运行,但它只能运行5分钟。这是因为在5分钟后,设备已经过热,我们不可能给一个成本为10美元的设备再加上5美元的散热器,这不符合产品设计的原则。
因此,对于边缘侧来说,在设计初期如何考虑到产品各个方面的应用需求非常重要。例如,在最初的设计阶段,可以采用流式处理的方式来降低数据交互的需求。同时,还可以使用VME进行内存控制和重写,以优化内存的读写操作。
从逻辑上来看,需要将硬件架构与现有的软件编解码架构相结合,可以看到它们之间有很多对应的关系。从这个维度来看,这种方案在支持4K方面,大约在2017年左右已经存在了成熟的解决方案。图片展示的是2019年,一位同事撰写的高效视频处理报告。可以观察到,在VPU上出现了很多新的case,这些新case在计算方面有两个主要方面。
在第一个主要方面,追求更精细化的管理。例如,将之前对于Y通道用的东西,现在作用在UV通道,以前认为UV通道的影响不太重要,可以将其降低一个级别。这样做可以减小整个计算逻辑的规模,使芯片对于边缘侧或用户来说更加友好。然而,后来发现,如果想提高质量,这一部分是必不可少的。
因此,第一个方面是更全面、更充分地利用整个计算逻辑。 第二个重要的方面,是对参数进行更精细的估计。我们也在尝试使用AI的方法来优化这些参数的估计过程。如果有足够的数据量和适当的数据类型,AI方法在这方面的效果是相当不错的。
这样的精细参数估计可以提高视频编码的质量和效率。 但存在一个问题,在刚才提到的两个趋势中,第一个是对于运动参数的精细估计,第二个是对以前认为较边缘的内容质量的提升。此外,如何支持并行计算也是一个重要的问题。在并行计算中,可以考虑在初代架构中使用的关键逻辑,如VSE、VPE和VME,用于语法元素分析和像素级恢复。
然而,随着输入数据的急剧增大,尤其是在户外大屏幕和未来家用终端的核心体验中,这些数据成为极其重要的数据来源,与解码4K甚至2K相比,这些数据来源的数据通路要大得多,可能是2倍甚至8倍以上。因此,在软件和硬件层面上,仅仅进行横向的加强或规模的扩大已经不够了。
下一个维度就是需要支持并行解码,但并行解码对编码过程也提出了一些要求。当进行第三行或第四行的解码时,如果该行的语法元素与之前的行有很强的关联性,那么解码过程可能会受到限制,即使前面的解码已经进行到较前面的位置,但如果前一级的解码受阻,那么问题就会产生。
在之前的讨论中,NPU从最初只能满足基本功能,到之后通过NPU更好地支持相应的任务。未来希望NPU能够具备适应各种任务的充分能力。包括VPU,它与之前的解码流程相对应,但现在开始让解码反过来约束编码过程,这是目前所看到的变革。那么对于这些变化,如何进行融合或分解呢?
在之前做过的一次分享中,我将整个NPU部分放在了里面,将其视为整个流程的一部分。然而,后来仔细思考并与其他人讨论后,发现这种逻辑可能会给人一种误解,即认为NPU只是处理pipe的一个环节。实际上,一个更合理的逻辑是,NPU应该支持整个处理的全流程。这包括之前提到的使用NPU来增强对Codec参数估计的能力。此外,我认为在下一代的VCM中,如果要实现一些硬件逻辑,从当前的结构来看,有可能将其置于NPU框架的下方,并进行相应的方案设计。
-04-
NPU与VPU的融合探讨
为了提供用户更好的视觉和听觉体验,NPU应该与如ISP和DPC这样的逻辑进行关联。这种关联可以带来哪些收益呢?以手机为例进行说明,在传统的pipeline处理中,当直接使用手机摄像头获取数据时,它通常能处理的亮度大约在1Lux以上。然而,当结合了NPU的能力后,会发现可以相对容易地实现0.1Lux以上的处理。现在,很多夜景拍摄都是通过这种逻辑实现的,这也解释了为什么高端旗舰手机在拍照方面表现更好,而入门级手机的拍照效果较差。这其中存在一些逻辑,即有意地拉开了差距。但在另一方面,这也是因为在资源方面存在差异,受限于可用资源,很难提供一致性的解决方案。
此外,之前认为的IaaS/AaaS,现在,在办公维度上,可以拿PC作为一个基本的服务单元。从这个逻辑来看,未来的办公可以变得更加便捷。因为将个人PC打造成可移动的资源对于云办公、家庭沟通、教育和远程医疗等领域具有重要意义。这样做的好处在于,能够通过在不同环境中接入特定的沟通环境来满足各种需求,增加了在不同环境下接入特定沟通环境的便利性。此外,由于更多的数据存储在云端且数据源位于云端,当在边缘设备上进行接入时,它提供了更大的灵活性。 这个变化可能会对编码方式产生影响。
以前认为在办公场景下进行编码时,使用420或者422已经足够。然而实际上,当处理这类流时,会发现与传统思维不同,如果按照传统思维进行编码,视频数据的质量会变得非常差。这种情况很好模拟,只要拿现在的生成场景做一些数据生成,然后再反过来按照现在的编码方式,去做编码,再解出来会发现效果会变得很差。
对于Codec来说,这是一个需要思考的问题。如果仅使用4x4进行编码,会发现码流的增加非常快。但是,如果将其与NPU结合起来,使用NPU来进行恢复和增强,实际上复杂度是非常可控的。另外在去解决前面提到的问题时,特别是在带宽有限的情况下,由于当前的网络接入环境千差万别,需要注意。之前为什么在3G时代一定要向国外学习?因为国外的部署进度更快,他们能够看到更多的场景。但是在4G和5G时代,反倒是其他国家开始向我们学习,为什么?中国接入5G的场景数量在全球遥遥领先。
在如此复杂的情况下,我们面临着许多问题。举个例子,我们应该传输高分辨率低质量的数据,还是低分辨率高质量的数据?此外,还可以利用边缘计算和NPU进行超分辨率处理,或者结合低分辨率低质量的数据和all in one增强逻辑。这是一个非常值得思考的方向。 在第二个方面,我们也进行了一些尝试,主要是基于在端侧进行NPU增强的实践,而它所带来的收益也是显而易见的。对于用户体验和带宽控制而言,与其将所有精力都集中在编解码上会更好。以前可能认为系统就像一个木桶,性能取决于最薄弱的一环,即短板。但实际上,可以反过来思考,这个木桶效应意味着什么?它意味着不仅有短板,还一定有长板,即整个系统中一定存在几个相对优势的部分。为什么不利用这些长板来解决漏水问题呢?
这些是一些现有的VPU的替代方案,其中包括使用之前提到的VCM以及基于AI的方案。这些AI方案可以应用于NPU,并引发一些新的思考。可以尝试调研当前存在的几种AI编解码方案,它们可以分为不同类型。 第一种类型是端到端的方案,不再使用传统的量化、残差估计和MV估计等技术。相反,整个处理过程由端到端完成。 第二种类型是替代特定部分的方案,例如前面提到的MV估计。从逻辑上来说,如果可以替代掉,但整个输出的码流,仍按照H.264或H.265等编码标准进行编码,甚至可以使用AV1去编码方案。之后在云端解码时,直接使用正常的解码器进行硬解或软解。这是两种不同的解决思路,选择哪种思路实际上与具体的场景有关。如果场景相对封闭,例如只需端到端的方案,那么可以完全摒弃整个编码器,并全部使用自己的解码器方案。然而,如果要考虑更多的用户场景,特别是在国内外网络环境不一致的情况下,后一种思路可能更为合适。
-05-
总结
对于音视频领域,需要关注的是如何将自身的方案与计算能力结合起来,而不仅仅专注于云端,应该适当地关注端侧,因为在端侧需要解决一些限制计算能力、功耗和计算平台的问题,以便有效交付解决方案,这是一个非常重要的考虑因素。 另外,还需要考虑如何处理更多连接的问题。大会的其他演讲也讨论了解决万人接入的问题,这是一个非常有意义的探讨。此外,更好的性能反过来会给用户提供更多机会和需求。 一个有趣的观点是,我一直认为所谓的云办公实际上更多地是来源于对娱乐需求的迁移。因为个人可如果以很好地接入同一个视频流,所以为什么还需要一定在现场进行办公呢?这是一个思考的角度。
最后,和大家分享一些我认为的未来趋势。这些趋势涵盖了如何将计算能力与现有标准融合,因为现有标准主要定义了不同的profile。需要思考如何将这些profile与计算能力相匹配。另外,包括之前提到了几种策略。 首先,直接使用AI网络生成更多的数据。这种计算加速方式实质上是对之前提到的流式编解码架构或混合编码策略的一种完全颠覆。 第二种策略,涉及与AI Codec相关的一些策略。 第三种策略,是如何考虑相关成本,包括性能代价和有效利用率的问题。 第四个趋势,是目前所见的一些硬件架构的演进。在支持8K的情况下,单路方案已经不太合理,因为在进一步降低成本和功耗时,会遇到许多新的挑战。 最后一点,是关于软件方面的问题,特别是在NPU的工具链中。需要思考如何映射不同的算子到现有的NPU计算单元上,同时又会反过来形成一个循环问题,即如何将相应的功能整合到系统中,这是一个很好的尝试思路。
审核编辑:刘清
-
Codec
+关注
关注
1文章
68浏览量
40385 -
ADAS技术
+关注
关注
0文章
21浏览量
3250 -
NPU
+关注
关注
2文章
269浏览量
18543 -
ai技术
+关注
关注
1文章
1257浏览量
24246 -
VPU芯片
+关注
关注
0文章
7浏览量
1411
原文标题:基于AI和NPU的Codec变革——VPU与NPU的协同创新
文章出处:【微信号:livevideostack,微信公众号:LiveVideoStack】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论