本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
適用執行期相依性的私有儲存庫
您可以使用預先執行命令或指令碼在工作環境設定像 pip 或 conda 這樣的相依性管理器。若要達成網路隔離,請使用以下任一選項重新導向相依性管理器來存取私有儲存庫並在 VPC 執行遠端函式。在遠端函式執行之前,將先執行預先執行命令或指令碼。您可以使用 @remote 裝飾項目、RemoteExecutor API 或組態檔案來加以定義。
下列各節說明如何存取使用 管理的私有 Python 套件索引 (PyPI) 儲存庫AWS CodeArtifact。這些區段還顯示如何存取 Amazon Simple Storage Service (Amazon S3) 託管的自訂 conda 頻道。
如何使用透過AWSCodeArtifact 管理的自訂 PyPI 儲存庫
若要使用 CodeArtifact 來管理自訂 PyPI 儲存庫,需要以下先決條件:
-
您應已建立私有 PyPI 儲存庫。您可以使用 AWS CodeArtifact來建立和管理私有套件儲存庫。若要進一步了解 CodeArtifact,請參閱 CodeArtifact 使用者指南。
-
您的 VPC 應可存取 CodeArtifact 儲存庫。若要允許從您的 VPC 連接 CodeArtifact 儲存庫,您必須執行以下操作:
-
為您的 VPC 建立 Amazon S3 閘道端點,以便讓 CodeArtifact 儲存套件資產。
下列預先執行命令範例顯示如何在 SageMaker AI 訓練任務設定 pip,以便指向 CodeArtifact 儲存庫。如需更多資訊,請參閱使用 CodeArtifact 設定及使用 pip。
# 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 的端點。
-
應已安裝
boto3至工作映像的基本 conda 環境。若要檢查您的環境,請在 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)