훈련 연산자 설치 - Amazon SageMaker AI

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

훈련 연산자 설치

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

사전 조건

HyperPod 훈련 연산자를 사용하려면 먼저 다음 사전 조건을 완료해야 합니다.

HyperPod 훈련 연산자를 설치하려면 먼저 다른 구성 요소를 설치해야 합니다. 이 작업을 수행하는 방법은 다음 섹션을 참조하세요.

1단계: Amazon EKS Pod Identity Agent 설정

  1. HyperPod 클러스터의 IAM 실행 역할에 eks-auth:AssumeRoleForPodIdentity 권한이 있는지 확인하거나 훈련 운영자와 함께 사용할 수 있는 다음 권한이 있는 새 IAM 역할을 생성합니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
  2. 새로 생성한 역할에 다음 IAM 정책을 연결합니다. HyperPod 클러스터 ARN을 지정해야 합니다.

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:DescribeClusterNode" ], "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/cluster_name" } ] }
  3. 콘솔을 사용하여 EKS Pod Identity Agent를 설정합니다. 를 사용하려면 다음 명령을 AWS CLI사용합니다.

    aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name eks-pod-identity-agent \ --region AWS 리전
  4. 그런 다음 EKS 클러스터, IAM 역할 및 새 IAM 역할 간에 포드 자격 증명 연결을 생성합니다.

    aws eks create-pod-identity-association \ --cluster-name my-eks-cluster \ --role-arn ARN of your role \ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --region AWS 리전
  5. 프로세스를 완료한 후 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" }] }

2단계: HyperPod 훈련 연산자 설치

이제 Amazon EKS 콘솔을 통해 또는 CreateAddOn API 작업을 사용하여 HyperPod 훈련 연산자를 설치할 수 있습니다. 콘솔을 사용하는 경우 Amazon SageMaker HyperPod 훈련 연산자라는 추가 기능을 검색합니다.

다음은 API 및 CLI를 사용하여 연산자를 설치하는 방법의 예입니다. --addon-version 파라미터는 선택 항목입니다. 제공하지 않으면 기본값은 최신 버전입니다. 가능한 버전을 가져오려면 DescribeAddonVersions 작업을 사용합니다.

참고

Amazon SageMaker HyperPod 태스크 거버넌스는 훈련 운영자에서 지원되지 않습니다.

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

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

파라미터 설명 Default
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"

3단계: HyperPod 탄력적 에이전트 설치

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

RUN pip install hyperpod-elastic-agent ENTRYPOINT ["entrypoint.sh"] # entrypoint.sh ... hyperpodrun --nnodes=node_count --nproc-per-node=proc_count \ --rdzv-backend hyperpod \ # Optional ... # 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의 Elastic Agent에 대한 자세한 내용은 공식 설명서를 참조하세요.

인수 설명 기본 값
--shutdown-signal 종료를 위해 작업자에게 보낼 신호(SIGTERM 또는 SIGKILL) "SIGKILL"
--shutdown-timeout SIGTERM과 SIGKILL 신호 간의 초 단위 제한 시간 30
--server-host 에이전트 서버 주소 "0.0.0.0"
--서버 포트 에이전트 서버 포트 8080
--server-log-level 에이전트 서버 로그 수준 "정보"
--server-shutdown-timeout 초 단위의 서버 종료 제한 시간 300
--pre-train-script 사전 훈련 스크립트 경로 없음
--pre-train-args 사전 훈련 스크립트에 대한 인수 없음
--post-train-script 훈련 후 스크립트 경로 없음
--post-train-args 훈련 후 스크립트에 대한 인수 없음

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