翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
SageMaker HyperPod クラスターノードにアクセスする
SageMaker HyperPod クラスターのホスト名を の形式でaws ssm start-session
指定して AWS CLI コマンドを実行すると、 AWS Systems Manager (SSM) を介して InService クラスターにアクセスできますsagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]
。クラスター ID、インスタンス ID、インスタンスグループ名は、SageMaker HyperPod コンソールから、または describe-cluster
と list-cluster-nodes
を実行して SageMaker HyperPod のAWS CLI コマンドから取得できます。例えば、クラスター ID が aa11bbbbb222
、クラスターノード名が controller-group
、クラスターノード ID が i-111222333444555aa
の場合、SSM start-session
コマンドは次のようになります。
注記
HyperPod クラスターノードへのアクセス権をユーザーに付与すると、ユーザーはノードにユーザー管理ソフトウェアをインストールして操作できます。ユーザーの最小特権のアクセス許可の原則を維持してください。
を設定していない場合は AWS Systems Manager、「」に記載されている手順に従ってくださいクラスターユーザーアクセスコントロールのセットアップ AWS Systems Manager と Run As。
$
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#
これは、最初にユーザーをルートユーザーとして接続する点に注意してください。ジョブを実行する前に、次のコマンドを実行して ubuntu
ユーザーに切り替えます。
root@ip-111-22-333-444:/usr/bin#
sudo su - ubuntu
ubuntu@ip-111-22-333-444:/usr/bin#
HyperPod クラスターを実際に使用するための詳細設定については、以下のトピックを参照してください。
トピック
SageMaker HyperPod クラスターノードにアクセスするためのその他のヒント
HyperPod が提供する easy-ssh.sh
スクリプトを使用して接続プロセスを簡素化する
前のプロセスを 1 行のコマンドにするため、HyperPod チームは、クラスター情報を取得してそれを SSM コマンドに集約し、コンピューティングノードに接続する easy-ssh.sh
describe-cluster
コマンドと list-cluster-nodes
コマンドを実行し、SSM コマンドの完了に必要な情報を解析するため、必要な HyperPod クラスター情報を手動で探す必要はありません。次のコマンド例は、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 - ubuntu
ubuntu@ip-111-22-333-444:/usr/bin#
HyperPod コンピューティングノードをリモートホストとして使用して SSH で簡単にアクセスできるように設定する
ローカルマシンから SSH を使用してコンピューティングノードにアクセスする操作をさらに簡素化するため、easy-ssh.sh
スクリプトは、前のセクションに示したように、HyperPod クラスターをリモートホストとして設定するコードスニペットを出力します。コードスニペットは、ローカルデバイス上の ~/.ssh/config
ファイルに直接追加できるよう自動生成されます。次の手順は、SSM プロキシ経由で 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 ""
-
クラスターノードに接続し、ユーザーに切り替えてキーを追加します。次のコマンドは、
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#
さらに、Visual Studio Code Remote - SSH
Amazon FSx 共有スペースを通じてマルチユーザー環境を設定する
Amazon FSx 共有スペースを使用して、SageMaker HyperPod 上の Slurm クラスター内のマルチユーザー環境を管理できます。HyperPod クラスターの作成時に Amazon FSx で Slurm クラスターを設定した場合、クラスターユーザーのワークスペースを設定するのに適したオプションです。新しいユーザーを作成し、Amazon FSx 共有ファイルシステムでユーザーのホームディレクトリを設定します。
ヒント
ユーザー名と専用ディレクトリを介したクラスターへのアクセスをユーザーに許可するには、「 AWS Systems Manager ユーザーガイド」の「Linux と macOS のマネージドノードで Run As サポートを有効にする」で提供されている手順「Linux と macOS のマネージドノードで Run As サポートを有効にするには」のステップ 5 のオプション 2 で説明されているとおりにタグ付けすることにより、ユーザーを IAM ロールまたはユーザーに関連付ける必要があります。「クラスターユーザーアクセスコントロールのセットアップ AWS Systems Manager と Run As」も参照してください。
SageMaker HyperPod で Slurm クラスターを作成するときにマルチユーザー環境を設定するには
SageMaker HyperPod サービスチームは、基本ライフサイクルスクリプトサンプルの一部としてスクリプト add_users.sh
-
次の形式で作成する必要がある
shared_users.txt
という名前のテキストファイルを準備します。最初の列はユーザー名用、2 番目の列は一意のユーザー ID 用、3 番目の列は Amazon FSx 共有スペースのユーザーディレクトリ用です。username1,uid1,/fsx/username1 username2,uid2,/fsx/username2 ...
-
必ず、HyperPod ライフサイクルスクリプトの S3 バケットに
shared_users.txt
およびadd_users.sh
ファイルをアップロードしてください。クラスターの作成、クラスターの更新、またはクラスターソフトウェアの更新が進行中、 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 ユーザーおよびグループメカニズムを使用して、ライフサイクルスクリプトを通じて各インスタンスに複数のユーザーを静的に作成します。ただし、このアプローチの欠点は、ユーザーの追加、編集、削除などの更新を行う際に、クラスター内の複数のインスタンス間でユーザー設定とグループ設定を複製して、すべてのインスタンスで一貫した設定を維持する必要がある点です。
これを解決するため、Lightweight Directory Access Protocol (LDAP)