AI 框架之争:从四阶段演进到三代架构的 AI 框架发展史(AISystem 系列解读)
文档教程人工智能【免费下载链接】AISystemAISystem 主要是指AI系统包括AI芯片、AI编译器、AI推理和训练框架等AI全栈底层技术项目地址https://gitcode.com/GitHub_Trending/ai/AISystem点击查看免费下载本文是 AISystem 仓库《AI 框架基础》系列中AI 框架之争章节的深度解读以《AI 框架作用》中自动微分 计算图的数学表达为起点系统梳理 AI 框架从 2000 年萌芽到当下的发展脉络——时间维度的萌芽、成长、爆发、深化四个阶段以及技术维度的三代架构——并剖析 AI 框架可编程性与性能两大互相制约的设计目标最后展望全场景、易用性、大规模分布式、科学计算四大未来方向。读完本文你将掌握 AI 框架为何而生的完整逻辑以及 TensorFlow、PyTorch、MindSpore、JAX 等主流框架设计路线分野与演进动因。引言AI 框架要系统化解决的问题前文《AI 框架作用》已说明AI 框架最核心的基础功能是自动微分AutoGrad基于计算图与链式法则把开发者定义的神经网络模型自动求导、转换为计算机可识别和执行的程序最终成为一个开发者和应用程序都能很好编写深度学习中神经网络的工具和库。整体流程如下所示除了最核心的数学表示原理以外一个能商用版本的 AI 框架还需要系统性梳理软件栈每一层中遇到的具体问题以提供更好的开发特性前端面向用户如何灵活地表达一个神经网络模型算子执行计算如何保证每个算子的执行性能和泛化性微分更新参数如何自动、高效地提供求导运算后端系统相关如何将同一个算子跑在不同的加速设备GPU/NPU上运行时如何自动地优化和调度网络模型进行计算其中微分与计算图层面的底层实现可进一步深入仓库中的自动微分系列阅读本文聚焦 AI 框架的目的、发展脉络与未来走向。AI 框架的目的为什么需要 AI 框架神经网络是机器学习中一类具体算法分支通过堆叠基本处理单元形成宽度和深度构建出带拓扑结构的、高度复杂的非凸函数对蕴含在各类数据分布中的统计规律进行拟合。传统机器学习方法在面对不同应用时为达到所需学习效果往往需要重新选择函数空间、设计新的学习目标相比之下神经网络通过调节处理单元、堆叠方式与学习算法用较为统一的算法设计视角解决各类应用任务大幅减轻了机器学习算法设计的选择困难。同时深度学习方法在图像分类、语音识别、自然语言处理等任务中的突破性进展揭示了构建更大规模神经网络对大规模数据进行学习是一种有效策略。然而神经网络应用的开发需要对软件栈的各个抽象层进行编程对新算法的开发效率和算力都提出了很高要求由此催生了 AI 框架AI 框架让开发者专注于应用程序的业务逻辑而不需要关注底层的数学和计算细节通常还提供可视化界面方便开发者设计、训练和优化模型框架之上还提供预训练网络模型可直接用于图像识别、语音识别和自然语言处理等常见场景。一句话概括AI 框架是为了在计算加速硬件GPU/NPU和 AI 集群上高效训练神经网络而设计的可编程系统需要同时兼顾两个互相制约的设计目标——可编程性与性能。目标一提供灵活的编程模型和编程接口自动推导计算图根据开发者编写的神经网络模型和对应代码自动构建自动微分功能并转换为计算机可以识别和执行的计算图较好地支持与现有生态融合AI 应用层出不穷需要提供良好的编程环境和编程体系方便开发者接入这里以 PyTorch 框架为例对外提供超过 2000 API提供直观的模型构建方式、简洁的神经网络计算编程语言使用易用的编程接口用高层次语义描述各类主流神经网络模型和训练算法编程范式以声明式编程和命令式编程为主提供丰富的编程方式有效提升开发者开发效率与 AI 框架的易用性。关于声明式 / 命令式以及函数式三种编程范式对 AI 框架架构的影响可进一步阅读仓库中的《框架编程范式》其中给出了 PyTorch 动态图define-by-run与 TensorFlow1.X 静态图define-and-run的完整可运行示例也解释了 JAX、MindSpore 如何走向函数式编程与动静统一。目标二提供高效和可扩展的计算能力自动编译优化算法为可复用的处理单元提供高效实现使 AI 算法在真正训练或推理过程中执行得更快需要对计算图做进一步优化如子表达式消除、内核融合、内存优化等并支持多设备、分布式计算根据不同体系结构和硬件设备自动并行化体系结构差异主要指 GPU、NPU、TPU 等 AI 加速硬件的实现不同有必要进行深度优化面对大模型、大规模分布式的冲击需要对自动分布式化、扩展多计算节点等进行性能提升降低新模型的开发成本在添加新计算加速硬件GPU/NPU支持时降低增加计算原语和进行计算优化的开发成本。AI 框架的发展时间维度AI 框架作为智能经济时代的中枢是 AI 开发环节中的基础工具承担着 AI 技术生态中操作系统的角色是 AI 学术创新与产业商业化的重要载体助力 AI 由理论走入实践快速进入场景化应用时代也是发展 AI 所必需的基础设施之一。结合 AI 的发展历程AI 框架在时间维度上的发展大致分为四个阶段12000 年初期的萌芽阶段、22012~2014 年的成长阶段、32015 年~2019 年的爆发阶段、42020 年以后的深化阶段其发展脉络与 AI、特别是深度学习范式下神经网络技术的异峰突起有非常紧密的联系萌芽阶段2000 年初期早期受限于计算能力不足神经网络技术影响力相对有限因而出现了传统机器学习工具提供基本支持即 AI 框架的雏形。这些工具要么不是专门为神经网络模型开发定制的要么 API 极其复杂对开发者并不友好且没有对异构加速算力GPU/NPU 等进行支持。缺点在于萌芽阶段的 AI 框架并不完善开发者需要编写大量基础工作例如手写反向传播、搭建网络结构、自行设计优化器等。其以 MATLAB 的神经网络库为代表作品成长阶段2012~20142012 年Alex Krizhevsky 等人提出 AlexNet 神经网络架构在 ImageNet 数据集上达到最佳精度并大幅领先第二名提升 15% 以上准确率引爆了神经网络的热潮。自此极大推动了 AI 框架的发展出现了 Caffe、Chainer 和 Theano 等具有代表性的早期 AI 框架帮助开发者方便地建立 CNN、RNN、LSTM 等复杂神经网络模型并且这些框架支持多 GPU 训练让开展更大、更深的模型训练成为可能。在这一阶段AI 框架体系初步形成声明式编程和命令式编程为下一阶段 AI 框架发展的两条截然不同的道路做了铺垫。爆发阶段2015~20192015 年何恺明等人提出 ResNet再次突破图像分类边界在 ImageNet 上的准确率再创新高也凝聚了产业界和学界的共识——深度学习将成为下一个重大技术趋势。2016 年谷歌开源 TensorFlow 框架Meta AI 研究团队发布了基于动态图的 AI 框架 PyTorch拓展自 Torch 框架使用更流行的 Python 重构对外 APICaffe 的发明者加入 Meta 并发布 Caffe2融入了 PyTorch 的推理生态微软研究院开发了 CNTK 框架Amazon 采用了华盛顿大学、CMU 等机构的联合学术项目 MXNet国内百度率先布局 PaddlePaddle 飞桨并于 2016 年发布。在爆发阶段AI 系统迎来繁荣各种框架不断迭代并被开发者自然选择。经过激烈竞争后最终形成 TensorFlow 与 PyTorch 双头垄断的两大阵营2019 年 Chainer 团队将开发工作转移到 PyTorchMicrosoft 停止 CNTK 框架的积极开发、部分团队成员转而支持 PyTorchKeras 被 TensorFlow 收编并在 TensorFlow2.X 版本中成为其高级 API 之一深化阶段2020 年以后随着 AI 进一步发展、应用场景扩展以及与更多领域交叉融合进程加快新趋势不断涌现超大模型的出现GPT-3、ChatGPT 等对 AI 框架提出更高要求如对全场景多任务、异构算力的支持要求框架最大化实现编译优化、更好地利用和调动算力、充分发挥集群硬件资源潜力同时AI 与社会伦理的痛点问题也促使可信赖 AIAI 安全在 AI 框架层面的进步。基于以上背景主流 AI 框架都在探索下一代发展方向2020 年华为推出昇思 MindSpore在全场景协同、可信赖方面有一定突破旷视推出天元 MegEngine在训练推理一体化方面深度布局PyTorch 捐赠给 Linux 基金会并面向图模式提出了新的架构和新版本 PyTorch2.X。在这一阶段AI 框架正向着全场景支持、大模型、分布式 AI、超大规模 AI、安全可信 AI 等技术特性深化探索。仓库中的《昇思 MindSpore 关键特性》对深化阶段的典型框架动静统一、端边云全场景、轻量化推理、联邦学习、图算融合、梯度累积等有专门章节展开。AI 框架的发展技术维度三代架构以技术维度划分AI 框架主要经历三代架构其与深度学习范式下神经网络技术发展、编程语言及其编程体系的发展紧密关联第一代 AI 框架2010 年前第一代 AI 框架在时间上主要是 2010 年前面向需要解决的问题有1机器学习 ML 中缺乏统一的算法库2提供稳定和统一的神经网络 NN 定义。其广义上并不能称为 AI 框架更多是对机器学习算法进行统一封装并在一定程度上提供少量神经网络模型算法和 API 定义。具体形态有 2 种第一种以库Library的方式对外提供脚本式编程方便开发者通过简单配置定义神经网络并针对特殊的 ML/NN 算法提供接口代表性作品是 MATLAB 和 SciPy另外还有针对矩阵计算提供特定计算接口的 NumPy。优点是面向 AI 领域提供了一定程度的可编程性支持 CPU 加速计算。第二种在编程上以 CNN 网络模型为主由常用 layers 组成如 Convolution、Pooling、BatchNorm、Activation 等以 Layer Base 为驱动通过简单配置文件定义神经网络模型由常用 layer 构成简单图AI 框架提供每个 layer 及其梯度计算实现。代表性作品是 Torch、Theano。优点是提供了一定程度的可编程性计算性能有一定提升部分支持 GPU/NPU 加速计算。同时第一代 AI 框架的缺点也比较明显集中在 1灵活性和 2面向新场景支持不足易用性限制难以满足深度学习的快速发展——层出不穷的新型网络结构需要重新实现前向和后向计算大部分使用非高级语言实现修改和定制化成本较高、对开发者不友好新优化器要求对梯度和参数进行更通用复杂的运算。随着生成对抗网络 GAN、深度强化学习 DRL、Stable Diffusion 等新结构出现基于简单前向后向的训练模式难以满足新的训练模式——例如循环神经网络 LSTM 需要引入控制流、对抗神经网络 GAN 需要两个网络交替训练、强化学习模型 RL 需要与外部环境交互第二代 AI 框架基于数据流图DAG的计算框架第二代 AI 框架在技术上统一称为基于数据流图DAG的计算框架将复杂的神经网络模型根据数据流拆解为若干处理环节构建数据流图数据流图中的处理环节相互独立支持混合编排控制流与计算以任务流为最终导向AI 框架将数据流图转换为计算机可以执行或识别的任务流图通过执行引擎Runtime解析任务流进行分发调度、监控与结果回传最终实现神经网络模型的构建与运行。以数据流图描述神经网络的实践最终催生出了工业级 AI 框架如 TensorFlow 和 PyTorch这一时期同时伴随着 Chainer、DyNet 等激发了 AI 框架设计灵感的实验项目。TensorFlow 和 PyTorch 代表了现今 AI 框架的两种不同设计路径系统性能优先改善灵活性与灵活性易用性优先改善系统性能。这两种选择随着神经网络算法研究和应用的更进一步发展逐步造成了 AI 框架在具体技术实现方案上的分裂——这正是仓库《框架编程范式》所剖析的动态图命令式、define-by-run与静态图声明式、define-and-run之争。第三代 AI 框架面向 DSL 的统一设计在第三代 AI 框架中面向通用化场景如 CNN、LSTM、RNN开始走向统一的设计架构不同 AI 框架在一定程度上都会模仿或参考 PyTorch 的动态图 Eager 模式提升自身易用性更好地接入 AI 生态。目前在技术上已开始迈进第三代其主要面向设计特定领域语言Domain-Specific LanguageDSL最大特性是1兼顾编程的灵活性和计算的高效性2提高描述神经网络算法表达能力和编程灵活性3通过编译期优化技术来改善运行时性能。面向不同业务场景存在差异即特定领域如 JAX 是 Autograd 和 XLA 的结合作为一个高性能数值计算库更是结合了可组合的函数转换库除用于 AI 场景计算外更重要的是可用于高性能机器学习研究Taichi 面向图形图像可微分编程作为开源并行计算框架可用于云原生的 3D 内容创作在仓库中《框架编程范式》给出了 JAX 的函数式编程范式讲解《昇思 MindSpore 关键特性》展示了 MindSpore 面向对象 函数式融合编程与动静统一JIT Fallback的落地方式而PyTorch2.0 图模式则从编译器视角展示了 PyTorch 面向图模式的演进。AI 框架的未来全场景端边云全场景跨平台设备部署网络模型需要适配部署到端边云全场景设备对 AI 框架提出了多样化、复杂化、碎片化的挑战。随着云服务器、边缘设备、终端设备等 AI 硬件运算设备不断涌现以及各类 AI 运算库、中间表示工具、编程框架的快速发展AI 软硬件生态呈现多样化发展趋势。但目前主流 AI 框架仍分为训练和推理两部分两者不完全兼容训练出来的模型不能通用学术科研项目间难以合作延伸造成了 AI 框架的碎片化业界也没有统一的中间表示IR层标准导致各硬件厂商解决方案存在差异应用模型迁移不畅、增加部署难度。因此基于 AI 框架训练出来的模型进行标准化互通将是未来的挑战。易用性前端便捷性与后端高效性的统一AI 框架需要提供更全面的 API 体系以及前端语言支持转换能力提升前端开发便捷性需要为开发者提供完备度高、性能优异、易于理解和使用的 API 体系。同时AI 框架需要提供更优质的动静态图转换能力提升后端运行高效性——从开发者使用 AI 框架实现模型训练和推理部署的角度看训练开发阶段希望通过动态图编程范式获得灵活易用的开发体验以提升模型开发效率部署阶段希望通过静态图实现高性能运行并通过动态图转静态图的方式实现方便的部署和性能优化。目前 PyTorch2.0 的图编译模式走在业界前列但不一定成为最终形态在性能和易用性方面的兼顾仍待进一步探索——仓库PyTorch2.0 图模式正是围绕这一主题展开。大规模分布式强化对超大规模 AI 的支持OpenAI 于 2020 年 5 月发布 GPT-3 模型包含 1750 亿参数数据集处理前达到 45T在多项 NLP 任务中超越了人类水平。随之谷歌不断跟进分布式技术超大规模 AI 逐渐成为新的深度学习范式。超大规模 AI 需要大模型、大数据、大算力的三重支持对 AI 框架提出五大挑战内存大模型训练过程中需要存储参数、激活、梯度、优化器状态算力以 2000 亿参数量的大模型为例需要约 3.6EFLOPS 的算力支持必须构建 AI 计算集群满足算力需求通信大模型并行切分到集群后模型切片之间会产生大量通信通信成为主要瓶颈调优E 级 AI 算力集群训练千亿参数规模节点间通信复杂要保证计算正确性、性能和可用性手动调试难以全面兼顾需要更自动化的调试调优手段部署超大规模 AI 面临大模型、小推理的部署难题需要对大模型进行压缩以适应推理侧的部署需求。仓库中的并行系列从数据并行、张量并行、流水线并行、混合并行等角度给出了分布式训练的框架级实现路径可视为上述通信与调优挑战的工程落点。科学计算与科学计算深度融合交叉传统科学计算领域亟需 AI 技术加持融合计算图形可微编程类似 Taichi 这样的语言和框架提供可微物理引擎、可微渲染引擎等新功能。未来是 AI 与科学计算融合的时代业界在探索三个方向AI 神经网络建模利用 AI 神经网络进行建模替代传统的计算模型或数值模型目前已有很大进展如获得戈登贝尔奖的分子动力学模型 DeepMDAI 求解模型仍是传统科学计算模型但使用深度学习算法来求解已有一定探索如 PINNs、PINN-Net 等挑战仍很大特别是在精度收敛方面在 AI 框架上使用 AI 求解科学计算模型最大的挑战主要在前端表达和高性能的高阶微分使用 AI 框架加速方程求解科学计算的模型和方法都不变与深度学习共用同一个框架求解——即把 AI 框架看作面向张量计算的通用分布式计算框架。小结与思考AI 框架作为智能经济时代的基础设施其发展经历了从萌芽到成长、爆发和深化的四个阶段目前正向着全场景支持、大模型、分布式 AI、超大规模 AI、安全可信 AI 等技术特性深化探索AI 框架的核心目标是提供灵活易用的编程模型和高效可扩展的计算能力以支持神经网络的训练和推理同时兼顾可编程性和性能随着 AI 应用场景的扩展和新趋势的出现AI 框架正面临支持全场景跨平台设备部署、强化大规模分布式 AI 支持、与科学计算深度融合交叉等多样化挑战未来 AI 框架将注重前端便捷性与后端高效性的统一着力强化对超大规模 AI 的支持并进一步探索与科学计算的深度融合以适应不断涌现的新需求和场景。延伸阅读仓库内相关章节AI 框架基础课程总览AI 框架作用深度学习原理、函数逼近与自动微分框架编程范式命令式、声明式与函数式昇思 MindSpore 关键特性自动微分系列PyTorch2.0 图模式分布式并行系列赞分享文档教程人工智能【免费下载链接】AISystemAISystem 主要是指AI系统包括AI芯片、AI编译器、AI推理和训练框架等AI全栈底层技术项目地址https://gitcode.com/GitHub_Trending/ai/AISystem点击查看免费下载相关推荐AISystem 之 GPU 架构演进史从 Fermi 到 Blackwell 的十五年代际更迭AISystem 之 GPU 架构演进史从 Fermi 到 Blackwell 的十五年代际更迭 导读 本文是 AISystem 开源课程《图形处理器 GPU文档教程人工智能RxPermissions框架演进史从RxJava1到RxJava2的迁移之路RxPermissions框架演进史从RxJava1到RxJava2的迁移之路 一、Android权限管理的技术痛点与RxPermissions的崛起 你是否移动开发认证鉴权Karrio MCP服务器如何让AI代理自动处理物流订单的完整指南Karrio MCP服务器如何让AI代理自动处理物流订单的完整指南 在当今快速发展的电商环境中物流自动化已成为提升效率的关键。Karrio MCP服务器作为上一篇终极PDF转Markdown解决方案Marker如何实现高精度文档解析的革命性突破下一篇【亲测免费】 SPD-Conv: 一种新型CNN架构的开源项目创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考