使用GPU支持训练模型¶
使用GPU进行训练可以显著加速基础算法,对于文本和视觉模型来说,没有GPU的训练速度慢得不可行。 GPU训练需要CUDA工具包。请参考官方文档获取安装说明。
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': {},
'VW': {}}
为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
并按照官方指南中的说明从源代码安装。要使它与AutoGluon一起工作,还需要安装Python接口部分。
高级资源分配¶
大多数情况下,您只需要在预测器的fit
级别设置num_cpus
和num_gpus
来控制您授予TabularPredictor的总资源。
但是,如果您想要更详细的控制,我们提供以下选项。
ag_args_ensemble: ag_args_fit: { RESOURCES }
允许你控制授予袋装模型的总资源。
如果使用并行折叠策略,将分别计算各个基础模型的资源。
此值需要小于或等于授予TabularPredictor的总资源
如果未启用袋装模型,则此参数将被忽略。
ag_args_fit: { RESOURCES }
允许你控制授予单个基础模型的总资源。
这个值需要 <= 授予 TabularPredictor 的总资源,并且如果适用的话,<= 授予 bagged 模型的总资源。
作为一个例子,考虑以下场景
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,并且我们可以根据bagged级别的资源并行训练两个折叠 -> 对于bagged模型需要8个CPU和1个GPU -> 当两个试验并行运行时需要16个CPU和2个GPU。
因此,我们将总共使用16个CPU和2个GPU,并且有两个并行运行的bagged模型试验,每个试验并行运行两个折叠 -> 4个模型并行训练。