入门指南)
文档教程人工智能【免费下载链接】AISystemAISystem 主要是指AI系统包括AI芯片、AI编译器、AI推理和训练框架等AI全栈底层技术项目地址https://gitcode.com/GitHub_Trending/ai/AISystem点击查看免费下载本篇导读计算图Computation Graph也称数据流图 Data Flow Graph是 AI 框架中最核心的数据结构贯穿模型构建、自动微分、图优化、调度执行与部署的整个生命周期。本文将系统讲解计算图为何成为 AI 框架的统一抽象、其基本构成张量与算子、神经网络训练的五阶段流程并梳理它与自动微分、控制流、图调度执行之间的深层关系。读完本文你将建立起对主流 AI 框架PyTorch、TensorFlow、MindSpore 等前端核心技术的整体认知框架。为什么 AI 框架需要计算图在 AI 框架发展的最近一个阶段技术上主要以计算图来描述神经网络。此前的实践最终催生出了工业级 AI 框架 TensorFlow 和 PyTorch这一时期同时伴随着 Chainer、DyNet、CNTK、PaddlePaddle、JAX 等激发了框架设计灵感的诸多实验项目。TensorFlow 和 PyTorch特别是 PyTorch代表了今天 AI 框架两种不同的设计路径系统性能优先改善灵活性以 TensorFlow 为代表优先考虑硬件亲和度与整体执行性能灵活性易用性优先改善系统性能以 PyTorch 为代表优先保证开发者的编程体验与调试便利。这两种选择随着神经网络算法研究和应用的更进一步发展使得 AI 框架在技术实现方案上产生了巨大差异。随着神经网络模型越来越复杂包括混合专家模型MOE、生成对抗网络GAN、注意力模型Attention Transformer等复杂的模型结构需要 AI 框架能够对模型算子的执行依赖关系、梯度计算以及训练参数进行快速高效的分析以便优化模型结构制定调度执行策略实现自动化梯度计算提高 AI 框架训练的效率。综上所述目前主流的 AI 框架都选择使用计算图来抽象神经网络计算表达通过通用的数据结构张量来理解、表达和执行神经网络模型通过计算图可以把 AI 系统化的问题形象地表示出来。AI 系统化问题的挑战为了高效地训练一个复杂神经网络AI 框架需要解决许多问题例如如何对复杂的神经网络模型实现自动微分如何利用编译期的分析 Pass 对神经网络的具体执行计算进行化简、合并、变换如何规划基本计算 Kernel 在计算加速硬件GPU/TPU/NPU上高效执行如何将基本处理单元派发Dispatch到特定的高效后端实现如何对通过自动微分反向传播实现衍生的大量中间变量进行内存预分配和管理为了用统一的方式解决上述挑战框架设计者需要为各类神经网络计算提供统一描述从而在运行神经网络计算之前能够对整个计算过程尽可能进行推断在编译期自动为用户程序补全反向计算、规划执行最大程度地降低运行时开销、复用和节省内存。这也正是计算图作为 AI 框架前端核心技术的重要原因。计算图的定义数据流图与计算图我们经常遇到有些 AI 框架把统一的图描述称为数据流图有些称为计算图这里可以统称为计算图数据流图Data Flow DiagramDFD从数据传递和加工角度以图形方式表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程。在 AI 框架中数据流图表示对数据进行处理的单元接收一定的数据输入对其进行处理再进行系统输出。计算图Computation Graph被定义为有向图其中节点对应于数学运算是表达和评估数学表达式的一种方式。在 AI 框架中计算图就是一个表示运算的有向无环图Directed Acyclic GraphDAG。两者都将神经网络模型统一表示为图的形式图由节点和边组成都在描述数据在图中的节点间传播路径数据在图中的传播过程就是对数据进行加工计算的过程。例如公式$$ f(x_1,x_2)ln(x_1)x_1x_2-sin(x_2) $$就可以被转换为对应的计算图详见计算图原理章节。计算图的基本构成张量与算子在 AI 框架中计算图的基本组成有两个主要元素基本数据结构——张量Tensor张量通过shape表示具体形状决定内存中元素的组成结构与大小其元素数据类型决定每个元素占用的字节数和实际内存空间大小。基本计算单元——算子Operator在加速器 GPU/NPU 中执行运算的是由最基本的代数算子组成还会根据深度学习结构组成复杂算子。每个算子接受的输入输出不同如 Conv 算子接受 3 个输入 Tensor、1 个输出 Tensor。计算图描述的是运算的有向无环图节点代表具体的计算操作算子边代表张量数据流。例如一个简单的卷积 激活的神经网络模型其前向计算公式为$$ f(x) ReLU(Conv(w, x, b)) $$AI 框架中的计算图就会以 Conv 和 ReLU 为节点、以张量为边来表达这一计算逻辑并在训练过程中由自动微分功能自动构建对应的反向计算图。神经网络训练流程五个阶段神经网络的训练流程主要包括以下五个过程前向计算张量数据输入神经网络模型模型按顺序从输入层到输出层计算并存储每层的结果输出具体预测值计算损失根据损失函数真实样本与模型预测的比较函数对每个维度的参数求偏导数自动求导自动微分Automatic DifferentiationAD将复合函数分解为计算图并以此计算任意两个节点间的梯度反向传播从损失函数根节点开始沿计算路径向前追溯逐节点计算误差项将梯度传递给每一层参数更新模型参数根据优化器Optimizer的学习策略如 $w w - \eta \cdot grad$小幅更新网络模型中的各个权重参数。在基于计算图的 AI 框架中这五个阶段统一表示为由基本算子构成的计算图算子是数据流图中的节点由后端进行高效实现。其中反向传播算法实际上就是自动微分只要神经网络各个组件以及损失函数都是可微的损失函数就是关于各输入变量的可微复合函数。自动微分把复合函数分解为输出变量根节点和一系列输入变量叶子节点及基本函数中间节点构成计算图并依据加法法则任意两节点间梯度为所有路径偏微分之和与链式法则一条路径的偏微分为各相邻节点间偏微分的连乘计算梯度。AI 框架在实现自动微分时对每个中间层存储的是向量-雅可比乘积VJP而非完整的雅可比矩阵从而在减少存储的同时不影响导数计算。详细原理可参考计算图与自动微分。计算图、控制流与调度执行有了对计算图的基本了解之后还需要深入理解计算图在真正执行计算时的两个关键问题。控制流问题在程序实现过程中会遇到很多编程性问题例如控制流if、else、while、for 等跟程序相关而非跟计算和数学表示相关。计算图在数学上是 DAG但编程语言中的分支与循环会引入环从而无法进行有效的拓扑排序。目前基于计算图控制流的解决方案主要有三类设计思路复用宿主语言以 PyTorch 为典型代表用前端 Python 语言中的控制逻辑驱动后端计算图的执行支持控制流原语以 TensorFlow 为典型代表后端原生支持 Switch、Merge、Enter、Exit、NextIteration 等控制流原语源码解析以 MindSpore 为典型代表前端解析源码成计算图后端将控制流解析成子图延伸计算图。详细内容可参考计算图的控制流实现。调度与执行方式AI 框架根据计算图描述的数据依赖关系确定算子的执行顺序由运行时系统调度计算图中的节点到设备上执行。计算图的执行方式分为两种模式逐算子下发执行的交互式方式如 PyTorch 框架整个计算图或部分子图一次性下发到硬件执行如 TensorFlow 和 MindSpore。无论采用哪种模式根据硬件能力的差异异构计算图的执行又可分为三种模式单算子执行针对 CPU/GPU逐个调度执行、整图下沉执行针对 DSA 架构 AI 芯片如谷歌 TPU、华为昇腾 NPU一次性下发整图减少 host-device 交互、图切分到多设备执行面向大模型通过计算图切分与跨设备集合通信实现多设备并行。同时静态图在编译期可以充分利用计算图的全局信息进行算子融合、代数化简、内存复用等优化。详细内容可参考计算图的调度与执行。动态计算图与静态计算图根据反向计算图的构建时机自动求导机制可分为基于对偶图、基于表达式追踪Evaluation Trace和基于图层 IR 三种方式动态计算图每一次执行神经网络模型依据前端语言描述动态生成一份临时的计算图正向传播立即执行反向传播后计算图立即销毁PyTorch 的默认机制易用性高、调试方便但需要保存大量中间结果内存占用较高静态计算图根据 Python 等前端高级语言描述的神经网络拓扑结构和参数变量等图层信息构建一个固定的计算图执行前完成构图和编译优化性能更高、便于全局优化与内存复用TensorFlow 和 MindSpore 默认使用但调试困难、控制流编写复杂。动态图与静态图的转换又分为**基于追踪Tracing和基于源代码解析Parsing**两种方式主流的 AI 框架正朝着动静统一的方向演进。详细内容可参考动态图与静态图转换。使用计算图带来的好处使用了计算图能够方便 AI 框架以统一表示来描述神经网络训练的全过程。静态计算图可以在编译期对计算过程的数据依赖进行分析带来以下好处简化数据流动过程通过有向无环图的方式避免无序的数据依赖动态和静态内存优化神经网络模型执行中会产生固定和非固定的内存需求基于计算图信息可提前对内存进行优化优化算子间的调度策略方便进行算子的并行与调度执行优化改善运行时 Runtime 性能通过计算图可以进行计算和通信的时间重叠优化。通过静态计算图AI 框架可以切分出三个解耦的优化层计算图优化、运行时调度优化、算子/内核执行优化。针对新提出的神经网络模型结构和训练算法扩展步骤也分为三阶段在计算图层添加新算子定义针对不同硬件内核实现计算优化注册算子和内核函数运行时派发硬件执行。计算图的挑战与未来面向未来计算图还面临着若干演进方向相关讨论详见计算图挑战与未来图表示面对图神经网络GNN等大量稀疏结构如何通过计算图更高效地计算稀疏图结构大数据融合AI 框架的计算图如何与大数据处理批处理、流处理、图数据处理等架构进行融合与表示部署推理既然最终形态是面向推理部署AI 框架能否按照计算图设计后的逻辑明确分层解耦泛化计算图解决部署流程复杂问题科学计算面向多尺度科学计算问题计算图能否足够表示科学计算的特殊数学范式。学习路径建议本篇为计算图系列的总览章节建议按以下顺序深入阅读同一目录下的系列文档它们共同构成 AI 框架前端核心技术的完整知识链计算图原理计算图定义、张量与算子基本构成、PyTorch 动态计算图与 Function 自定义计算图与自动微分前向计算、反向微分、雅可比矩阵与向量-雅可比乘积计算图的调度与执行算子调度FIFO、并发、异构、三种图执行模式与 PyTorch 算子两次调度计算图的控制流实现复用宿主语言、控制流原语与源码解析三种方案动态图与静态图转换动静分离、动静结合到动静统一的发展与 Tracing/Parsing 实现计算图挑战与未来图表示、大数据融合、部署推理与科学计算。此外本系列隶属于 AI 框架核心概述 课程与自动微分基础、计算图调度等章节相互呼应。理解计算图这一贯穿 AI 框架整个生命周期的核心数据结构是深入掌握 AI 编译器、推理引擎与分布式训练框架的必经之路。赞分享文档教程人工智能【免费下载链接】AISystemAISystem 主要是指AI系统包括AI芯片、AI编译器、AI推理和训练框架等AI全栈底层技术项目地址https://gitcode.com/GitHub_Trending/ai/AISystem点击查看免费下载相关推荐终极图形学算法入门指南掌握数据结构和算法的50个核心实现终极图形学算法入门指南掌握数据结构和算法的50个核心实现 GitHub 加速计划的 alg/algo 项目是数据结构和算法必知必会的50个代码实现的集合涵盖示例工程OpenCV新手入门指南掌握核心数据结构与图像处理算法OpenCV新手入门指南掌握核心数据结构与图像处理算法 OpenCVOpen Source Computer Vision Library是计算机视觉领域示例工程计算机视觉人工智能NetworkX 入门指南图数据结构、四大基础图类与核心 API 全解析NetworkX 入门指南图数据结构、四大基础图类与核心 API 全解析 导读 本篇指南以 NetworkX 官方参考文档 doc/reference/int图计算数据分析科学计算上一篇Pyroscope UI 重写指南React 19 Vite 8 TypeScript 的单页查询界面架构与实践下一篇通过 Rube MCP 在 Codex 中自动化 Zeplin 工作流awesome-codex-skills 的 zeplin-automation 技能深度解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考