运行时系统依赖项的私有存储库 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

运行时系统依赖项的私有存储库

您可以使用执行前命令或脚本在作业环境中配置依赖项管理器,例如 pip 或 conda。要实现网络隔离,请使用这两个选项中的任何一个来重定向依赖项管理器,以访问您的私有存储库并在 VPC 内运行 Remote 函数。执行前命令或脚本将在 Remote 函数运行之前运行。您可以使用 @remote 装饰器、RemoteExecutor API 或在配置文件中定义它们。

以下各节介绍如何访问由管理的私有 Python Package 索引 (PyPI) 存储库。 Amazon CodeArtifact这些部分还说明如何访问托管于 Amazon Simple Storage Service (Amazon S3) 上的自定义 conda 通道。

如何使用使用管理的自定义 PyPI 存储库 Amazon CodeArtifact

CodeArtifact 要使用管理自定义 PyPI 存储库,需要满足以下先决条件:

以下执行前命令示例显示了如何在 SageMaker训练作业中配置 pip 以指向您的 CodeArtifact 存储库。有关更多信息,请参阅配置和使用 pi CodeArtifact p

# use a requirements.txt file to import dependencies @remote( instance_type="ml.m5.large" image_uri = "my_base_python:latest", dependencies = './requirements.txt', pre_execution_commands=[ "aws codeartifact login --tool pip --domain my-org --domain-owner <000000000000> --repository my-codeartifact-python-repo --endpoint-url https://vpce-xxxxx.api.codeartifact.us-east-1.vpce.amazonaws.com" ] ) def matrix_multiply(a, b): return np.matmul(a, b)

如何使用 Amazon S3 上托管的自定义 conda 通道

要使用 Amazon S3 来管理自定义 conda 存储库,需要满足以下先决条件:

  • 必须已在您的 Amazon S3 存储桶中设置您的私有 conda 通道,并且必须为所有依赖包编制索引并将其上传到 Amazon S3 存储桶。有关如何为 conda 包编制索引的说明,请参阅创建自定义通道

  • 您的 VPC 应具有对 Amazon S3 存储桶的访问权限。有关更多信息,请参阅用于 Amazon S3 的端点

  • 您的作业映像中的基本 conda 环境应已安装 boto3。要检查您的环境,请在 Anaconda 提示符中输入以下内容,以检查 boto3 是否显示在生成的列表中。

    conda list -n base
  • 应已使用 conda 而不是 mamba 安装您的作业映像。要检查您的环境,请确保上一个代码提示不会返回 mamba

以下执行前命令示例显示了如何在 SageMaker 训练作业中将 conda 配置为指向 Amazon S3 上的私人频道。执行前命令会删除默认频道并将自定义通道添加到 .condarc conda 配置文件中。

# specify your dependencies inside a conda yaml file @remote( instance_type="ml.m5.large" image_uri = "my_base_python:latest", dependencies = "./environment.yml", pre_execution_commands=[ "conda config --remove channels 'defaults'" "conda config --add channels 's3://my_bucket/my-conda-repository/conda-forge/'", "conda config --add channels 's3://my_bucket/my-conda-repository/main/'" ] ) def matrix_multiply(a, b): return np.matmul(a, b)