本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
存取 SageMaker HyperPod叢集節點
您InService可以透過 AWS Systems Manager (SSM) 存取 AWS CLI SageMaker HyperPod叢集,方法是以. aws ssm start-session
sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]
您可以從SageMaker HyperPod 主控台或執行和的AWS CLI 命令擷取叢集 ID、執行個體 ID describe-cluster
和list-cluster-nodes
執行個體群組名稱 SageMaker HyperPod。例如,如果您的叢集 ID 為aa11bbbbb222
,叢集節點名稱為controller-group
,而叢集節點識別碼為i-111222333444555aa
,則 SSM start-session
命令應如下所示。
注意
如果您尚未設定 AWS Systems Manager,請依照中提供的指示進行設定 AWS Systems Manager 以及叢集使用者存取控制的執行身分。
$
aws ssm start-session \ --target sagemaker-cluster:
aa11bbbbb222
_controller-group
-i-111222333444555aa
\ --regionus-west-2
Starting session with SessionId: s0011223344aabbccdd
root@ip-111-22-333-444:/usr/bin#
請注意,這最初以 root 用戶身份連接您。執行工作之前,請執行下列命令以切換至ubuntu
使用者。
root@ip-111-22-333-444:/usr/bin#
sudo su - ubuntu
ubuntu@ip-111-22-333-444:/usr/bin#
如需 HyperPod 叢集實際使用的進階設定,請參閱下列主題。
存取 SageMaker HyperPod 叢集節點的其他秘訣
使用提供的easy-ssh.sh
腳本 HyperPod 來簡化連接過程
為了將先前的處理序設為單行命令, HyperPod 小組會提供擷取叢集資訊的指令easy-ssh.sh
describe-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#
請注意,這最初以 root 用戶身份連接您。執行工作之前,請執行下列命令以切換至ubuntu
使用者。
root@ip-111-22-333-444:/usr/bin#
sudo su - ubuntu
ubuntu@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>
Userubuntu
ProxyCommand 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 ""
-
Connect 至叢集節點並切換至使用者以新增金鑰。以下命令是以
ubuntu
用戶身份訪問的示例。取代ubuntu
為您要設定使用 SSH 輕鬆存取的使用者名稱。$
./easy-ssh.sh -c
<node-group> <cluster-name>
$
sudo su -
ubuntu
ubuntu@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 程式碼遠端-SSH
透過 Amazon FSx 共用空間設定多使用者環境
您可以使用 Amazon FSx 共用空間來管理上 Slurm 叢集中的多使用者環境。 SageMaker HyperPod如果您在叢集建立期間已使用 Amazon FSx 設定 Slurm HyperPod 叢集,這是為叢集使用者設定工作區的好選擇。在 Amazon FSx 共用檔案系統上建立新使用者並為該使用者設定主目錄。
提示
若要允許使用者透過其使用者名稱和專用目錄存取您的叢集,您也應該將它們與 IAM 角色或使用者建立關聯,方法是在使用 AWS Systems Manager 者指南中針對 Linux 和 macOS 受管節點開啟 Linux 和 macOS 受管節點的執行身分支援中的程序 5 中的選項 2 中的指引標記。另請參閱設定 AWS Systems Manager 以及叢集使用者存取控制的執行身分。
在上建立 Slurm 叢集時設定多使用者環境 SageMaker HyperPod
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
檔案上傳到 S3 儲存貯體以供 HyperPod 生命週期指令碼使用。叢集建立、叢集更新或叢集軟體更新正在進行時, add_users.sh
讀取 shared_users.txt
並正確設定使用者目錄。
若要建立新使用者並新增至在上執行的現有 Slurm 叢集 SageMaker HyperPod
-
在 head 節點上,執行下列命令以儲存可協助建立使用者的指令碼。確保您使用 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 叢集與使用中目錄來設定多使用者環境
在實際使用案例中, HyperPod 叢集通常由多位使用者使用:機器學習 (ML) 研究人員、軟體工程師、資料科學家和叢集管理員。他們編輯自己的文件並運行自己的任務,而不會影響彼此的工作。若要設定多使用者環境,請使用 Linux 使用者和群組機制,透過生命週期指令碼在每個執行個體上靜態建立多個使用者。但是,這種方法的缺點是,您需要在叢集中的多個執行個體之間複製使用者和群組設定,以便在進行更新 (例如新增、編輯和移除使用者) 時,在所有執行個體之間保持一致的組態。
為了解決這個問題,您可以使用輕量級目錄訪問協議(LDAP)