本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
存取您的 SageMaker HyperPod 叢集節點
您可以使用 SageMaker HyperPod 叢集主機名稱的格式執行 AWS CLI命令aws ssm start-session,透過 AWS Systems Manager(SSM) 存取 InService 叢集sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]。您可以從 SageMaker HyperPod 主控台或是從 SageMaker HyperPod 的 AWS CLI 命令執行 describe-cluster 和 list-cluster-nodes,擷取叢集 ID、執行個體 ID 和執行個體群組名稱。例如,如果您的叢集 ID 為 aa11bbbbb222、叢集節點名稱為 controller-group,而叢集節點 ID 為 i-111222333444555aa,則 SSM start-session 命令應該如下。
注意
授予使用者 HyperPod 叢集節點的存取權,可讓使用者在節點上安裝和操作使用者受管軟體。確保您維護使用者最低權限許可的原則。
如果您尚未設定 AWS Systems Manager,請遵循 提供的指示設定AWS Systems Manager和執行為叢集使用者存取控制。
$aws ssm start-session \ --target sagemaker-cluster:aa11bbbbb222_controller-group-i-111222333444555aa\ --regionus-west-2Starting session with SessionId: s0011223344aabbccddroot@ip-111-22-333-444:/usr/bin#
請注意,這最初會將您連線為根使用者。在執行任務之前,請執行下列命令來切換到 ubuntu 使用者。
root@ip-111-22-333-444:/usr/bin#sudo su - ubuntuubuntu@ip-111-22-333-444:/usr/bin#
如需 HyperPod 叢集實際使用的進階設定,請參閱下列主題。
主題
存取 SageMaker HyperPod 叢集節點的其他秘訣
使用 HyperPod 提供的 easy-ssh.sh 指令碼來簡化連線程序
為了將先前的程序變成單行命令,HyperPod 團隊會提供 easy-ssh.shdescribe-cluster 和 list-cluster-nodes 命令,並剖析完成 SSM 命令所需的資訊。下列範例命令顯示如何執行 easy-ssh.sh
$chmod +x easy-ssh.sh$./easy-ssh.sh -c<node-group> <cluster-name>Cluster id:<cluster_id>Instance id:<instance_id>Node Group:<node-group>Add the following to your ~/.ssh/config to easily connect:$cat <<EOF >> ~/.ssh/config Host<cluster-name>User ubuntu ProxyCommand sh -c "aws ssm start-session --target sagemaker-cluster:<cluster_id>_<node-group>-<instance_id>--document-name AWS-StartSSHSession --parameters 'portNumber=%p'" EOF Add your ssh keypair and then you can do: $ ssh<cluster-name>aws ssm start-session --target sagemaker-cluster:<cluster_id>_<node-group>-<instance_id>Starting session with SessionId: s0011223344aabbccddroot@ip-111-22-333-444:/usr/bin#
請注意,這最初會將您連線為根使用者。在執行任務之前,請執行下列命令來切換到 ubuntu 使用者。
root@ip-111-22-333-444:/usr/bin#sudo su - ubuntuubuntu@ip-111-22-333-444:/usr/bin#
使用 HyperPod 運算節點做為遠端主機,設定透過 SSH 輕鬆存取
為了進一步簡化從本機電腦使用 SSH 存取運算節點,easy-ssh.sh 指令碼會輸出程式碼片段,將 HyperPod 叢集設定為遠端主機,如上節所示。此程式碼片段會自動產生,以協助您直接新增至本機裝置上的 ~/.ssh/config 檔案。下列程序說明如何設定透過 SSM Proxy 使用 SSH 輕鬆存取,以便您或您的叢集使用者可以直接執行 ssh 以連線至 HyperPod 叢集節點。<cluster-name>
-
在本機裝置上,將具有使用者名稱的 HyperPod 運算節點做為遠端主機新增至
~/.ssh/config檔案。下列命令顯示如何將自動產生的程式碼片段從easy-ssh.sh指令碼附加至~/.ssh/config檔案。確定您從easy-ssh.sh指令碼自動產生且具有正確叢集資訊的輸出中複製它。$cat <<EOF >> ~/.ssh/config Host<cluster-name>UserubuntuProxyCommand sh -c "aws ssm start-session --target sagemaker-cluster:<cluster_id>_<node-group>-<instance_id>--document-name AWS-StartSSHSession --parameters 'portNumber=%p'" EOF -
在 HyperPod 叢集節點上,將本機裝置上的公有金鑰新增至 HyperPod 叢集節點上的
~/.ssh/authorized_keys檔案。-
在本機電腦上列印公有金鑰檔案。
$cat ~/.ssh/id_rsa.pub這應該會傳回您的金鑰。複製此命令的輸出。
(選用) 如果您沒有公有金鑰,請執行下列命令建立一個。
$ssh-keygen -t rsa -q -f "$HOME/.ssh/id_rsa" -N "" -
連線至叢集節點,並切換到使用者以新增金鑰。下列命令是以
ubuntu使用者身分存取的範例。將ubuntu取代為您想要使用 SSH 設定輕鬆存取的使用者名稱。$./easy-ssh.sh -c<node-group> <cluster-name>$sudo su -ubuntuubuntu@ip-111-22-333-444:/usr/bin# -
開啟
~/.ssh/authorized_keys檔案,並在檔案結尾新增公有金鑰。ubuntu@ip-111-22-333-444:/usr/bin#vim ~/.ssh/authorized_keys
-
完成設定後,您可以執行簡化的 SSH 命令,以使用者身分連線至 HyperPod 叢集節點,如下所示。
$ssh<cluster-name>ubuntu@ip-111-22-333-444:/usr/bin#
此外,您可以使用主機從本機裝置上的 IDE 進行遠端開發,例如 Visual Studio Code Remote - SSH
透過 Amazon FSx 共用空間設定多使用者環境
您可以使用 Amazon FSx 共用空間,管理 SageMaker HyperPod 上 Slurm 叢集中的多使用者環境。如果您在 HyperPod 叢集建立期間已使用 Amazon FSx 設定 Slurm 叢集,這是為叢集使用者設定工作區的好選項。建立新的使用者,並在 Amazon FSx 共用檔案系統上設定使用者的主目錄。
提示
若要允許使用者透過其使用者名稱和專用目錄存取您的叢集,您也應該依照《AWS Systems Manager 使用者指南》中開啟 Linux 和 macOS 受管節點的執行身分支援提供的程序開啟 Linux 和 macOS 受管節點的執行身分支援下步驟 5 的選項 2 中的指引,將它們與 IAM 角色或使用者建立關聯。另請參閱設定AWS Systems Manager和執行為叢集使用者存取控制。
在 SageMaker HyperPod 上建立 Slurm 叢集時設定多使用者環境
SageMaker HyperPod 服務團隊會提供指令碼 add_users.sh
-
準備名為
shared_users.txt的文字檔案,您需要以下列格式建立該文字檔案。第一欄用於使用者名稱、第二欄用於唯一使用者 ID,而第三欄用於 Amazon FSx 共用空間中的使用者目錄。username1,uid1,/fsx/username1 username2,uid2,/fsx/username2 ... -
確定您將
shared_users.txt和add_users.sh檔案上傳至 HyperPod 生命週期指令碼的 S3 儲存貯體。當叢集建立、叢集更新或叢集軟體更新正在進行時, add_users.sh會在 shared_users.txt中讀取並正確設定使用者目錄。
建立新的使用者,並將其新增至 SageMaker HyperPod 上執行的現有 Slurm 叢集
-
在主節點上執行下列命令,以儲存有助於建立使用者的指令碼。確定您透過 sudo 許可來執行此操作。
$cat > create-user.sh<< EOL #!/bin/bash set -x # Prompt user to get the new user name. read -p "Enter the new user name, i.e. 'sean': " USER # create home directory as /fsx/<user> # Create the new user on the head node sudo useradd \$USER -m -d /fsx/\$USER --shell /bin/bash; user_id=\$(id -u \$USER) # add user to docker group sudo usermod -aG docker \${USER} # setup SSH Keypair sudo -u \$USER ssh-keygen -t rsa -q -f "/fsx/\$USER/.ssh/id_rsa" -N "" sudo -u \$USER cat /fsx/\$USER/.ssh/id_rsa.pub | sudo -u \$USER tee /fsx/\$USER/.ssh/authorized_keys # add user to compute nodes read -p "Number of compute nodes in your cluster, i.e. 8: " NUM_NODES srun -N \$NUM_NODES sudo useradd -u \$user_id \$USER -d /fsx/\$USER --shell /bin/bash; # add them as a sudoer read -p "Do you want this user to be a sudoer? (y/N): " SUDO if [ "\$SUDO" = "y" ]; then sudo usermod -aG sudo \$USER sudo srun -N \$NUM_NODES sudo usermod -aG sudo \$USER echo -e "If you haven't already you'll need to run:\n\nsudo visudo /etc/sudoers\n\nChange the line:\n\n%sudo ALL=(ALL:ALL) ALL\n\nTo\n\n%sudo ALL=(ALL:ALL) NOPASSWD: ALL\n\nOn each node." fi EOL -
使用下列命令執行指令碼。系統會提示您新增使用者的名稱,以及您要允許使用者存取的運算節點數量。
$bash create-user.sh -
執行下列命令測試使用者。
$sudo su -<user>&& ssh $(srun hostname) -
將使用者資訊新增至
shared_users.txt檔案,以便使用者將在任何新的運算節點或新的叢集上建立。
透過將 HyperPod 叢集與 Active Directory 整合來設定多使用者環境
在實際使用案例中,HyperPod 叢集通常由多個使用者使用:機器學習 (ML) 研究人員、軟體工程師、資料科學家和叢集管理員。他們編輯自己的檔案並執行自己的任務,而不會影響彼此的工作。若要設定多使用者環境,請使用 Linux 使用者和群組機制,透過生命週期指令碼在每個執行個體上靜態建立多個使用者。不過,此方法的缺點是,您需要跨叢集中的多個執行個體複製使用者和群組設定,才能在進行新增、編輯和移除使用者等更新時,在所有執行個體之間保持一致的組態。
若要解決此問題,您可以使用輕量型目錄存取通訊協定 (LDAP)