[源码解析] PyTorch 流水线并行实现 (6)--并行计算 目录 [源码解析] PyTorch 流水线并行实现 (6)--并行计算 0x00 摘要 0x01 总体架构 1.1 使用 1.2 前向传播 1.3 Pipeline 类 1.3.1 构建依赖 1.3.2 Queue 1.3.3 计算 0x02 并行拷贝和计算 2.1 GPU并行操作 2.2 PyTorch 2.3 Stream 封装 2.3.1 PyTorch 样例 2.3.2 生成/获取 2.3.3 记录 2.3.4 等待 2.…
[源码解析] PyTorch 流水线并行实现 (1)--基础知识 目录 [源码解析] PyTorch 流水线并行实现 (1)--基础知识 0x00 摘要 0x01 历史 1.1 GPipe 1.2 torchgpipe 1.3 fairscale 1.4 PyTorch 1.5 基础版本 0x02 基础知识 2.1 流水线并行 2.2 Checkpointing 2.2.1 基本概念 2.2.2 使用 2.2.3 实现概述 2.3 微批次的数目 2.4 检查重计算 0x03 使用 3.1 示例…
[源码解析] PyTorch 流水线并行实现 (2)--如何划分模型 目录 [源码解析] PyTorch 流水线并行实现 (2)--如何划分模型 0x00 摘要 0x01 问题 0x01 自动平衡 1.1 Automatic Balancing 1.2 基础函数/函数 1.2.1 Batch 1.2.2 layerwise_sandbox 1.2.3 detach 1.3 据计算时间来平衡 1.4 据内存大小来平衡 1.5 分割算法 0x02 模型划分 2.1 调用 2.2 GPipe构建 2.…
[源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统 目录 [源码解析] PyTorch 流水线并行实现 (3)--切分数据和运行时系统 0x00 摘要 0x01 分割小批次 1.1 使用 1.2 PyTorch 基础 1.2.1 chunk 1.2.2 cat 1.3 分割 & 聚合 1.4 剖析 0x02 运行 2.1 Stream 2.2 Task 2.3 Worker 2.4 生成 worker 2.5 使用 2.5.1 何时生成worker 2.5.2 剖析 2…
[源码解析] PyTorch 流水线并行实现 (4)--前向计算 目录 [源码解析] PyTorch 流水线并行实现 (4)--前向计算 0x00 摘要 0x01 论文 1.1 引论 1.1.1 数据并行 1.1.2 模型并行 1.2 模型定义 1.3 GPipe计算图 1.4 设备执行顺序(Devicewise Execution Order) 1.5 PyTorch 实现难点 1.6 总结 0x02 执行顺序 2.1 论文内容 2.2 解析 2.3 代码 2.4 使用 0xFF 参考 0x0…
[源码解析] PyTorch 流水线并行实现 (5)--计算依赖 目录 [源码解析] PyTorch 流水线并行实现 (5)--计算依赖 0x00 摘要 0x01 前文回顾 0x02 计算依赖 0x03 反向传播依赖 2.1 解析 2.2 基础功能 2.2.1 Function 2.2.2 Fork 2.2.3 Join 2.2.4 Phony 2.2.5 detach 2.3 使用 0x03 正向传播依赖 3.1 分割模型 3.2 建立依赖 0x04 总结 0xFF 参考 0x00 摘要 前几…
[源码解析] PyTorch分布式优化器(3)---- 模型并行 目录 [源码解析] PyTorch分布式优化器(3)---- 模型并行 0x00 摘要 0x01 前文回顾 0x02 单机模型 2.1 基本用法 2.2 将模型并行应用到现有模块 2.3 问题与方案 2.3.1 目前状况 2.3.2 解决方案 2.4 通过流水线输入加速 0x03 分布式问题和方案 3.1 思路 3.2 PyTorch 的思路 3.2.1 四大天王 3.2.2 逻辑关系 0x04 PyTorch 分布式优化器 4.…
[源码解析] PyTorch 分布式(18) --- 使用 RPC 的分布式管道并行 目录 [源码解析] PyTorch 分布式(18) --- 使用 RPC 的分布式管道并行 0x00 摘要 0x01 综述 1.1 先决条件 1.2 基础知识 0x02 启动 0x03 定义训练循环 0x04 将 ResNet50 模型分片拼接成一个模块 0x05 对 ResNet50 模型进行分区 0xFF 参考 0x00 摘要 在前面的文章之中,我们已经学习了PyTorch 分布式的基本模块,接下来我们通过…
[源码解析] PyTorch分布式优化器(2)----数据并行优化器 目录 [源码解析] PyTorch分布式优化器(2)----数据并行优化器 0x00 摘要 0x01 前文回顾 0x02 DP 之中的优化器 2.1 流程 2.2 使用 0x03 DDP 之中的优化器 3.1 流程 3.2 优化器状态 3.3 使用 0x04 Horovod 的优化器 4.1 hook 同步梯度 4.1.1 注册 hooks 4.1.2 归并梯度 4.1.2.1 MPI 函数 4.1.2.2 原理图 4.2 s…
[源码解析] PyTorch 分布式(1) --- 数据加载之DistributedSampler 目录 [源码解析] PyTorch 分布式(1) --- 数据加载之DistributedSampler 0x00 摘要 0x01 数据加载 1.1 加速途径 1.2 并行处理 1.3 流水线 1.4 GPU 0x02 PyTorch分布式加载 2.1 DDP 2.2 分布式加载 0x03 DistributedSampler 3.1 初始化 3.2 迭代方法 3.3 shuffle数据集 3.3…