建立自訂 SageMaker 映像檔 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立自訂 SageMaker 映像檔

重要

允許 Amazon SageMaker 工作室或 Amazon 工作 SageMaker 室經典版創建 Amazon SageMaker 資源的自定義 IAM 政策還必須授予許可才能向這些資源添加標籤。需要向資源添加標籤的權限,因為 Studio 和 Studio 經典版會自動標記它們創建的任何資源。如果 IAM 政策允許 Studio 和 Studio 經典版建立資源,但不允許標記,則在嘗試建立資源時可能會發生 AccessDenied "" 錯誤。如需詳細資訊,請參閱 提供標記資 SageMaker源的權限

AWS Amazon 的受管政策 SageMaker授予建立 SageMaker 資源的權限,已包含在建立這些資源時新增標籤的權限。

重要

截至 2023 年 11 月 30 日,以前的 Amazon SageMaker 工作室體驗現在被命名為 Amazon SageMaker 工作室經典。下面的部分是特定於使用 Studio 傳統版應用程序。如需使用更新後的 Studio 體驗的相關資訊,請參閱Amazon SageMaker 一室

本主題說明如何使用主 SageMaker 控台或建立自訂 SageMaker 映像檔 AWS CLI。

當您從主控台建立映像時, SageMaker 也會建立初始映像版本。每個映像版本代表存放在 Amazon Elastic 容器登錄檔 (ECR) 中的容器映像。容器映像檔必須滿足要在 Amazon SageMaker 工作室經典版中使用的要求。如需詳細資訊,請參閱 自訂 SageMaker 影像規格。如需在本機測試映像及解決常見問題的相關資訊,請參閱 SageMaker Studio 傳統自訂映像範例存放庫

建立自訂 SageMaker 映像檔之後,您必須將其附加至您的網域或共用空間,才能與 Studio 經典版搭配使用。如需詳細資訊,請參閱 附加自訂 SageMaker 影像

從控制台創建 SageMaker 映像

以下部分將演示如何從 SageMaker控制台創建自定義 SageMaker 映像。

建立映像
  1. 在以下位置打開 Amazon SageMaker 控制台 https://console.aws.amazon.com/sagemaker/

  2. 在左側導覽窗格中,選擇管理員組態

  3. 管理員組態下,選擇映像

  4. 自訂映像頁面中,選擇建立映像

  5. 對於映像來源,請在 Amazon ECR 中輸入容器映像的登錄檔路徑。路徑格式如下。

    acct-id.dkr.ecr.region.amazonaws.com/repo-name[:tag] or [@digest]

  6. 選擇下一步

  7. 映像屬性下,輸入下列內容:

    • 圖片名稱 — 此名稱對您目前的帳戶而言都必須是唯一的 AWS 區域。

    • (選擇性) 顯示名稱 — 顯示在 Studio 典型使用者介面中的名稱。如果未提供,Image name 則會顯示出來。

    • (選用) 描述 – 映像的一項描述。

    • IAM 角色 — 角色必須附加AmazonSageMakerFull存取政策。在下拉式清單中,選擇下列其中一個選項:

      • 建立新角色 — 指定您希望筆記本使用者可以存取的任何其他 Amazon Simple Storage Service (Amazon S3) 儲存貯體。如果您不想將存取許可新增至更多儲存貯體,請選擇

        SageMaker 將AmazonSageMakerFullAccess原則附加至角色。此角色可讓筆記本使用者存取核取標記旁列出的 S3 儲存貯體。

      • 輸入自訂 IAM 角色 ARN — 輸入 IAM 角色的 Amazon Resource Name (ARN)。

      • 使用現有角色 — 從清單中選擇一個現有角色。

    • (選用) 映像標籤 — 選擇新增標籤。您最多可新增 50 個標籤。您可以使用 Studio 傳統版使用者介面、 SageMaker主控台或 SageMaker Search API 來搜尋標籤。

  8. 選擇提交

新映像會顯示在自訂映像清單中並以重點標示。已成功建立映像後,您可以選擇映像名稱來檢視其屬性,或選擇建立版本建立其他版本。

若要建立其他映像版本
  1. 在與映像相同的行上選擇建立版本

  2. 對於映像來源,請輸入 Amazon ECR 容器映像的登錄檔路徑。容器映像檔不應與舊版影像中使用的 SageMaker 影像相同。

從建立 SageMaker 映像檔 AWS CLI

您可以執行下列步驟,使用 SageMaker 從容器映像建立映像 AWS CLI。

  • 建立 Image

  • 建立 ImageVersion

  • 建立一個程式組態檔案。

  • 建立 AppImageConfig

若要建立影 SageMaker 像圖元
  1. 建立 SageMaker 映像檔。

    aws sagemaker create-image \ --image-name custom-image \ --role-arn arn:aws:iam::<acct-id>:role/service-role/<execution-role>

    回應看起來應該類似以下的內容。

    { "ImageArn": "arn:aws:sagemaker:us-east-2:acct-id:image/custom-image" }
  2. 從容器 SageMaker 映像檔建立映像版本。

    aws sagemaker create-image-version \ --image-name custom-image \ --base-image <acct-id>.dkr.ecr.<region>.amazonaws.com/smstudio-custom:custom-image

    回應看起來應該類似以下的內容。

    { "ImageVersionArn": "arn:aws:sagemaker:us-east-2:acct-id:image-version/custom-image/1" }
  3. 檢查映像檔版本是否已成功建立。

    aws sagemaker describe-image-version \ --image-name custom-image \ --version-number 1

    回應看起來應該類似以下的內容。

    { "ImageVersionArn": "arn:aws:sagemaker:us-east-2:acct-id:image-version/custom-image/1", "ImageVersionStatus": "CREATED" }
    注意

    如果回應為 "ImageVersionStatus": "CREATED_FAILED",則回應也會包含失敗原因。許可問題是導致失敗的常見原因。如果在為自訂映像啟動或執行 KernelGateway 應用程式時發生故障,也可以檢查 Amazon CloudWatch 日誌。日誌群組的名稱為 /aws/sagemaker/studio。日誌串流的名稱為 $domainID/$userProfileName/KernelGateway/$appName

  4. 建立名為 app-image-config-input.json 的組態檔案。KernelSpecsName 值必須符合與此 AppImageConfig 相關聯之映像中可用之 KernelSpec 的名稱。此值區分大小寫。您可以從容器內的 Shell 執行 jupyter-kernelspec list,在映像中找到可用的核心規格。MountPath 是掛載 Amazon Elastic File System (Amazon EFS) 主目錄的映像內的路徑。它必須與您在容器內使用的路徑不同,因為掛載 Amazon EFS 主目錄時,該路徑將被覆寫。

    注意

    下列 DefaultUIDDefaultGID 組合是唯一可接受的值:

    • 預設值:1000 和預設值:100

    • 預設值:0 和預設值:0

    { "AppImageConfigName": "custom-image-config", "KernelGatewayImageConfig": { "KernelSpecs": [ { "Name": "python3", "DisplayName": "Python 3 (ipykernel)" } ], "FileSystemConfig": { "MountPath": "/home/sagemaker-user", "DefaultUid": 1000, "DefaultGid": 100 } } }
  5. AppImageConfig 使用在上一步中創建的文件創建。

    aws sagemaker create-app-image-config \ --cli-input-json file://app-image-config-input.json

    回應看起來應該類似以下的內容。

    { "AppImageConfigArn": "arn:aws:sagemaker:us-east-2:acct-id:app-image-config/custom-image-config" }