转载:【AI系统】AI轻量化与并行策略

简介: 本文探讨了AI计算模式对AI芯片设计的重要性,重点分析了轻量化网络模型和大模型分布式并行两大主题。轻量化网络模型通过减少模型参数量和计算量,实现在资源受限设备上的高效部署;大模型分布式并行则通过数据并行和模型并行技术,解决大模型训练中的算力和内存瓶颈,推动AI技术的进一步发展。

了解 AI 计算模式对 AI 芯片设计和优化方向至关重要。本文将会接着从轻量化网络模型和大模型分布式并行两个主题来深入了解 AI 算法的发展现状,引发关于 AI 计算模式的思考。

轻量化网络模型

随着神经网络应用的普及,越来越多的模型需要在特定的硬件平台部署,如移动端和嵌入式设备,这些平台普遍存在内存资源少,处理器性能不高,功耗受限等特点,所以慢慢演变出了一种轻量化的网络模型设计方向,即在保持模型精度基础上进一步减少模型参数量和计算量的网络模型结构。

模型轻量化方法

网络模型的轻量级衡量指标有两个,一个是网络参数量、另一个是浮点运算数(Floating-point Operations, FLOPs),也就是计算量。对于卷积神经网络中卷积层的参数量和计算量定义如下。

Params 网络参数量

对于输入为 $w\times h\times Ci$ 的输入图像,卷积核大小为 $k\times k$,得到输出的特征图大小为 $W\times H\times Co$ 的卷积操作,其参数量为:$Params = (k\times k\times Ci +1)\times Co$。

FLOPs 浮点运算数

对于输入为 $w\times h\times Ci$ 的输入图像,卷积核大小为 $k\times k$,得到输出的特征图大小为 $W\times H\times Co$ 的卷积操作,其浮点运算数为:$FLOPs = W\times H\times (k\times k\times Ci +1)\times Co$。

一般来说,网络模型参数量和浮点运算数越小,模型的速度越快,但是衡量模型的快慢不仅仅是参数量和计算量的多少,还有内存访问的次数多少相关,也就是和网络结构本身相关。现在我们将从 AI 计算模式的角度进一步分析这些轻量化设计的特点。

  1. 减少内存空间的设计

为了减小模型的参数量,在 VGG 和 inceptionNet 系列网络中,提出了将两个 $3\times 3$ 卷积核一个 $5\times 5$ 卷积核,和将一个 $5\times 1$ 卷积核和一个 $1\times 5$ 卷积核代替一个 $5\times 5$ 的卷积核的模型卷积层设计,如下图所示。

比如使用 2 个 $3\times 3$ 卷积核来代替 $5\times 5$ 卷积核,这样做的主要目的是在保证具有相同感知野的条件下,提升了网络的深度,在一定程度上提升了神经网络的效果,并且模型参数可以由 $5\times5\times Ci\times Co$ 变成了 $3\times 3\times Ci\times Co+3\times 3\times Ci\times Co$,假设 $Ci = Co$, 该层参数可以减小为原来的 $18/25$。

  1. 减少通道数的设计

MobileNet 系列的网络设计中,提出了深度可分离卷积的设计策略,其中通过 Depthwise 逐层卷积加 $1\times 1$ 的卷积核来实现一个正常的卷积操作(如下图所示),$1\times 1$ 的 Pointwise 卷积负责完成卷积核通道的缩减来减小模型参数量。

比如一个 $3\times 3$ 卷积核大小的卷积层,输入通道是 16,输出通道是 32,正常的卷积模型参数是 $3\times 3\times 16\times 32=4608$,而将其模型替代设计为一个 $3\times 3$ 卷积核的 Depthwise 卷积,和 $1\times 1$ 卷积核的 Pointwise 卷积,模型参数为 $3\times 3\times 16+1\times 1\times 16\times 32=656$,可以看出模型参数量得到了很大的减少。

  1. 减少卷积核个数的设计

在 DenseNet 和 GhostNet 的模型设计中,提出了一种通过 Reuse Feature Map 的设计方式来减少模型参数和运算量。

如下图,对于 DenseNetV1 的结构设计来说,第 n 层的参数量由于复用了之前层的 Feature Map, 由 $k\times k\times C1\times (C1+C2)$ 变为了 $k\times k\times C1\times C2$,即为原来的 $C2/(C1+C2)$,而 C2 远小于 C1,其中 k 表示卷积核尺寸, C1 表示前 n-1 层的 Feature Map 个数,C2 表示第 n 层的输出 Feature Map 个数。

AI 计算模式思考

通过上面模型网络轻量化的分类,可以看到 AI 模型网络中对卷积层的不同设计方法,这些都是芯片设计时候需要考虑支持的 AI 计算模式特性。

卷积核尺寸:

  1. 小卷积核替代:用多个小卷积核代替单个大卷积核,以降低计算成本。
  2. 多尺寸卷积核:采用不同尺寸的卷积核来捕捉多尺度特征。
  3. 可变形卷积核:从固定形状转向可变形卷积核,以适应不同输入特征。
  4. 1×1 卷积核:使用 1×1 卷积核构建 bottleneck 结构,有效减少参数和计算量。

卷积层运算:

  1. Depthwise 卷积:用 Depthwise 卷积代替标准卷积,减少参数,保持特征表达。
  2. Group 卷积:应用分组卷积,提高计算效率,降低模型复杂度。
  3. Channel Shuffle:通过通道混洗(Channel Shuffle)增强特征融合,提升模型性能。
  4. 通道加权:实施通道加权计算,动态调整通道贡献,优化特征表示。

卷积层连接:

  1. Skip Connection:采用跳跃连接(Skip Connection),使网络能够更深,同时避免梯度消失问题。
  2. Dense Connection:利用密集连接(Densely Connection),整合不同层的特征,增强特征融合和信息流。

大模型分布式并行

大模型算法作为一个火热的 AI 的研究领域,本身具有超高的模型参数量和计算量的特点。如何在 AI 芯片上高效的支持大模型算法是芯片设计公式必须要考虑的问题。在单芯片或者加速卡上无法提供所需的算力和内存需求的情况下,考虑大模型分布式并行技术是一个重要的研究方向。

分布式并行分为数据并行、模型并行,模型并行又分为张量并行和流水线并行。下面先介绍并行计算时候经常用到的集合通信原语,然后分别对数据并行和模型并行做一个简单的回顾。

集合通信原语

在并行计算中,通信原语是指用于在不同计算节点或设备之间进行数据传输和同步的基本操作。这些通信原语在并行计算中起着重要作用,能够实现节点间的数据传输和同步,从而实现复杂的并行算法和应用。一些常见的通信原语包括:

  • All-reduce:所有节点上的数据都会被收集起来,然后进行某种操作(通常是求和或求平均),然后将结果广播回每个节点。这个操作在并行计算中常用于全局梯度更新。

  • All-gather:每个节点上的数据都被广播到其他所有节点上。每个节点最终都会收到来自所有其他节点的数据集合。这个操作在并行计算中用于收集各个节点的局部数据,以进行全局聚合或分析。

  • Broadcast:一台节点上的数据被广播到其他所有节点上。通常用于将模型参数或其他全局数据分发到所有节点。

  • Reduce:将所有节点上的数据进行某种操作(如求和、求平均、取最大值等)后,将结果发送回指定节点。这个操作常用于在并行计算中进行局部聚合。

  • Scatter:从一个节点的数据集合中将数据分发到其他节点上。通常用于将一个较大的数据集合分割成多个部分,然后分发到不同节点上进行并行处理。

  • Gather:将各个节点上的数据收集到一个节点上。通常用于将多个节点上的局部数据收集到一个节点上进行汇总或分析。

数据并行技术

根据模型在设备之间的通信程度,数据并行技术可以分为 DP, DDP, FSDP 三种。

  1. Data parallelism, DP 数据并行

数据并行是最简单的一种分布式并行技术,具体实施是将大规模数据集分割成多个小批量,每个批量被发送到不同的计算设备(如 NPU)上并行处理。每个计算设备拥有完整的模型副本,并单独计算梯度,然后通过 all_reduce 通信机制在计算设备上更新模型参数,以保持模型的一致性。

  1. Distribution Data Parallel, DDP 分布式数据并行

DDP 是一种分布式训练方法,它允许模型在多个计算节点上进行并行训练,每个节点都有自己的本地模型副本和本地数据。DDP 通常用于大规模的数据并行任务,其中模型参数在所有节点之间同步,但每个节点独立处理不同的数据批次。

在 DDP 中,每个节点上的模型副本执行前向和后向传播计算,并计算梯度。然后,这些梯度在不同的节点之间进行通信和平均,以便所有节点都可以使用全局梯度来更新其本地模型参数。这种方法的优点是可以扩展到大量的节点,并且可以显著减少每个节点的内存需求,因为每个节点只需要存储整个模型的一个副本。

DDP 通常与 AI 框架(如 PyTorch)一起使用,这些框架提供了对 DDP 的内置支持。例如,在 PyTorch 中,torch.nn.parallel.DistributedDataParallel 模块提供了 DDP 实现,它可以自动处理模型和梯度的同步,以及分布式训练的通信。

  1. Fully Sharded Data Parallel, FSDP 全分片数据并行

Fully Sharded Data Parallelism (FSDP) 技术是 DP 和 DDP 技术的结合版本,可以实现更高效的模型训练和更好的横向扩展性。这种技术的核心思想是将神经网络的权重参数以及梯度信息进行分片(shard),并将这些分片分配到不同的设备或者计算节点上进行并行处理。FSDP 分享所有的模型参数,梯度,和优化状态。所以在计算的相应节点需要进行参数、梯度和优化状态数据的同步通信操作。

如上图是 FSDP 并行技术的示意图,可以看到不同的计算节点多了一些虚线链接的通信操作。

模型并行技术

模型的并行技术可以总结为张量并行和流水并行。

  1. 张量并行

将模型的张量操作分解成多个子张量操作,并且在不同的设备上并行执行这些操作。这样做的好处是可以将大模型的计算负载分布到多个设备上,从而提高模型的计算效率和训练速度。在张量并行中,需要考虑如何划分模型的不同层,并且设计合适的通信机制来在不同设备之间交换数据和同步参数。通常会使用诸如 All-reduce 等通信原语来实现梯度的聚合和参数的同步。

如下图是一个矩阵乘算子的张量并行示意。X 作为激活输入,A 作为算子权重,将 A 按列切分。每个计算节点保留一份完整的 A 和部分 A,最后通过 All Gather 通信将两个计算节点的数据进行同步拼接为一份完整的 Y 输出,供下一层使用。

  1. 流水并行

将模型的不同层划分成多个阶段,并且每个阶段在不同的设备上并行执行。每个设备负责计算模型的一部分,并将计算结果传递给下一个设备,形成一个计算流水线。在流水并行中,需要设计合适的数据流和通信机制来在不同设备之间传递数据和同步计算结果。通常会使用缓冲区和流水线控制器来管理数据流,并确保计算的正确性和一致性。

如下图是一个流水线并行示意过程。假设一个模型有 Forward,Backward 两个阶段,有 0-3 共 4 层网络设计,分布在 4 个计算设备处理,右图展示了在时间维度下,不同层不同阶段的执行顺序示意。为了减少每个设备等待的时间(即中间空白的区域,称为 Bubble),一个简单的优化设计就是增加 data parallelism,让每层数据切分为若干个 batch,来提高流水线并行设备利用率。

AI 计算模式思考

根据上面对大模型并行技术的了解,不同的并行策略其实展示了 AI 计算模式是如何体现在硬件设计技术上。在芯片架构设计中可以从如下几个方面进行考虑。

  1. 模型并行与数据并行支持:AI 芯片需要能够同时支持模型并行和数据并行两种并行策略。对于模型并行,芯片需要具备灵活的计算资源分配和通信机制,以支持模型的不同部分在多个设备上进行计算。对于数据并行,芯片需要提供高带宽、低延迟的通信和同步机制,以支持多个设备之间的数据交换和同步。

  2. 异构计算资源管理:AI 芯片通常会包含多种计算资源,如 CPU、GPU、TPU 等。对于分布式并行计算,芯片需要提供统一的异构计算资源管理机制,以实现不同计算资源之间的协同工作和资源调度。

  3. 高效的通信与同步机制:分布式并行计算通常会涉及到大量的数据交换和同步操作。因此,AI 芯片需要提供高效的通信和同步机制,以降低通信延迟和提高通信带宽,从而实现高效的分布式计算。

  4. 端到端的优化:AI 芯片需要支持端到端的优化,包括模型设计、算法优化、系统设计等方面。通过综合考虑各个环节的优化策略,可以实现高效的大模型分布式并行计算。比如 Transformer 是很多大模型结构的基础组件,可以提供专用高速 Transformer 引擎设计。

如果您想了解更多AI知识,与AI专业人士交流,请立即访问昇腾社区官方网站https://www.hiascend.com/或者深入研读《AI系统:原理与架构》一书,这里汇聚了海量的AI学习资源和实践课程,为您的AI技术成长提供强劲动力。不仅如此,您还有机会投身于全国昇腾AI创新大赛和昇腾AI开发者创享日等盛事,发现AI世界的无限奥秘~
转载自:https://developer.aliyun.com/article/1641821

相关文章
|
8天前
|
存储 人工智能 vr&ar
转载:【AI系统】CPU 基础
CPU,即中央处理器,是计算机的核心部件,负责执行指令和控制所有组件。本文从CPU的发展史入手,介绍了从ENIAC到现代CPU的演变,重点讲述了冯·诺依曼架构的形成及其对CPU设计的影响。文章还详细解析了CPU的基本构成,包括算术逻辑单元(ALU)、存储单元(MU)和控制单元(CU),以及它们如何协同工作完成指令的取指、解码、执行和写回过程。此外,文章探讨了CPU的局限性及并行处理架构的引入。
转载:【AI系统】CPU 基础
|
8天前
|
人工智能 缓存 并行计算
转载:【AI系统】CPU 计算本质
本文深入探讨了CPU计算性能,分析了算力敏感度及技术趋势对CPU性能的影响。文章通过具体数据和实例,讲解了CPU算力的计算方法、算力与数据加载之间的平衡,以及如何通过算力敏感度分析优化计算系统性能。同时,文章还考察了服务器、GPU和超级计算机等平台的性能发展,揭示了这些变化如何塑造我们对CPU性能的理解和期待。
转载:【AI系统】CPU 计算本质
|
8天前
|
机器学习/深度学习 存储 人工智能
转载:【AI系统】计算之比特位宽
本文详细介绍了深度学习中模型量化操作及其重要性,重点探讨了比特位宽的概念,包括整数和浮点数的表示方法。文章还分析了不同数据类型(如FP32、FP16、BF16、FP8等)在AI模型中的应用,特别是FP8数据类型在提升计算性能和降低内存占用方面的优势。最后,文章讨论了降低比特位宽对AI芯片性能的影响,强调了在不同应用场景中选择合适数据类型的重要性。
转载:【AI系统】计算之比特位宽
|
1天前
|
机器学习/深度学习 传感器 人工智能
AI视频监控系统在养老院中的技术实现
AI视频监控系统在养老院的应用,结合了计算机视觉、深度学习和传感器融合技术,实现了对老人体征、摔倒和异常行为的实时监控与分析。系统通过高清摄像头和算法模型,能够准确识别老人的动作和健康状况,并及时向护理人员发出警报,提高护理质量和安全性。
26 14
|
2天前
|
机器学习/深度学习 人工智能 负载均衡
利用AI智能分析代理IP流量:提升网站性能的新策略
在数字时代,网站性能至关重要。代理IP技术广泛应用于突破地域限制、保护隐私和优化访问速度,但也带来了服务器负担加重和安全风险。AI智能分析代理IP流量成为有效策略,通过精准识别、动态调整和预测分析,提升网站性能和安全性。案例显示,某电商平台通过AI智能分析成功提升了访问速度和安全性,用户满意度显著提高。未来,AI技术将进一步优化代理IP应用,助力网站发展。
18 5
|
4天前
|
人工智能 安全 算法
CAMEL AI 上海黑客松重磅来袭!快来尝试搭建你的第一个多智能体系统吧!
掌握多智能体系统,🐫 CAMEL-AI Workshop & 黑客马拉松即将启航!
|
1天前
|
机器学习/深度学习 人工智能 算法
【AI系统】AI 框架之争
本文介绍了AI框架在数学上对自动微分的表达和处理,以及其在多线程算子加速、GPU/NPU支持、代码编译优化等方面的技术挑战。文章详细梳理了AI框架的发展历程,从萌芽阶段到深化阶段,探讨了不同阶段的关键技术和代表性框架。同时,文章展望了AI框架的未来趋势,包括全场景支持、易用性提升、大规模分布式支持和科学计算融合。
18 0
|
1天前
|
缓存 人工智能 负载均衡
AI革新迭代:如何利用代理IP提升智能系统性能
在人工智能快速发展的背景下,智能系统的性能优化至关重要。本文详细介绍了如何利用代理IP提升智能系统性能,涵盖数据加速与缓存、负载均衡、突破地域限制、数据传输优化和网络安全防护等方面。结合具体案例和代码,展示了代理IP在实际应用中的价值和优势。
10 0
|
4天前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术深度解析:从基础到应用的全面介绍
人工智能(AI)技术的迅猛发展,正在深刻改变着我们的生活和工作方式。从自然语言处理(NLP)到机器学习,从神经网络到大型语言模型(LLM),AI技术的每一次进步都带来了前所未有的机遇和挑战。本文将从背景、历史、业务场景、Python代码示例、流程图以及如何上手等多个方面,对AI技术中的关键组件进行深度解析,为读者呈现一个全面而深入的AI技术世界。
48 10
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
转载:【AI系统】AI的领域、场景与行业应用
本文概述了AI的历史、现状及发展趋势,探讨了AI在计算机视觉、自然语言处理、语音识别等领域的应用,以及在金融、医疗、教育、互联网等行业中的实践案例。随着技术进步,AI模型正从单一走向多样化,从小规模到大规模分布式训练,企业级AI系统设计面临更多挑战,同时也带来了新的研究与工程实践机遇。文中强调了AI基础设施的重要性,并鼓励读者深入了解AI系统的设计原则与研究方法,共同推动AI技术的发展。
转载:【AI系统】AI的领域、场景与行业应用