使用 Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence 运行自动模型调整。 垂直搜索。 哎。

使用 Amazon SageMaker JumpStart 运行自动模型调整

2020 年 XNUMX 月,AWS 公布 一般可用 亚马逊SageMaker JumpStart, 的能力 亚马逊SageMaker 帮助您快速轻松地开始使用机器学习 (ML)。 2022 年 XNUMX 月,我们还 公布 JumpStart 中对 API 的支持。 JumpStart 提供跨流行 ML 任务的各种预训练模型的一键式微调和部署,以及一系列解决常见业务问题的端到端解决方案。 这些功能消除了 ML 流程每个步骤的繁重工作,从而更轻松地开发高质量模型并缩短部署时间。

在这篇文章中,我们演示了如何使用 JumpStart 运行自动模型调整。

SageMaker自动模型调整

传统上,ML 工程师采用试错法来找到正确的超参数集。 试错涉及顺序或并行运行多个作业,同时提供运行实验所需的资源。

SageMaker自动模型调整,机器学习工程师和数据科学家可以卸下优化模型的耗时任务,让 SageMaker 运行实验。 SageMaker 利用 AWS 平台的弹性在数据集上高效地同时运行多个训练模拟,并为模型找到最佳超参数。

SageMaker 自动模型调整通过使用算法在您的数据集上运行许多训练作业来找到模型的最佳版本,并且 范围 您指定的超参数。 然后,它选择超参数值,以生成性能最佳的模型,由 你选择的。

自动模型调整使用 贝叶斯 (默认)或 随机 搜索策略以找到超参数的最佳值。 贝叶斯搜索将超参数调整视为 回归 问题。 在为下一个训练工作选择最佳超参数时,它会考虑到目前为止它所知道的关于问题的所有信息,并允许算法利用最知名的结果。

在这篇文章中,我们使用默认的贝叶斯搜索策略来演示使用 JumpStart 运行自动模型调整所涉及的步骤,使用 轻型GBM 模型。

JumpStart 目前支持 10 个具有自动模型调整功能的示例笔记本。 它还支持四种流行的表格数据建模算法。 下表总结了任务及其示例笔记本的链接。

任务 预训练模型 支持自定义数据集 支持的框架 示例笔记本
影像分类 PyTorch、TensorFlow JumpStart 简介 – 图像分类
物体检测 PyTorch、TensorFlow、MXNet JumpStart 简介 – 对象检测
语义分割 MX网 JumpStart 简介 – 语义分割
文字分类 TensorFlow JumpStart 简介 – 文本分类
句对分类 TensorFlow,拥抱脸 JumpStart 简介 – 句对分类
问题回答 PyTorch JumpStart 简介 – 问答
表格分类 LightGBM、CatBoost、XGBoost、线性学习器 JumpStart 简介 – 表格分类 – LightGBM、CatBoost
JumpStart 简介 – 表格分类 – XGBoost、线性学习器
表格回归 LightGBM、CatBoost、XGBoost、线性学习器 JumpStart 简介 – 表格回归 – LightGBM、CatBoost
JumpStart 简介 – 表格回归 – XGBoost,线性学习器

解决方案概述

此技术工作流程概述了自动调整 JumpStart 模型所需的不同 Amazon Sagemaker 功能和步骤。

使用 Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence 运行自动模型调整。 垂直搜索。 哎。

在以下部分中,我们将逐步演练如何使用 LightGBM 算法通过 JumpStart 运行自动模型调整。 我们提供随行 笔记本 对于本演练。

我们将完成以下高级步骤:

  1. 检索 JumpStart 预训练模型和图像容器。
  2. 设置静态超参数。
  3. 定义可调的超参数范围。
  4. 初始化自动模型调整。
  5. 运行调整作业。
  6. 将最佳模型部署到端点。

检索 JumpStart 预训练模型和图像容器

在本节中,我们选择 LightGBM 分类模型进行微调。 我们使用运行模型的 ml.m5.xlarge 实例类型。 然后我们检索训练 Docker 容器、训练算法源和预训练模型。 请参阅以下代码:

training_instance_type = "ml.m5.xlarge" # 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
)
# Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(
    model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
)

设置静态超参数

我们现在检索此 LightGBM 模型的默认超参数,由 JumpStart 预先配置。 我们还覆盖 num_boost_round 具有自定义值的超参数。

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values

定义可调超参数范围

接下来我们将超参数范围定义为 通过自动模型调整进行优化. 我们按照模型的预期定义超参数名称,然后为该超参数尝试值的范围。 自动模型调整抽取样本(等于 max_jobs 参数)来自超参数空间,使用一种称为贝叶斯搜索的技术。 对于每个绘制的超参数样本,调谐器都会创建一个训练作业来评估具有该配置的模型。 请参阅以下代码:

hyperparameter_ranges = {
    "learning_rate": ContinuousParameter(1e-4, 1, scaling_type="Logarithmic"),
    "num_boost_round": IntegerParameter(2, 30),
    "early_stopping_rounds": IntegerParameter(2, 30),
    "num_leaves": IntegerParameter(10, 50),
    "feature_fraction": ContinuousParameter(0, 1),
    "bagging_fraction": ContinuousParameter(0, 1),
    "bagging_freq": IntegerParameter(1, 10),
    "max_depth": IntegerParameter(5, 30),
    "min_data_in_leaf": IntegerParameter(5, 50),
}

初始化自动模型调整

我们首先创建一个 估计 具有定义训练作业的所有必需资产的对象,例如预训练模型、训练图像和训练脚本。 然后我们定义一个 超参数调谐器 对象以与 SageMaker 超参数调整 API 交互。

HyperparameterTuner 接受 Estimator 对象作为参数,目标指标是决定最佳超参数集的基础,训练作业的总数 (max_jobs) 开始超参数调整作业,以及要运行的最大并行训练作业 (max_parallel_jobs)。 训练作业使用 LightGBM 算法运行,超参数值具有最小 mlogloss 选择度量。 有关配置自动模型调整的更多信息,请参阅 超参数调优的最佳实践.

# 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,
) tuner = HyperparameterTuner(
    estimator=tabular_estimator,
    objective_metric_name="multi_logloss",
    hyperparameter_ranges=hyperparameter_ranges,
    metric_definitions=[{"Name": "multi_logloss", "Regex": "multi_logloss: ([0-9\.]+)"}],
    strategy="Bayesian",
    max_jobs=10,
    max_parallel_jobs=2,
    objective_type="Minimize",
    base_tuning_job_name=training_job_name,
)

在前面的代码中,我们告诉 Tuner 最多运行 10 个实验(max_jobs) 并且一次只有两个并发实验 (max_parallel_jobs)。 这两个参数都可以控制您的成本和培训时间。

运行调优作业

要启动 SageMaker 调整作业,我们调用超参数调整器对象的 fit 方法并传递 亚马逊简单存储服务 (Amazon S3) 训练数据的路径:

tuner.fit({"training": training_dataset_s3_path}, logs=True)

在自动模型调整搜索最佳超参数时,您可以在 SageMaker 控制台或 亚马逊CloudWatch. 训练完成后,最佳模型的微调工件将上传到训练配置中指定的 Amazon S3 输出位置。

将最佳模型部署到端点

调整作业完成后,已选择最佳模型并将其存储在 Amazon S3 中。 我们现在可以通过调用 HyperparameterTuner 对象并传递所需的参数,例如要用于创建的端点的实例数、它们的类型、要部署的图像以及要运行的脚本:

tuner.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    entry_point="inference.py",
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    endpoint_name=endpoint_name,
    enable_network_isolation=True
)

我们现在可以通过发出推理请求来测试创建的端点。 您可以按照随附的其余过程 笔记本.

结论

借助 SageMaker 中的自动模型调整,您可以通过使用一种受支持的算法在提供的数据集上运行训练作业来找到模型的最佳版本。 自动模型调整允许您通过在您指定的超参数范围内自动搜索最佳超参数配置来减少调整模型的时间。

在这篇文章中,我们展示了使用 SageMaker API 在 JumpStart 预训练模型上运行自动模型调整的价值。 我们使用 LightGBM 算法并定义了最多 10 个训练作业。 我们还提供了示例笔记本的链接,展示了支持 JumpStart 模型优化的 ML 框架。

有关如何使用自动模型调整优化 JumpStart 模型的更多详细信息,请参阅我们的示例 笔记本.


关于作者

使用 Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence 运行自动模型调整。 垂直搜索。 哎。道格·姆巴亚 是一名高级合作伙伴解决方案架构师,专注于数据和分析。 Doug 与 AWS 合作伙伴密切合作,帮助他们在云中集成数据和分析解决方案。

使用 Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence 运行自动模型调整。 垂直搜索。 哎。克鲁蒂·贾亚辛哈 是 Scale-PSA 团队的合作伙伴解决方案架构师。 Kruthi 为合作伙伴进行技术验证,使他们能够在合作伙伴路径中取得进展。

使用 Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence 运行自动模型调整。 垂直搜索。 哎。詹尼斯·米特罗普洛斯 是 SageMaker 的软件开发工程师 自动模型调整.

使用 Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence 运行自动模型调整。 垂直搜索。 哎。Ashish Khetan 博士 是一名高级应用科学家 亚马逊SageMaker JumpStart 和 Amazon SageMaker 内置算法 并帮助开发机器学习算法。 他是机器学习和统计推断领域的活跃研究员,在 NeurIPS、ICML、ICLR、JMLR 和 ACL 会议上发表了多篇论文。

时间戳记:

更多来自 AWS机器学习