開始使用本機模式 - Amazon SageMaker AI

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

開始使用本機模式

下列各節概述在 Amazon SageMaker Studio 中開始使用本機模式所需的步驟,包括:

  • 完成先決條件

  • 設置 EnableDockerAccess

  • Docker安裝

先決條件

完成下列先決條件,以在 Studio 應用程式中使用本機模式:

  • 若要從 Amazon Elastic Container Registry 儲存庫提取映像,託管 Amazon ECR 映像的帳戶必須為使用者的執行角色提供存取許可。網域的執行角色也必須允許 Amazon ECR 存取。

  • 使用以下命令,確認您使用的是最新版的 Studio Python SDK: 

    pip install -U sagemaker
  • 若要使用本機模式和 Docker 功能,請使用 AWS Command Line Interface (AWS CLI) 設定網域 DockerSettings 的下列參數: 

    EnableDockerAccess : ENABLED
  • 使用 EnableDockerAccess,您也可以使用控制網域中的使用者是否可以使用本機模式。根據預設,Studio 應用程式中不允許本機模式和 Docker 功能。如需詳細資訊,請參閱設置 EnableDockerAccess

  • 遵循 Docker安裝中的步驟,在 Studio 應用程式中安裝 Docker CLI。

  • 針對 無根 Docker 組態,請確定您的 VPC 具有針對所需 Docker 登錄檔設定的適當端點和路由。

設置 EnableDockerAccess

下列各節說明如何在網域具有公有網際網路存取或處於 VPC-only 模式時設定 EnableDockerAccess

注意

EnableDockerAccess 的變更僅適用於網域更新後建立的應用程式。更新網域後,您必須建立新的應用程式。

公有網際網路存取

下列範例命令展示如何在建立新網域或使用公有網際網路存取更新現有網域時設定 EnableDockerAccess

# create new domain aws --region region \ sagemaker create-domain --domain-name domain-name \ --vpc-id vpc-id \ --subnet-ids subnet-ids \ --auth-mode IAM \ --default-user-settings "ExecutionRole=execution-role" \ --domain-settings '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}' \ --query DomainArn \ --output text # update domain aws --region region \ sagemaker update-domain --domain-id domain-id \ --domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}'

VPC-only 模式

VPC-only 模式下使用網域時,Docker 映像推送和提取請求會透過服務 VPC 路由,而不是客戶設定的 VPC。由於此功能,管理員可以設定受信任 AWS 帳戶 的清單,使用者可以向其提出 Amazon ECR Docker 提取和推送操作請求。

如果 Docker向 AWS 帳戶 不在信任清單中的 發出映像推送或提取請求 AWS 帳戶,則請求會失敗。VPC-only模式不支援在 Amazon Elastic Container Registry (Amazon ECR) 外部Docker提取和推送操作。

預設 AWS 帳戶 會信任下列項目:

  • 託管 SageMaker AI 網域的帳戶。

  • 託管下列 SageMaker 映像的 SageMaker AI 帳戶:

    • DLC 架構映像

    • Sklearn、Spark、XGBoost 處理映像

若要設定其他信任的清單 AWS 帳戶,請指定 VpcOnlyTrustedAccounts值,如下所示:

aws --region region \ sagemaker update-domain --domain-id domain-id \ --domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED", "VpcOnlyTrustedAccounts": ["account-list"]}}'
注意

啟用 無根 Docker 組態 時,VpcOnlyTrustedAccounts 會被忽略,而且 Docker 流量會透過您的 VPC 組態路由,從而允許存取您的 VPC 可連線的任何登錄檔。

無根 Docker 組態

啟用 RootlessDocker 時,Studio 會使用無根 Docker 常駐程式,透過 VPC 路由流量。這可提供增強的安全性,並允許存取其他 Docker 登錄檔。與 RootlessDocker 的主要差異為:

  • 您可以使用 Docker 閘道 IP (172.17.0.1) 而非 localhost 存取容器連接埠。

  • 您的 VPC 組態會決定哪些登錄檔可供 Docker 操作存取。VpcOnlyTrustedAccounts 會被忽略,而 Docker 流量會透過您的 VPC 組態路由。

若要使用無根 Docker,您需要為 DockerSettings 同時將 EnableDockerAccessRootlessDocker 設定為 ENABLED。例如,在上述 設置 EnableDockerAccess 範例中,您可以修改網域設定以包含:

'{"DockerSettings": {"EnableDockerAccess": "ENABLED", "RootlessDocker": "ENABLED"}}'

Docker安裝

若要使用 Docker,您必須從 Studio 應用程式的終端手動安裝 Docker。如果網域可存取網際網路,則安裝 Docker 的步驟會有所不同。

網際網路存取

如果網域是在具有公有網際網路存取的情況下或在網際網路存取受限的 VPC-only 模式下建立,請使用下列步驟來安裝 Docker。

  1. (選用) 如果您的網域是在網際網路存取受限的 VPC-only 模式下建立,請建立可存取 Docker 網站的公有 NAT 閘道。如需指示,請參閱 NAT 閘道

  2. 導覽至您要在其中安裝 Docker 的 Studio 應用程式終端機。

  3. 若要返回應用程式的作業系統,請從終端執行下列命令:

    cat /etc/os-release
  4. 遵循 Amazon SageMaker AI 本機模式範例儲存庫中應用程式作業系統的指示安裝 Docker。

    例如,在 Ubuntu 上安裝 Docker 時,請遵循 https://github.com/aws-samples/amazon-sagemaker-local-mode/blob/main/sagemaker_studio_docker_cli_install/sagemaker-ubuntu-focal-docker-cli-install.sh 中的指令碼,並考量下列事項:

    • 如果鏈結的命令失敗,請一次執行一個命令。

    • Studio 僅支援 Docker 版本 20.10.X. 和 Docker Engine API 版本 1.41

    • 在 Studio 中使用 Docker CLI 不需要下列套件,而且可以略過其安裝:

      • containerd.io

      • docker-ce

      • docker-buildx-plugin

    注意

    您不需要在應用程式中啟動 Docker 服務。根據預設,託管 Studio 應用程式的執行個體會執行 Docker 服務。所有 Docker API 呼叫都是自動透過 Docker 服務路由。

  5. 使用公開的 Docker 通訊端進行 Studio 應用程式內的 Docker 互動。根據預設,會公開下列通訊端:

    unix:///docker/proxy.sock

    預設 USER 的下列 Studio 應用程式環境變數會使用此公開的通訊端:

    DOCKER_HOST

沒有網際網路存取

如果網域是在沒有網際網路存取的 VPC-only 模式下建立,請使用下列步驟來安裝 Docker。

  1. 導覽至您要在其中安裝 Docker 的 Studio 應用程式終端機。

  2. 從終端執行下列命令,以返回應用程式的作業系統:

    cat /etc/os-release
  3. 將必要的 Docker .deb 檔案下載到您的本機電腦。如需下載 Studio 應用程式作業系統所需檔案的相關指示,請參閱安裝 Docker 引擎

    例如,遵循從套件安裝中的步驟 1–4,從 Ubuntu 上的套件安裝 Docker,並考量下列事項:

    • 從套件安裝 Docker。使用其他方法安裝 Docker 將會失敗。

    • 安裝對應至 Docker 版本 20.10.X 的最新套件。

    • 下列套件不需要在 Studio 中使用 Docker CLI。您不需要安裝下列項目:

      • containerd.io

      • docker-ce

      • docker-buildx-plugin

    注意

    您不需要在應用程式中啟動 Docker 服務。根據預設,託管 Studio 應用程式的執行個體會執行 Docker 服務。所有 Docker API 呼叫都是自動透過 Docker 服務路由。

  4. .deb 檔案上傳至 Amazon EFS 檔案系統或應用程式的 Amazon EBS 檔案系統。

  5. 從 Studio 應用程式終端手動安裝 docker-ce-clidocker-compose-plugin .deb 套件。如需詳細資訊和指示,請參閱 Docker 文件網站上的從套件安裝中的步驟 5。

  6. 使用公開的 Docker 通訊端進行 Studio 應用程式內的 Docker 互動。根據預設,會公開下列通訊端:

    unix:///docker/proxy.sock

    預設 USER 的下列 Studio 應用程式環境變數會使用此公開的通訊端:

    DOCKER_HOST