SageMaker HyperPod클러스터 노드에 액세스하세요 - 아마존 SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

SageMaker HyperPod클러스터 노드에 액세스하세요

형식의 InService클러스터 호스트 이름을 AWS CLI 사용하여 명령을 aws ssm start-session 실행하여 AWS Systems Manager (SSM) 을 통해 SageMaker HyperPod 클러스터에 액세스할 수 있습니다. sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id] SageMaker HyperPod 콘솔에서 또는 의 AWS CLI 명령을 실행하여 클러스터 ID, 인스턴스 ID describe-clusterlist-cluster-nodes 인스턴스 그룹 이름을 검색할 수 있습니다. SageMaker HyperPod 예를 들어 클러스터 ID가 이고 aa11bbbbb222 클러스터 노드 이름이 이며 controller-group 클러스터 노드 ID가 i-111222333444555aa 인 경우 SSM start-session 명령은 다음과 같아야 합니다.

참고

AWS Systems Manager설정하지 않은 경우 에 제공된 지침을 따르십시오. 클러스터 사용자 액세스 제어를 위한 설정 AWS Systems Manager 및 Run As

$ aws ssm start-session \ --target sagemaker-cluster:aa11bbbbb222_controller-group-i-111222333444555aa \ --region us-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 스크립트를 사용하여 연결 프로세스를 단순화하십시오.

이전 프로세스를 한 줄 명령으로 만들기 위해 HyperPod 팀은 클러스터 정보를 검색하고 이를 SSM 명령으로 집계한 다음 컴퓨팅 노드에 연결하는 easy-ssh.sh스크립트를 제공합니다. 이 스크립트가 describe-cluster 실행되고 SSM list-cluster-nodes 명령을 완료하는 데 필요한 정보를 명령하고 파싱하므로 필요한 HyperPod 클러스터 정보를 수동으로 찾을 필요가 없습니다. 다음 예제 명령은 스크립트 실행 방법을 보여줍니다. easy-ssh.sh 성공적으로 실행되면 루트 사용자로 클러스터에 연결됩니다. 또한 SSM 프록시를 통해 HyperPod 클러스터를 원격 호스트로 추가하여 SSH를 설정하는 코드 스니펫도 인쇄합니다. SSH를 설정하면 Visual Studio Code와 같은 로컬 개발 환경을 클러스터와 연결할 수 있습니다. HyperPod

$ 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: 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 컴퓨팅 노드를 원격 호스트로 사용하여 SSH로 쉽게 액세스할 수 있도록 설정합니다.

로컬 시스템에서 SSH를 사용하여 컴퓨팅 노드에 액세스하는 작업을 더욱 단순화하기 위해 easy-ssh.sh 스크립트는 이전 섹션에 표시된 대로 HyperPod 클러스터를 원격 호스트로 설정하는 코드 스니펫을 출력합니다. 코드 스니펫은 자동으로 생성되므로 로컬 장치의 ~/.ssh/config 파일에 직접 추가할 수 있습니다. 다음 절차는 사용자 또는 클러스터 사용자가 직접 ssh <cluster-name> 실행하여 클러스터 노드에 연결할 수 있도록 SSM 프록시를 통해 SSH를 사용하여 쉽게 액세스할 수 있도록 설정하는 방법을 보여줍니다. HyperPod

  1. 로컬 디바이스에서 사용자 이름이 있는 HyperPod 컴퓨팅 노드를 원격 호스트로 파일에 추가합니다. ~/.ssh/config 다음 명령은 easy-ssh.sh 스크립트에서 자동 생성된 코드 스니펫을 파일에 추가하는 방법을 보여줍니다. ~/.ssh/config 올바른 클러스터 정보가 있는 easy-ssh.sh 스크립트의 자동 생성 출력에서 복사해야 합니다.

    $ 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
  2. HyperPod 클러스터 노드에서 로컬 장치의 공개 키를 HyperPod 클러스터 노드의 ~/.ssh/authorized_keys 파일에 추가합니다.

    1. 로컬 시스템에서 퍼블릭 키 파일을 인쇄합니다.

      $ cat ~/.ssh/id_rsa.pub

      그러면 키가 반환될 것입니다. 이 명령의 출력을 복사합니다.

      (선택 사항) 공개 키가 없는 경우 다음 명령을 실행하여 공개 키를 만드십시오.

      $ ssh-keygen -t rsa -q -f "$HOME/.ssh/id_rsa" -N ""
    2. 클러스터 노드에 연결하고 키를 추가할 사용자로 전환합니다. 다음 명령은 ubuntu 사용자로 액세스하는 예제입니다. ubuntuSSH로 쉽게 액세스할 수 있도록 설정하려는 사용자 이름으로 바꾸십시오.

      $ ./easy-ssh.sh -c <node-group> <cluster-name> $ sudo su - ubuntu ubuntu@ip-111-22-333-444:/usr/bin#
    3. ~/.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 공유 공간을 사용하여 Slurm 클러스터의 다중 사용자 환경을 관리할 수 있습니다. SageMaker HyperPod 클러스터를 생성하는 동안 Amazon FSx로 Slurm 클러스터를 구성한 경우 HyperPod 클러스터 사용자를 위한 작업 공간을 설정하는 데 유용한 옵션입니다. Amazon FSx 공유 파일 시스템에서 새 사용자를 생성하고 해당 사용자의 홈 디렉터리를 설정합니다.

작은 정보

사용자가 사용자 이름 및 전용 디렉터리를 통해 클러스터에 액세스할 수 있도록 하려면 사용 설명서의 Linux 및 macOS 관리 노드에 대한 Run As 지원 활성화에 제공된 Linux 및 macOS 관리 노드에 대한 Run As 지원을 활성화하려면 5단계 옵션 2에 설명된 대로 태그를 지정하여 IAM 역할 또는 사용자와 연결해야 합니다. AWS Systems Manager 클러스터 사용자 액세스 제어를 위한 설정 AWS Systems Manager 및 Run As 섹션도 참조하십시오.

Slurm 클러스터를 생성하는 동안 다중 사용자 환경을 설정하려면 SageMaker HyperPod

SageMaker HyperPod 서비스 팀은 기본 라이프사이클 스크립트 add_users.sh샘플의 일부로 스크립트를 제공합니다.

  1. 생성해야 shared_users.txt 하는 이름의 텍스트 파일을 다음 형식으로 준비하십시오. 첫 번째 열은 사용자 이름, 두 번째 열은 고유 사용자 ID, 세 번째 열은 Amazon FSx 공유 공간의 사용자 디렉터리에 대한 것입니다.

    username1,uid1,/fsx/username1 username2,uid2,/fsx/username2 ...
  2. 수명 주기 스크립트의 경우 shared_users.txtadd_users.sh파일을 S3 버킷에 HyperPod 업로드해야 합니다. 클러스터 생성, 클러스터 업데이트 또는 클러스터 소프트웨어 업데이트가 진행 중인 동안에는 사용자 디렉토리의 add_users.sh읽기 shared_users.txt 및 설정이 제대로 이루어집니다.

에서 실행 중인 기존 Slurm 클러스터에 새 사용자를 생성하고 추가하려면 SageMaker HyperPod

  1. 헤드 노드에서 다음 명령을 실행하여 사용자를 생성하는 데 도움이 되는 스크립트를 저장합니다. 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
  2. 다음 명령으로 스크립트를 실행합니다. 사용자 이름과 사용자 액세스를 허용할 컴퓨팅 노드 수를 추가하라는 메시지가 표시됩니다.

    $ bash create-user.sh
  3. 다음 명령을 실행하여 사용자를 테스트합니다.

    $ sudo su - <user> && ssh $(srun hostname)
  4. 새 컴퓨팅 노드 또는 새 클러스터에 사용자가 생성되도록 shared_users.txt 파일에 사용자 정보를 추가합니다.

HyperPod 클러스터를 Active Directory와 통합하여 다중 사용자 환경을 설정합니다.

실제 사용 사례에서는 일반적으로 기계 학습 (ML) 연구원, HyperPod 소프트웨어 엔지니어, 데이터 과학자, 클러스터 관리자 등 여러 사용자가 클러스터를 사용합니다. 이들은 서로의 작업에 영향을 주지 않고 자신의 파일을 편집하고 자체 작업을 실행합니다. 다중 사용자 환경을 설정하려면 Linux 사용자 및 그룹 메커니즘을 사용하여 수명 주기 스크립트를 통해 각 인스턴스에 정적으로 여러 사용자를 생성합니다. 그러나 이 접근 방식의 단점은 사용자 추가, 편집 및 제거와 같은 업데이트를 수행할 때 모든 인스턴스에서 일관된 구성을 유지하려면 클러스터의 여러 인스턴스에 사용자 및 그룹 설정을 복제해야 한다는 것입니다.

이 문제를 해결하려면 LDAP (경량 디렉터리 액세스 프로토콜) 및 LDAPS (TLS/SSL을 통한 LDAP) 를 사용하여 Microsoft Active Directory용 디렉터리 서비스와 같은 디렉터리 서비스와 통합할 수 있습니다.AWS 클러스터에서 Active Directory와 다중 사용자 환경을 설정하는 방법에 대해 자세히 알아보려면 원활한 다중 사용자 로그인을 위한 Active Directory와 HyperPod HyperPod 클러스터 통합을 참조하십시오.