成立网站建设领导小组的通知wordpress 前台标签

当前位置: 首页 > news >正文

成立网站建设领导小组的通知,wordpress 前台标签,室内设计网站推荐知乎,秦皇岛正在建设的医院近年来#xff0c;随着Transformer、MOE架构的提出#xff0c;使得深度学习模型轻松突破上万亿规模参数#xff0c;传统的单机单卡模式已经无法满足超大模型进行训练的要求。因此#xff0c;我们需要基于单机多卡、甚至是多机多卡进行分布式大模型的训练。 而利用AI集群随着Transformer、MOE架构的提出使得深度学习模型轻松突破上万亿规模参数传统的单机单卡模式已经无法满足超大模型进行训练的要求。因此我们需要基于单机多卡、甚至是多机多卡进行分布式大模型的训练。 而利用AI集群使深度学习算法更好地从大量数据中高效地训练出性能优良的大模型是分布式机器学习的首要目标。为了实现该目标一般需要根据硬件资源与数据/模型规模的匹配情况考虑对计算任务、训练数据和模型进行划分从而进行分布式存储和分布式训练。因此分布式训练相关技术值得我们进行深入分析其背后的机理。 之前的文章已经对多种并行技术进行了讲解如数据并行、张量并行、流水线并行以及多种并行方式组合使用的多维混合并行。然而大模型的分布式训练是一个非常复杂的问题目前的绝大多数的分布式训练系统都依赖用户人工反复尝试以及系统专家经验来进行部署造成严重的资源利用效率低下的问题。因此自动并行方案应运而生。 简述 自动并行的目标就是用户给定一个模型和所使用的机器资源后能够自动地帮用户选择一个比较好或者最优的并行策略来高效执行。可以说自动并行是分布式并行的终极目标它能够解放工程师去手动设置分布式并行策略。 而自动并行可以分为全自动并行和半自动并行模式。 半自动模式下用户可以根据自己需要指定某些tensor和operator的切分方式。如Mesh-TensorFlow、GShard、GSPMD 等提到的自动并行切分方案。全自动模式下所有 tensor 和 operator 都由框架自适应选择最优切分策略。如OptCNN、Flexflow、Unity、Alpa 等提到的全自动并行切分方案。 目前很多的通用AI框架如PaddlePaddle、OneFlow、PyTorch、MindSpore、TensorFlow、JAX等都对自动并行(全自动或半自动)进行了实现。 下面将分享一些典型的分布式训练自动并行方案。 Mesh-TensorFlow 背景 在深度学习中由于数据量和计算量的庞大往往会使用到分布式计算。而最常用的分布式模式是SPMD(Single-Program-Multiple-Data)即数据并行这种模式相当于在数据的batch维去做拆分然后进行并行。Mesh-Tensorflow对这种模式做了泛化即除了batch维外的其他维度也可做并行。 SPMD 的 batch 切分 首先回顾下之前的数据并行每个设备上都有全部模型参数的备份在每一次迭代中数据首先被切分分发到各个设备上然后各个设备分别进行计算得到的梯度再通过AllReduce进行聚合然后再更新参数。 Mesh-tensorflow 的切分 分布式依赖的是数据分发和聚合这点上面讲解的batch切分也是但 Mesh-tensorflow 做了更泛化的抽象。 让Tensor的每一个维度都有名字。比如如果每个样本都是一个向量那么每次训练的输入x的维度就是[batch, d_io]。类似的把处理器集群也表示成一个矩阵比如一个二维的结构表示成[rows, cols]。定义一个computation layout这个layout是从tensor维度到集群维度的一个二分图映射。例如上面的batch切分可以表达为[(batch, all_processors)]。 Mesh-tensorflow 实现 每个操作都通过并行计算和 collective communication 来完成这里我们介绍几个 Mesh-Tensorflow 中比较重要的操作。 Component-wise Operations: 所谓的component-wise就是指输入和输出的维度相同。这一类的操作可以直接分布式的进行。Reduction(reduce_sum, reduce_max, etc): Reduction操作是指会消减维度的操作这一类操作可以先在每个切片上操作然后用MPI-allreduce来聚合。Einstin Summation(max multiplication, etc): Einstin操作是一组矩阵计算的统称在 TensorFlow 中被实现成了一个可以配置的API配置的方式就是用维度的名字来表达计算这点其实和 Mesh-Tensorflow 异曲同工所以可以很方便的实现。同样的实现的方式就是先本地计算然后再 MPI-AllReduce 。Reshape: Reshape虽然简单但是在分布式环境下却需要网络通信才能完成不同的reshape需要的操作不同涉及到的MPI通信包括MPI-allgatherMPI-alltoall等。 小结 Mesh-Tensorflow 定义了一套DSL语法用于描述模型的维度和布局你用它重写你的整个Model后它自动帮你把模型和数据分割到多个TPU上。 另外Mesh-Tensorflow 没有实现并行的卷积操作因此只适合 Language Model 这个领域。 除此之外需要用 Mesh-Tensorflow 的语法重写你的整个模型仔细思考维度不仅工作量大同时对代码侵入性强。 不同的 layout 会带来不同的性能因此可以考虑自动搜索最优的layout但 Mesh-Tensorflow不支持。 GSPMD 通过扩大模型可以提高模型精度扩展模型的应用范围。但这些模型往往需要在多个device上训练产生了一些并行训练需求如数据并行分割训练数据、流水线并行分割计算图张量模型并行分割每个模型层的权重和计算。而 GSPMD 提出了一种基于 tensor sharding annotations 的系统以一种统一的方法去表示不同的并行策略包括上面提到的方法以及一些新的并行方法如 image spatial partitioning一种沿空间维度分割图像输入数据的技术它有助于在内存容量有限的设备上拟合大型图像数据和 weight-update/optimizer-state sharding对数据并行的一种增强。 GSPMD 简介 上面提到 GSPMD 基于 tensor sharding annotations 的系统以一种统一的方法去表示不同的并行策略。 尽管流水线并行对图进行了划分而不是对单个运算符/张量进行了划分但 GSPMD 仍然可以在一个简单的包装库的帮助下实现该包装库将流水线划分简化为一个张量/运算符划分问题。 GSPMD 有足够的灵活性来表达这些方法的组合例如不同的层可以用不同的方法进行分区不同的方法可以在同一层中进行组合。 GSPMD 分离了机器学习模型编程和并行的问题。它允许用户用巨大的张量编写程序就像有一个单一的巨大设备一样。然后用户可以在一些地方插入注解指定张量如何在设备间分布GSPMD将在编译器pass执行在整个计算图上完成分片规范并将其转化为数学上等价的并行计算在每个设备上运行。 这使得用户可以专注于模型的建立而不是分片的实现并且可以轻松地将现有的单设备程序移植到更大的规模上运行。为了实验不同的分片策略只需注解重新配置即可。 GSPMD 解决了将自动分区应用于生产模型时的几个实际问题 为每个分区生成一个程序会大大增加编译时间所以 GSPMD 为所有分区生成一个程序。这一特性被称为单程序多数据(SPMD)对于扩展到数以千计的分区至关重要。GSPMD 支持不均匀分割的维度使任何张量都可以在任意设备网格上进行分割。为了方便开发加速器在编译时要求静态已知的形状这通常是一个实际的限制。尽管支持不均匀的分片GSPMD 与这种约束是兼容的。GSPMD 作为 Production ML 编译器 XLA 的一个扩展来实现。该实现涵盖了 XLA 中的全部运算符包括那些具有复杂语义的运算符如卷积。XLA 是对多个框架(TensorFlowJaxPytorch和Julia)和硬件平台(CPUGPU和TPU)的统一抽象使 GSPMD 可以重复使用。GSPMD支持嵌套的并行模式在per-operator层面这意味着不同类型的维度可以在正交的device mesh中进行划分。GSPMD 已经为这种嵌套模式开发了一种递归方法最大限度地提高了 GSPMD 的通用性而不需要过多的手写分片规则. GSPMD 张量分片和自动完成 GSPMD 为张量分片定义了一套直观且通用的表示。遵循分离设计的理念GSPMD 有两个独立的编译器转换sharding completion 和 per-operator partitioning。 GSPMD 具有一种机制允许高级用户通过在子图中输入手动分区模式来精确控制子图的分区方式。 在这个子图中用户用分片大小的形状编写程序 在子图之外程序仍然由编译器自动分区并且有专门的转换节点在模式之间进行切换。 为了让 GSPMD 仍然可以对其他维度进行分区以实现数据或层内模型并行GSPMD 扩展了手动模式以支持类似于部分复制的子组即子组内的设备手动分区而子组之间的设备自动分区。 在这种情况下用作流水线阶段stages的设备组是手动子组。 GSPMD 根据有限的用户注解自动完成每个张量的分片。它是作为 XLA 中的编译器pass实现的。 GSPMD SPMD 分片 在实现 Partitioner 时有两个选项 为每个Partitioner创建自定义程序多个程序多份数据MPMD创建一个程序适用于所有Partitioner单个程序多份数据SPMD GSPMD 选择 SPMD 是因为我们的目标是扩展到数千个 Partitioner而在 MPMD 中编译程序会变得非常慢。编译时间是一个重要的可用性问题因为现代ML框架通常包括JIT优化和编译特别是对于那些针对自定义加速器的框架。并行化编译可能不简单因为不同程序中的操作符可能需要全局调度以维护正确的通信顺序。 但在 SPMD 中实现Partitioner同样会给生产ML编译器带来了独特的挑战。因此GSPMD针对SPMD分区所面临的挑战提出了一系列解决这些问题的技术。 小结 总之GSPMD 提出了一种基于编译器的、自动的、通用机器学习并行系统。它是一种半自动并行用户手动配置部分的并行操作然后它会对并行策略进行传播得到完成的并行策略。 Flexflow 背景 现有的深度神经网络训练通常需要使用数据并行或模型并行。但是这些策略在并行程度上通常无法达到最优。因此本文定义了一个 DNN 并行策略搜索空间SOAP其中包括在Sample、Operator、Attribute和Parameter维度中并行 DNN 的策略同时本文还提出了 FlexFlow这是一种深度学习框架它使用 SOAP 空间的引导随机搜索来寻找针对特定的并行机器的快速的并行策略。 为了加速这种搜索FlexFlow 引入了一种新颖的执行模拟器execution simulator它可以准确预测并行策略的性能并且比之前直接执行每个策略的方法快三个数量级。 SOAP 搜索空间 下面来看看 DNN 并行策略的 SOAP 搜索空间。为了跨设备并行化 DNN 算子我们要求每个设备计算operation输出张量的不相交子集。 因此我们通过定义 oi 的输出张量如何分区来对 operation oi 的并行进行建模。 下图展示了一些算子样例的并行维度 下图展示了1D卷积并行配置的样例 下图展示了一个矩阵乘法运算的并行配置示例 总之SOAP 维度的切分是针对op的output tensor来切分的选择了output tensor的多个维度 Sample表示 input 的 batch 维。Attribute表示 tensor 的属性维例如height/width。Parameter表示 tensor 的 param 维例如in-channel/out-channel。Operator表示 op 之间的切分维度。 虽然把 tensor 分成了多个维度实际上都是属于 tensor 本身的维度。 FlexFlow 整体框架 FlexFlow 根据计算图和设备拓扑自动寻找并行策略。与现有框架相比FlexFlow有两个优势 可编程性。 对于在具有深度设备拓扑的集群上运行的具有复杂计算图的 DNN 应用程序应用程序开发人员甚至领域专家都很难手动设计高效的operation分配。 FlexFlow 负责寻找高效的并行策略并提供更高效的编程接口。可移植性。 针对一个集群进行微调的并行策略可能在其他集群上表现不佳。 FlexFlow 的搜索方法会自动为每个硬件配置选择有效的策略而无需更改应用程序。 FlexFlow 的总体框架如下图所示其中 Operator Graph计算图的描述。包括op作为nodetensor作为edge。Device topology描述实际设备的topo关系device作为nodeconnection作为edge。Execution OptimizerFlexFlow的核心部件用于搜索最优的split方案下方是一个运行时Distributed Runtime用于执行split方案。 执行模拟器Execution Simulator 执行模拟器是FlexFLow中比较核心的部分负责对提出的策略做评估得到候选者的性能数据。 这里为了提高评估的速度没有使用直接执行的方式而是用模拟执行。还是正常去构建执行timelines但是需要在device上执行时直接从上一次执行相同input-size的数据中取得执行时间这样降低了总体的执行时间。这里是假设op针对相同input-size的执行时间基本不变而且跟input-data无关。在大多数模型中这个假设都是成立的。 输入算子计算图G设备拓扑结构D并行策略S输出执行时间simulator的重要假设 1每个task的执行时间都是可预测的波动小与input tensor的内容无关。2不同设备之间传输数据的时间为数据大小/带宽。3每个设备按照FIFO的顺序执行任务GPU就是这样的。4每个设备在完成一个任务后只要下一个任务的数据准备就绪就立刻开始执行下一个任务overhead可忽略不计。
为了模拟一次执行模拟器首先建立一个Task Graph然后运行模拟算法。 任务图Task Graph 构建任务图时每个op对应的split都会变成一个normal task。task之间的数据通信作为communication task。 graph的edge表示的是task之间的依赖关系即计算先后关系而不是数据流方向。 在构建任务图的时候就把每个task的execTime填入了。normal task 的 execTime 是在 device 上多次执行的平均耗时这里 cache 之后会一直使用。communication task 的 execTime 是用 tensor size / bandwidth 得到。 模拟算法类型 全模拟算法 首先用 Dijkstra 算法遍历所有任务都被放到一个队列里出队列的顺序是按照ready time 的增序。该算法最终返回所有任务中最慢的一个执行完所需时间。Delta 模拟算法使用一种 MCMC 搜索算法每次只改变一个 op 的划分方式。这种情况下前后两个策略的时间通常没有改变。Delta 模拟算法只重新模拟改变最终结果的 op。 对于同样的任务图full和delta的模拟算法会给出同样的结果。 执行优化器Execution Optimizer 执行优化器以运算符图和设备拓扑作为输入并自动找到有效的并行化策略。 输入算子计算图G设备拓扑结构D输出最有效的并行策略 问题抽象为最小化总执行时间这个方法避免了平衡执行时间和通信时间二者的问题。 FlexFlow 使用模拟器作为预言机将并行优化问题转化为cost最小化问题即最小化预测执行时间。 这种方法的主要优点是它避免了显式地编码相互依赖的优化之间的权衡例如减少数据传输与平衡工作负载分布而只是专注于最小化应用程序的整体执行时间。 通过从最小整体执行时间找到最佳并行化策略是 NP-hard 问题。 可能的策略数量与运算符图中的op数量成指数关系这使得穷举搜索空间变得困难。 为了找到低成本策略FlexFlow 使用成本最小化搜索程序来启发式探索空间并返回发现的最佳策略。 FlexFlow 运行时环境 现有的深度学习系统例如 TensorFlow 、PyTorch 、Caffe2 和 MXNet 仅支持通过数据并行在batch维度中并行操作在这些系统中并行其他维度或多个维度组合的操作并非易事。 为了支持使用并行空间中定义的任何策略并行 DNN 模型本文在 Legion论文Legion: Expressing locality and independence with logical regions 中实现了 FlexFlow 分布式运行时这是一种用于分布式异构架构的高性能并行运行时并使用 cuDNN 和 cuBLAS 作为处理 DNN 算子的底层库。 本文使用 Legion 高维分区接口来支持可并行维度的任意组合的并行操作并使用 Legion 的细粒度控制机制来控制每个算子粒度的并行。 FlexFlow 运行时与现有系统之间的主要区别在于FlexFlow 支持以可并行维度的任意组合并行算子并以单个算子的粒度控制并行。 小结 总之FlexFlow 最核心工作就是提出了 execution simulator 来完善 cost model 。 Alpa 背景 现有的一些方案要么被限制在单个并行方法 (PipeDream)要么依赖于对模型和集群规格的强假设 (DAPPLETofu)。同时自动混合并行的搜索空间较复杂多并行策略的实现不够灵活。除此之外不同的并行技术是有不同的带宽要求的。 因此Alpa采用在不同的系统层次使用不同的并行技术提出了的算子间和算子内并行自动并行方案。 Alpa 技术原理 Alpa提出的算子间、算子内并行划分方法通过是否切分了tensor的维度来区分不同的并行。 算子内并行intra-op切分了tensor维度的并行方式包括数据并行和算子并行即张量模型并行。算子间并行inter-op 不切分tensor只是把子图进行不同的摆放分布包括流水线并行。 算子内并行可充分利用带宽切分带来的通信基本属于高效的集合通信。而算子间并行若切点寻找的合适则通信较小但同步版本的策略无可避免的会引来 Bubble。所以可以利用集群的非对称特性将算子内并行映射到高带宽互联的Devices上将算子间并行映射到低带宽互联的Devices上。如此组合就能释放更大的算力Alpa会自动探索这些策略及组合情况。 Alpa 先通过动态规划DP来决定模型怎么切分成 stage每个 stage 能分到哪些卡。然后在每个 stage 内部再通过整数线性规划ILP的方式来决定每个 op 是如何切分到这个 stage 的多个卡上这是一个自动优化的过程。 自动分配流水线并行的具体示例如下所示 1 alpa.init(clusterray) 2 3 # 定义并行方法 4 # alpa.AutoLayerOption(layer_num2) means we use the auto layer construcion 5 # algorithm to cluster primitive operators into two layers. 6 # stage_optionauto means we enable the auto stage construction algorithm. 7 method alpa.PipeshardParallel(num_micro_batches16, 8 layer_optionalpa.AutoLayerOption(layer_num2), 9 stage_optionauto) 10 11 # 定义训练Step 12 alpa.parallelize(methodmethod) 13 def auto_pipeline_train_step(state, batch): 14 15 def loss_func(params): 16 out state.apply_fn(params, batch[x]) 17 loss jnp.mean((out - batch[y])**2) 18 return loss 19 20 # Again, we use alpa.grad here to separate the apply gradient stage with 21 # the forward/backward stages in the pipeline. 22 grads alpa.grad(loss_func)(state.params) 23 new_state state.apply_gradients(gradsgrads) 24 return new_state 25 26 # 在第一次调用中alpa 触发编译。编译首先分析成本cost并解决优化问题以获得最佳流水线分配。 27 auto_pipeline_actual_state auto_pipeline_train_step(state, batch) 28 assert_allclose(expected_state.params, 29 auto_pipeline_actual_state.params, 30 atol5e-3) 31 32 alpa.shutdown()在 Alpa 开源仓库中也提供了基于 OPT 大模型进行自动并行的微调案例。 Alpa 的执行过程 Alpa 高度依赖 JAX它魔改了 XLA JAX 底层通过 XLA 执行中的 GSPMD拿到 XLA 的计算图后自动对 op 进行切分生成对应的程序在每个 worker 上执行。 Alpa 的创新之处 旧有的方案往往焦点在 inter-opintra-op 和自动并行策略搜索的一个或者两个点而 Alpa 兼顾了所有比如在 GShard 中提出了 intra-op 的方式GPipe 提出 inter-op 的方式Megatron-LM v2 则通过结合 inter-op 和 intra-op 的方式通过人工指定的并行策略来支持分布式训练 GPT 模型。微软 DeepSpeed 提出的 ZeRO 技术试图通过自动的策略通过多个层级步骤来优化数据并行中的显存使用。而 Alpa 首先做 inter-op 的自动切分然后用 intra-op 的层级调度方式从而达到兼顾所有的优化策略。可以说Alpa 是当今为止自动并行的集大成者后续工作要想突破它相当困难。 总结 本文分享了一些典型的分布式训练自动并行方案但是在一些业界知名大模型的预训练过程中这些方案目前还用得很少。可见当下的自动并行由于其相对复杂还不是很成熟。 码字不易如果觉得我的文章能够能够给您带来帮助期待您的点赞收藏加关注~~ 最后如果您也对AI大模型感兴趣想学习却苦于没有方向 小编给自己收藏整理好的学习资料分享出来给大家 获取方式 有需要的小伙伴可以保存图片到wx扫描二v码关注免费领取【保证100%免费】 AI大模型学习路线汇总 大模型学习路线图整体分为7个大的阶段全套教程文末领取哈
第一阶段 从大模型系统设计入手讲解大模型的主要方法 第二阶段 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用 第三阶段 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统 第四阶段 大模型知识库应用开发以LangChain框架为例构建物流行业咨询智能问答系统 第五阶段 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型 第六阶段 以SD多模态大模型为主搭建了文生图小程序案例 第七阶段 以大模型平台应用与开发为主通过星火大模型文心大模型等成熟大模型构建大模型行业应用。 如何学习AI大模型 作为一名热心肠的互联网老兵我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。 这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
一、全套AGI大模型学习路线 AI大模型时代的学习之旅从基础到前沿掌握人工智能的核心技能
二、640套AI大模型报告合集 这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍 随着人工智能技术的飞速发展AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型如GPT-3、BERT、XLNet等以其强大的语言理解和生成能力正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案 作为普通人入局大模型时代需要持续学习和实践不断提高自己的技能和认知水平同时也需要有责任感和伦理意识为人工智能的健康发展贡献力量。