本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
XGBoost亚马逊算法 SageMaker
XGBoost
-
它可以很好地处理各种数据类型、关系和分布。
-
您可以微调的超参数种类。
XGBoost可用于回归、分类(二进制和多类)和排名问题。
您可以将新版本的XGBoost算法用作以下任一用途:
-
亚马逊的 SageMaker 内置算法。
-
在本地环境中运行训练脚本的框架。
与原始版本相比,此实现具有更小的内存占用、更好的日志记录、改进的超参数验证和更大的指标集。它提供了XGBoostestimator
在托管XGBoost环境中运行训练脚本的。的当前版本基于原始XGBoost版本 1.0、1.2、1.3、1.5 和 1.7。 SageMaker XGBoost
有关 Amazon SageMaker XGBoost 算法的更多信息,请参阅以下博客文章:
支持的版本
-
框架(开源)模式:1.2-1、1.2-2、1.3-1、1.5-1、1.7-1
-
算法模式:1.2-1、1.2-2、1.3-1、1.5-1、1.7-1
警告
由于需要计算容量,的 1.7-1 版本与 P2 GPU 实例系列中用于训练或推理 SageMaker XGBoost的实例不兼容。
重要
检索 SageMaker XGBoost图像时URI,请勿使用:latest
或:1
作为图像URI标签。您必须指定其中一个支持的版本才能选择包含要使用的本机XGBoost软件包版本的 SageMaker托管XGBoost容器。要查找迁移到 SageMakerXGBoost容器中的软件包版本,请参阅 Docker 注册表路径和示例代码。然后选择你的 Amazon Web Services 区域,然后导航到 XGBoost(算法)部分。
警告
XGBoost0.90 版本已被弃用。已停止支持 XGBoost 0.90 版的安全更新或错误修复。我们强烈建议您将该XGBoost版本升级到较新的版本之一。
注意
XGBoost不支持 v1.1。 SageMakerXGBoost当测试输入的特征少于输入中的训练数据时,1.1 运行预测的能力就会中LIBSVM断。此功能已在 XGBoost v1.2 中恢复。考虑使用 SageMaker XGBoost 1.2-2 或更高版本。
注意
你可以使用 XGBoost v1.0-1,但官方不支持它。
EC2XGBoost算法的实例推荐
SageMaker XGBoost支持CPU、GPU训练和推理。实例建议取决于训练和推理需求以及XGBoost算法版本。有关更多信息,请选择以下选项之一:
训练
该 SageMaker XGBoost算法支持CPU和GPU训练。
CPU训练
SageMaker XGBoost仅使用 1.0-1 或更早版本的列车。CPUs它是一种内存限制型(而不是计算限制型)算法。因此,通用计算实例(例如 M5)是比计算优化的实例(例如 C4)更适合的选择。此外,我们建议您在选定的实例中有足够的总内存来保存训练数据。它支持使用磁盘空间来处理不适合主存储器的数据。这是 libsvm 输入模式中提供的 out-of-core功能的结果。即便如此,将缓存文件写入磁盘也会减慢算法处理时间。
GPU训练
SageMaker XGBoost1.2-2 或更高版本支持GPU训练。尽管每个实例的成本更高,但GPUs训练速度更快,从而更具成本效益。
SageMaker XGBoost版本 1.2-2 或更高版本支持 P2、P3、G4dn 和 G5 实例系列。GPU
SageMaker XGBoost版本 1.7-1 或更高版本支持 P3、G4dn 和 G5 实例系列。GPU请注意,由于计算容量要求,1.7-1 或更高版本不支持 P2 实例系列。
要利用GPU培训,请执行以下操作:
-
将实例类型指定为其中一个GPU实例(例如 P3)
-
在现有XGBoost脚本
gpu_hist
中将tree_method
超参数设置为
分布式训练
SageMaker XGBoost分布式训练的支持CPU和GPU实例。
分布式CPU训练
要在多个实例上运行CPU训练,请将估计器的instance_count
参数设置为大于 1 的值。输入数据必须按照实例总数进行划分。
在实例之间划分输入数据
使用以下步骤划分输入数据:
-
将输入数据分解成较小的文件。文件数量至少应等于用于分布式训练的实例数。相比一个大文件,使用多个较小的文件还可以缩短训练作业的数据下载时间。
-
创建时 TrainingInput
,将分布参数设置为 ShardedByS3Key
。这样,如果训练作业中指定了 n 个实例,则每个实例将获得大约 S3 中文件数量的 1/ n。
分布式GPU训练
您可以对单实例GPU或多GPU实例使用分布式训练。
使用单GPU实例进行分布式训练
SageMaker XGBoost版本 1.2-2 到 1.3-1 仅支持单实例训练。GPU这意味着,即使您选择了多GPU实例,每个实例GPU也只能使用一个实例。
在以下情况下,您必须将输入数据除以实例总数:
-
你使用的是 1.2-2 到 1.3-1 的XGBoost版本。
-
您无需使用多GPU实例。
有关更多信息,请参阅 在实例之间划分输入数据。
注意
即使您选择多实例,1.2-2 到 1.3-1 版本也 SageMaker XGBoost只能GPU为每个实例使用一个实例。GPU
使用多GPU实例进行分布式训练
从 1.5-1 版本开始,使用 Dask SageMaker XGBoost 提供分布式GPU训练。
通过以下步骤使用 Dask 进行训练:
要么省略您的中的
distribution
参数,要TrainingInput么将其设置为。 FullyReplicated
定义超参数时,请将
use_dask_gpu_training
设置为"true"
。
重要
使用 Dask 进行分布式训练仅支持 CSV Parquet 输入格式。如果您使用其他数据格式,例如LIBSVM或PROTOBUF,则训练作业将失败。
对于 Parquet 数据,请确保按照字符串格式保存列名。列名使用其他数据类型的列将无法加载。
重要
使用 Dask 进行分布式训练不支持管道模式。如果指定了管道模式,则训练作业将失败。
使用 Dask 训练 SageMaker XGBoost时需要注意一些注意事项。请确保将数据拆分成较小的文件。Dask 将每个 Parquet 文件作为一个分区读取。每个人都有一个 Dask 工作人员。GPU因此,文件数应大于总数GPUs(实例数 x GPUs 每个实例的数量)。文件数量过大也会降低性能。有关更多信息,请参阅 Dask 最佳实践
输出中的变化
指定的tree_method
超参数决定了用于XGBoost训练的算法。树方法 approx
、hist
和 gpu_hist
都是近似方法,使用 Sketching 进行分位数计算。有关更多信息,请参阅XGBoost文档中的树方法
推理
SageMaker XGBoost支持CPU和用于推理的GPU实例。有关用于推理的实例类型的信息,请参阅 Amazon SageMaker ML 实例类型