并行学习指南

这是一篇 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), 如下所示:

  1. machine1_ip 12345
  2. machine2_ip 12345

MPI 版本

它需要收集所有想要运行并行学习机器的 IP (或 hostname) . 然后把这些IP写入一个文件中 (例如 mlist.txt) 如下所示:

  1. machine1_ip
  2. machine2_ip

Note: 对于 windows 用户, 需要安装 “smpd” 来开启 MPI 服务. 更多细节点击 here.

运行并行学习

Socket 版本

  1. 在配置文件中编辑以下参数:

    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准备工作 分配.

  2. 拷贝数据文件, 可执行文件, 配置文件和 mlist.txt 到所有机器.

  3. 在所有机器上运行以下命令, 你需要更改 your_config_file 为真实配置文件.

    Windows: lightgbm.exe config=your_config_file

    Linux: ./lightgbm config=your_config_file

MPI 版本

  1. 在配置中编辑以下参数:

    tree_learner=your_parallel_algorithm, 在这里编辑 your_parallel_algorithm (e.g. feature/data) .

    num_machines=your_num_machines, 在这里编辑 your_num_machines (e.g. 4) .

  2. 拷贝数据文件, 可执行文件, 配置文件和 mlist.txt 到所有机器.

    Note: MPI 需要运行在 所有机器的相同路径上.

  3. 在机器上运行以下命令 (不需要运行所有机器), 需要更改 your_config_file 为真实的配置文件.

    Windows:

    1. mpiexec.exe /machinefile mlist.txt lightgbm.exe config=your_config_file

    Linux:

    1. mpiexec --machinefile mlist.txt ./lightgbm config=your_config_file

例子