如何將 Amazon SageMaker Python SDK 本機模式搭配 SageMaker Studio 一起使用?
我想將 Amazon SageMaker Python SDK 本機模式搭配 SageMaker Studio 一起使用。
簡短說明
安裝 SageMaker Studio Docker CLI 和 (選用) SageMaker Studio Docker UI 延伸模組,以便在 SageMaker Studio 中新增本機模式和 Docker 功能。
解決方案
先決條件
在開始之前,請務必達到下列先決條件:
- 您的 SageMaker Studio 網域已設定為 VpcOnly 模式 (請注意,不支援 PublicInternetOnly 模式)。
- 您的網域已連線至 Amazon VPC,且 DNS 主機名稱和 DNS 解析選項已開啟。
- 您的 SageMaker Studio 使用者設定檔執行角色擁有下列許可:
sagemaker:DescribeDomain sagemaker:DescribeUserProfile sagemaker:ListTags elasticfilesystem:DescribeMountTargets elasticfilesystem:DescribeMountTargetSecurityGroups elasticfilesystem:ModifyMountTargetSecurityGroups ec2:RunInstances ec2:TerminateInstances ec2:DescribeInstances ec2:DescribeInstanceTypes ec2:DescribeImages ec2:DescribeSecurityGroups ec2:DescribeNetworkInterfaces ec2:DescribeNetworkInterfaceAttribute ec2:CreateSecurityGroup ec2:AuthorizeSecurityGroupIngress ec2:ModifyNetworkInterfaceAttribute ec2:CreateTags
- 您已安裝 Docker CLI 延伸模組。(請注意,一定要有 Docker CLI 才能使用 UI 延伸模組。)
- 您已安裝 Docker Compose。
- 您已安裝 PpYAML, 5.4.1。
建立 SageMaker Studio 生命週期組態指令碼
1. 建立適用於 JupyterServer 應用程式的 Studio 生命週期組態指令碼,以下列任一方式安裝延伸模組:
同時安裝 CLI 和 UI 延伸模組
#!/bin/bash set -ex cd ~ if cd sagemaker-studio-docker-cli-extension then git reset --hard git pull else git clone https://github.com/aws-samples/sagemaker-studio-docker-cli-extension.git cd sagemaker-studio-docker-cli-extension fi nohup ./setup.sh > docker_setup.out 2>&1 & if cd ~/sagemaker-studio-docker-ui-extension then git reset --hard git pull cd else cd git clone https://github.com/aws-samples/sagemaker-studio-docker-ui-extension.git fi nohup ~/sagemaker-studio-docker-ui-extension/setup.sh > docker_setup.out 2>&1 &
僅安裝 CLI 延伸模組
#!/bin/bash set -ex cd ~ if cd sagemaker-studio-docker-cli-extension then git reset --hard git pull else git clone https://github.com/aws-samples/sagemaker-studio-docker-cli-extension.git cd sagemaker-studio-docker-cli-extension fi nohup ./setup.sh > docker_setup.out 2>&1 &
2. 建立適用於 KernelGateway 應用程式的 SageMaker Studio 生命週期組態指令碼:
#!/bin/bash set -eux STATUS=$(python3 -c "import sagemaker_dataprep";echo $?) if [ "$STATUS" -eq 0 ] then echo 'Instance is of Type Data Wrangler' else echo 'Instance is not of Type Data Wrangler' cd ~ if cd sagemaker-studio-docker-cli-extension then git reset --hard git pull else git clone https://github.com/aws-samples/sagemaker-studio-docker-cli-extension.git cd sagemaker-studio-docker-cli-extension fi nohup ./setup.sh > docker_setup.out 2>&1 & fi
3. 從終端使用 base64 編碼對兩方指令碼內容進行編碼:
$ LCC_JS_CONTENT=`openssl base64 -A -in <LifeCycle script file for JupyterServer>` $ LCC_KG_CONTENT=`openssl base64 -A -in <LifeCycle script file for KernelGateway>`
4. 使用這些 AWS Command Line Interface (CLI) 命令,透過環境變數 LCC_JS_CONTENT 和 LCC_KG_CONTENT 建立 Studio 生命週期組態:
$ aws sagemaker create-studio-lifecycle-config --studio-lifecycle-config-name sdocker-js --studio-lifecycle-config-content $LCC_JS_CONTENT --studio-lifecycle-config-app-type JupyterServer $ aws sagemaker create-studio-lifecycle-config --studio-lifecycle-config-name sdocker-kg --studio-lifecycle-config-content $LCC_KG_CONTENT --studio-lifecycle-config-app-type KernelGateway
**注意:**如果執行 CLI 命令時發生錯誤,請確定您使用的是最新版的 AWS CLI。請參閱故障診斷 AWS CLI 錯誤 – AWS Command Line Interface。
更新 Studio 網域 (選用)
更新 Studio 網域以將 LCC 新增到預設使用者:
$ aws sagemaker update-domain --domain-id <domain-id> --default-user-settings '{"JupyterServerAppSettings": {"DefaultResourceSpec": {"InstanceType": "system", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-js"}}, "KernelGatewayAppSettings": {"DefaultResourceSpec": {"InstanceType": "<default instance type>", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-kg"}}}'
更新 Studio 使用者設定檔
更新您的 Studio 使用設定檔,如下所示:
$ aws sagemaker update-user-profile --domain-id <domain-id> --user-profile-name <user profile> --user-settings '{"JupyterServerAppSettings ": {"DefaultResourceSpec": {"InstanceType": "system", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-js"}, "LifecycleConfigArns": ["arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-js"]}, "KernelGatewayAppSettings": {"DefaultResourceSpec": {"InstanceType": "<default instance type>", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-kg"}, "LifecycleConfigArns": ["arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-kg"]}}'
啟動新的 JuypterServer 應用程式
刪除所有執行中的 JupyterServer 應用程式執行個體以完成設定。然後,啟動新的 JupyterServer 應用程式。完成時,新應用程式會顯示 InService 狀態。
如果您使用的是 UI 延伸模組,請等待其安裝完成。啟動新的 JupyterServer 應用程式後,大約需要 10 分鐘的時間。完成時,必須重新整理瀏覽器才能看到延伸模組。
(選用) 部分 Studio 核心隨附的是 PyYAML > = 6.0,沒有 pgrep 或 procps Python 套裝軟體。本機模式需要 PyYAML==5.4.1,因為較高的版本會破壞這項功能。此外,您還需要 pgrep 才能刪除本機端點。如有必要,請使用下列命令從您的 Studio 筆記本安裝這些必要元件。安裝完成後,請重新啟動核心。
!conda update --force -y conda !conda install -y pyyaml==5.4.1 !apt-get install -y procps
建立 Docker 主機
現在,使用您先前安裝的 CLI 延伸模組建立 Docker 主機。使用任何 Amazon Elastic Compute Cloud (EC2) 執行個體類型 (例如 c5.xlarge),如下所示:
!sdocker create-host --instance-type c5.xlarge
輸出必須看起來與以下內容類似:
Successfully launched DockerHost on instance i-xxxxxxxxxxxxxxxxx with private DNS ip-xxx-xxx-xxx-xxx.ec2.internal Waiting on docker host to be ready Docker host is ready! ip-xxx-xxx-xxx-xxx.ec2.internal Successfully created context "ip-xxx-xxx-xxx-xxx.ec2.internal " ip-xxx-xxx-xxx-xxx.ec2.internal Current context is now "ip-xxx-xxx-xxx-xxx.ec2.internal "
如果您已安裝 UI 延伸模組,請從 UI 選取執行個體類型,然後選擇啟動主機按鈕。新主機會出現在 Docker 主機清單中,旁邊會顯示一個綠色圓圈。
以本機模式執行
在本機模式下使用 SageMaker Python SDK。
**重要事項:**為避免產生額外費用,請在本機模式使用完畢且再也不需要使用 Docker 後,關閉您啟動的所有 Docker 主機。若要使用 CLI 延伸模組關閉 Docker 主機,請輸入:
!sdocker terminate-current-host
或者,在 UI 延伸模組中的 Docker 主機底下,選擇每個 Docker 主機旁邊的電源圖示。此動作會關閉 Docker 主機,並將其從 Docker 主機清單中移除。
**注意:**如需有關如何使用 CLI 延伸模組的詳細資訊,請參閱 GitHub 網站上的 SageMaker Studio Docker CLI extension - Docker integration for SageMaker Studio (SageMaker Docker CLI 延伸模組 – 適用於 SageMaker Studio 的 Docker 整合)。
相關內容
- 已提問 1 年前lg...
- 已提問 9 個月前lg...
- 已提問 9 個月前lg...
- AWS 官方已更新 6 個月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前