[源码解析] TensorFlow 分布式环境(5) --- Session 目录 [源码解析] TensorFlow 分布式环境(5) --- Session 1. 概述 1.1 Session 分类 1.2 会话流程 1.2.1 MasterSession 生命周期 1.2.2 WorkerSession 生命周期 2. GrpcSession 2.1 定义 2.2 注册&工厂类 2.3 创建GrpcSession 2.4 创建MasterSession 2.4.1 GrpcRemoteMa…
[源码解析] TensorFlow 分布式环境(6) --- Master 动态逻辑 目录 [源码解析] TensorFlow 分布式环境(6) --- Master 动态逻辑 1. GrpcSession 1.1 运行 1.2 GrpcRemoteMaster 2. Master 2.1 总体概述 2.2 建立 & 剪枝 2.2.1 建立计算图 2.2.2 剪枝 2.3 切分注册 2.2.1 原理 2.2.2 配置 2.2.3 切分 2.2.3.1 Partition 2.2.3.2 AddD…
[源码解析] TensorFlow 分布式环境(7) --- Worker 动态逻辑 目录 [源码解析] TensorFlow 分布式环境(7) --- Worker 动态逻辑 1. 概述 1.1 温故 1.2 知新 2. 注册子图 2.1 GrpcWorker 2.2 GraphMgr 2.2.1 定义 2.2.2 注册图 3. 运行子图 3.1 Service 3.2 GrpcWorker 3.3 GraphMgr 3.4 小结 4. 总结 0xFF 参考 前文中,Master 在流程之中先…
[源码解析] TensorFlow 分布式环境(8) --- 通信机制 目录 [源码解析] TensorFlow 分布式环境(8) --- 通信机制 1. 机制 1.1 消息标识符 1.1.1 定义 1.1.2 创建 1.2 Rendezvous 1.2.1 接口类 1.2.2 基础实现 Rendezvous 1.2.3 跨进程 RemoteRendezvous 1.2.4 BaseRemoteRendezvous 1.2.5 RpcRemoteRendezvous 1.3 管理类 1.3.1…
[源码解析] TensorFlow 分布式环境(1) --- 总体架构 目录 [源码解析] TensorFlow 分布式环境(1) --- 总体架构 1. 总体架构 1.1 集群角度 1.1.1 概念 1.1.2 示意图 1.1.3 创建 1.1.3.1 创建集群 1.1.3.2 创建任务 1.1.3.3 指定设备 1.2 分布式角度 1.2.1 概念 1.2.2 示意图 1.3 系统角度 1.3.1 概念 1.3.2 示意图 1.4 图操作角度 1.5 通信角度 2. Server 2.1 接…
[源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑 目录 [源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑 1. 总述 2. 接口 2.1 接口规范 2.2 MasterInterface 2.3 调用 3. LocalMaster 3.1 定义 3.2 注册 3.3 查找 3.4 功能 4. GrpcRemoteMaster 4.1 定义 4.2 功能 4.2.1 CreateSession 4.2.2 Master Service…
[源码解析] TensorFlow 分布式环境(3)--- Worker 静态逻辑 目录 [源码解析] TensorFlow 分布式环境(3)--- Worker 静态逻辑 1. 继承关系 1.1 角色概念 1.2 接口 1.3 WorkerInterface 派生类 2. GrpcRemoteWorker 2.1 定义 2.2 生成 2.3 发送请求 3. Worker Service 3.3.1 WorkerInterface 3.3.2 概念梳理 3.3.4 WorkerInterface…
[源码解析] TensorFlow 分布式环境(4) --- WorkerCache 目录 [源码解析] TensorFlow 分布式环境(4) --- WorkerCache 1. WorkerCache 1.1 如何使用 1.2 配置 1.3 工厂类 1.3.1 ParseChannelSpec 1.3.2 NewGrpcChannelCache 1.3.3 NewGrpcWorkerCacheWithLocalWorker 1.4 WorkerCacheInterface 1.4.1 接口…
[源码解析] TensorFlow 分布式 DistributedStrategy 之基础篇 目录 [源码解析] TensorFlow 分布式 DistributedStrategy 之基础篇 1. StrategyBase 1.1 初始化 1.2 使用 1.3 CTL 1.4 Scope 1.4.1 使用 1.4.2 功能 1.4.3 Scope 范围 1.5 StrategyExtendedV2 1.5.1 locality 1.5.2 如何更新 1.6 继承关系 2. 读取数据 2.1 直…
[源码解析] TensorFlow 分布式之 MirroredStrategy 目录 [源码解析] TensorFlow 分布式之 MirroredStrategy 1. 设计&思路 1.1 主要逻辑 1.2 使用 1.3 分析思路 2. 定义 2.1 MirroredStrategy 2.2 MirroredExtended 3. 初始化 3.1 初始化多worker 3.1.1 MultiWorkerMirroredStrategy 3.1.2 CollectiveAllReduceExte…
[源码解析] TensorFlow 分布式之 MirroredStrategy 分发计算 目录 [源码解析] TensorFlow 分布式之 MirroredStrategy 分发计算 0x1. 运行 1.1 基类 Strategy 1.2 StrategyExtendedV1 1.3 MirroredExtended 0x2. mirrored_run 2.1 call_for_each_replica 2.2 建立线程 2.3 线程定义 0x3. Context 3.1 ensure_ini…
[源码解析] TensorFlow 分布式之 ParameterServerStrategy V1 目录 [源码解析] TensorFlow 分布式之 ParameterServerStrategy V1 1. 思路 1.1 总体逻辑 1.2 使用 1.3 定义 2. ParameterServerStrategyExtended 2.1 初始化 2.2 分配设备 2.2.1 replica_device_setter 2.2.2 _RoundRobinStrategy 2.2.3 _Repli…
[源码解析] TensorFlow 分布式之 ParameterServerStrategy V2 目录 [源码解析] TensorFlow 分布式之 ParameterServerStrategy V2 1. 如何使用 1.1 训练方法 1.2 集群 1.3 使用 Model.fit API 进行训练 1.4 使用自定义循环进行训练 1.5 建立集群 2. 初始化 2.1 用例 2.2 集群设置 2.2.1 设置 "TF_CONFIG" 环境变量 2.2.2 使用二进制文件 2.3…
[源码解析] TensorFlow 分布式之 ClusterCoordinator 目录 [源码解析] TensorFlow 分布式之 ClusterCoordinator 1. 思路 1.1 使用 1.2 问题点 2. 定义 2.1 Schedule 2.2 Join 2.3 Done 2.4 Fetch 3. 数据 3.1 建立数据集 3.2 PerWorkerDistributedDataset 3.3 PerWorkerDatasetFromDatasetFunction 3.4 _cr…
[源码解析] TensorFlow 之 分布式变量 目录 [源码解析] TensorFlow 之 分布式变量 1. MirroredVariable 1.1 定义 1.2 相关类 1.2.1 类体系 1.2.2 DistributedValues 定义 使用 1.2.3 DistributedDelegate 1.2.4 PerReplica 1.2.5 Mirrored 1.2.6 Policy VariablePolicy OnReadPolicy OnWritePolicy values_…
[源码解析] PyTorch 分布式(10)------DistributedDataParallel之Reducer静态架构 目录 [源码解析] PyTorch 分布式(10)------DistributedDataParallel之Reducer静态架构 0x00 摘要 0x01 引论 1.1 调用 0x02 Reducer 定义 0x03 Bucket 3.1 设计 3.2 定义 3.2.1 BucketReplica有几个 3.2.2 关键 3.2.3 具体定义 3.3 设置 0x03…
[源码解析] PyTorch 分布式(13) ----- DistributedDataParallel 之 反向传播 目录 [源码解析] PyTorch 分布式(13) ----- DistributedDataParallel 之 反向传播 0x00 摘要 0x01 回顾 1.1 前文回顾 1.2 总体逻辑 0x02 从Hook开始 2.1 如何注册hook 2.1.1 AutogradMeta 2.1.2 Node 2.1.3 AccumulateGrad 2.2 构造函数 2.2.1 g…
[源码解析] 并行分布式框架 Celery 之架构 (1) 目录 [源码解析] 并行分布式框架 Celery 之架构 (1) 0x00 摘要 0x01 Celery 简介 1.1 什么是 Celery 1.2 场景 1.3 特性 1.4 区别 0x02 Celery的架构 2.1 组件 2.2 任务流程 2.3 架构图 0x03 Celery 设计推理 3.1 Celery 基本功能 3.2 Celery 辅助功能 3.3 如何划分 0x04 对 AMQP / Kombu 的封装 4.1 封装…
[源码解析] 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 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 分布式(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 分布式(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后端…
[源码解析] PyTorch 分布式(5) ------ DistributedDataParallel 总述&如何使用 目录 [源码解析] PyTorch 分布式(5) ------ DistributedDataParallel 总述&如何使用 0x00 摘要 0x01 数据并行 0x02 DDP 运行逻辑 0x03 VS DataParallel 3.1 本质区别 3.2 实现区别 0x04 使用 4.1 基本示例 4.1.1 设置进程组 4.1.2 简单模型 4.1.3 处理速度偏…
[源码解析] PyTorch分布式(6) ---DistributedDataParallel -- 初始化&store 目录 [源码解析] PyTorch分布式(6) ---DistributedDataParallel -- 初始化&store 0x00 摘要 0x01 回顾 1.1 基本概念 1.2 初始化进程组 0x02 初始化 2.1 初始化方法 2.2 init_method VS store 2.3 rendezvous 2.4 小结 0x03 Store 3.1 _rend…
[源码解析] PyTorch 分布式(7) ----- DistributedDataParallel 之进程组 目录 [源码解析] PyTorch 分布式(7) ----- DistributedDataParallel 之进程组 0x00 摘要 0x01 回顾 1.1 基础概念 1.2 初始化进程组 0x02 概念与设计 2.1 功能 2.2 本质 0x03 使用 0x04 构建 4.1 Python 世界 4.1.1 rendezvous 4.1.2 _new_process_group_…
[源码解析] PyTorch 分布式(9) ----- DistributedDataParallel 之初始化 目录 [源码解析] PyTorch 分布式(9) ----- DistributedDataParallel 之初始化 0x00 摘要 0x01 综述 1.1 数据并行 1.2 DDP架构 1.2.1 分布式数据并行 1.2.2 进程 1.3 DDP 总体实现 0x02 初始化 2.1 __init__ 2.2 构建参数 2.2.1 _build_params_for_reducer…
[源码解析] PyTorch 分布式(11) ----- DistributedDataParallel 之 构建Reducer 目录 [源码解析] PyTorch 分布式(11) ----- DistributedDataParallel 之 构建Reducer 0x00 摘要 0x01 引论 1.1 调用 1.2 参数说明 0x02 Reducer 初始化 2.1 构造函数 2.2 初始化桶 2.3 初始化视图 2.3.1 BucketReplica成员变量 2.3.2 调用 2.4 初始化…
[源码解析] PyTorch 分布式(12) ----- DistributedDataParallel 之 前向传播 目录 [源码解析] PyTorch 分布式(12) ----- DistributedDataParallel 之 前向传播 0x00 摘要 0x01 总体逻辑 0x02 Python 世界 0x03 C++世界 3.1 准备前向传播 3.2 重建桶 3.2.1 计算桶尺寸 3.2.2 同步桶indices 3.2.3 初始化桶 3.3 准备后向传播 3.3.1 重置 3.3.…
[源码解析] PyTorch 分布式 Autograd (2) ---- RPC基础 目录 [源码解析] PyTorch 分布式 Autograd (2) ---- RPC基础 0x00 摘要 0x01 示例 0x02 RPC 基础 2.1 初始化 2.1.1 初始化后端 2.1.2 生成代理 2.1.3 设置代理 2.1.4 静态类变量 2.2 RPC 代理 2.2.1 RpcAgent 2.2.2 ProcessGroupAgent 2.2.3 TensorPipeAgent 2.2.4 回…
[源码解析] PyTorch 分布式 Autograd (3) ---- 上下文相关 0x00 摘要 我们已经知道 dist.autograd 如何发送和接受消息,本文再来看看如何其他支撑部分,就是如何把发送接受两个动作协调起来,如何确定每个发送/接受节点,如何确定每一个消息交互Session. 通过本文大家可以了解:AutogradMetadata 用来在不同节点间传递 autograd 元信息,DistAutogradContext 代表一个分布式autograd 相关信息,DistAuto…