分布式计算通信原语的抽象模型

news/2025/11/16 15:17:01/文章来源:https://www.cnblogs.com/devil-sx/p/19228212

学习深度神经网络并行策略时,常常混淆各种通信原语 Reduce/Scatter/Gather ... 本文尝试给出一种统一的抽象模型,将各类原语看作模型下一种个例。尝试简单调研并行计算理论,暂时没有找到完全一致对应的理论术语,故本文中许多术语概念临时创造使用,有较强民科意味,阅读时注意避免混淆。欢迎读者指点讨论!

GEMM 维度回顾

从最基础的矩阵乘法例子开始:

\[\mathbf{Y}_{B,O}=\mathbf{X}_{B,I} \mathbf{W}_{I,O} \]

一共是 Batch/Token Length 、Input Dimension、 Output Dimension 三个维度,更常用的维度记号是 M/N/K,个人习惯使用 B/I/O ,语义更直观一些。

考虑虽然 layer 和 layer 之间数据依赖上呈现串行特征,类似 ILP 可从用户并行度上拉出 Pipeline,故部署大致考虑 L/B/I/O 四个维度。X/W/Y 三个变量和 L/B/I/O 四个维度之间关系如下表,我们把变量-维度之间的关系用相关/不相关表示,比如 X 和 L/B/I 维度相关,X 和 O 维度不相关,该术语会用在后文分析之中。

变量 L B O I
X -
W -
Y -

分布式系统变量的三态

考虑某个变量在分布系统中有三种存在状态,假设变量的大小是 M ,节点的数量是 N:

状态 定义 系统中占用存储量
分散 (Partitioned) 每个节点拥有变量的一部分 M
复制 (Replicated) 变量被复制到所有节点 MN
集中 (Centralized) 只有一个节点拥有变量,其余节点不保存该变量 M

理论上变量在分布式机器中的映射关系超出这 3 类,比如在部分机器上进行复制/分散等,但为了讨论方便,仅以这三类状态进行讨论推导。

变量在不同的状态间切换则会产生通信开销,三个状态间并不是两两间可以互相直接转换,集中状态和任意状态间可以切换,而复制和分散之间的切换要经过集中状态。根据转换过程的起始和终点状态可定义通信原语,直接转换叫做一阶通信原语,转换两次的叫做二阶通信原语,二阶通信原语在逻辑上可以看作两个一阶通信原语的组合,实际物理实践并不存在一个中间过程,只是一个助记概念。All-Gather 名称要是叫做 Gather-Broadcast 一下就明晰了……

严格意义上每个机器存储的部分和 (Partial Sum)数据并不一致,部分和并不属于复制。但其维度特性流量特性和输出特征 Y 相似,为了建立统一理论分析,妥协将多份部分和视作 Y 在不同节点上的复制,故涉及复制到集中的 reduce 操作发生了变量的转换。故 Reduce-Scatter + All-Gather 的 All-reduce 按下面图示理解似乎没有发生状态变换,实际从部分和变为了输出特征。

../../Extra/Images/IMG_20251116151359904.png

Source\Target 分散 复制 集中
分散 - All-Gather(2) Gather
复制 Reduce-Scatter(2) - Reduce
集中 Scatter Broadcast -

不同状态间切换产生的流量开销如下,为方便计算,分析时近似 N>>1:

通信原语 阶数 流量开销
Gather/Scatter 1 \(\frac{N-1}{N}M \approx M\)
Broadcast/Reduce 1 \((N-1)M \approx NM\)
All-Gather/Reduce-Scatter 2 \(\frac{N-1}{N}M + (N-1)M \approx NM\)

深度学习并行策略定义

静态分析:以维度划分定义并行策略

基础的某种并行策略即沿着单个维度进行切分,根据前文 L/B/I/O 的建模, 理论上存在 4 种划分策略。对相关维度的划分使得该变量状态为分散,而对无关维度的划分使该变量状态为复制。仅考虑前向过程,前向仅包含 X、W、Y 三个变量而不包括他们的导数 dX、dW、dY。对某个维度划分会出现两种情况:

  • B / O / I :出现两个相关变量,一个无关变量
  • L :出现三个相关变量
划分维度 策略名称 X W Y
Layer Pipeline Parallelism (PP) P P P
Batch Data Parallelism (DP) P R P
Output Tensor Parallelism @ColumnLinear(TP) R P P
Input Tensor Parallelism @RowLinear (TP) P P R

在 Intra-kernel 划分下可以带入各个变量大小 \(M_X\)\(M_W\)\(M_Y\) 计算系统存储需求,注意针对 L 维度而言虽然所有变量都是相关维度,对于 W 假设不存在更上位的存储,需要所有层全部存入,而对于 X 和 Y 除了 PP 各层 L 同时出现,其余并行策略 L 在时间上串行,存储需求是对时间轴求最大值,此时 L 不纳入存储计算:

划分维度 策略名称 X W Y Total
Layer Pipeline Parallelism (PP) LBI LOI LBO LBI + LOI + LBO
Batch Data Parallelism (DP) BI NLOI BO BI + NLOI + BO
Output Tensor Parallelism @ColumnLinear(TP) NBI LOI BO NBI + LOI + BO
Input Tensor Parallelism @RowLinear (TP) BI LOI NBO BI + LOI + NBO

动态分析:策略流量需求推导

前文提到变量在状态之间切换需要通过通信原语,推理中状态转变来自于不同层对于 Activation 变量 X/Y 状态的变换,这一层的 Y 是下一层的 X。

此外即使变量状态没有切换也有两种情况,二者在同一节点或者不同节点,不同节点间(PP)产生等同于该数据量的流量开销,相同节点(DP)则无额外流量开销。为表示简单,假设所有 Layer O/I embedded 维度相同为符号 D。

划分维度 策略名称 Y/X 通信原语 流量
Layer Pipeline Parallelism (PP) P/P - LBD
Batch Data Parallelism (DP) P/P - 0
Output Tensor Parallelism @ColumnLinear(TP) P/R All-Gather NLBD
Input Tensor Parallelism @RowLinear (TP) R/P Reduce-Scatter NLBD

挖坑:待补充反向过程和专家并行策略分析……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/967116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【shell】每日shell练习:安全日志入侵检测/专业的系统配置文件合规检查

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年第39周数字取证与事件响应技术动态

本周技术动态涵盖Salesloft-Drift入侵事件分析、SaaS供应链安全、恶意软件检测技术、数字取证新方法、威胁狩猎实践、漏洞利用分析等网络安全前沿技术内容,为安全专业人员提供全面技术参考。赞助内容 Salesloft-Drift…

第三次算法作业

动态规划法求解步骤​ (1)状态定义​:设 dp[i][j] 表示从第 i 行第 j 列元素出发,到达三角形底部的最大路径和。该定义精准捕捉了子问题的核心:每个位置的最优解仅依赖其下方的子问题结果。​ (2)递归方程式推导…

milvus: 搜索collection

一,代码:from flask import Blueprint,jsonify,render_template,requestfrom app import milvus_client from pymilvus import FieldSchema, DataType, CollectionSchema, Collection, connections from helpers.uti…

2025/11/16

2025/11/16学习算法

实用指南:《vector.pdf 深度解读:vector 核心接口、扩容机制与迭代器失效解决方案》

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【MX-S11】梦熊 NOIP 2025 模拟赛 3 WAOI R7 FeOI R6.5(同步赛)总结分析

感觉打梦熊就是这样前两题都是中等偏下,后两题难得不成样子。 估分&最终得分:\(100+100+0+0=200\)。 T1 感觉应该是黄题吧。 题目概述 一个数轴,前 \(k\) 个地给小 \(A\),后面的地给小 \(B\),小 \(A\) 先手,…

2025 年 11 月旅游船厂家推荐排行榜,新能源电动旅游船,画舫仿古双层豪华旅游船,定制旅游船,玻璃钢钢质铝合金旅游船公司精选

2025 年 11 月旅游船厂家推荐排行榜,新能源电动旅游船,画舫仿古双层豪华旅游船,定制旅游船,玻璃钢钢质铝合金旅游船公司精选 随着国内水上旅游市场的快速发展,旅游船行业正迎来新一轮技术变革与产品升级。从传统观…

2025 年 11 月观光船厂家推荐排行榜,新能源观光船,电动观光船,画舫观光船,仿古观光船,双层观光船,豪华观光船,定制观光船,玻璃钢观光船,钢质观光船,铝合金观光船公司推荐

2025 年 11 月观光船厂家推荐排行榜:新能源与电动观光船品牌权威指南 行业背景与发展趋势 观光船行业作为水上旅游产业的重要组成部分,近年来呈现出多元化、环保化、定制化的发展趋势。随着新能源技术的不断成熟和环…

[Win] [ffmpeg] Win下如何安装ffmpeg

[Win] [ffmpeg] Win下如何安装ffmpeg$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");目录01 ffmpeg简介02 安装流程2.1 安装chocolately2.2 choco安装ffmpeg…

开发日记

历程就是先去找ai编了一个http服务器的py脚本,真的很快,不过刚开始条件没说清楚,是一个http://localhost:8080这样的网站,发现这是一个只有本地电脑才能登录的http服务器,localhost就是本地地址 而后继续调教ai,…

[Win] [包管理器] powershell 安装Win下的包管理器 Chocolatey

[Win] [包管理器] powershell 安装Win下的包管理器 Chocolatey$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");目录01 简介02 安装流程2.1 使用管理员打开po…

实现AI和BI整合的初步思路和探索-Part3

前两篇探索了用code和dify的实现思路,实现起来均有一定的门槛。那么市面上有没有什么开源的现成产品已经对这个方向进行了探索呢?最近还真搜罗到了两个不错的产品,一个是飞致云下的SQLBot,还有一个是WrenAI。实现A…

[Win] [包管理器] powershell 安装 choco

[Win] [包管理器] powershell 安装 choco$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");目录01 简介02 安装流程2.1 使用管理员打开powershell2.2 执行以下…

win11 报错

核心解决步骤(按优先级推荐)修复系统文件与Edge配置‌以‌管理员身份‌打开「命令提示符」,依次执行以下命令(每行执行后等待完成再输入下一行): cmdCopy CodeDISM /Online /Cleanup-Image /ScanHealthDISM /Onl…

数据结构——二十四、图(王道408) - 实践

数据结构——二十四、图(王道408) - 实践2025-11-16 14:38 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block…

本地CMake编译opencv库(Mingw)

环境 Win10 Mingw8.1 下载 https://opencv.org/releases/ 下载4.5.5版本的sources,解压到文件夹,可以看到文件夹下有CmakeList.txt 过程 打开cmake的gui,选定source code文件夹,指定build文件夹configure后选择ming…

C# Avalonia 18- ControlTemplates - ColorPickerUserControlTest

C# Avalonia 18- ControlTemplates - ColorPickerUserControlTest自定义ColorPicker2类 ColorPicker2.cs代码using Avalonia; using Avalonia.Controls; using Avalonia.Controls.Metadata; using Avalonia.Controls.P…

《重生之我成为世界顶级黑客》第四章:实践出真知

《重生之我成为世界顶级黑客》第四章:实践出真知停更一下,今天还有事忙,先这样吧。清晨,天还没亮,龙傲天便已经被胃部持续不断的震痛所唤醒。 那不是尖锐的刺痛,而是一种沉闷的、带着灼烧感的疼痛,仿佛有块烧红…

Spring AI Alibaba 项目源码学习(九)-其他继承BaseAgent

其他继承BaseAgent 实现分析 请关注微信公众号:阿呆-bot 概述 本文档分析 Spring AI Alibaba Agent Framework 中除 ReactAgent 和 FlowAgent 之外的其他 BaseAgent 实现,主要包括 A2aRemoteAgent(Agent-to-Agent 远…