并行学习指南
这是一篇 LightGBM 的并行学习教程.
点击 快速入门 来学习怎样使用 LightGBM.
选择合适的并行算法
LightGBM 现已提供了以下并行学习算法.
Parallel Algorithm | How to Use |
---|---|
Data parallel | tree_learner=data |
Feature parallel | tree_learner=feature |
Voting parallel | tree_learner=voting |
这些算法适用于不同场景,如下表所示:
#data is small | #data is large | |
---|---|---|
#feature is small | Feature Parallel | Data Parallel |
#feature is large | Feature Parallel | Voting Parallel |
在 optimization in parallel learning 了解更多并行算法的细节.
构建并行版本
默认的并行版本支持基于 socket 的并行学习.
如果你想构建基于 MPI 的并行版本, 请参考 安装指南.
准备工作
Socket 版本
它需要收集所有想要运行并行学习的机器的所有 IP 并且指定一个 TCP 端口号 (假设是 12345 ) , 更改防火墙使得这个端口可以被访问 (12345). 然后把这些 IP 和端口写入一个文件中 (假设是 mlist.txt
), 如下所示:
machine1_ip 12345
machine2_ip 12345
MPI 版本
它需要收集所有想要运行并行学习机器的 IP (或 hostname) . 然后把这些IP写入一个文件中 (例如 mlist.txt
) 如下所示:
machine1_ip
machine2_ip
Note: 对于 windows 用户, 需要安装 “smpd” 来开启 MPI 服务. 更多细节点击 here.
运行并行学习
Socket 版本
在配置文件中编辑以下参数:
tree_learner=your_parallel_algorithm
, 在这里编辑your_parallel_algorithm
(e.g. feature/data) .num_machines=your_num_machines
, 在这里编辑your_num_machines
(e.g. 4) .machine_list_file=mlist.txt
,mlist.txt
在 准备工作 生成.local_listen_port=12345
,12345
在 准备工作 分配.拷贝数据文件, 可执行文件, 配置文件和
mlist.txt
到所有机器.在所有机器上运行以下命令, 你需要更改
your_config_file
为真实配置文件.Windows:
lightgbm.exe config=your_config_file
Linux:
./lightgbm config=your_config_file
MPI 版本
在配置中编辑以下参数:
tree_learner=your_parallel_algorithm
, 在这里编辑your_parallel_algorithm
(e.g. feature/data) .num_machines=your_num_machines
, 在这里编辑your_num_machines
(e.g. 4) .拷贝数据文件, 可执行文件, 配置文件和
mlist.txt
到所有机器.Note: MPI 需要运行在 所有机器的相同路径上.
在机器上运行以下命令 (不需要运行所有机器), 需要更改
your_config_file
为真实的配置文件.Windows:
mpiexec.exe /machinefile mlist.txt lightgbm.exe config=your_config_file
Linux:
mpiexec --machinefile mlist.txt ./lightgbm config=your_config_file