GPU 加速 #
GPU 加速原理 #
LightGBM 支持 GPU 加速训练,可以显著提升训练速度:
text
┌─────────────────────────────────────────────────────────────┐
│ GPU 加速原理 │
├─────────────────────────────────────────────────────────────┤
│ │
│ CPU 训练: │
│ - 串行计算直方图 │
│ - 单线程处理特征 │
│ │
│ GPU 训练: │
│ - 并行计算直方图 │
│ - 数千核心同时处理 │
│ - 批量处理特征 │
│ │
│ 加速效果: │
│ - 小数据集: 2-5x │
│ - 中等数据集: 5-20x │
│ - 大数据集: 10-50x │
│ │
└─────────────────────────────────────────────────────────────┘
GPU 环境配置 #
安装 GPU 版本 #
bash
pip install lightgbm --install-option=--gpu
验证 GPU 支持 #
python
import lightgbm as lgb
print(f"LightGBM 版本: {lgb.__version__}")
params = {'device': 'gpu', 'verbose': -1}
try:
data = lgb.Dataset([[1, 2], [3, 4]], label=[0, 1])
lgb.train(params, data, num_boost_round=1)
print("GPU 支持正常")
except Exception as e:
print(f"GPU 不支持: {e}")
GPU 参数配置 #
基本配置 #
python
params = {
'objective': 'binary',
'metric': 'auc',
'device': 'gpu',
'gpu_platform_id': 0,
'gpu_device_id': 0,
'verbose': -1
}
参数说明 #
| 参数 | 说明 | 默认值 |
|---|---|---|
| device | 设备类型 | cpu |
| gpu_platform_id | GPU 平台 ID | 0 |
| gpu_device_id | GPU 设备 ID | 0 |
| gpu_use_dp | 是否使用双精度 | False |
| num_gpu | GPU 数量 | 1 |
性能对比 #
python
import lightgbm as lgb
import numpy as np
import time
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=100000, n_features=100, random_state=42)
print("CPU 训练:")
params_cpu = {
'objective': 'binary',
'metric': 'auc',
'device': 'cpu',
'num_threads': 4,
'verbose': -1
}
train_data = lgb.Dataset(X, label=y)
start = time.time()
model_cpu = lgb.train(params_cpu, train_data, num_boost_round=100)
cpu_time = time.time() - start
print(f"训练时间: {cpu_time:.2f}s")
print("\nGPU 训练:")
params_gpu = {
'objective': 'binary',
'metric': 'auc',
'device': 'gpu',
'verbose': -1
}
start = time.time()
model_gpu = lgb.train(params_gpu, train_data, num_boost_round=100)
gpu_time = time.time() - start
print(f"训练时间: {gpu_time:.2f}s")
print(f"\n加速比: {cpu_time / gpu_time:.2f}x")
最佳实践 #
- 数据量要求:GPU 适合大数据集,小数据集可能更慢
- max_bin 设置:GPU 版本建议设置较小的 max_bin
- 内存管理:注意 GPU 内存限制
- 精度控制:根据需要选择单精度或双精度
下一步 #
现在你已经掌握了 LightGBM 的 GPU 加速,接下来学习 二分类问题,开始实战案例学习!
最后更新:2026-04-04