훈련 운영자 설치 - Amazon SageMaker AI

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

훈련 운영자 설치

훈련 운영자를 설치하는 방법에 대해 알아보려면 다음 섹션을 참조하세요.

사전 조건

HyperPod 훈련 운영자를 사용하려면 먼저 다음 사전 조건을 충족해야 합니다.

훈련 운영자 설치

이제 SageMaker AI 콘솔, Amazon EKS 콘솔 또는 AWS CLI 를 사용하여 HyperPod 훈련 운영자를 설치할 수 있습니다. 콘솔 방법은 운영자를 설치하는 데 도움이 되는 간소화된 경험을 제공합니다. 는 더 많은 설치를 사용자 지정할 수 있는 프로그래밍 방식의 접근 방식을 AWS CLI 제공합니다.

두 콘솔 경험에서 SageMaker AI는 원클릭 설치를 제공하여 IAM 실행 역할을 생성하고, Pod Identity 연결을 생성하고, 운영자를 설치합니다. Amazon EKS 콘솔 설치는 비슷하지만 이 방법은 IAM 실행 역할을 자동으로 생성하지 않습니다. 이 프로세스 중에 콘솔이 미리 채우는 정보로 새 IAM 실행 역할을 생성하도록 선택할 수 있습니다. 기본적으로 이러한 생성된 역할은 운영자를 설치하려는 현재 클러스터에만 액세스할 수 있습니다. 다른 클러스터를 포함하도록 역할의 권한을 편집하지 않는 한, 운영자를 제거했다가 다시 설치하는 경우 새 역할을 생성해야 합니다.

SageMaker AI console (recommended)
  1. https://console.aws.amazon.com/sagemaker/에서 Amazon SageMaker AI 콘솔을 엽니다.

  2. 클러스터의 세부 정보 페이지로 이동합니다.

  3. 대시보드 탭에서 Amazon SageMaker HyperPod 훈련 운영자라는 추가 기능을 찾아 설치를 선택합니다. 설치 프로세스 중에 SageMaker AI는 AmazonSageMakerHyperPodTrainingOperatorAccess 관리형 정책과 유사한 권한을 가진 IAM 실행 역할을 생성하고 Amazon EKS 클러스터와 새 실행 역할 간에 Pod Identity 연결을 생성합니다.

Amazon EKS console
참고

Amazon EKS 클러스터를 통해 추가 기능을 설치하는 경우 먼저 키-값 페어 SageMaker:true로 HyperPod 클러스터에 태그를 지정해야 합니다. 그러지 않으면 설치가 실패합니다.

  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

  2. EKS 클러스터로 이동하여 추가 기능을 선택한 다음 추가 기능 가져오기를 선택합니다.

  3. Amazon SageMaker HyperPod 훈련 운영자를 선택한 후 다음을 선택합니다.

  4. 버전에서 콘솔은 기본적으로 최신 버전으로 설정되어 있으므로 사용하는 것이 좋습니다.

  5. 추가 기능 액세스에서 훈련 운영자 추가 기능에 사용할 Pod Identity IAM 역할을 선택합니다. 역할이 아직 없는 경우 권장 역할 생성을 선택하여 생성합니다.

  6. 이 역할 생성 프로세스 중에 IAM 콘솔은 사용 사례, AmazonSageMakerHyperPodTrainingOperatorAccess 관리형 정책 및 기타 필요한 권한, 역할 이름, 설명과 같은 필요한 모든 정보를 미리 채웁니다. 단계를 진행하면서 정보를 검토하고 역할 생성을 선택합니다.

  7. EKS 콘솔에서 추가 기능의 설정을 검토한 다음 생성을 선택합니다.

CLI
  1. HyperPod 클러스터의 IAM 실행 역할에 EKS Pod Identity가 역할을 수임하거나 다음 신뢰 정책을 사용하여 새 IAM 역할을 생성할 수 있는 신뢰 관계가 있는지 확인합니다. 또는 Amazon EKS 콘솔을 사용하여 추가 기능을 설치하여 권장 역할을 생성할 수 있습니다.

    JSON
    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession", "eks-auth:AssumeRoleForPodIdentity" ] } ] }
  2. AmazonSageMakerHyperPodTrainingOperatorAccess 관리형 정책을 생성한 역할에 연결합니다.

  3. 그런 다음, EKS 클러스터, IAM 역할 및 새 IAM 역할 간에 Pod Identity 연결을 생성합니다.

    aws eks create-pod-identity-association \ --cluster-name my-eks-cluster \ --role-arn ARN of your execution role \ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --region AWS 리전
  4. 프로세스를 완료한 후 ListPodIdentityAssociations 작업을 사용하여 생성한 연결을 확인할 수 있습니다. 샘플 응답은 다음과 같습니다.

    aws eks list-pod-identity-associations --cluster-name my-eks-cluster { "associations": [{ "clusterName": "my-eks-cluster", "namespace": "aws-hyperpod", "serviceAccount": "hp-training-operator-controller-manager", "associationArn": "arn:aws:eks:us-east-2:123456789012:podidentityassociation/my-hyperpod-cluster/a-1a2b3c4d5e6f7g8h9", "associationId": "a-1a2b3c4d5e6f7g8h9" }] }
  5. 훈련 운영자를 설치하려면 create-addon 작업을 사용합니다. --addon-version 파라미터는 선택 항목입니다. 제공하지 않으면 기본값은 최신 버전입니다. 가능한 버전을 가져오려면 DescribeAddonVersions 작업을 사용합니다.

    aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --resolve-conflicts OVERWRITE

HyperPod 클러스터에 훈련 운영자가 이미 설치되어 있는 경우 EKS 추가 기능을 원하는 버전으로 업데이트할 수 있습니다. 체크포인트 없는 훈련 또는 탄력적 훈련을 사용하려면 다음을 고려하세요.

  • 체크포인트 없는 훈련과 탄력적 훈련 모두 EKS 추가 기능이 버전 1.2.0 이상이어야 합니다.

  • Amazon SageMaker HyperPod 훈련 운영자는 모든 EKS 추가 기능 버전과 이전 버전과의 호환성을 유지하므로 모든 추가 기능 버전에서 1.2.0 이상으로 업그레이드할 수 있습니다.

  • 버전 1.2.0 이상에서 하위 버전으로 다운그레이드하는 경우 다운그레이드 전에 기존 작업을 삭제하고 다운그레이드가 완료된 후 작업을 다시 제출해야 합니다.

Amazon EKS Console
  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

  2. EKS 클러스터로 이동하여 추가 기능을 선택합니다. 그런 다음 Amazon SageMaker HyperPod 훈련 연산자 추가 기능을 선택하고 편집을 선택합니다.

  3. 버전 메뉴에서 원하는 추가 기능의 버전을 선택한 다음 변경 사항 저장을 선택합니다.

CLI
  1. 먼저 클러스터에 지원되는 추가 기능 버전 목록을 가져옵니다.

    aws eks describe-addon-versions \ --kubernetes-version $(aws eks describe-cluster --name my-eks-cluster --query 'cluster.version' --output text) \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --query 'addons[0].addonVersions[].addonVersion' \ --output table
  2. 그런 다음 추가 기능을 원하는 버전으로 업데이트합니다.

    aws eks update-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --addon-version target-version --resolve-conflicts OVERWRITE

훈련 운영자에는 사용 사례에 적합할 수 있는 여러 옵션과 기본값이 함께 제공됩니다. 변경하기 전에 기본값으로 훈련 운영자를 사용해 보는 것이 좋습니다. 아래 표에는 모든 파라미터와 각 파라미터를 구성할 수 있는 예시가 나와 있습니다.

파라미터 설명 기본값
hpTrainingControllerManager.manager.resources.requests.cpu 컨트롤러에 할당할 프로세서 수 1
hpTrainingControllerManager.manager.resources.requests.memory 컨트롤러에 할당할 메모리의 양 2Gi
hpTrainingControllerManager.manager.resources.limits.cpu 컨트롤러의 CPU 한도 2
hpTrainingControllerManager.manager.resources.limits.memory 컨트롤러의 메모리 한도 4Gi
hpTrainingControllerManager.nodeSelector 컨트롤러 포드의 노드 선택기 기본 동작은 레이블이 sagemaker.amazonaws.com/compute-type: "HyperPod"인 노드를 선택하는 것입니다.

HyperPod 탄력적 에이전트

HyperPod 탄력적 에이전트는 PyTorch의 ElasticAgent의 확장입니다. 각 컨테이너에서 훈련 워커의 수명 주기를 오케스트레이션하고 HyperPod 훈련 운영자와 통신합니다. HyperPod 훈련 운영자를 사용하려면 먼저 HyperPod 탄력적 에이전트를 훈련 이미지에 설치해야 운영자를 사용하여 작업을 제출하고 실행할 수 있습니다. 다음은 탄력적 에이전트를 설치하고 hyperpodrun을 사용하여 작업 런처를 생성하는 Docker 파일입니다.

참고

체크포인트 없는 훈련 탄력적 훈련 모두 HyperPod 탄력적 에이전트 버전 1.1.0 이상을 사용해야 합니다.

RUN pip install hyperpod-elastic-agent ENTRYPOINT ["entrypoint.sh"] # entrypoint.sh ... hyperpodrun --nnodes=node_count --nproc-per-node=proc_count \ --rdzv-backend hyperpod \ # Optional --inprocess-restart \ # Optional (in-process fault recovery with checkpointless training) ... # Other torchrun args # pre-traing arg_group --pre-train-script pre.sh --pre-train-args "pre_1 pre_2 pre_3" \ # post-train arg_group --post-train-script post.sh --post-train-args "post_1 post_2 post_3" \ training.py --script-args

이제 kubectl을 사용하여 작업을 제출할 수 있습니다.

HyperPod 탄력적 에이전트 인수

HyperPod 탄력적 에이전트는 모든 원래 인수를 지원하고 그 외 인수를 몇 가지 추가합니다. 다음은 HyperPod 탄력적 에이전트에서 사용할 수 있는 모든 인수입니다. PyTorch의 탄력적 에이전트에 대한 자세한 내용은 공식 설명서 참조하세요.

인수 설명 기본 값
--shutdown-signal 종료를 위해 워커에 보낼 신호(SIGTERM 또는 SIGKILL) "SIGKILL"
--shutdown-timeout 종료 신호와 SIGKILL 신호 사이의 초 단위 제한 시간 15
--server-host 에이전트 서버 주소 "0.0.0.0"
--server-port 에이전트 서버 포트 8080
--server-log-level 에이전트 서버 로그 수준 "info"
--server-shutdown-timeout 서버 종료 제한 시간(초) 300
--pre-train-script 사전 훈련 스크립트 경로 없음
--pre-train-args 사전 훈련 스크립트에 대한 인수 없음
--post-train-script 훈련 후 스크립트 경로 없음
--post-train-args 훈련 후 스크립트에 대한 인수 없음
--inprocess-restart inprocess_restart 기능을 사용할지 여부를 지정하는 플래그 FALSE
--inprocess-timeout 프로세스 수준 재시작을 트리거하기 전에 에이전트가 작업자가 동기화 장벽에 도달할 때까지 기다리는 초 단위 시간입니다. 없음

태스크 거버넌스(선택 사항)

훈련 운영자는 HyperPod 태스크 거버넌스라는 리소스 할당을 간소화하고 Amazon EKS 클러스터에서 팀 및 프로젝트 간 컴퓨팅 리소스를 효율적으로 활용하도록 설계된 강력한 관리 시스템에 통합되어 있습니다. HyperPod 태스크 거버넌스를 설정하려면 SageMaker HyperPod 태스크 거버넌스 설정 섹션을 참조하세요.

참고

HyperPod 태스크 거버넌스 추가 기능을 설치할 때는 버전 v1.3.0-eksbuild.1 이상을 사용해야 합니다.

작업을 제출할 때 대기열 이름과 및 hyperpod-ns-team-name-localqueuepriority-class-name-priority라는 우선순위 클래스 레이블을 포함해야 합니다. 예를 들어 Kueue를 사용하는 경우 레이블은 다음과 같습니다.

  • kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue

  • kueue.x-k8s.io/priority-class: priority-class-name-priority

다음은 구성 파일에 대한 예시입니다.

apiVersion: sagemaker.amazonaws.com/v1 kind: HyperPodPytorchJob metadata: name: hp-task-governance-sample namespace: hyperpod-ns-team-name labels: kueue.x-k8s.io/queue-name: hyperpod-ns-team-name-localqueue kueue.x-k8s.io/priority-class: priority-class-priority spec: nprocPerNode: "1" runPolicy: cleanPodPolicy: "None" replicaSpecs: - name: pods replicas: 4 spares: 2 template: spec: containers: - name: ptjob image: XXXX imagePullPolicy: Always ports: - containerPort: 8080 resources: requests: cpu: "2"

그런 다음, 아래 kubectl 명령을 사용하여 YAML 파일을 적용합니다.

kubectl apply -f task-governance-job.yaml

Kueue(선택 사항)

작업을 직접 실행할 수 있지만 조직은 훈련 운영자를 Kueue와 통합하여 리소스를 할당하고 작업을 예약할 수도 있습니다. 아래 단계에 따라 Kueue를 HyperPod 클러스터에 설치합니다.

  1. 공식 Kueue 설명서의 설치 가이드를 따릅니다. controller_manager_config.yaml 구성 단계에 도달하면 다음 구성을 추가합니다.

    externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
  2. 공식 설치 가이드의 나머지 단계를 따릅니다. Kueue 설치를 완료한 후 kubectl apply -f sample-queues.yaml 명령을 사용하여 일부 샘플 대기열을 생성할 수 있습니다. 다음 YAML 파일을 사용합니다.

    apiVersion: kueue.x-k8s.io/v1beta1 kind: ClusterQueue metadata: name: cluster-queue spec: namespaceSelector: {} preemption: withinClusterQueue: LowerPriority resourceGroups: - coveredResources: - cpu - nvidia.com/gpu - pods flavors: - name: default-flavor resources: - name: cpu nominalQuota: 16 - name: nvidia.com/gpu nominalQuota: 16 - name: pods nominalQuota: 16 --- apiVersion: kueue.x-k8s.io/v1beta1 kind: LocalQueue metadata: name: user-queue namespace: default spec: clusterQueue: cluster-queue --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ResourceFlavor metadata: name: default-flavor --- apiVersion: kueue.x-k8s.io/v1beta1 description: High priority kind: WorkloadPriorityClass metadata: name: high-priority-class value: 1000 --- apiVersion: kueue.x-k8s.io/v1beta1 description: Low Priority kind: WorkloadPriorityClass metadata: name: low-priority-class value: 500