View a markdown version of this page

使用亚马逊 AI 的 xgBoost 算法 SageMaker - 亚马逊 SageMaker AI

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用亚马逊 AI 的 xgBoost 算法 SageMaker

XGBoost (eXtreme Gradient Boosting) 是梯度提升树算法的一种流行且高效的开源实施。梯度提升是一种有监督学习算法,它尝试通过结合一组较简单模型的多个估计值来准确预测目标变量。XGBoost 算法在机器学习竞赛中表现出色,原因如下:

  • 它能够可靠地处理各种数据类型、关系和分布。

  • 您可以微调的超参数种类繁多。

您可以使用 XGBoost 来处理回归、分类(二元和多元)和排名问题。

您可以将新版本的 XGBoost 算法用作以下任一用途:

  • 亚马逊 A SageMaker I 的内置算法。

  • 在本地环境中运行训练脚本的框架。

与原始版本相比,此实施占用内存更少,并且具有更好的日志记录、改进的超参数验证以及一组更大的指标。它提供了一个 XGBoost estimator,用于在托管的 XGBoost 环境中运行训练脚本。当前版本的 SageMaker AI xgBoost 基于最初的 XGBoost 版本 1.0、1.2、1.3、1.5、1.7 和 3.0。

有关 Amazon A SageMaker I XGBoost 算法的更多信息,请参阅以下博客文章:

支持的版本

有关更多详细信息,请参阅我们的支持政策

  • 框架(开源)模式:1.2-1、1.2-2、1.3-1、1.5-1、1.7-1、3.0-5

  • 算法模式:1.2-1、1.2-2、1.3-1、1.5-1、1.7-1、3.0-5

警告

由于需要计算容量, SageMaker AI xgBoost 3.0-5 版本与 P3 实例系列中的 GPU 实例不兼容,用于训练或推理。

警告

由于软件包兼容, SageMaker AI XGBoost 3.0-5 版本不支持调试器。 SageMaker

警告

由于需要计算容量, SageMaker AI xgBoost 的 1.7-1 版本与 P2 实例系列中的 GPU 实例不兼容,用于训练或推理。

警告

网络隔离模式:请勿升级 pip 版本超过 25.2。在模块安装期间,较新的版本可能会尝试从 PyPI 获取安装工具。

重要

检索 SageMaker AI xgBoost 图像 URI 时,请勿使用:latest:1作为图像 URI 标签。必须指定其中一个才能选择包含支持的版本要使用的本机 SageMaker AI-managed XGBoost 包版本的 XGBoost 容器。要查找迁移到 SageMaker AI xgBoost 容器中的软件包版本,请参阅 Docker 注册表路径和示例代码。然后选择你的 AWS 区域,然后导航到 XGBoost(算法)部分

警告

XGBoost 0.90 版本已弃用。对 XGBoost 0.90 的安全更新或错误修复的支持已停止。我们强烈建议您将 XGBoost 版本升级到较新的版本之一。

注意

人工智能不支持 xgBoost v1.1。 SageMaker 当测试输入的特征少于 LIBSVM 输入中的训练数据时,XGBoost 1.1 的运行预测的功能会崩溃。此功能已在 XGBoost v1.2 中恢复。考虑使用 SageMaker AI xgBoost 1.2-2 或更高版本。

注意

您可以使用 XGBoost v1.0-1,但它不受官方支持。

XGBoost 算法的 EC2 实例推荐

SageMaker AI xgBoost 支持 CPU 和 GPU 训练和推理。实例建议取决于训练和推理需求,以及 XGBoost 算法的版本。有关更多信息,请选择以下选项之一:

训练

SageMaker AI xgBoost 算法支持 CPU 和 GPU 训练。

CPU 训练

SageMaker AI xgBoost 1.0-1 或更早版本只能使用 CPU 进行训练。它是一种内存限制型(而不是计算限制型)算法。因此,通用计算实例(例如 M5)是比计算优化的实例(例如 C4)更适合的选择。此外,我们建议您在选定的实例中有足够的总内存来保存训练数据。它支持使用磁盘空间来处理无法放入主内存的数据。这是 libsvm 输入模式提供的核心外功能的结果。即便如此,将缓存文件写入磁盘还是会减慢算法的处理时间。

GPU 训练

SageMaker AI xgBoost 1.2-2 或更高版本支持 GPU 训练。尽管每实例成本较高,但 GPU 训练的速度更快,因此更经济高效。

SageMaker AI xgBoost 1.2-2 或更高版本支持 P2、P3、G4dN 和 G5 GPU 实例系列。

SageMaker AI xgBoost 1.7-1 或更高版本支持 P3、g4dN 和 G5 GPU 实例系列。请注意,由于计算容量要求,1.7-1 或更高版本不支持 P2 实例系列。

SageMaker AI xgBoost 3.0-5 或更高版本支持 G4dN 和 G5 GPU 实例系列。请注意,由于计算容量要求,3.0-5 或更高版本不支持 P3 实例系列。

要利用 GPU 训练:

  • 将实例类型指定为 GPU 实例之一(例如 G4dN)

  • 在现有 XGBoost 脚本中将 tree_method 超参数设置为 gpu_hist

分布式训练

SageMaker AI xgBoost 支持 CPU 和 GPU 实例进行分布式训练。

分布式 CPU 训练

要在多个实例上运行 CPU 训练,请将估算器的 instance_count 参数设置为大于 1 的值。输入数据必须按照实例总数进行划分。

在实例之间划分输入数据

使用以下步骤划分输入数据:

  1. 将输入数据分解成较小的文件。文件数量至少应等于用于分布式训练的实例数。相比一个大文件,使用多个较小的文件还可以缩短训练作业的数据下载时间。

  2. 创建时 TrainingInput,将分布参数设置为ShardedByS3Key。这样,如果训练作业中指定了 n 1/n个实例,则每个实例将获得大致等于 S3 中文件数量的值。

分布式 GPU 训练

您可以使用单 GPU 或多 GPU 实例进行分布式训练。

使用单 GPU 实例进行分布式训练

SageMaker AI xgBoost 版本 1.2-2 至 1.3-1 仅支持单 GPU 实例训练。这意味着即使您选择多 GPU 实例,每个实例也只能使用一个 GPU。

如果出现以下情况,您必须将输入数据按照实例总数进行划分:

  • 您使用的是 XGBoost 1.2-2 至 1.3-1 版本。

  • 您无需使用多 GPU 实例。

有关更多信息,请参阅 在实例之间划分输入数据

注意

即使你选择多 GPU 实例, SageMaker AI xgBoost 的 1.2-2 到 1.3-1 版本也只能为每个实例使用一个 GPU。

使用多 GPU 实例进行分布式训练

从版本 1.5-1 开始, SageMaker AI xgBoost 通过 Dask 提供分布式 GPU 训练。通过 Dask,您可以在使用一个或多个多 GPU 实例时使用所有 GPU。使用单 GPU 实例时,Dask 也可以使用。

通过以下步骤使用 Dask 进行训练:

  1. 要么省略您的中的distribution参数,要TrainingInput么将其设置为。FullyReplicated

  2. 定义超参数时,请将 use_dask_gpu_training 设置为 "true"

重要

使用 Dask 进行分布式训练时,仅支持 CSV 和 Parquet 输入格式。如果您使用其他数据格式,例如 LIBSVM 或 PROTOBUF,则训练作业将失败。

对于 Parquet 数据,请确保按照字符串格式保存列名。列名使用其他数据类型的列将无法加载。

重要

使用 Dask 进行分布式训练不支持管道模式。如果指定了管道模式,则训练作业将失败。

使用 Dask 训练 SageMaker AI xgBoost 时,需要注意一些注意事项。请确保将数据拆分成较小的文件。Dask 将每个 Parquet 文件作为一个分区读取。每个 GPU 都有一个 Dask 工作人员。因此,文件数应大于 GPU 的总数(实例数 * 每个实例的 GPU 数)。文件数量过大也会降低性能。有关更多信息,请参阅 Dask 最佳实践

输出中的变化

指定的 tree_method 超参数决定了用于 XGBoost 训练的算法。树方法 approxhistgpu_hist 都是近似方法,使用 Sketching 进行分位数计算。有关更多信息,请参阅 XGBoost 文档中的树方法。Sketching 是一种近似算法。因此,根据各种因素(例如为分布式训练选择的工作线程数),预期模型中会出现变化。变化的重要性取决于数据。

推理

SageMaker AI xgBoost 支持 CPU 和 GPU 实例进行推理。有关用于推理的实例类型的信息,请参阅 Amazon A SageMaker I ML 实例类型