Amazon SageMaker JumpStart 模型和算法现在可通过 API PlatoBlockchain Data Intelligence 获得。 垂直搜索。 哎。

Amazon SageMaker JumpStart 模型和算法现在可通过 API 获得

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

以前,所有 JumpStart 内容只能通过 亚马逊SageMaker Studio,它提供了一个 用户友好的图形界面 与功能进行交互。 今天,我们很高兴地宣布推出易于使用的 JumpStart API 作为 SageMaker Python SDK 的扩展。 这些 API 允许您在自己的数据集上以编程方式部署和微调大量 JumpStart 支持的预训练模型。 此次发布解锁了 JumpStart 功能在您的代码工作流、MLOps 管道以及您通过 SDK 与 SageMaker 交互的任何其他地方的使用。

在这篇文章中,我们提供了 JumpStart 功能当前状态的更新,并通过示例用例指导您了解 JumpStart API 的使用流程。

JumpStart 概述

JumpStart 是一款多方面的产品,包含不同的功能,可帮助您在 SageMaker 上快速开始使用 ML。 在撰写本文时,JumpStart 使您能够执行以下操作:

  • 为常见的 ML 任务部署预训练模型 – JumpStart 使您能够轻松部署在公开可用的大型数据集上预训练的模型,从而无需开发工作即可解决常见的 ML 任务。 ML 研究社区投入了大量精力,使大多数最近开发的模型可供公众使用。 JumpStart 托管了 300 多个模型的集合,涵盖了 15 个最流行的 ML 任务,例如对象检测、文本分类和文本生成,使初学者可以轻松使用它们。 这些模型取自流行的模型中心,例如 TensorFlow、PyTorch、Hugging Face 和 MXNet Hub。
  • 微调预训练模型 – JumpStart 允许您微调预训练模型,而无需编写自己的训练算法。 在 ML 中,将在一个领域学到的知识转移到另一个领域的能力称为 转移学习. 您可以使用迁移学习在较小的数据集上生成准确的模型,其训练成本比从头开始训练原始模型所涉及的成本低得多。 JumpStart 还包括基于 LightGBM、CatBoost、XGBoost 和 Scikit-learn 的流行训练算法,您可以从头开始训练表格数据回归和分类。
  • 使用预先构建的解决方案 – JumpStart 提供了一组 17 个预建解决方案 适用于常见的 ML 用例,例如需求预测以及工业和金融应用程序,只需单击几下即可部署。 这些解决方案是端到端的 ML 应用程序,将各种 AWS 服务组合在一起以解决特定的业务用例。 他们使用 AWS CloudFormation 用于快速部署的模板和参考架构,这意味着它们是完全可定制的。
  • 使用 SageMaker 算法的笔记本示例 – SageMaker 提供了一套 内置算法 帮助数据科学家和机器学习从业者快速开始训练和部署机器学习模型。 JumpStart 提供了示例笔记本,您可以使用它们来快速使用这些算法。
  • 利用培训视频和博客 – JumpStart 还提供大量博客文章和视频,教您如何使用 SageMaker 中的不同功能。

JumpStart 接受自定义 VPC 设置和 KMS 加密密钥,以便您可以在企业环境中安全地使用可用模型和解决方案。 您可以在 SageMaker Studio 中或通过 SageMaker Python SDK 将您的安全设置传递给 JumpStart。

JumpStart 支持的 ML 任务和 API 示例笔记本

JumpStart 目前支持 15 种最流行的 ML 任务; 其中 13 个是基于视觉和 NLP 的任务,其中 8 个支持无代码微调。 它还支持四种流行的表格数据建模算法。 下表总结了任务及其示例笔记本的链接。

任务 使用预训练模型进行推理 自定义数据集的训练 支持的框架 示例笔记本
影像分类 PyTorch、TensorFlow JumpStart 简介 – 图像分类
物体检测 PyTorch、TensorFlow、MXNet JumpStart 简介 – 对象检测
语义分割 MX网 JumpStart 简介 – 语义分割
实例细分 没有 MX网 JumpStart 简介 – 实例分割
图像嵌入 没有 TensorFlow、MXNet JumpStart 简介 – 图像嵌入
文字分类 TensorFlow JumpStart 简介 – 文本分类
句对分类 TensorFlow,拥抱脸 JumpStart 简介 – 句对分类
问题回答 PyTorch JumpStart 简介 – 问答
命名实体识别 没有 拥抱脸 JumpStart 简介 – 命名实体识别
文字摘要 没有 拥抱脸 JumpStart 简介 – 文本摘要
文本生成 没有 拥抱脸 JumpStart 简介 – 文本生成
机器翻译 没有 拥抱脸 JumpStart 简介 – 机器翻译
文本嵌入 没有 TensorFlow、MXNet JumpStart 简介 – 文本嵌入
表格分类 LightGBM、CatBoost、XGBoost、线性学习器 JumpStart 简介 – 表格分类 – LightGBM、CatBoost
JumpStart 简介 – 表格分类 – XGBoost、线性学习器
表格回归 LightGBM、CatBoost、XGBoost、线性学习器 JumpStart 简介 – 表格回归 – LightGBM、CatBoost
JumpStart 简介 – 表格回归 – XGBoost,线性学习器

根据任务的不同,上表中链接的示例笔记本可以指导您完成以下全部或部分流程:

  • 为您的特定任务选择支持 JumpStart 的预训练模型。
  • 托管一个预训练模型,实时从中获取预测,并充分显示结果。
  • 使用您自己选择的超参数微调预训练模型并将其部署以进行推理。

使用 JumpStart API 微调和部署对象检测模型

在以下部分中,我们将逐步介绍如何在对象检测的代表性任务中使用新的 JumpStart API。 我们展示了如何使用预训练的对象检测模型从具有边界框的图像中的一组预定义类中识别对象。 最后,我们展示了如何在您自己的数据集上微调预训练模型,以检测图像中特定于您的业务需求的对象,只需引入您自己的数据即可。 我们提供一个 本演练随附的笔记本.

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

  1. 在预训练模型上运行推理。
    1. 检索 JumpStart 工件并部署端点。
    2. 查询端点、解析响应并显示模型预测。
  2. 在您自己的数据集上微调预训练模型。
    1. 检索训练工件。
    2. 进行训练。

在预训练模型上运行推理

在本节中,我们在 JumpStart 中选择一个合适的预训练模型,将该模型部署到 SageMaker 端点,并展示如何在已部署的端点上运行推理。 所有步骤都可以在 随附Jupyter笔记本.

检索 JumpStart 工件并部署端点

SageMaker 是一个基于 Docker 容器的平台。 JumpStart 使用可用的特定于框架的 SageMaker 深度学习容器 (DLC)。 我们获取任何额外的包以及脚本来处理所选任务的训练和推理。 最后,预先训练的模型工件分别与 model_uris,这为平台提供了灵活性。 您可以通过单个训练或推理脚本使用为同一任务预训练的任意数量的模型。 请参阅以下代码:

infer_model_id, infer_model_version = "pytorch-od-nvidia-ssd", "*" # Retrieve the inference docker container uri. This is the base container PyTorch image for the model selected above. deploy_image_uri = image_uris.retrieve(region=None, framework=None, image_scope="inference",model_id=infer_model_id, model_version=infer_model_version, instance_type=inference_instance_type) # Retrieve the inference script uri. This includes all dependencies and scripts for model loading, inference handling etc.
deploy_source_uri = script_uris.retrieve(model_id=infer_model_id, model_version=infer_model_version, script_scope="inference") # Retrieve the base model uri. This includes the pre-trained nvidia-ssd model and parameters.
base_model_uri = model_uris.retrieve(model_id=infer_model_id, model_version=infer_model_version, model_scope="inference")

接下来,我们将资源输入到 SageMaker 模型 实例化并部署端点:

# Create the SageMaker model instance
model = Model(image_uri=deploy_image_uri, source_dir=deploy_source_uri, model_data=base_model_uri, entry_point="inference.py", role=aws_role, predictor_cls=Predictor, name=endpoint_name) # deploy the Model. Note that we need to pass Predictor class when we deploy model through Model class for being able to run inference through the sagemaker API.
base_model_predictor = model.deploy(initial_instance_count=1, instance_type=inference_instance_type, predictor_cls=Predictor, endpoint_name=endpoint_name)

端点部署可能需要几分钟才能完成。

查询端点、解析响应并显示预测

要从已部署的模型中获取推论,需要以二进制格式提供输入图像以及接受类型。 在 JumpStart 中,您可以定义返回的边界框的数量。 在下面的代码片段中,我们通过附加预测每个图像十个边界框 ;n_predictions=10Accept. 要预测 xx 个框,您可以将其更改为 ;n_predictions=xx ,或者通过省略得到所有的预测框 ;n_predictions=xx 完全。

def query(model_predictor, image_file_name): with open(image_file_name, "rb") as file: input_img_rb = file.read() return model_predictor.predict(input_img_rb,{ "ContentType": "application/x-image", "Accept": "application/json;verbose;n_predictions=10"}) query_response = query(base_model_predictor, Naxos_Taverna)

下面的代码片段让您大致了解对象检测的样子。 为每个对象类预测的概率及其边界框都被可视化了。 我们使用 parse_responsedisplay_predictions 辅助函数,在随附的 笔记本.

normalized_boxes, classes_names, confidences = parse_response(query_response)
display_predictions(Naxos_Taverna, normalized_boxes, classes_names, confidences)

以下屏幕截图显示了带有预测标签和边界框的图像的输出。

Amazon SageMaker JumpStart 模型和算法现在可通过 API PlatoBlockchain Data Intelligence 获得。 垂直搜索。 哎。

在您自己的数据集上微调预训练模型

JumpStart 中的现有对象检测模型在 COCO 或 VOC 数据集上进行了预训练。 但是,如果您需要识别原始预训练数据集中不存在的对象类,则必须在包含这些新对象类型的新数据集上微调模型。 例如,如果您需要识别厨房用具并在已部署的预训练 SSD 模型上运行推理,则该模型无法识别新图像类型的任何特征,因此输出不正确。

在本节中,我们将演示使用 JumpStart API 微调预训练模型以检测新对象类是多么容易。 包含更多详细信息的完整代码示例可在 随身笔记本.

检索训练工件

训练工件类似于上一节中讨论的推理工件。 训练需要一个基础 Docker 容器,即以下示例代码中的 MXNet 容器。 培训所需的任何其他软件包都包含在培训脚本中 train_sourcer_uri. 预训练模型及其参数单独打包。

train_model_id, train_model_version, train_scope = "mxnet-od-ssd-512-vgg16-atrous-coco","*","training"
training_instance_type = "ml.p2.xlarge" # Retrieve the docker image. This is the base container MXNet image for the model selected above. 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 and dependencies. This contains all the necessary files including data processing, model training etc.
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)

进行训练

为了进行训练,我们只需将所需的工件和一些附加参数提供给 SageMaker 估算器 并致电 .fit 功能:

# Create SageMaker Estimator instance
od_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", # Entry-point file in source_dir and present in train_source_uri. 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 s3 path of the training data
od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

在算法训练时,您可以在运行代码本身的 SageMaker 笔记本中或在 亚马逊CloudWatch. 训练完成后,微调的模型工件将上传到 亚马逊简单存储服务 (Amazon S3) 训练配置中指定的输出位置。 您现在可以以与预训练模型相同的方式部署模型。 您可以在 随身笔记本.

结论

在这篇文章中,我们描述了新发布的 JumpStart API 的价值以及如何使用它们。 我们为 JumpStart 支持的不同 ML 任务提供了 17 个示例笔记本的链接,并引导您完成了对象检测笔记本。

我们期待您在试用 JumpStart 时收到您的来信。


作者简介

Amazon SageMaker JumpStart 模型和算法现在可通过 API PlatoBlockchain Data Intelligence 获得。 垂直搜索。 哎。Vivek Madan 博士 是 Amazon SageMaker JumpStart 团队的一名应用科学家。 他在伊利诺伊大学厄巴纳-香槟分校获得博士学位,并在乔治亚理工学院担任博士后研究员。 他是机器学习和算法设计方面的活跃研究员,并在 EMNLP、ICLR、COLT、FOCS 和 SODA 会议上发表过论文。

Amazon SageMaker JumpStart 模型和算法现在可通过 API PlatoBlockchain Data Intelligence 获得。 垂直搜索。 哎。若昂·莫拉 是 Amazon Web Services 的 AI/ML 专家解决方案架构师。 他主要专注于 NLP 用例并帮助客户优化深度学习模型训练和部署。

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

时间戳记:

更多来自 AWS机器学习