随笔分类 - 011_分布式机器学习
分布式机器学习
摘要:上文我们介绍了引擎如何获得后向计算图的依赖,本文我们就接着看看引擎如何依据这些依赖进行后向传播。
阅读全文
摘要:上文已经分析了如何启动/接受反向传播,如何进入分布式autograd 引擎,本文和下文就看看如何分布式引擎如何运作。通过本文的学习,读者可以对 dist.autograd 引擎基本静态架构和总体执行逻辑有所了解。
阅读全文
摘要:上文我们看到了AutogradMetadata,DistAutogradContainer 和 DistAutogradContext 等一系列基础类。我们知道了分布式autograd如何基于RPC进行传递,如何在节点之间交互,节点如何区分维护这些Session。本文继续分析,主要目的是看看反向传播如何切入到引擎之中。
阅读全文
摘要:我们已经知道 dist.autograd 如何发送和接受消息,本文再来看看如何其他支撑部分,就是如何把发送接受两个动作协调起来,如何确定每个发送/接受节点,如何确定每一个消息交互Session。
阅读全文
摘要:前文我们给出了分布式autograd的设计思路,本文开始,我们进行具体源码分析。因为无论是前向传播还是反向传播,都需要依赖 RPC 来完成,所以我们先看看封装于 RPC 之上的一些基本功能,比如初始化,代理(RPC 相关功能都是基于代理完成),消息接受,发送等等。
阅读全文
摘要:本文以几篇PyTorch官方文档为基础来了解分布式 autograd 的设计和内部结构,在翻译时并没有逐字翻译,其中加入了自己的部分理解。分布式 autograd 后续文章的分析也会基于本文进行。
阅读全文
摘要:上文我们已经对Reduer的前向传播进行了分析,本文就接着来看看如何进行反向传播。
阅读全文
摘要:前文已经对Reducer如何构建和几个重要场景做了介绍,本文就来分析 Reducer 如何实现前向传播。
阅读全文
摘要:因为前文已经围绕Reducer相关的各种成员变量做了相关分析,所以本文和下文开始做动态逻辑分析,目的是:把前面几篇文章串联起来。
阅读全文
摘要:通过上文分析,我们已经知道了 DDP 的基本架构和如何初始化,本文就看看其核心 Reducer 的静态架构。
阅读全文
摘要:前文我们对DDP的一些支撑模块已经做了介绍,这为本文做了必要的铺垫,本文就开始介绍Python世界代码和C++世界的初始化部分。下文介绍C++世界的核心代码。
阅读全文
摘要:本文是PyTorch分布式的第8篇,工欲善其事,必先利其器,为了更好的分析代码,我们先来学习一下相关论文。
阅读全文
摘要:本文是 PyTorch 分布式系列的第七篇, 介绍 DistributedDataParallel 所依赖的进程组概念。
阅读全文
摘要:本文是 PyTorch 分布式系列的第六篇, 介绍 DistributedDataParallel 所依赖的初始化方法和Store这两个概念。
阅读全文
摘要:本文是 PyTorch 分布式系列的第五篇,以几篇官方文档的翻译为基础,带领大家进入DistributedDataParallel,在后续会用5~6篇左右做深入分析。
阅读全文
摘要:本文以 PyTorch 官方文档 https://pytorch.org/tutorials/intermediate/dist_tuto.html 为基础,对如何编写分布式进行了介绍,并且加上了自己的理解。
阅读全文
摘要:本文是 PyTorch 分布式的第三篇,继续上文,介绍 DataPrallel 的并行操作和反向传播。
阅读全文
摘要:从本文开始,我们介绍 PyTorch 的数据并行,本文是第一篇,介绍 DataPrallel,因为字数太多(1万两千多字,因此拆分成两篇文章发布)。
阅读全文
摘要:在 PyTorch DataParallel 训练过程中,其会在多个GPU之上复制模型副本,然后才开始训练。笔者在分析过程中,发现如果不把一些GPU相关基础知识整理出来,很难理解DataParallel的这个复制模型的过程,遂有此文。
阅读全文
摘要:本文主要在对PyTorch官方文档的翻译之上加入了自己的理解,希望给大家一个PyTorch分布式的历史脉络和基本概念,有兴趣的朋友可以仔细研究一下历史,看看一个机器学习系统如何一步一步进入分布式世界 / 完善其功能。
阅读全文