20分钟
并行学习
lightgbm
已经提供了以下并行学习算法: 并行算法开启方式数据并行tree_learner='data'特征并行tree_learner='feature'投票并行tree_learner='voting'tree_learner
默认为'serial'
。 表示串行学习。 这些并行算法适用于不同场景: 样本数量较小样本数量巨大特征数量较小特征并行数据并行特征数量巨大特征并行投票并行- 构建并行版本:
默认的并行版本基于
socket
的并行学习,如果需要基于MPI
的并行版本,则需要手动编译- 首先收集所有想要运行并行学习的机器的
IP
,并指定一个TCP
端口号(要求在这些机器上,这些端口没有被防火墙屏蔽掉)。 然后将这些IP
和端口写入到文件中(假设文件名为ip.txt
): ip1 portip2 port 其中要求:- 数量必须和
num_machines
或者num_machine
参数相等 - 必须包含
127.0.0.1
(或者包含localhost
对应的其它ip
),它代表本地 port
必须和local_listen_port
或者local_port
参数相等
- 数量必须和
- 然后在配置文件中编译以下参数: tree_learner= 你的并行算法num_machines= 并行计算的机器的数量machine_list_file=ip.txt #要求每个并行计算的机器占一行local_listen_port=port
- 然后将数据文件、可执行文件、配置文件、以及
ip.txt
拷贝到所有并行学习的机器上。 - 在所有机器上运行以下命令:
windows
:lightgbm.exe config=配置文件
Linux
:./lightgbm config=配置文件
- 首先收集所有想要运行并行学习的机器的
3. 并行学习的注意事项:
- 当前
Python
版本不支持并行,必须采用lightgbm
二进制的方式。 - 在执行推断时,要求数据的特征与训练时的特征完全一致
- 必须都包含
label
列。推断时,该列的数值不起作用,仅仅是个占位符。 - 如果有
header
,则列的先后顺序不重要。如果没有header
,则必须顺序也要保持相同。
- 必须都包含
学员评价