기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
훈련 운영자 설치
훈련 운영자를 설치하는 방법에 대해 알아보려면 다음 섹션을 참조하세요.
사전 조건
HyperPod 훈련 운영자를 사용하려면 먼저 다음 사전 조건을 충족해야 합니다.
-
HyperPod 클러스터에 최신 AMI 설치 자세한 내용은 Amazon EKS용 SageMaker HyperPod AMI 릴리스 단원을 참조하십시오.
-
콘솔을 사용하여 EKS Pod Identity Agent 설정. 를 사용하려면 다음 명령을 AWS CLI사용합니다.
aws eks create-addon \ --cluster-namemy-eks-cluster\ --addon-name eks-pod-identity-agent \ --regionAWS 리전 -
(선택 사항) 프라이빗 VPC에서 HyperPod 클러스터 노드를 실행하는 경우 Amazon SageMaker AI API(
com.amazonaws.) 및 Amazon EKS Auth 서비스(com.amazonaws.aws-region.sagemaker.apiaws-region.eks-auth)에 대한 PrivateLinks VPC 엔드포인트를 설정해야 합니다. 또한 클러스터 노드가 트래픽이 VPC 엔드포인트를 통해 라우팅되어 SageMaker AI 및 Amazon EKS와 통신할 수 있도록 허용하는 보안 그룹에 있는 서브넷으로 실행되고 있는지 확인해야 합니다. 제대로 설정되지 않으면 추가 기능 설치가 실패할 수 있습니다. VPC 엔드포인트 설정에 대한 자세한 내용은 VPC 엔드포인트 생성을 참조하세요.
훈련 운영자 설치
이제 SageMaker AI 콘솔, Amazon EKS 콘솔 또는 AWS CLI 를 사용하여 HyperPod 훈련 운영자를 설치할 수 있습니다. 콘솔 방법은 운영자를 설치하는 데 도움이 되는 간소화된 경험을 제공합니다. 는 더 많은 설치를 사용자 지정할 수 있는 프로그래밍 방식의 접근 방식을 AWS CLI 제공합니다.
두 콘솔 경험에서 SageMaker AI는 원클릭 설치를 제공하여 IAM 실행 역할을 생성하고, Pod Identity 연결을 생성하고, 운영자를 설치합니다. Amazon EKS 콘솔 설치는 비슷하지만 이 방법은 IAM 실행 역할을 자동으로 생성하지 않습니다. 이 프로세스 중에 콘솔이 미리 채우는 정보로 새 IAM 실행 역할을 생성하도록 선택할 수 있습니다. 기본적으로 이러한 생성된 역할은 운영자를 설치하려는 현재 클러스터에만 액세스할 수 있습니다. 다른 클러스터를 포함하도록 역할의 권한을 편집하지 않는 한, 운영자를 제거했다가 다시 설치하는 경우 새 역할을 생성해야 합니다.
HyperPod 클러스터에 훈련 운영자가 이미 설치되어 있는 경우 EKS 추가 기능을 원하는 버전으로 업데이트할 수 있습니다. 체크포인트 없는 훈련 또는 탄력적 훈련을 사용하려면 다음을 고려하세요.
-
체크포인트 없는 훈련과 탄력적 훈련 모두 EKS 추가 기능이 버전 1.2.0 이상이어야 합니다.
-
Amazon SageMaker HyperPod 훈련 운영자는 모든 EKS 추가 기능 버전과 이전 버전과의 호환성을 유지하므로 모든 추가 기능 버전에서 1.2.0 이상으로 업그레이드할 수 있습니다.
-
버전 1.2.0 이상에서 하위 버전으로 다운그레이드하는 경우 다운그레이드 전에 기존 작업을 삭제하고 다운그레이드가 완료된 후 작업을 다시 제출해야 합니다.
훈련 운영자에는 사용 사례에 적합할 수 있는 여러 옵션과 기본값이 함께 제공됩니다. 변경하기 전에 기본값으로 훈련 운영자를 사용해 보는 것이 좋습니다. 아래 표에는 모든 파라미터와 각 파라미터를 구성할 수 있는 예시가 나와 있습니다.
| 파라미터 | 설명 | 기본값 |
|---|---|---|
| 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의 ElasticAgenthyperpodrun을 사용하여 작업 런처를 생성하는 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-localqueue라는 우선순위 클래스 레이블을 포함해야 합니다. 예를 들어 Kueue를 사용하는 경우 레이블은 다음과 같습니다.priority-class-name-priority
-
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-namelabels: 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 클러스터에 설치합니다.
-
공식 Kueue 설명서
의 설치 가이드를 따릅니다. controller_manager_config.yaml구성 단계에 도달하면 다음 구성을 추가합니다.externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com" -
공식 설치 가이드의 나머지 단계를 따릅니다. 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