摘要:人工智能浪潮已然席卷全球,将人工智能加速器和处理器整合到各类应用中也变得愈发普遍。然而,围绕它们是什么、如何运作、能如何增强应用,以及哪些是真实情况而哪些只是炒作,仍存在诸多误解。
(本文编译自Electronic Design)
人工智能浪潮已然席卷全球,将人工智能加速器和处理器整合到各类应用中也变得愈发普遍。然而,围绕它们是什么、如何运作、能如何增强应用,以及哪些是真实情况而哪些只是炒作,仍存在诸多误解。
GPU是最佳的人工智能处理器
尽管GPU在人工智能的实现过程中发挥了关键作用,而且如今它们的应用也极为广泛,但将其推崇为“最佳”人工智能处理器,未免过于简化了人工智能硬件不断演变的格局。
GPU非常适合用于大规模模型训练,在这类场景中,需要巨大的吞吐量——包括大容量内存和高精度——来精准处理海量数据集。而像它具有的处理时间长(可能长达数月)、处理效率低(通常仅为个位数)、能耗大(对冷却构成限制),以及延迟较高等缺点,则成了次要问题。
随着该领域的不断成熟,“最佳”的定义越来越取决于应用的使用模式和需求。GPU曾经是合适的答案,但如今已不再是唯一的答案。
人工智能处理器在训练和推理方面表现同样出色
人们通常认为,任何为人工智能优化的处理器都能无缝兼顾训练和推理工作。但实际情况是,训练和推理在计算、效率、内存、延迟、功耗和精度方面有着截然不同的要求。
一款处理器在某一方面表现出色,并不意味着它在另一方面也能有优异表现。这两个部署阶段各自有着不同的计算目标和硬件需求。训练注重的是以高精度和大规模进行学习;而推理则强调速度、效率和响应能力。
若认为一款芯片能在这两方面都表现出色,会导致性能不佳、效率低下,还会错失优化机会。最佳的系统会将两者区分开来,并分别进行优化。
人工智能处理器仅在数据中心有用武之地
在人工智能部署的早期阶段,由于模型规模需要巨大的吞吐量,只有云数据中心具备训练和运行深度学习模型的计算基础设施。
而在如今的格局下,随着推理的普及,人工智能处理器正越来越多地部署在数据中心之外的环境中,从边缘设备、移动电话到汽车和工业系统等,都能看到它们的身影。
如今,人工智能处理器已集成于我们身边的各种设备中,在最需要的地方实现更智能的交互、自主决策和实时处理。从云端到边缘,人工智能无处不在,因为这些地方需要智能。
所有人工智能处理器都可用于通用应用
人工智能处理器是专为特定的人工智能任务而设计的,比如优化矩阵/张量运算等。相比之下,通用计算,如运行网页浏览器、管理操作系统或执行文件压缩等,需要复杂的控制流、分支等功能。
一般来说,人工智能处理器架构并未实现完整的通用指令集架构(ISA),甚至也没有实现精简指令集架构(RISC)。没有丰富的指令集架构和强大的编译器支持,它们就无法高效处理非人工智能应用。人工智能处理器在其设计目标领域表现出色,但它们并不能普遍替代通用中央处理器(CPU)。若不认清这一点,可能会导致系统设计糟糕、投资浪费,以及在非人工智能应用中出现性能瓶颈。
TOPS数值越高,性能就越好
每秒万亿次运算(TOPS)常被用作人工智能处理器的营销指标,但它并不能反映其实际性能。虽然它能衡量人工智能芯片在理想条件下(例如所有计算单元能实现100%利用率)的理论峰值吞吐量,但对于在实际工作负载中该性能的利用效率却只字未提。通过使用低精度运算(例如用INT4或INT8代替FP16或FP32),每秒万亿次运算的数值可能会被夸大。
一款芯片可能拥有很高的TOPS数值,但如果数据无法快速到达计算单元,那么其潜在的运算能力就会被浪费。此外,一种架构可能具备巨大的计算潜力,但如果软件生态系统不成熟或调优不佳,其性能也会大打折扣。
最后,不同的人工智能任务需要不同的特性。视觉模型可能受益于高度并行性(这正是TOPS所衡量的方面),但生成式Transformer需要高内存吞吐量、缓存一致性和数据重用能力,而非原始的TOPS数值。
TOPS只是理论上的上限,并非性能的保证。这就好比仅通过最高时速来评判一辆汽车,却不考虑路况、燃油效率或操控性。真正的人工智能性能取决于架构的平衡性、软件栈、数据移动效率和模型兼容性,而不仅仅是原始的计算数值。
芯片越大、核心越多,性能就一定越好
乍一看,芯片越大、处理核心越多,似乎性能就应该越好。但实际上,增加芯片面积和核心数量会带来显著的边际效益递减,在很多情况下,甚至会降低性能、效率或可用性。
人工智能工作负载的性能并不总是随核心数量呈线性增长。更大的芯片需要更多的内存带宽来为其计算单元提供数据,还需要更长的线路和更复杂的互连结构。这会导致布线拥堵和能耗增加。
性能并不会随芯片尺寸或核心数量呈线性增长。更大的芯片会带来工程、架构和经济方面的权衡,这些权衡可能会抵消其理论上的优势。
在人工智能硬件领域,效率、数据移动、软件优化和任务适配往往比单纯的芯片尺寸更能决定性能。最佳的芯片并非是最大的,而是最能平衡适配工作需求的。
32位浮点(FP32)是人工智能计算的黄金标准
在深度学习训练和推理的早期,32位浮点(FP32)是默认格式。随着人工智能技术的发展,人工智能工作负载已不再采用32位浮点,转而使用精度更低的格式,如16位浮点(FP16)、16位整数(INT16)或8位整数(INT8)。
认为32位浮点仍是黄金标准的观点,忽视了使用低精度替代格式在效率、性能和准确性方面的巨大提升。事实上,通过量化感知训练和混合精度训练等技术,低精度格式能够达到甚至超过32位浮点的精度。模型使用16位浮点或8位浮点通常能保持几乎相同的精度。
因此,32位浮点已不再是黄金标准。如今的趋势正从整数格式转向浮点格式,有些人甚至主张使用4位浮点(FP4)。
人工智能计算依赖于精度优化,而非最大的位宽。最佳的性能和效率来自于为特定任务选择合适的精度,而非使用可用的最高精度格式。
稀疏模式处理优先于密集模式处理
与密集计算相比,稀疏计算似乎具有优势。它通过避免处理张量(权重、激活值甚至数据)中的零值元素,来减少计算量、内存占用和功耗,并在不牺牲模型精度的情况下提高效率。
但事实是,稀疏模式在很大程度上取决于模型结构、数据模式和硬件能力。但稀疏性也并非是放之四海而皆准的优化方式,也不能普遍优于密集计算。简单地说,它是一种有条件的优化。
在许多情况下,密集模式仍是默认选择,因为它具备成熟、可预测且兼容性广泛等优点。稀疏性是一种强大的工具,但只有在合适的环境中并获得适当支持时才能发挥作用。
高效的标量计算是人工智能处理所需的全部
标量计算指的是一次对单个数据元素执行一个操作,它在控制逻辑和编排方面发挥着重要作用。然而,对于现代人工智能工作负载的性能和效率需求,标量计算远远无法满足。
虽然标量计算是必要的,但对于人工智能处理来说并不足够。人工智能的需求需要并行、向量化和矩阵加速计算,而这些最好由为大规模、并发工作负载设计的定制硬件来处理。
仅通过先进的芯粒架构就能实现处理效率
基于芯粒的设计具有多项优势。其中包括,由于更小的芯片更容易制造,因此能提高良率并降低成本;通过实现中央处理器、图形处理器和加速器等功能的混合搭配,可实现模块化的可扩展性;还能在整个组件中更高效地分布热量和电力。这些累积的优势常常让人觉得,效率(尤其是每瓦性能)是其自带的优势。
尽管芯粒技术是实现可扩展性和集成的有效工具,但真正的处理效率需要为人工智能工作负载量身打造全新的软硬件架构。这一架构蓝图应该包括创新的内存架构以克服内存墙问题、为人工智能应用的算法需求量身定制的可动态重配置计算核心,以及旨在简化软件栈的整体设计。
若不具备上述这些要素,仅靠芯粒无法实现预期的收益。
CUDA是人工智能处理器的基准软件
尽管英伟达的CUDA已成为人工智能开发的主流标准,但它并非通用基准。如果有人认为CUDA是所有人工智能处理器的基准或必需接口的观点,那就忽视了如今不断涌现的多样化硬件架构和软件生态系统。
CUDA是一家供应商生态系统中的主流工具。更广泛的人工智能行业正朝着开放、灵活且独立于硬件的软件框架发展。CUDA仍然很重要,但其主导地位正日益受到对可移植性、互操作性和硬件选择自由的需求的挑战。人工智能的未来并不局限于一种软件开发工具包(SDK),而是多语言、开源且具有平台感知能力的。
来源:王树一一点号