AutoGluon-表格 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

AutoGluon-表格

AutoGluon-Tabular 是一种流行的开源 AutoML 框架,可在未经处理的表格数据集中训练高度准确的机器学习模型。与主要关注模型和超参数选择的现有 AutoML 框架不同, AutoGluon-Tabular 通过整合多个模型并将它们堆叠成多个层来取得成功。

如何使用 SageMaker AutoGluon-Tabular

您可以使用 AutoGluon-Tabular 作为亚马逊的 SageMaker 内置算法。下一节介绍如何在 Pyth SageMaker on 软件开发工具包中使用 AutoGluon-Tabular。有关如何在 Amazon SageMaker Studio Classic 用户界面中使用 AutoGluon-Tabular 的信息,请参阅。SageMaker JumpStart

  • 使用 AutoGluon-Tabular 作为内置算法

    使用 AutoGluon-Tabular 内置算法来构建 AutoGluon-Tabular 训练容器,如以下代码示例所示。你可以使用 API(如果使用 Amaz on Pyth SageMaker on SDK 版本 2 则使用 SageMaker image_uris.retrieve API)自动发现 AutoGluon-Tabular 内置算法图像 UR get_image_uri I。

    指定 AutoGluon-Tabular 图像 URI 后,您可以使用 AutoGluon-Tabular 容器使用 Estimator API 构造估计器并启动训练作 SageMaker 业。 AutoGluon-Tabular 内置算法在脚本模式下运行,但训练脚本是为你提供的,无需替换。如果您在使用脚本模式创建 SageMaker 训练作业方面有丰富的经验,则可以合并自己的 AutoGluon-Tabular 训练脚本。

    from sagemaker import image_uris, model_uris, script_uris train_model_id, train_model_version, train_scope = "autogluon-classification-ensemble", "*", "training" training_instance_type = "ml.p3.2xlarge" # Retrieve the docker image train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=train_model_id, model_version=train_model_version, image_scope=train_scope, instance_type=training_instance_type ) # Retrieve the training script train_source_uri = script_uris.retrieve( model_id=train_model_id, model_version=train_model_version, script_scope=train_scope ) train_model_uri = model_uris.retrieve( model_id=train_model_id, model_version=train_model_version, model_scope=train_scope ) # Sample training data is available in this bucket training_data_bucket = f"jumpstart-cache-prod-{aws_region}" training_data_prefix = "training-datasets/tabular_binary/" training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/train" validation_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}/validation" output_bucket = sess.default_bucket() output_prefix = "jumpstart-example-tabular-training" s3_output_location = f"s3://{output_bucket}/{output_prefix}/output" from sagemaker import hyperparameters # Retrieve the default hyperparameters for training the model hyperparameters = hyperparameters.retrieve_default( model_id=train_model_id, model_version=train_model_version ) # [Optional] Override default hyperparameters with custom values hyperparameters[ "auto_stack" ] = "True" print(hyperparameters) from sagemaker.estimator import Estimator from sagemaker.utils import name_from_base training_job_name = name_from_base(f"built-in-algo-{train_model_id}-training") # Create SageMaker Estimator instance tabular_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location ) # Launch a SageMaker Training job by passing the S3 path of the training data tabular_estimator.fit( { "training": training_dataset_s3_path, "validation": validation_dataset_s3_path, }, logs=True, job_name=training_job_name )

    有关如何将 AutoGluon-Tabular 设置为内置算法的更多信息,请参阅以下笔记本示例。这些示例中使用的任何 S3 存储桶都必须与用于运行它们的笔记本实例位于同一 Amazon 区域。

AutoGluon表格算法的输入和输出接口

梯度提升对表格数据进行操作,其中行表示观察、一个列表示目标变量或标签,其余列表示特征。

AutoGluon-Tabular 的 SageMaker 实现支持用于训练和推理的 CSV:

  • 对于训练 ContentType,有效的输入必须是文本/ csv。

  • 要进行推理 ContentType,有效的输入必须是文本 /csv。

注意

对于 CSV 训练,算法假定目标变量在第一列中,而 CSV 没有标头记录。

对于 CSV 推理,算法假定 CSV 输入没有标签列。

训练数据、验证数据和类别特征的输入格式

请注意如何格式化训练数据,以便输入到 AutoGluon-Tabular 模型中。您必须提供包含训练和验证数据的 Amazon S3 存储桶的路径。您还可以包含类别特征列表。请使用 trainingvalidation 通道来提供您的输入数据。您也可以只使用 training 通道。

使用 trainingvalidation 通道

您可以通过两条 S3 路径来提供输入数据,一条用于 training 通道,一条用于 validation 通道。每个 S3 路径可以是 S3 前缀,也可以是指向一个特定 CSV 文件的完整 S3 路径。目标变量应位于 CSV 文件的第一列。预测器变量(特征)应位于其余列。验证数据用于在每次提升迭代结束时计算验证分数。当验证分数停止提高时,将应用提前停止。

如果您的预测变量包含分类特征,则可以提供一个与训练数据文件同名categorical_index.json的 JSON 文件。如果您为类别特征提供 JSON 文件,则您的 training 通道必须指向 S3 前缀而不是特定 CSV 文件。此文件应包含一个 Python 字典,其中的键是字符串 "cat_index_list",值是唯一整数列表。值列表中的每个整数都应指示训练数据 CSV 文件中对应分类特征的列索引。每个值都应为正整数(大于零,因为零表示目标值),小于 Int32.MaxValue (2147483647),并且小于列的总数。只应有一个类别索引 JSON 文件。

仅使用 training 通道

您也可以通过单个 S3 路径,为 training 通道提供输入数据。此 S3 路径应指向一个名为training/、包含 CSV 文件的子目录的目录。您可以选择在名为 validation/ CSV 文件的同一位置添加另一个子目录。如果未提供验证数据,则会随机采样 20% 的训练数据作为验证数据。如果您的预测器包含类别特征,则可以在与您的数据子目录相同的位置,提供一个名为 categorical_index.json 的 JSON 文件。

注意

对于 CSV 训练输入模式,供算法使用的内存总量(实例计数乘以 InstanceType 中的可用内存)必须能够容纳训练数据集。

SageMaker AutoGluon-Tabular 使用该autogluon.tabular.TabularPredictor模块对模型进行序列化或反序列化,可用于保存或加载模型。

在框架中使用使用 SageMaker AutoGluon-Tabular 训练的模型 AutoGluon
  • 使用以下 Python 代码:

    import tarfile from autogluon.tabular import TabularPredictor t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() model = TabularPredictor.load(model_file_path) # prediction with test data # dtest should be a pandas DataFrame with column names feature_0, feature_1, ..., feature_d pred = model.predict(dtest)

AutoGluon-表格算法的 Amazon EC2 实例推荐

SageMaker AutoGluon-Tabular 支持单实例 CPU 和单实例 GPU 训练。尽管每实例成本较高,但 GPU 训练的速度更快,因此更经济高效。要利用 GPU 训练,请将实例类型指定为 GPU 实例之一(例如 P3)。 SageMaker AutoGluon-Tabular 目前不支持多 GPU 训练。

AutoGluon-表格样本笔记本

下表概述了各种示例笔记本,这些笔记本解决了 Amazon SageMaker AutoGluon-Tabular 算法的不同用例。

笔记本标题 描述

使用 Amazon SageMaker AutoGluon 表格算法进行表格分类

本笔记本演示了如何使用 Amazon SageMaker AutoGluon-Tabular 算法来训练和托管表格分类模型。

使用 Amazon 表格算法进行表格回归 SageMaker AutoGluon ——表格算法

本笔记本演示了如何使用 Amazon SageMaker AutoGluon-Tabular 算法来训练和托管表格回归模型。

有关如何创建和访问可用于在中运行示例的 Jupyter 笔记本实例的说明 SageMaker,请参阅。Amazon SageMaker 笔记本实例创建并打开笔记本实例后,选择 “SageMaker示例” 选项卡以查看所有 SageMaker 示例的列表。要打开笔记本,请选择其使用选项卡,然后选择创建副本