本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
运行时系统依赖项的私有存储库
您可以使用执行前命令或脚本在作业环境中配置依赖项管理器,例如 pip 或 conda。要实现网络隔离,请使用这两个选项中的任何一个来重定向依赖项管理器,以访问您的私有存储库并在 VPC 内运行 Remote 函数。执行前命令或脚本将在 Remote 函数运行之前运行。您可以使用 @remote 装饰器、RemoteExecutor
API 或在配置文件中定义它们。
以下各节介绍如何访问由管理的私有 Python Package 索引 (PyPI) 存储库。 AWS CodeArtifact这些部分还说明如何访问托管于 Amazon Simple Storage Service (Amazon S3) 上的自定义 conda 通道。
如何使用使用管理的自定义 PyPI 存储库 AWS CodeArtifact
CodeArtifact 要使用管理自定义 PyPI 存储库,需要满足以下先决条件:
-
您的私有 PyPI 存储库应已创建。您可以使用 AWS CodeArtifact 来创建和管理您的私有软件包存储库。要了解更多信息 CodeArtifact,请参阅CodeArtifact 用户指南。
-
您的 VPC 应该可以访问您的 CodeArtifact 存储库。要允许从您的 VPC 连接到您的 CodeArtifact 存储库,您必须执行以下操作:
-
为您的 VPC 创建一个 Amazon S3 网关终端节点,该终端节点 CodeArtifact 允许存储包资产。
以下执行前命令示例显示了如何在 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 --domainmy-org
--domain-owner <000000000000
> --repositorymy-codeartifact-python-repo
--endpoint-urlhttps://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)