노드 그룹으로 Amazon EKS에서 AI/ML 워크로드 컴퓨팅 관리하기

노드 그룹으로 Amazon EKS에서 AI/ML 워크로드 컴퓨팅 관리하기

팁

예정된 Amazon EKS AI/ML 워크숍에 등록하세요.

이 섹션은 Amazon EKS 관리형 노드 그룹 또는 자체 관리 노드를 사용해서 AI 학습·추론 워크로드를 위한 가속 컴퓨팅(AWS Trainium, NVIDIA GPUs)을 관리하는 방법을 다룹니다.

EKS 관리형 노드 그룹과 자체 관리 노드는 EC2 Auto Scaling Groups (ASG)를 사용해요. EKS 관리형 노드 그룹은 노드 생성·업데이트·삭제를 위한 전용 EKS API가 있고, 노드 복구 기능과 수명 주기 종료 훅이 내장되어 있습니다. EKS 자체 관리 노드는 EC2 API를 통해 직접 배포·관리됩니다.

이 옵션들을 사용하면 인스턴스 유형, 원하는 수, 확장 경계, EC2 런치 템플릿을 사전에 정의해요. EKS 외 워크로드도 있고 EC2 런치 템플릿을 통한 구성 일관성을 선호한다면 EKS 관리형 노드 그룹이나 자체 관리 노드 사용을 고려하세요. EKS 노드 그룹은 가속 컴퓨팅 풋프린트가 사전에 알려진 학습·파인튜닝 워크로드에 적합해요. 참고로 EKS Auto Mode와 Karpenter도 정적 용량 프로비저닝을 지원하므로, 자세한 내용은 Manage compute for AI/ML workloads with EKS Auto Mode and Karpenter를 참고하세요.

EKS 관리형 노드 그룹과 자체 관리 노드는 모든 가속 컴퓨팅 구매 옵션(On-Demand, Spot, On-Demand Capacity Reservations, Capacity Blocks for ML)을 지원합니다. 용량 유형마다 별도의 관리형 또는 자체 관리 노드 그룹을 만들고, 각각 자체 런치 템플릿, 인스턴스 유형, 확장 구성을 갖습니다. 이는 이질적인 동적 프로비저닝 로직 없이 각 용량 풀에 대해 명시적이고 ASG로 뒷받침되는 제어를 제공해요.

EKS 관리형 노드 그룹 vs 자체 관리 노드

EKS 관리형 노드 그룹과 자체 관리 노드 중 선택은 필요한 사용자 정의 수준과 제어 수준에 달려 있어요. EKS 관리형 노드 그룹은 EC2 런치 템플릿 사용자 정의의 일부만 허용하는 반면, 자체 관리 노드는 EC2 런치 템플릿의 전체 범위를 지원합니다. 노드 수명 주기를 직접 사용자 정의하고 관리할 특별한 이유가 없다면 EKS 관리형 노드 그룹으로 시작하고, 특정 요구 사항이 생길 때만 자체 관리 노드로 옮기는 게 좋아요.

  • 관리형 노드 그룹을 사용할 때: EKS가 AMI 선택, 노드 부트스트래핑, 롤링 업데이트, 노드 복구, 정상 드레인 워크플로우를 대신 처리하길 원할 때 사용해요. 학습·추론 워크로드에 EKS Auto Mode나 Karpenter를 선호하지 않는다면 EKS 관리형 노드 그룹이 권장 시작점입니다. Capacity Blocks for ML을 사용할 때 EKS 관리형 노드 그룹은 예약 종료 40분 전에 노드 그룹을 드레인하는 예약 확장 정책을 자동으로 만들어 AWS Node Termination Handler나 자체 축소 자동화를 사용할 필요가 없어요. 지원되는 EKS 최적화 AMI를 사용할 때, 커널 수준이나 깊은 EC2 런치 템플릿 사용자 정의가 필요 없을 때, Kubernetes 버전에 더 간단한 노드 업그레이드 경로를 원할 때 EKS 관리형 노드 그룹을 사용하세요.
  • 자체 관리 노드 그룹을 사용할 때: EC2 런치 템플릿, AMI, 커널 파라미터, 컨테이너 런타임 구성, 사용자 정의 부트스트랩 스크립트를 완전히 제어해야 할 때 사용해요. 일반적인 ML 시나리오에는 Elastic Fabric Adapter (EFA)를 사용한 분산 학습을 위한 커널 및 NIC 설정 튜닝, 또는 사용자 정의 노드 수명 주기 컨트롤러 통합이 있습니다. 자체 관리 노드는 필요한 모든 user data와 IAM 인스턴스 프로필을 실을 수 있는 유연성을 주지만, 업데이트, 예약 확장 정책, AWS Node Termination Handler 같은 수명 주기 훅에 대한 책임은 직접 지는 거예요.

Capacity Blocks for ML로 GPU 예약

머신러닝용 Capacity Blocks for ML은 미래 날짜에 GPU 인스턴스를 예약해서 시간 제한이 있는 학습 또는 추론 워크로드에 사용할 수 있게 해 줍니다. 자세한 내용은 Amazon EC2 User Guide의 Capacity Blocks for ML을 참고하세요.

EKS 관리형 노드 그룹과 자체 관리 노드를 통해 Capacity Block 예약을 사용할 수 있어요. EC2 런치 템플릿 구성은 두 경우 모두 동일합니다. 노드 생성 워크플로우, 축소 동작, 워크로드 종료를 위한 수명 주기 훅은 프로비저닝 옵션에 따라 다릅니다.

고려 사항

  • Capacity Blocks는 특정 Amazon EC2 인스턴스 유형과 AWS 리전에서만 사용할 수 있어요. 자세한 내용은 Work with Capacity Blocks Prerequisites를 참고하세요.
  • Capacity Blocks는 영역별(zonal) 예약이에요. 노드 그룹 생성 중에는 Capacity Block 예약과 같은 가용 영역(AZ)의 서브넷을 사용해야 합니다.
  • Capacity Block 예약이 활성화되기 전에 노드 그룹을 만들면 노드 그룹 생성 중에 원하는 용량을 0으로 설정하세요.
  • 정상 워크로드 드레이닝을 위한 시간을 허용하려면 Capacity Block 예약 종료 30분 이상 전에 스케일 투 제로(scale-to-zero)를 예약해요. EC2는 예약 종료 30분 전에 인스턴스 종료를 시작합니다.

Capacity Blocks for ML로 노드 그룹 생성

EKS 관리형 노드 그룹과 자체 관리 노드는 Capacity Block 예약을 타겟팅하는 사용자 정의 EC2 런치 템플릿을 사용해야 해요. 아래는 EKS 관리형 노드 그룹과 자체 관리 노드에 필요한 최소 필드를 보여줍니다. 자체 관리 노드에는 아래 Self-managed nodes 단계에서 보여주는 것처럼 추가 필드가 필요합니다.

LaunchTemplateData에는 다음이 포함되어야 해요.

  • InstanceMarketOptions의 MarketType을 "capacity-block"으로 설정
  • CapacityReservationSpecification: CapacityReservationTarget의 CapacityReservationId를 Capacity Block ID로 설정. 예: cr-0123456789abcdef0
  • InstanceType을 Capacity Block 예약의 인스턴스 유형으로 설정. 예: p5.48xlarge

이 요구 사항은 EKS 관리형 노드 그룹과 자체 관리 노드용 런치 템플릿을 생성하는 아래 예시에 나와 있어요.

더 알아보기 (Learn more)

출처: 문서