翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
クラスターノードにアクセスする SageMaker HyperPod
AWS Systems Manager (SSM) を使用してInServiceクラスターにアクセスするには、 形式のクラスターホスト名aws ssm start-session
を使用して AWS CLI SageMaker HyperPod コマンドを実行しますsagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]
。クラスター ID、インスタンス ID、およびインスタンスグループ名は、SageMaker HyperPod コンソールから、または のコマンドlist-cluster-nodes
から describe-cluster
および を実行して取得できます。 AWS CLI SageMaker HyperPod例えば、クラスター ID が aa11bbbbb222
で、クラスターノード名が controller-group
で、クラスターノード ID が の場合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#
これは、最初にユーザーをルートユーザーとして接続することに注意してください。ジョブを実行する前に、次のコマンドを実行して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 を簡素化する
前のプロセスを 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経由で簡単にアクセスできるように を設定する方法を示します。これにより、ユーザーまたはクラスターユーザーがクラスター HyperPod ノードに直接 を実行してssh
接続できます。<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共有スペースを使用して、 上の Slurm クラスター内のマルチユーザー環境を管理できます SageMaker HyperPod。 HyperPod クラスターの作成FSx中に Slurm クラスターを Amazon で設定した場合、クラスターユーザーのワークスペースを設定するのに適したオプションです。新しいユーザーを作成し、Amazon FSx共有ファイルシステムでユーザーのホームディレクトリを設定します。
ヒント
ユーザーがユーザー名と専用ディレクトリからクラスターにアクセスできるようにするには、 AWS Systems Manager 「 ユーザーガイド」の「Linux および macOS マネージドノードのサポートを有効にする」の手順の「ステップ 5 のオプション 2」で説明されているようにタグ付けしてIAM、ロールまたはユーザーに関連付ける必要があります。 macOS 「クラスターユーザーアクセスコントロールの設定 AWS Systems Manager と実行」も参照してください。
で Slurm クラスターを作成するときにマルチユーザー環境を設定するには SageMaker HyperPod
SageMaker HyperPod サービスチームは、基本ライフサイクルスクリプトサンプルadd_users.sh
-
次の形式で作成する必要がある
shared_users.txt
という名前のテキストファイルを準備します。最初の列はユーザー名用、2 番目の列は一意のユーザー 用IDs、3 番目の列は Amazon FSx共有スペースのユーザーディレクトリ用です。username1,uid1,/fsx/username1 username2,uid2,/fsx/username2 ...
-
HyperPod ライフサイクルスクリプト用に
shared_users.txt
とadd_users.sh
ファイルを S3 バケットにアップロードしていることを確認してください。クラスターの作成、クラスターの更新、またはクラスターソフトウェアの更新が進行中、 は で add_users.sh
読み取り shared_users.txt
、ユーザーディレクトリを適切にセットアップします。
新しいユーザーを作成し、 で実行されている既存の Slurm クラスターに追加するには SageMaker HyperPod
-
ヘッドノードで、次のコマンドを実行して、ユーザーの作成に役立つスクリプトを保存します。これを 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)