新書推薦:
《
史铁生:听风八百遍,才知是人间(2)
》
售價:HK$
55.8
《
量子网络的构建与应用
》
售價:HK$
109.8
《
拍电影的热知识:126部影片里的创作技巧(全彩插图版)
》
售價:HK$
109.8
《
大唐名城:长安风华冠天下
》
售價:HK$
87.4
《
情绪传染(当代西方社会心理学名著译丛)
》
售價:HK$
88.5
《
中国年画 1950-1990 THE NEW CHINA: NEW YEAR PICTURE 英文版
》
售價:HK$
236.0
《
革命与反革命:社会文化视野下的民国政治(近世中国丛书)
》
售價:HK$
93.2
《
画楼:《北洋画报》忆旧(年轮丛书)
》
售價:HK$
337.5
|
內容簡介: |
本书主要讲解分布式机器学习算法和开源框架,读者既可以从宏观的设计上了解分布式机器学习的概念和理论,也可以深入核心技术的细节设计中,对分布式机器学习形成深刻而直观的认识,做到学以致用。 本书共分为5篇,第1篇是分布式基础,首先介绍了分布式机器学习的概念、基础设施,以及机器学习并行化技术、框架和软件系统,然后对集合通信和参数服务器PS-Lite进行了介绍。第2篇是数据并行,以PyTorch和Horovod为主对数据并行进行分析,读者可以了解在具体工程领域内实现数据并行有哪些挑战和解决方案。第3篇是流水线并行,讲解了除模型划分之外,还通过引入额外的流水线来提高效率,以GPipe / PyTorch / PipeDream为例进行分析。第4篇是模型并行,首先对NVIDIA Megatron进行分析,讲解如何进行层内分割模型并行,然后讲解PyTorch 如何支持模型并行,最后介绍分布式优化器。第5篇是TensorFlow分布式,前面几篇以PyTorch为纲,结合其他框架/库来穿插完成,本篇带领大家进入TensorFlow分布式领域。
|
關於作者: |
柳浩,网名“罗西的思考”,浙江大学硕士。曾就职于多个世界500强企业,主导过多个大型项目,现就职于某新能源车企。技术栈广博,有丰富的各种大型软件开发和系统架构经验,对机器学习框架、微服务框架、大数据引擎、NoSQL、消息队列、分布式追踪系统、移动开发方案和源码有着深刻的理解和认识。目前对机器学习、分布式系统、可观测系统、可靠性设计等方面有浓厚的研究兴趣。
|
目錄:
|
目 录第1篇 分布式基础第1章 分布式机器学习21.1 机器学习概念21.2 机器学习的特点31.3 分布式训练的必要性31.4 分布式机器学习研究领域61.4.1 分布式机器学习的目标61.4.2 分布式机器学习的分类61.5 从模型角度看如何并行81.5.1 并行方式81.5.2 数据并行91.5.3 模型并行101.5.4 流水线并行111.5.5 比对121.6 从训练并发角度看如何并行121.6.1 参数分布和通信拓扑131.6.2 模型一致性和通信模式141.6.3 训练分布191.7 分布式机器学习编程接口191.7.1 手动同步更新201.7.2 指定任务和位置201.7.3 猴子补丁优化器211.7.4 Python作用域211.8 PyTorch分布式221.8.1 历史脉络221.8.2 基本概念231.9 总结24第2章 集合通信262.1 通信模式262.2 点对点通信262.3 集合通信282.3.1 Broadcast292.3.2 Scatter292.3.3 Gather302.3.4 All-Gather302.3.5 All-to-All302.3.6 Reduce312.3.7 All-Reduce312.3.8 Reduce-Scatter322.4 MPI_AllReduce322.5 Ring All-Reduce332.5.1 特点342.5.2 策略342.5.3 结构352.5.4 Reduce-Scatter352.5.5 All-Gather382.5.6 通信性能402.5.7 区别40第3章 参数服务器之PS-Lite413.1 参数服务器413.1.1 概念413.1.2 历史渊源423.1.3 问题433.2 基础模块Postoffice443.2.1 基本逻辑443.2.2 系统启动453.2.3 功能实现473.3 通信模块Van513.3.1 功能概述513.3.2 定义513.3.3 初始化523.3.4 接收消息533.4 代理人Customer593.4.1 基本思路593.4.2 基础类613.4.3 Customer623.4.4 功能函数663.5 应用节点实现673.5.1 SimpleApp673.5.2 KVServer683.5.3 KVWorker683.5.4 总结70第2篇 数据并行73第4章 PyTorch DataParallel744.1 综述744.2 示例764.3 定义774.4 前向传播784.5 计算损失874.6 反向传播884.7 总结91第5章 PyTorch DDP的基础架构935.1 DDP总述935.1.1 DDP的运行逻辑935.1.2 DDP的使用945.2 设计理念975.2.1 系统设计975.2.2 梯度归约985.2.3 实施995.3 基础概念1015.3.1 初始化方法1015.3.2 Store类1025.3.3 TCPStore类1045.3.4 进程组概念1075.3.5 构建进程组1095.4 架构和初始化1115.4.1 架构与迭代流程1115.4.2 初始化DDP114第6章 PyTorch DDP的动态逻辑1226.1 Reducer类1226.1.1 调用Reducer类1226.1.2 定义Reducer类1226.1.3 Bucket类1246.1.4 BucketReplica类1266.1.5 查询数据结构1286.1.6 梯度累积相关成员变量1316.1.7 初始化1356.1.8 静态图1416.1.9 Join操作1426.2 前向/反向传播1436.2.1 前向传播1436.2.2 反向传播149第7章 Horovod1617.1 从使用者角度切入1617.1.1 机制概述1617.1.2 示例代码1627.1.3 运行逻辑1637.2 horovodrun1677.2.1 入口点1677.2.2 运行训练Job1687.2.3 Gloo实现1697.2.4 MPI实现1747.2.5 总结1747.3 网络基础和Driver1747.3.1 总体架构1757.3.2 基础网络服务1767.3.3 Driver服务1777.3.4 Task服务1787.3.5 总结1807.4 DistributedOptimizer1817.4.1 问题点1817.4.2 解决思路1827.4.3 TensorFlow 1.x1837.5 融合框架1917.5.1 总体架构1917.5.2 算子类体系1927.5.3 后台线程1947.5.4 执行线程1957.5.5 总结1967.6 后台线程架构1987.6.1 设计要点1987.6.2 总体代码2017.6.3 业务逻辑202第3篇 流水线并行第8章 GPipe2108.1 流水线基本实现2108.1.1 流水线并行2108.1.2 GPipe概述2118.1.3 计算内存2138.1.4 计算算力2138.1.5 自动并行2148.2 梯度累积2188.2.1 基本概念2188.2.2 PyTorch实现2198.2.3 GPipe实现2238.3 Checkpointing2258.3.1 问题2258.3.2 解决方案2258.3.3 OpenAI2268.3.4 PyTorch实现2288.3.5 GPipe实现240第9章 PyTorch流水线并行2439.1 如何划分模型2439.1.1 使用方法2449.1.2 自动平衡2459.1.3 模型划分2479.2 切分数据和Runtime系统2499.2.1 分发小批量2499.2.2 Runtime2509.3 前向计算2559.3.1 设计2559.3.2 执行顺序2609.4 计算依赖2659.4.1 反向传播依赖2669.4.2 前向传播依赖2709.5 并行计算2749.5.1 总体架构2749.5.2 并行复制和计算2769.5.3 重计算278第10章 PipeDream之基础架构28010.1 总体思路28010.1.1 目前问题28010.1.2 1F1B策略概述28210.1.3 流水线方案28310.2 profile阶段28510.3 计算分区阶段28810.3.1 构建图28810.3.2 构建反链28910.3.3 计算分区29510.3.4 分析分区30210.3.5 输出30510.4 转换模型阶段30510.4.1 分离子图30610.4.2 转换模型30710.4.3 融合模型308第11章 PipeDream之动态逻辑31211.1 Runtime引擎31211.1.1 功能31211.1.2 总体逻辑31311.1.3 加载模型31411.1.4 实现31411.2 通信模块32311.2.1 类定义32411.2.2 构建32511.2.3 发送和接收33111.3 1F1B策略33311.3.1 设计思路33311.3.2 权重问题33511.3.3 实现340第4篇 模型并行第12章 Megatron34612.1 设计思路34612.1.1 背景34612.1.2 张量模型并行34812.1.3 并行配置35412.1.4 结论35412.2 模型并行实现35412.2.1 并行MLP35512.2.2 ColumnParallelLinear35812.2.3 RowParallelLinear36312.2.4 总结36712.3 如何设置各种并行36712.3.1 初始化36812.3.2 起始状态37112.3.3 设置张量模型并行37312.3.4 设置流水线并行37512.3.5 设置数据并行37812.3.6 模型并行组38012.3.7 如何把模型分块到GPU上38112.4 Pipedream的流水线刷新383第13章 PyTorch如何实现模型并行38713.1 PyTorch模型并行38713.1.1 PyTorch特点38713.1.2 示例38713.2 分布式自动求导之设计38913.2.1 分布式RPC框架38913.2.2 自动求导记录39013.2.3 分布式自动求导上下文39113.2.4 分布式反向传播算法39213.2.5 分布式优化器39613.3 RPC基础39613.3.1 RPC代理39613.3.2 发送逻辑39613.3.3 接收逻辑39813.4 上下文相关39913.4.1 设计脉络40013.4.2 AutogradMetadata40113.4.3 DistAutogradContainer40313.4.4 DistAutogradContext40313.4.5 前向传播交互过程40813.5 如何切入引擎41113.5.1 反向传播41113.5.2 SendRpcBackward41513.5.3 总结41713.6 自动求导引擎41713.6.1 原生引擎41713.6.2 分布式引擎41913.6.3 总体执行42113.6.4 验证节点和边42113.6.5 计算依赖42213.6.6 执行GraphTask42913.6.7 RPC调用闭环43313.6.8 DistAccumulateGradCapture-Hook43613.6.9 等待完成442第14章 分布式优化器44314.1 原生优化器44314.2 DP的优化器44514.3 DDP的优化器44614.3.1 流程44614.3.2 优化器状态44614.4 Horovod的优化器44714.4.1 利用钩子同步梯度44814.4.2 利用step()函数同步梯度44914.5 模型并行的分布式问题45014.6 PyTorch分布式优化器45114.6.1 初始化45214.6.2 更新参数45314.7 PipeDream分布式优化器45514.7.1 如何确定优化参数45614.7.2 优化458第5篇 TensorFlow分布式第15章 分布式运行环境之静态架构46215.1 总体架构46215.1.1 集群角度46215.1.2 分布式角度46315.1.3 系统角度46515.1.4 图操作角度46715.1.5 通信角度46815.2 Server46915.2.1 逻辑概念46915.2.2 GrpcServer47115.3 Master的静态逻辑47415.3.1 总述47415.3.2 接口47415.3.3 LocalMaster47615.3.4 GrpcRemoteMaster47815.3.5 GrpcMasterService47815.3.6 业务实现Master类48015.4 Worker的静态逻辑48115.4.1 逻辑关系48115.4.2 GrpcRemoteWorker48315.4.3 GrpcWorkerService48315.4.4 Worker48715.4.5 GrpcWorker488第16章 分布式运行环境之动态逻辑48916.1 Session机制48916.1.1 概述
|
|