使用 Amazon SageMaker 训练模型
下图介绍您如何使用 Amazon SageMaker 来训练和部署模型。您的训练代码访问您的训练数据并从 S3 存储桶输出模型构件。然后,您可以向模型端点发出请求来运行推理。您可以在 Amazon Elastic Container Registry (ECR) 中存储训练和推理容器映像。
以下指南重点介绍了 SageMaker 的两个组件:模型训练和模型部署。
要在 SageMaker 中训练模型,请创建一个训练作业。该训练作业包含以下信息:
-
已在其中存储训练数据的 Amazon Simple Storage Service (Amazon S3) 存储桶的 URL。
-
您希望 SageMaker 用于模型训练的计算资源。计算资源是 SageMaker 托管的机器学习 (ML) 计算实例。
-
您要存储作业输出的 S3 存储桶的 URL。
-
存储训练代码的 Amazon Elastic Container Registry 路径。有关更多信息,请参阅 Docker 注册表路径和示例代码。
注意
输入数据集必须与训练作业位于同一 Amazon Web Services 区域中。
对于训练算法,您可以使用以下选项:
-
使用 SageMaker 提供的算法 – SageMaker 提供了数十种内置训练算法和数百个预训练模型。如果其中一种算法满足您的需求,它将是实现快速模型训练的不错的现成解决方案。有关 SageMaker 提供的算法的列表,请参阅 使用 Amazon SageMaker 内置算法或预先训练模型。要尝试使用 SageMaker 提供的算法进行练习,请参阅 开始使用。您还可以使用 SageMaker JumpStart通过 Studio UI 使用算法和模型。
-
使用 SageMaker Debugger – 可在使用 TensorFlow、PyTorch 和 Apache MXNet 学习框架或 XGBoost 算法时检查整个训练过程中的训练参数和数据吞吐量。调试程序会自动检测常见错误并向用户发出警报,例如参数值变得太大或太小。有关使用调试程序的更多信息,请参阅使用 Amazon SageMaker Debugger 调试和改进模型性能。调试程序示例笔记本可在 Amazon SageMaker 调试程序示例
中获取。 -
将 Apache Spark 与 SageMaker 结合使用 – SageMaker 提供一个库,可在 Apache Spark 中使用该库来通过 SageMaker 训练模型。使用 SageMaker 提供的库类似于使用 Apache Spark MLLib。有关更多信息,请参阅 将 Apache Spark 与 Amazon SageMaker 结合使用。
-
提交自定义代码,以便使用深度学习框架进行训练 – 您可以提交使用 TensorFlow、PyTorch 或 Apache MXNet 的自定义 Python 代码来进行模型训练。有关更多信息,请参阅将 TensorFlow 与 Amazon SageMaker 结合使用、将 PyTorch 与 Amazon SageMaker 结合使用和将 Apache MXNet 与 Amazon SageMaker 结合使用。
-
使用您自己的自定义算法 – 将您的代码放在一起作为 Docker 映像,并在 SageMaker
CreateTrainingJob
API 调用中指定该映像的注册表路径。有关更多信息,请参阅 使用 Docker 容器构建模型。
创建训练作业后,SageMaker 将启动机器学习计算实例,并使用训练代码和训练数据集来训练模型。它将生成的模型构件和其他输出保存在您为该目的指定的 S3 存储桶中。
您可使用 SageMaker 控制台或 API 创建训练作业。有关使用 API 创建训练作业的信息,请参阅 CreateTrainingJob
API。
当您使用 API 创建训练作业时,默认情况下,SageMaker 将复制机器学习计算实例上的整个数据集。要使 SageMaker 复制每个机器学习计算实例上的数据子集,您必须将 S3DataDistributionType
字段设置为 ShardedByS3Key
。您可以使用低级开发工具包设置此字段。有关更多信息,请参阅 S3DataSource
中的 S3DataDistributionType
。
重要
为了防止您的算法容器争用内存,我们在您的机器学习计算实例上为 SageMaker 关键系统进程预留了内存,因此,您应无法看到您的实例类型的所有内存。