使用 Amazon SageMaker 管道共享来查看或管理跨 AWS 账户 PlatoBlockchain Data Intelligence 的管道。 垂直搜索。 哎。

使用 Amazon SageMaker 管道共享查看或管理跨 AWS 账户的管道

9 年 2022 月 XNUMX 日,我们宣布跨账户共享全面上线 Amazon SageMaker Pipelines 实体。您现在可以使用跨账户支持 Amazon SageMaker管道 跨 AWS 账户共享管道实体并直接通过以下方式访问共享管道 亚马逊SageMaker API调用。

客户越来越多地采用 多账户架构 用于使用 SageMaker Pipelines 部署和管理机器学习 (ML) 工作流程。这涉及在开发或实验 (dev) 帐户中构建工作流,在测试或预生产 (test) 帐户中部署和测试它们,最后将它们提升到生产 (prod) 帐户以与其他业务流程集成。在以下用例中,您可以从 SageMaker 管道的跨账户共享中受益:

  • 当数据科学家在开发帐户中构建 ML 工作流程时,ML 工程师会将这些工作流程作为 SageMaker 管道部署到专用测试帐户中。为了进一步监控这些工作流程,数据科学家现在需要对测试帐户中已部署管道的跨帐户只读权限。
  • 从共享服务帐户管理这些 ML 工作流的部署和操作的 ML 工程师、ML 管理员和合规团队还需要了解测试帐户中已部署的管道。他们可能还需要额外的权限来启动、停止和重试这些 ML 工作流程。

在这篇文章中,我们提出了一个示例多帐户架构,用于使用 SageMaker Pipelines 开发和部署 ML 工作流程。

解决方案概述

多帐户策略可帮助您实现数据、项目和团队隔离,同时支持软件开发生命周期步骤。跨账户管道共享支持多账户策略,消除了登录和注销多个账户的开销,并通过直接跨多个账户共享资源来改进机器学习测试和部署工作流程。

在此示例中,我们有一个数据科学团队,他们使用专用的开发帐户来进行 SageMaker 管道的初始开发。然后,该管道将移交给机器学习工程师,他将创建一个 持续集成和持续交付 (CI/CD) 管道 在他们的共享服务帐户中将此管道部署到测试帐户中。为了仍然能够从各自的开发和共享服务帐户监视和控制已部署的管道, 资源份额 设置为 AWS 资源访问管理器 在测试和开发帐户中。通过此设置,机器学习工程师和数据科学家现在可以从各自的帐户监视和控制开发帐户和测试帐户中的管道,如下图所示。

使用 Amazon SageMaker 管道共享来查看或管理跨 AWS 账户 PlatoBlockchain Data Intelligence 的管道。 垂直搜索。 哎。

在工作流程中,数据科学家和机器学习工程师执行以下步骤:

  1. 数据科学家 (DS) 在开发帐户中构建模型管道。
  2. 机器学习工程师 (MLE) 将模型管道生产化并创建一个管道(在本文中,我们将其称为 sagemaker-pipeline).
  3. sagemaker-pipeline 代码致力于 AWS 代码提交 共享服务帐户中的存储库。
  4. 数据科学家创建 AWS RAM 资源共享 sagemaker-pipeline 并将其与接受资源共享的共享服务帐户共享。
  5. 通过共享服务帐户,机器学习工程师现在可以使用以下命令来描述、监控和管理开发帐户中的管道运行: SageMaker API 调用.
  6. 在共享服务帐户中触发的 CI/CD 管道使用以下命令构建代码并将其部署到测试帐户 AWS 代码管道.
  7. CI/CD 管道创建并运行 sagemaker-pipeline 在测试帐户中。
  8. 跑完之后 sagemaker-pipeline 在测试帐户中,CI/CD 管道为以下内容创建资源共享 sagemaker-pipeline 在测试帐户中。
  9. 测试中的资源共享 sagemaker-pipeline 具有只读权限是使用 dev 帐户创建的,该帐户接受资源共享。
  10. 数据科学家现在可以使用开发帐户的 SageMaker API 调用来描述和监控测试管道运行状态。
  11. 测试中的资源共享 sagemaker-pipeline 具有扩展权限是使用共享服务帐户创建的,该帐户接受资源共享。
  12. ML 工程师现在可以使用来自共享服务帐户的 SageMaker API 调用来描述、监控和管理测试管道运行。

在以下部分中,我们将更详细地介绍并演示如何为 SageMaker 管道设置跨账户共享。

如何跨账户创建和共享 SageMaker 管道

在本部分中,我们将逐步介绍使用 AWS RAM 和 SageMaker API 在账户之间创建和共享管道的必要步骤。

搭建环境

首先,我们需要设置一个多账户环境来演示 SageMaker 管道的跨账户共享:

  1. 设置两个 AWS 账户(开发和测试)。您可以将其设置为组织的成员帐户或独立帐户。
  2. 如果您将帐户设置为组织成员,则可以启用 与您的组织共享资源。通过此设置,当您在组织中共享资源时,AWS RAM 不会向委托人发送邀请。您组织中的负责人无需交换邀请即可访问共享资源。
  3. 在测试帐户中,启动 亚马逊SageMaker Studio 并运行笔记本 训练注册部署管道模型。这将在您的测试帐户中创建一个示例管道。为了简化演示,我们在测试帐户中使用 SageMaker Studio 来启动管道。对于现实项目,您应该仅在开发帐户中使用 Studio,并使用 CI/CD 工具在测试帐户中启动 SageMaker Pipeline。

按照下一节中的说明与开发帐户共享此管道。

设置管道资源共享

要与开发帐户共享您的管道,请完成以下步骤:

  1. 在 AWS RAM 控制台上,选择 创建资源共享.
  2. 针对 选择资源类型,选择 SageMaker管道.
  3. 选择您在上一步中创建的管道。
  4. 下一页.
  5. 针对 权限,选择您的关联权限。
  6. 下一页.
    使用 Amazon SageMaker 管道共享来查看或管理跨 AWS 账户 PlatoBlockchain Data Intelligence 的管道。 垂直搜索。 哎。接下来,您决定如何向主体授予访问权限。
  7. 如果您需要仅在组织帐户内共享管道,请选择 仅允许在您的组织内共享;否则选择 允许与任何人共享.
  8. 针对 Principals,选择您的主体类型(您可以根据您的共享要求使用 AWS 账户、组织或组织单位)。对于这篇文章,我们与 AWS 账户级别的任何人分享。
  9. 选择您的主要 ID。
  10. 下一页.
    使用 Amazon SageMaker 管道共享来查看或管理跨 AWS 账户 PlatoBlockchain Data Intelligence 的管道。 垂直搜索。 哎。
  11. 点击 查看并创建 页面,验证您的信息是否正确并选择 创建资源共享.
    使用 Amazon SageMaker 管道共享来查看或管理跨 AWS 账户 PlatoBlockchain Data Intelligence 的管道。 垂直搜索。 哎。
  12. 导航到您的目标帐户(对于本文,您的开发帐户)。
  13. 在AWS RAM控制台上,在 与我分享 在导航窗格中,选择 资源份额.
  14. 选择您的资源共享并选择 接受资源共享.
    使用 Amazon SageMaker 管道共享来查看或管理跨 AWS 账户 PlatoBlockchain Data Intelligence 的管道。 垂直搜索。 哎。

资源共享权限

创建资源共享时,您可以从两种受支持的权限策略中选择一种来与 SageMaker 管道资源类型关联。这两种策略都授予对任何选定管道及其所有运行的访问权限。

AWSRAMDefaultPermissionSageMakerPipeline 策略允许以下只读操作:

"sagemaker:DescribePipeline"
"sagemaker:DescribePipelineDefinitionForExecution"
"sagemaker:DescribePipelineExecution"
"sagemaker:ListPipelineExecutions"
"sagemaker:ListPipelineExecutionSteps"
"sagemaker:ListPipelineParametersForExecution"
"sagemaker:Search"

AWSRAMPermissionSageMakerPipelineAllowExecution 策略包括默认策略中的所有只读权限,还允许共享帐户启动、停止和重试管道运行。

扩展管道运行权限策略允许以下操作:

"sagemaker:DescribePipeline"
"sagemaker:DescribePipelineDefinitionForExecution"
"sagemaker:DescribePipelineExecution"
"sagemaker:ListPipelineExecutions"
"sagemaker:ListPipelineExecutionSteps"
"sagemaker:ListPipelineParametersForExecution"
"sagemaker:StartPipelineExecution"
"sagemaker:StopPipelineExecution"
"sagemaker:RetryPipelineExecution"
"sagemaker:Search"

通过直接 API 调用访问共享管道实体

在本部分中,我们将介绍如何使用各种 SageMaker Pipeline API 调用来了解在与您共享的远程帐户中运行的管道。要针对开发帐户中测试帐户中运行的管道测试 API,请登录到开发帐户并使用 AWS 云外壳.

对于跨账户 SageMaker Pipeline API 调用,您始终需要使用管道 ARN 作为管道标识。这还包括需要管道名称的命令,您需要使用管道 ARN 作为管道名称。

要获取您的管道 ARN,请在您的测试帐户中,通过以下方式导航到 Studio 中的管道详细信息 SageMaker 资源.

使用 Amazon SageMaker 管道共享来查看或管理跨 AWS 账户 PlatoBlockchain Data Intelligence 的管道。 垂直搜索。 哎。

管道 在你的资源列表上。

使用 Amazon SageMaker 管道共享来查看或管理跨 AWS 账户 PlatoBlockchain Data Intelligence 的管道。 垂直搜索。 哎。

选择您的管道并转到您的管道 个人设置 标签。您可以使用以下命令找到管道 ARN 元数据 信息。在此示例中,您的 ARN 定义为 "arn:aws:sagemaker:us-east-1:<account-id>:pipeline/serial-inference-pipeline".

使用 Amazon SageMaker 管道共享来查看或管理跨 AWS 账户 PlatoBlockchain Data Intelligence 的管道。 垂直搜索。 哎。

列出PipelineExecutions

这个API调用 列出运行 您的管道。运行以下命令,替换 $SHARED_PIPELINE_ARN 使用来自 CloudShell 的管道 ARN 或使用 AWS命令行界面 (AWS CLI) 配置了适当的 AWS身份和访问管理 (我是) 角色:

aws sagemaker list-pipeline-executions --pipeline-name $SHARED_PIPELINE_ARN

响应列出了管道的所有运行及其 PipelineExecutionArn, StartTime, PipelineExecutionStatusPipelineExecutionDisplayName:

{
  "PipelineExecutionSummaries": [
    {
      "PipelineExecutionArn": "arn:aws:sagemaker:<region>:<account_id>:pipeline/<pipeline_name>/execution/<execution_id>",
      "StartTime": "2022-08-10T11:32:05.543000+00:00",
      "PipelineExecutionStatus": "Executing",
      "PipelineExecutionDisplayName": "execution-321"
    },
    {
      "PipelineExecutionArn": "arn:aws:sagemaker:<region>:<account_id>:pipeline/<pipeline_name>/execution/<execution_id>",
      "StartTime": "2022-08-10T11:28:03.680000+00:00",
      "PipelineExecutionStatus": "Stopped",
      "PipelineExecutionDisplayName": "test"
    },
    {
      "PipelineExecutionArn": "arn:aws:sagemaker:<region>:<account_id>:pipeline/<pipeline_name>/execution/<execution_id>",
      "StartTime": "2022-08-10T11:03:47.406000+00:00",
      "PipelineExecutionStatus": "Succeeded",
      "PipelineExecutionDisplayName": "execution-123"
    }
  ]
}

描述管道

这个API调用 描述了细节 您的管道。运行以下命令,替换 $SHARED_PIPELINE_ARN 使用您的管道 ARN:

aws sagemaker describe-pipeline --pipeline-name $SHARED_PIPELINE_ARN

响应提供管道的元数据,以及有关创建和修改管道的信息:

Output(truncated): 
{
"PipelineArn": "arn:aws:sagemaker:<region>:<account-id>:pipeline/<pipeline_name>",
"PipelineName": "serial-inference-pipeline",
"PipelineDisplayName": "serial-inference-pipeline",
"PipelineDefinition": "{"Version": "2020-12-01", "Metadata": {}, "Parameters": [{"Name": "TrainingInstanceType", "Type": "String", "DefaultValue": "ml.m5.xlarge"}, {"Name": "ProcessingInstanceType", "Type": "String", "DefaultValue": "ml.m5.xlarge"}, {"Name": "ProcessingInstanceCount", "Type": "Integer", "DefaultValue": 1}, {"Name": "InputData", "Type":

..

"PipelineStatus": "Active",
"CreationTime": "2022-08-08T21:33:39.159000+00:00",
"LastModifiedTime": "2022-08-08T21:48:14.274000+00:00",
"CreatedBy": {},
"LastModifiedBy": {}
}

描述管道执行

这个API调用 描述了细节 您的管道运行。运行以下命令,替换 $SHARED_PIPELINE_ARN 使用您的管道 ARN:

aws sagemaker describe-pipeline-execution 
--pipeline-execution-arn $PIPELINE_EXECUTION_ARN

响应提供有关管道运行的详细信息,包括 PipelineExecutionStatus, ExperimentNameTrialName:

{
  "PipelineArn": "arn:aws:sagemaker:<region>:<account_id>:pipeline/<pipeline_name>",
  "PipelineExecutionArn": "arn:aws:sagemaker:<region>:<account_id>:pipeline/<pipeline_name>/execution/<execution_id>",
  "PipelineExecutionDisplayName": "execution-123",
  "PipelineExecutionStatus": "Succeeded",
  "PipelineExperimentConfig": {
  "ExperimentName": "<pipeline_name>",
  "TrialName": "<execution_id>"
},
  "CreationTime": "2022-08-10T11:03:47.406000+00:00",
  "LastModifiedTime": "2022-08-10T11:15:01.102000+00:00",
  "CreatedBy": {},
  "LastModifiedBy": {}
}

启动管道执行

这个API调用 启动 管道运行。运行以下命令,替换 $SHARED_PIPELINE_ARN 与您的管道 ARN 和 $CLIENT_REQUEST_TOKEN 带有您为此运行生成的唯一、区分大小写的标识符。标识符应包含 32-128 个字符。例如,您可以使用以下命令生成字符串 AWS CLI kms 生成随机命令.

aws sagemaker start-pipeline-execution 
  --pipeline-name $SHARED_PIPELINE_ARN 
  --client-request-token $CLIENT_REQUEST_TOKEN

作为响应,此 API 调用返回 PipelineExecutionArn 开始运行的:

{
  "PipelineExecutionArn": "arn:aws:sagemaker:<region>:<account_id>:pipeline/<pipeline_name>/execution/<execution_id>"
}

停止管道执行

这个API调用 停止 管道运行。运行以下命令,替换 $PIPELINE_EXECUTION_ARN 使用正在运行的管道的管道运行 ARN 以及 $CLIENT_REQUEST_TOKEN 带有您为此运行生成的唯一的、区分大小写的标识符。标识符应包含 32-128 个字符。例如,您可以使用以下命令生成字符串 AWS CLI kms 生成随机命令.

aws sagemaker stop-pipeline-execution 
  --pipeline-execution-arn $PIPELINE_EXECUTION_ARN 
  --client-request-token $CLIENT_REQUEST_TOKEN

作为响应,此 API 调用返回 PipelineExecutionArn 已停止的管道:

{
  "PipelineExecutionArn": "arn:aws:sagemaker:<region>:<account_id>:pipeline/<pipeline_name>/execution/<execution_id>"
}

结论

SageMaker 管道的跨账户共享允许您跨 AWS 账户安全地共享管道实体,并通过直接 API 调用访问共享管道,而无需登录和退出多个账户。

在这篇文章中,我们深入研究了该功能,以展示如何跨账户共享管道并通过 SageMaker API 调用访问它们。

下一步,您可以将此功能用于您的下一个 ML 项目。

资源

要开始使用 SageMaker Pipelines 并跨账户共享管道,请参阅以下资源:


关于作者

使用 Amazon SageMaker 管道共享来查看或管理跨 AWS 账户 PlatoBlockchain Data Intelligence 的管道。 垂直搜索。 哎。拉姆·维塔尔 是 AWS 的机器学习专家解决方案架构师。 他在架构和构建分布式、混合和云应用程序方面拥有 20 多年的经验。 他热衷于构建安全且可扩展的 AI/ML 和大数据解决方案,以帮助企业客户进行云采用和优化之旅,以改善他们的业务成果。 在业余时间,他喜欢网球、摄影和动作片。

使用 Amazon SageMaker 管道共享来查看或管理跨 AWS 账户 PlatoBlockchain Data Intelligence 的管道。 垂直搜索。 哎。迈拉·拉德拉·坦克 是 AWS 的机器学习专家解决方案架构师。 她拥有数据科学背景,在与各行各业的客户一起设计和构建 ML 应用程序方面拥有 9 年的经验。 作为技术主管,她帮助客户通过新兴技术和创新解决方案加速实现业务价值。 在空闲时间,Maira 喜欢旅行,喜欢在温暖的地方与家人共度时光。

使用 Amazon SageMaker 管道共享来查看或管理跨 AWS 账户 PlatoBlockchain Data Intelligence 的管道。 垂直搜索。 哎。加布里埃尔·齐尔卡 是 AWS 的专业服务顾问。他与客户密切合作,加速他们的云采用之旅。他专注于 MLOps 领域,专注于通过自动化端到端机器学习生命周期来生产机器学习工作负载并帮助实现所需的业务成果。业余时间,他喜欢在巴伐利亚阿尔卑斯山旅行和徒步旅行。

时间戳记:

更多来自 AWS机器学习