ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 并行学习指南 这是一篇 LightGBM 的并行学习教程. 点击 [快速入门](./Quick-Start.rst) 来学习怎样使用 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](./Features.rst#optimization-in-parallel-learning) 了解更多并行算法的细节. ## 构建并行版本 默认的并行版本支持基于 socket 的并行学习. 如果你想构建基于 MPI 的并行版本, 请参考 [安装指南](./Installation-Guide.rst#build-mpi-version). ## 准备工作 ### 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](https://blogs.technet.microsoft.com/windowshpc/2015/02/02/how-to-compile-and-run-a-simple-ms-mpi-program/). ## 运行并行学习 ### 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` 在 [准备工作](#preparation) 生成. `local_listen_port=12345`, `12345` 在 [准备工作](#preparation) 分配. 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: ``` mpiexec.exe /machinefile mlist.txt lightgbm.exe config=your_config_file ``` Linux: ``` mpiexec --machinefile mlist.txt ./lightgbm config=your_config_file ``` ### 例子 * [A simple parallel example](https://github.com/Microsoft/lightgbm/tree/master/examples/parallel_learning)