首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏罗西的思考

    PyTorch 流水线并行实现 (6)--并行计算

    [源码解析] PyTorch 流水线并行实现 (6)--并行计算 目录 [源码解析] PyTorch 流水线并行实现 (6)--并行计算 0x00 摘要 0x01 总体架构 1.1 使用 1.2 前向传播 流水线并行其他文章链接如下: [源码解析] 深度学习流水线并行Gpipe(1)---流水线基本实现 [源码解析] 深度学习流水线并行GPipe (2) ----- 梯度累积 [源码解析] 深度学习流水线并行 ] 深度学习流水线并行 PipeDream(3)--- 转换模型 [源码解析] 深度学习流水线并行 PipeDream(4)--- 运行时引擎 [源码解析] 深度学习流水线并行 PipeDream(5) --- 通信模块 [源码解析] 深度学习流水线并行 PipeDream(6)--- 1F1B策略 [源码解析] PyTorch 流水线并行实现 (1)--基础知识 [源码解析] PyTorch 流水线并行实现 轮训练计划 & 数据 前 6 个周期对应了如下时间流,第一个时钟周期 (1,1) 进入系统,第二个周期 (2,1) 进入系统

    1.9K20发布于 2021-10-13
  • 来自专栏罗西的思考

    模型并行分布式训练 Megatron (3) ---模型并行实现

    [源码解析] 模型并行分布式训练 Megatron (3) ---模型并行实现 目录 [源码解析] 模型并行分布式训练 Megatron (3) ---模型并行实现 0x00 摘要 0x01 并行Transformer 6.2 共轭函数 0xFF 参考 0x00 摘要 NVIDIA Megatron 是一个基于 PyTorch 的分布式训练框架,用来训练超大Transformer语言模型,其通过综合应用了数据并行,Tensor 并行和Pipeline并行来复现 GPT3,值得我们深入分析其背后机理。 本系列大概有6~7篇文章,通过论文和源码和大家一起学习研究。本文将看看 Megatron 如何处理模型并行。 本系列其他文章为: [源码解析] 模型并行分布式训练Megatron (1) --- 论文 & 基础 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x01 并行Transformer

    2.9K20编辑于 2022-11-28
  • 来自专栏罗西的思考

    模型并行分布式训练 Megatron (4) --- 如何设置各种并行

    [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行 目录 [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行 0x00 摘要 0x01 本系列其他文章为: [源码解析] 模型并行分布式训练Megatron (1) --- 论文 & 基础 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 [源码解析] 模型并行分布式训练 假如数据并行度数为2,则例子为[g0, g2], [g1, g3], [g4, g6], [g5, g7], [g8, g10], [g9, g11], [g12, g14], [g13, g15]。 因为张量模型并行组大小是2,即16个GPU被分成8组,则这8组内容是 [g0, g1], [g2, g3], [g4, g5], [g6, g7], [g8, g9], [g10, g11], [g12 因为数据并行组大小是2,16个GPU被分成8组,则这8组内容是[g0, g2], [g1, g3], [g4, g6], [g5, g7], [g8, g10], [g9, g11], [g12, g14

    3.1K10编辑于 2022-05-09
  • 来自专栏机器之心

    分布式训练中数据并行远远不够,「模型并行+数据并行」才是王道

    真实实验表明,在两个 GPU 的设置中获得的 1.32 倍模型并行加速在 DLPlacer 预测加速的上下 6% 的区间内。 如公式 6 所示,如果从 MP 中得到的加速足够大,可以克服不断上涨的通信、同步开销,以及全局批大小带来的扩展性能和统计效率损失,那么使用结合 MP 和 DP 的混合策略将有效地改善网络训练时间。 该工具可以通过提取模型中不同操作之间的并行化来实现资源最大化利用,同时最小化计算节点间移动数据的通信开销。 下图 6 展示了 DLPlacer 工具的工作流程: ? 图 6:DLPLacer 工作流程图。 DLPlacer 估计的加速在实际加速的上下 6% 区间范围内。 值得注意的是,在 2 个 GPU 的设置下,真实实验获得的加速(1.32 倍)与在三或四个 GPU 上获得的加速几乎一样。

    1.4K20发布于 2019-09-03
  • 来自专栏CreateAMind

    分布式并行架构Ray介绍

    Note that any numpy arrays that are part of the object will not be copied. 6.

    2.1K20发布于 2019-08-13
  • 来自专栏Michael阿明学习之路

    python 并发、并行处理、分布式处理

    并行编程 线程 进程 使用多个进程 接口 Executor ,ProcessPoolExecutor 5. 锁 6. 分布式处理 dask pyspark mpi4py 科学计算 7. x.subscribe(print)) print('-'*10) obs[2].subscribe(lambda x: x.subscribe(print)) print('-'*10) 0 3 6 并行编程 问题是独立的,或者高度独立的,可以使用多核进行计算 如果子问题之间需要共享数据,实现起来不那么容器,有进程间通信开销的问题 线程 以共享内存方式实现并行的一种常见方式是 线程 由于 python 锁 防止多个进程同时执行受保护的代码,例如同时写同一个文件 multiprocessing.Lock() 6. 分布式处理 dask https://www.dask.org/ pyspark 用户提交任务,集群管理器自动将任务分派给空闲的执行器 mpi4py 科学计算 https://pypi.org/project

    2.3K20编辑于 2022-09-22
  • 来自专栏悠扬前奏的博客

    Java并行-6.线程优先级

    线程可以有自己的优先级,优先级高的线程在竞争资源时会更有优势,但是这不是绝对的。 Java线程优先级整型成员变量priority来标识,范围从1到10,数字越大优先级越高。其中有三个静态标量: public final static int MIN_PRIORITY = 1; public final static int NORM_PRIORITY = 5; public final static int MAX_PRIORITY = 10; 以下代码可以展示优先级高的线程倾向于更快完成: package

    62220发布于 2019-05-28
  • 来自专栏sktj

    python 多线程 条件condition(并行编程 6)

    class Consumers(threading.Thread): def init(self): threading.Thread.init(self)

    55240发布于 2019-07-30
  • 来自专栏罗西的思考

    PyTorch 分布式(18) --- 使用 RPC 的分布式管道并行

    [源码解析] PyTorch 分布式(18) --- 使用 RPC 的分布式管道并行 目录 [源码解析] PyTorch 分布式(18) --- 使用 RPC 的分布式管道并行 0x00 摘要 0x01 ] PyTorch分布式(6) ---DistributedDataParallel -- 初始化&store [源码解析] PyTorch 分布式(7) ----- DistributedDataParallel 6) ---- 引擎(下) [源码解析] PyTorch分布式优化器(1)----基石篇 [源码解析] PyTorch分布式优化器(2)----数据并行优化器 [源码解析] PyTorch分布式优化器( 这可以看作是单机模型并行最佳实践中讨论的多 GPU 流水线并行分布式对应版本。 1.2 基础知识 之前的教程分布式 RPC 框架入门 展示了如何使用torch.distributed.rpc 为 RNN 模型实现分布式模型并行

    1K40编辑于 2021-12-21
  • 来自专栏罗西的思考

    PyTorch分布式优化器(3)---- 模型并行

    [源码解析] PyTorch分布式优化器(3)---- 模型并行 目录 [源码解析] PyTorch分布式优化器(3)---- 模型并行 0x00 摘要 0x01 前文回顾 0x02 单机模型 2.1 本文介绍PyTorch 分布式优化器和PipeDream之中的优化器,主要涉及模型并行(流水线并行)。 于是人们引入了模型并行(model parallel)。 与此对应,优化器也需要做不同的修改以适应模型并行的需求。为了更好的分析,本文首先介绍单机模型并行,然后介绍PyTorch分布式优化器。 模型并行被广泛用于分布式训练。 0x03 分布式问题和方案 我们已经了解了单机之上的模型并行,接下来就要看模型跨越多个服务器的分布式模型并行训练。 3.1 思路 我们先设想一下如果自己实现分布式优化器,应该如何处理。

    1.8K40编辑于 2021-12-10
  • 来自专栏罗西的思考

    并行分布式框架 Celery 之架构 (1)

    [源码解析] 并行分布式框架 Celery 之架构 (1) 目录 [源码解析] 并行分布式框架 Celery 之架构 (1) 0x00 摘要 0x01 Celery 简介 1.1 什么是 Celery 它是一个简单、灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度。 0x02 Celery的架构 Celery 的基本逻辑为:分布式异步消息任务队列。 在 Celery 中,采用的是分布式的管理方式,每个节点之间都是通过广播/单播进行通信,从而达到协同效果。 class 'celery.app.amqp.Queues'> router = {Router} <celery.app.routes.Router object at 0x00000252BDC6B248 0xFF 参考 Nginx资料之Master与Worker基础概念 1: Worker 启动流程概述 2: Worker 的执行引擎 3: Task 对象的实现 4: 定时任务的实现 5: 远程控制管理 6:

    1.1K20编辑于 2022-05-09
  • 来自专栏AI前沿技术

    大模型分布式训练 —— 张量并行TP

    本文:1)首先介绍张量并行矩阵分块,按行和按列两种方式,2)接着图解MLP和self-attention的分块原理,以及对应的通信量,3)最后介绍编码层和损失层的分块和通信优化。 3,自注意力层分块计算 参数矩阵分解方式:对三个参数矩阵Q,K,V,按照”列切割”,每个头放到一块GPU上,做并行计算。

    36210编辑于 2026-01-13
  • 来自专栏罗西的思考

    并行分布式框架 Celery 之 容错机制

    0x00 摘要 Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度。本文介绍 Celery 的故障转移容错机制。 with details {'state': 'RECEIVED', 'content_type': 'application/json', 'delivery_tag': 'b6e6ec93-8993 exchange': '', 'routing_key': 'celery'}, 'priority': 0, 'body_encoding': 'base64', 'delivery_tag': 'b6e6ec93 ': 'RECEIVED', 'content_type': 'application/json', 'delivery_tag': 'b6e6ec93-8993-442e-821e-31afeec7fa07 这里宣传一个同学的分布式函数调度框架,https://github.com/ydf0509/distributed_framework。非常优秀的实现。大家可以作为 Celery 的替代品。

    1.1K20发布于 2021-05-19
  • 来自专栏罗西的思考

    并行分布式框架 Celery 之架构 (2)

    [源码解析] 并行分布式框架 Celery 之架构 (2) 0x00 摘要 Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度。 上文 [源码解析] 并行分布式框架 Celery 之架构 (1) 中,我们大致介绍了 Celery 的概念,用途和架构,现在回忆 Celery 的架构图如下: +-----------+ 这就涉及到两个最重要的问题: 如何拆分计算逻辑; 如何分发计算逻辑; 于是 Spark 把所有的计算逻辑划分为这两种类型: 能够分发到各个节点上并行执行的; 需要经过一定量的结果合并之后才能继续执行的; 有些人可能会担心,分块处理会导致并行性能下降,实际上,由于避免了消息传递的开销,因此反而会大大的提高性能。 我们从负载均衡,容灾恢复,worke之间交互这三个角度来看看 Celery 如何实现分布式

    1.2K10发布于 2021-04-01
  • 来自专栏数据结构和算法

    探索LightGBM:并行化与分布式训练

    导言 LightGBM是一种高效的梯度提升决策树算法,通过并行化和分布式训练,可以加速模型训练过程,特别是在处理大规模数据集时。 本教程将详细介绍如何在Python中使用LightGBM进行并行化和分布式训练,并提供相应的代码示例。 并行化训练 LightGBM支持多线程和多进程的并行化训练,可以利用多核CPU来加速模型训练。 除了并行化训练,LightGBM还支持分布式训练,可以在多台机器上同时训练模型。 我们介绍了如何利用多线程进行并行化训练,并演示了如何在多台机器上进行分布式训练。 通过这篇博客教程,您可以详细了解如何在Python中使用LightGBM进行并行化和分布式训练。 您可以根据需要对代码进行修改和扩展,以满足特定的并行化和分布式训练需求。

    86210编辑于 2024-02-28
  • 来自专栏罗西的思考

    模型并行分布式训练Megatron (1) --- 论文 & 基础

    [源码解析] 模型并行分布式训练Megatron (1) --- 论文 & 基础 目录 [源码解析] 模型并行分布式训练Megatron (1) --- 论文 & 基础 0x00 摘要 0x01 Introduction 本系列大概有6~7篇文章,通过论文和源码和大家一起学习研究。 1.5 指导原则 Megatron 开发者研究了各种组合之间如何影响吞吐量,基于这些研究得出来分布式训练的一些指导原则: 不同的并行模式以复杂的方式互相作用:并行化策略影响通信量、核的计算效率,以及worker 分布式训练是通信密集型的。使用较慢的节点间连接或更多的通信密集型分区会阻碍性能。 FlexFlow是一个进行这种并行计算的深度学习框架,并且提供了一种选择最佳并行化策略的方法。最近,Mesh TensorFlow引入了一种语言,用于指定TensorFlow中的一般分布式张量计算。

    4K10编辑于 2022-05-09
  • 来自专栏罗西的思考

    并行分布式框架 Celery 之 worker 启动 (2)

    [源码解析] 并行分布式框架 Celery 之 worker 启动 (2) 目录 [源码解析] 并行分布式框架 Celery 之 worker 启动 (2) 0x00 摘要 0x01 前文回顾 0x2 逐次调用step 3.2.4.1 Hub 3.2.4.2 Pool 3.2.4.3 Consumer 0x4 本文总结 0xFF 参考 0x00 摘要 Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统 Kombu 之 Consumer [源码分析] 消息队列 Kombu 之 Producer [源码分析] 消息队列 Kombu 之 启动过程 [源码解析] 消息队列 Kombu 之 基本架构 以及 源码解析 并行分布式框架 Celery 之架构 (2) [源码解析] 并行分布式框架 Celery 之架构 (2) [源码解析] 并行分布式框架 Celery 之 worker 启动 (1) 0x01 前文回顾 前文提到了,我们经过一系列过程 3 = {WorkerComponent} <step: Autoscaler> 4 = {StateDB} <step: StateDB> 5 = {Beat} <step: Beat> 6

    1.6K20发布于 2021-04-07
  • 来自专栏罗西的思考

    模型并行分布式训练Megatron (2) --- 整体架构

    [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要 0x01 启动 1.1 分布式启动 ,用来训练超大Transformer语言模型,其通过综合应用了数据并行,Tensor并行和Pipeline并行来复现 GPT3,值得我们深入分析其背后机理。 本系列其他文章为: [源码解析] 模型并行分布式训练Megatron (1) --- 论文 & 基础 0x01 启动 1.1 分布式启动 启动脚本在 examples/pretrain_bert_distributed.sh 假如数据并行度数为2,则例子为[g0, g2], [g1, g3], [g4, g6], [g5, g7], [g8, g10], [g9, g11], [g12, g14], [g13, g15]。 比如一共 12 层,纵向切 5 刀,则有 6 个stage,每个 stage 有 2 层。

    3.5K20编辑于 2022-05-09
  • 来自专栏罗西的思考

    并行分布式任务队列 Celery 之 负载均衡

    [源码解析] 并行分布式任务队列 Celery 之 负载均衡 目录 [源码解析] 并行分布式任务队列 Celery 之 负载均衡 0x00 摘要 0x01 负载均衡 1.1 哪几个 queue 1.1.1 Autoscaler 2.1 调用时机 2.2 具体实现 2.2.1 bgThread 2.2.2 定义 0xEE 个人信息 0xFF 参考 0x00 摘要 Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统

    1.1K20发布于 2021-05-17
  • 来自专栏罗西的思考

    并行分布式框架 Celery 之 worker 启动 (1)

    0x00 摘要 Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度。Celery 是调用其Worker 组件来完成具体任务处理。 接下来,这个worker具有两套数据结构,这两套数据结构是并行运行的,他们分别是 'ET时刻表' 、就绪队列。

    1.3K20发布于 2021-04-01
领券