一 LightGBM网络组网步骤

LightGBM并行计算中,计算节点之间采用静态互连网络,即程序执行期间,节点与节点之间的连接保持不变。LightGBM网络的建立需要事先定义所有worker的ip以及port,组网的过程通过Network::Init()完成,主要步骤如下:

1.1 网络初始化入口

建立网络连接主要的逻辑在new Linkers(config)中。

1.2 LightGBM中网络初始化过程

初始化过程主要是建立Linkers对象:

网络初始化过程中,首先从配置中读取当前worker的端口号。然后解析machine list文件,获取所有worker的ip列表以及port列表。接下来需要对Bruck算法及Recursive Halving算法计算出当前worker需要连接到其他哪些worker。

从2.12可以看出BruckMap不要求workers数量为2的k次方,因此对于任意数量的workers,都可以按以上步骤计算当前节点需要在第k步通信时发送数据给哪个worker以及接收哪个worker发送过来的数据。

从2.6.1可知,Recursive Halving算法要求workers数量为2k,但当workers数量非2k时,可以通过2.6.2介绍的方法进行解决这一问题。以上construct步骤主要是计算哪些worker需要参于到Recursive Halving过程中,同时计算第k次通信配对的worker,以及第k次通信发送、接收的数据块大小及位置(此处的值只是一个基数,具体位置及大小在实际的执行过程中根据实际数据块的大小计算)

计算完需要连接的worker之后,Construct将依次连接到需要连接的worker上,并等待被连接的worker的连接。连接与监听过程分别在两个线程中执行。自此,LightGBM静态互连网络的建立已经完成。

二 LightGBM中Allreduce、ReduceScatter、Allgather实现解析

LightGBM的并行训练过程中使用了大量的数值归约操作,如随机种子的同步用到了Allreduce、对数据进行分桶时计算bin_mapper用到了Allgather、计算最佳分裂时用到了ReduceScatter等,以下分别对这三种归约操作的代码进行解析。

2.1 Allgather代码解析

LightGBM中Allgather的实现采用Bruck Algorithm算法:

以上的操作经过log(N)次的通信能够完成Allgather。每一次通信数据块的大小为*send_size。可以理解,这种方式适用于N不太大并且数据块大小不太大的情形。

2.2 ReduceScatter代码解析

以上仅介绍非2k个节点的情形,workers为时执行过程仅需要第二个for循环。

2.3 Allreduce代码解析

Allreduce根据数据块的大小的不同,分别采用两种方式进行操作。在需要归约的数据块较小时采用Allgather加上一个reducer操作完成。针对数据块较大的情形则采用另一种方式:ReduceScatter + Allgather操作。

2.4 一个调用Allreduce的例子

以下介绍一个使用Allreduce的例子,在训练之前以label的平均值作为初始值:

因为init_score的size小,因此先通过Allgather收集所有worker上的init_score,然后在本地进行reducer操作,此处的reducer是做sum。

[机器学习] LightGBM并行计算算子具体实现相关推荐

  1. [机器学习] 常用并行计算算子原理

    一.概述 在大规模机器学习中,需要应对巨大的训练数据及计算量.当单机遇到性能瓶颈时需要通过多台机器并行训练来弥补计算能力与内存的不足.采用并行方式进行机器学习时,常常分为模型并行与数据并行.模型并行是 ...

  2. SystemML大规模机器学习,优化算子融合方案的研究

    SystemML大规模机器学习,优化算子融合方案的研究 摘要 许多大规模机器学习(ML)系统允许通过线性代数程序指定定制的ML算法,然后自动生成有效的执行计划.在这种情况下,优化的机会融合基本算子的熔 ...

  3. [机器学习] LightGBM on Spark (MMLSpark) 使用完全手册

    一 Spark上训练模型优势与劣势 (1)机器学习算法一般都有很多个步骤迭代计算的过程,机器学习的计算需要在多次迭代后获得足够小的误差或者足够收敛才会停止,迭代时如果使用一般的Hadoop分布式计算框 ...

  4. 拉普拉斯算子_图机器学习图拉普拉斯算子的离散正则性,141页ppt,Discrete regularity graph Laplacians...

    本文由专知微信公众号整理, 图Laplacian的谱在数据科学中起着重要的作用,是聚类和降维算法的基础,如光谱聚类.Laplacian特征图.扩散图等.在这堂课中,我们将介绍图泊松方程的新的Lipsc ...

  5. python - 机器学习lightgbm相关实践

    相关文章: R+python︱XGBoost极端梯度上升以及forecastxgb(预测)+xgboost(回归)双案例解读 python︱sklearn一些小技巧的记录(训练集划分/pipellin ...

  6. 龙珠训练营机器学习-LightGBM学习笔记

    本学习笔记为阿里云天池龙珠计划机器学习训练营的学习内容,学习链接为:点我跳转 感谢各位的阅读 学习知识点概要 学习内容 1.LightGBM的介绍与应用 1.1 LightGBM的介绍 1.1.1 L ...

  7. [机器学习]LightGBM分布式使用完全手册

    一 LightGBM分布式支持说明 使用源码编译过的二进制lightgbm来运行分布式 分布式worker之间通信可以使用Socket与MPI方式(MPI通信更快,建议使用) 二 LightGBM分布 ...

  8. 机器学习——LightGBM

    基础概念 LigthGBM是boosting集合模型中的新进成员,它和xgboost一样是对GBDT的高效实现,很多方面会比xgboost表现的更为优秀.原理上它和GBDT及xgboot类似,都采用损 ...

  9. 机器学习实战 | LightGBM建模应用详解

    作者:韩信子@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/41 本文地址:https://www.showmeai.tech/article-d ...

最新文章

  1. IT阅读——关于“业务”
  2. PyTorch 51.BatchNorm和Dropout层的不协调现象
  3. puppet自动化运维之资源关系
  4. Flask 自定义过滤器多个参数传入
  5. RuoYi(分离版) 使用代码生成器添加子模块(idea版)
  6. scrapy需要的xpath知识点
  7. Java关于Properties用法的总结(一)
  8. [蓝桥杯2017决赛]数位和-模拟(水题)
  9. Java8 Striped64 和 LongAdder
  10. cas后端返回html直接跳转,CAS验证成功后不能跳转到登陆成功的主页面解决办法...
  11. resnet50能用cpu跑吗_2020年12月1日更新。性价比最高入门游戏CPU--intel 10100F装机配置推荐。...
  12. Apache 配置两个域名匹配的文件夹和配置多个Web站点
  13. Impala与Hive的关系
  14. 又见n/i下取整+分块
  15. Guava之Joiner笔记
  16. 天津大学财务报表分析答案合集
  17. 在移动硬盘中,安装CentOS 7双系统
  18. 方差分析及其在Excel、SPSS中的应用
  19. 关于内外网数据同步解决方案
  20. xcode提交app时出现icon缺少167.png图片的问题

热门文章

  1. 实现一个简单的Tomcat
  2. [HNOI2010]BOUNCE 弹飞绵羊
  3. 各种各种的公共工具类
  4. 为什么函数式编程很重要:不一样的白板图
  5. C#连接池的详细分析(转)
  6. Docker上安装jenkins让持续集成飞
  7. java 的分类_java的基本类型(转)
  8. Java并发包常见异常_Java并发包1--线程的状态及常用方法
  9. iis php5.4配置_IIS 8+PHP5.4+SQL server2012配置
  10. freopen()的重定向打开或者关闭