使用 GPU 支持训练模型¶
使用 GPU 进行训练可以显著加速基础算法,对于没有 GPU 训练速度非常慢的文本和视觉模型来说,GPU 是必需的。GPU 训练需要 CUDA toolkit。安装说明请参考官方文档。
predictor = TabularPredictor(label=label).fit(
train_data,
num_gpus=1, # Grant 1 gpu for the entire Tabular Predictor
)
要仅在特定模型上启用 GPU 加速,可以将相同的参数传递给模型的 hyperparameters
hyperparameters = {
'GBM': [
{'ag_args_fit': {'num_gpus': 0}}, # Train with CPU
{'ag_args_fit': {'num_gpus': 1}} # Train with GPU. This amount needs to be <= total num_gpus granted to TabularPredictor
]
}
predictor = TabularPredictor(label=label).fit(
train_data,
num_gpus=1,
hyperparameters=hyperparameters,
)
多模态¶
在 多模态数据表:表格、文本和图像 教程中,我们介绍了如何训练一个可以利用表格、文本和图像的集成模型。如果可用的 GPU VRAM 不足以外理默认模型,或者需要加速测试,可以使用不同的后端
常规配置的获取方式如下
from autogluon.tabular.configs.hyperparameter_configs import get_hyperparameter_config
hyperparameters = get_hyperparameter_config('multimodal')
hyperparameters
{'NN_TORCH': {},
'GBM': [{},
{'extra_trees': True, 'ag_args': {'name_suffix': 'XT'}},
{'learning_rate': 0.03,
'num_leaves': 128,
'feature_fraction': 0.9,
'min_data_in_leaf': 3,
'ag_args': {'name_suffix': 'Large',
'priority': 0,
'hyperparameter_tune_kwargs': None}}],
'CAT': {},
'XGB': {},
'AG_AUTOMM': {}}
为 LightGBM 启用 GPU¶
LightGBM 的默认安装不支持 GPU 训练,但是可以通过特殊安装来启用 GPU 支持。如果设置了 num_gpus
,将显示以下警告。
Warning: GPU mode might not be installed for LightGBM, GPU training raised an exception. Falling back to CPU training...Refer to LightGBM GPU documentation: https://github.com/Microsoft/LightGBM/tree/master/python-package#build-gpu-versionOne possible method is: pip uninstall lightgbm -y pip install lightgbm --install-option=--gpu
如果建议的命令不起作用,请卸载现有的 lightgbm pip uninstall -y lightgbm
,并按照官方指南中的说明从源代码安装。可选的安装 Python 接口部分也是使其与 AutoGluon 配合工作所必需的。
高级资源分配¶
大多数情况下,您只需在预测器 fit
级别设置 num_cpus
和 num_gpus
来控制分配给 TabularPredictor 的总资源。但是,如果您想要更详细的控制,我们提供以下选项。
ag_args_ensemble: ag_args_fit: { RESOURCES }
允许您控制分配给一个袋装模型的总资源。如果使用并行折叠策略,则会分别计算每个基础模型的资源。该值必须 <= 分配给 TabularPredictor 的总资源。如果未启用袋装模型,将忽略此参数。
ag_args_fit: { RESOURCES }
允许您控制分配给单个基础模型的总资源。该值必须 <= 分配给 TabularPredictor 的总资源,并且如果适用,必须 <= 分配给袋装模型的总资源。
举个例子,考虑以下场景
predictor.fit(
num_cpus=32,
num_gpus=4,
hyperparameters={
'NN_TORCH': {},
},
num_bag_folds=2,
ag_args_ensemble={
'ag_args_fit': {
'num_cpus': 10,
'num_gpus': 2,
}
},
ag_args_fit={
'num_cpus': 4,
'num_gpus': 0.5,
}
hyperparameter_tune_kwargs={
'searcher': 'random',
'scheduler': 'local',
'num_trials': 2
}
)
我们训练 2 个 HPO 试验,同时并行训练 2 个折叠。分配给 TabularPredictor 的总资源是 32 个 CPU 和 4 个 GPU。
对于一个袋装模型,我们分配 10 个 CPU 和 2 个 GPU。这意味着我们将并行运行两个 HPO 试验,每个试验分配 10 个 CPU 和 2 个 GPU -> 总共 20 个 CPU 和 4 个 GPU。
我们还指定对于单个基础模型,我们想要 4 个 CPU 和 0.5 个 GPU,并且可以根据袋装级别的资源并行训练两个折叠 -> 袋装模型需要 8 个 CPU 和 1 个 GPU -> 当两个试验并行运行时,总共需要 16 个 CPU 和 2 个 GPU。
因此,我们将总共使用 16 个 CPU 和 2 个 GPU,并并行运行两个袋装模型的试验,每个试验并行运行两个折叠 -> 总共 4 个模型并行训练。