[源码解析] Pytorch 如何实现后向传播 (3)---- 引擎动态逻辑 目录 [源码解析] Pytorch 如何实现后向传播 (3)---- 引擎动态逻辑 0x00 摘要 0x01 前文回顾 0x02 引擎总体架构 0x03 启动引擎 3.1 初始化local ready queue 3.2 构建GraphTask 3.3 构建根节点 3.4 计算最小拓扑 3.5 计算依赖 3.6 初始化GraphTask ExecInfo 3.7 配置工作线程输入 3.8 开始运行 3.9 配置设备和R…
[源码解析] Pytorch 如何实现后向传播 (2)---- 引擎静态结构 目录 [源码解析] Pytorch 如何实现后向传播 (2)---- 引擎静态结构 0x00 摘要 0x01 Engine 0x02 GraphRoot 2.1 构建 2.2 作用 0x03 GraphTask 3.1 定义 3.2 outstanding_tasks_ 3.2.1 任务结束 3.2.2 增加 3.2.3 递减 3.3 keep_graph 3.4 dependencies_ 3.5 not_ready…
[源码解析] PyTorch 如何实现后向传播 (4)---- 具体算法 目录 [源码解析] PyTorch 如何实现后向传播 (4)---- 具体算法 0x00 摘要 0x01 工作线程主体 1.1 线程主体代码 1.2 使用 Ready Queue 0x02 反向计算总体逻辑 0x03 准备工作 0x04 核心逻辑 0x05 准备下一步工作 5.1 依据依赖排查节点 5.2 处理这个节点 0x06 扫尾操作 6.1 判断结束 6.2 后续&通知 6.2.1 后续操作 6.2.2 通知主线程…
[源码解析] Pytorch 如何实现后向传播 (1)---- 调用引擎 目录 [源码解析] Pytorch 如何实现后向传播 (1)---- 调用引擎 0x00 摘要 0x01 前文回顾 1.1 训练过程 1.2 例子 1.3 源码剖析 0x02 Python 调用过程 2.1 调用 2.2 引擎 0x03 c++世界 3.1 支撑系统 3.1.1 Edge 3.1.2 Edge 相关函数 3.1.3 Python 扩展 3.2 引入 3.2.1 初始化 3.2.1.1 初始化继承体系 3.2…
[源码解析]PyTorch如何实现前向传播(1) --- 基础类(上) 目录 [源码解析]PyTorch如何实现前向传播(1) --- 基础类(上) 0x00 摘要 0x01 总体逻辑 0x02 废弃类 2.1 Variable 2.2 Function 0x03 Tensor 3.1 定义 in python 3.2 查找定义 3.2.1 Tensor 3.2.2 _TensorBase 3.3 转换 3.3.1 Python 导入 3.3.2 C++ 导出 & 初始化 3.3.2.1 共享库…
[源码解析]PyTorch如何实现前向传播(2) --- 基础类(下) 目录 [源码解析]PyTorch如何实现前向传播(2) --- 基础类(下) 0x00 摘要 0x01 前文回顾 0x02 TensorImpl 2.1 转嫁 2.2 定义 0x03 自动求导相关类 3.1 AutogradMeta 3.2 DifferentiableViewMeta 3.3 AutogradContext 3.4 Auto Function 0x04 Node 4.1 定义 4.2 重要成员变量 4.2.…
[源码解析] PyTorch如何实现前向传播(3) --- 具体实现 目录 [源码解析] PyTorch如何实现前向传播(3) --- 具体实现 0x00 摘要 0x01 计算图 1.1 图的相关类 1.2 动态图 1.3 动态展示 0x02 总体分析 0x03 Node 继承体系 3.1 继承体系 3.2 Node 3.3 SubBackward0 3.4 PowBackward0 3.5 MulBackward0 3.6 PermuteBackward 0x04 前向计算 4.1 减法实现…
[源码解析] PyTorch 分布式之弹性训练(4)---Rendezvous 架构和逻辑 目录 [源码解析] PyTorch 分布式之弹性训练(4)---Rendezvous 架构和逻辑 0x00 摘要 0x01 总体背景 0x02 基本概念 2.1 Barrier 2.2 排他性(Exclusivity) 2.3 一致性(Consistency) 2.4 容错(Fault-tolerance) 2.5 共享键值存储 2.6 等待worker和rendezvous关闭 2.7 DynamicR…
[源码解析] PyTorch 分布式之弹性训练(5)---Rendezvous 引擎 目录 [源码解析] PyTorch 分布式之弹性训练(5)---Rendezvous 引擎 0x00 摘要 0x01 前言 1.1 总体系统 1.2 Rendezvous 1.3 解耦 0x02 引擎实现 2.1 基类 2.2 分布式操作引擎 2.2.1 定义 2.2.2 调用 2.2.2.1 _RendezvousKeepAliveOp 2.2.2.2 _RendezvousCloseOp 2.2.2.3 _…
[源码解析] 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…