Pytorch之Dataparallel源码解析】的更多相关文章

之前对Pytorch 1.0 的Dataparallel的使用方法一直似懂非懂,总是会碰到各种莫名其妙的问题,今天就好好从源头梳理一下,更好地理解它的原理或者说说下步骤. 源码地址: https://github.com/pytorch/pytorch/blob/master/torch/nn/parallel/data_parallel.py 初始化 首先我们一行一行地来看一下Dataparallel是如何初始化的. super就是继承torch.nn.Module父类,这里不做解释 第一个i…
[源码解析] PyTorch 分布式(2) ----- DataParallel(上) 目录 [源码解析] PyTorch 分布式(2) ----- DataParallel(上) 0x00 摘要 0x01 综述 1.1 从流程上看 1.2 从模式角度看 1.3 从操作系统角度看 1.4 低效率 0x02 综述 2.1 示例 2.2 相关知识 0x03 定义 3.1 定义 3.2 负载均衡 0x04 前向传播 4.1 总述 4.2 分发(输入) 4.2.1 scatter_kwargs 4.2.…
[源码解析] PyTorch 分布式(3) ----- DataParallel(下) 目录 [源码解析] PyTorch 分布式(3) ----- DataParallel(下) 0x00 摘要 0x01 前向操作 1.1 并行 1.2 Gather 1.2.1 Python世界 1.2.2 C++世界 0x02 计算损失 0x03 后向传播 3.1 分发梯度 3.1.1 Gather.backward 3.1.2 Scatter 3.1.3 C++ 3.2 并行后向传播 3.3 归并梯度 3…
[源码解析] 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…
[源码解析] PyTorch 分布式(2) --- 数据加载之DataLoader 目录 [源码解析] PyTorch 分布式(2) --- 数据加载之DataLoader 0x00 摘要 0x01 前情回顾 0x02 DataLoader 2.1 初始化 2.2 关键函数 2.3 单进程加载 2.3.1 区分生成 2.3.2 迭代器基类 2.3.3 单进程迭代器 2.3.4 获取样本 2.4 多进程加载 2.4.1 总体逻辑 2.4.2 初始化 2.4.3 业务重置 2.4.4 获取 inde…
[源码解析] 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 流水线并行实现 (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 分布式(1)------历史和概述 目录 [源码解析] PyTorch 分布式(1)------历史和概述 0x00 摘要 0x01 PyTorch分布式的历史 1.1 Multiprocessing 1.2 THD 底层库 1.3 torch.distributed 库 1.4 c10d库 1.5 RPC框架 1.6 弹性训练 1.7 流水线训练 0x02 分布式概述 2.1 引论 2.1.1 torch.distributed 包 2.1.2 知识链接 2.2…
[源码解析] PyTorch 如何使用GPU 目录 [源码解析] PyTorch 如何使用GPU 0x00 摘要 0x01 问题 0x02 移动模型到GPU 2.1 cuda 操作 2.2 Module 2.3 移动 2.3.1 示例 2.3.2 操作 2.3.3 _apply 方法 2.4 小结 0x03 在GPU之上调用函数 3.1 CUDA编程模型基础 3.1.1 异构模型 3.1.2 并行思想 3.1.3 处理流程 3.2 函数 3.2.1 核函数 3.2.2 PyTorch 样例 3.…
[源码解析] PyTorch 分布式(4)------分布式应用基础概念 目录 [源码解析] PyTorch 分布式(4)------分布式应用基础概念 0x00 摘要 0x01 基本概念 0x02 设计思路 2.1 通信需求 2.2 概念 0x03 设置 0x04 点对点通信 0x05 集合通信 0x06 分布式训练 0x07 Ring-Allreduce 0x08 高级主题 8.1 通信后端 8.1.1 后端种类 8.1.2 使用哪个后端? 8.1.3 Gloo 后端 8.1.4 MPI后端…