AWS Neuron 머신 러닝 워크로드용 Amazon ECS 작업 정의

AWS Neuron 머신 러닝 워크로드용 Amazon ECS 작업 정의

Amazon EC2 Trn1, Trn2, Inf1, Inf2 인스턴스를 클러스터에서 머신 러닝 워크로드에 사용할 수 있어요. AWS Trainium 및 AWS Inferentia 칩의 가속화를 활용하는 방법을 배워요.

출처: 문서

본문

머신 러닝 워크로드용으로 클러스터에서 Amazon EC2 Trn1, Amazon EC2 Trn2, Amazon EC2 Inf1(Inf1은 EC2 시작 유형에서만 지원됨), Amazon EC2 Inf2 인스턴스를 사용할 수 있습니다. Amazon EC2 Trn1과 Trn2 인스턴스는 AWS Trainium 칩으로 구동됩니다. 이 인스턴스는 클라우드에서 머신 러닝 교육에 고성능과 저비용을 제공합니다. Trn1 또는 Trn2 인스턴스에서 AWS Neuron과 함께 머신 러닝 프레임워크를 사용해 머신 러닝 추론 모델을 훈련할 수 있습니다. 그런 다음 Inf1 인스턴스(Inf1은 EC2 시작 유형에서만 지원됨) 또는 Inf2 인스턴스에서 모델을 실행해 AWS Inferentia 칩의 가속화를 사용할 수 있습니다. Amazon EC2 Inf1 및 Inf2 인스턴스는 AWS Inferentia 칩으로 구동됩니다. 이 인스턴스는 클라우드에서 고성능과 최저 비용 추론을 제공합니다.

머신 러닝 모델은 AWS 머신 러닝 칩의 머신 러닝 성능을 최적화하는 특수 소프트웨어 개발 키트(SDK)인 AWS Neuron을 사용해 컨테이너에 배포됩니다. SDK는 컴파일러, 런타임, 프로파일링 도구로 구성됩니다. AWS Neuron은 TensorFlow, PyTorch, Apache MXNet 같은 인기 있는 머신 러닝 프레임워크를 지원합니다.

고려 사항

Amazon ECS에 Neuron 배포를 시작하기 전에 다음을 고려하세요.

  • 시작 유형에 따라 클러스터에는 Trn1, Trn2, Inf1, Inf2 및 기타 인스턴스가 혼합되어 있을 수 있습니다.
  • AWS Neuron을 지원하는 머신 러닝 프레임워크를 사용하는 컨테이너의 Linux 애플리케이션이 필요합니다.
    • 중요: 다른 프레임워크를 사용하는 애플리케이션은 Trn1, Trn2, Inf1, Inf2 인스턴스에서 성능이 향상되지 않을 수 있습니다.
  • Amazon ECS는 Neuron 디바이스 접근을 구성하는 두 가지 방법을 지원합니다.
    • 관리형 Neuron 디바이스 할당 – 컨테이너 정의에서 유형이 NeuronDevice인 resourceRequirements 매개변수를 사용합니다. Amazon ECS가 Neuron 디바이스를 자동으로 발견하고 컨테이너에 할당합니다. Managed Instances에서만 사용할 수 있습니다. 자세한 내용은 Managed Neuron device allocation을 참고하세요.
    • 수동 Neuron 디바이스 지정 – linuxParameters.devices 매개변수를 사용해 Neuron 디바이스 경로를 명시적으로 지정합니다. EC2 시작 유형과 Managed Instances 모두에서 사용할 수 있습니다. 자세한 내용은 Manual Neuron device specification을 참고하세요.
    • 중요: 충돌을 피하기 위해 한 가지 방법만 일관되게 사용하세요.

관리형 Neuron 디바이스 할당

Managed Instances에서는 컨테이너 정의의 resourceRequirements 매개변수를 사용해 Neuron 디바이스를 요청할 수 있습니다. Amazon ECS가 인스턴스의 Neuron 디바이스를 자동으로 발견하고 작업에 할당하며, 인스턴스의 모든 Neuron 디바이스에 접근할 수 있도록 컨테이너를 구성합니다. 작업이 모든 디바이스에 대한 독점 접근을 요구하므로 인스턴스당 하나의 Neuron 작업만 실행됩니다.

참고: Inf1 인스턴스는 EC2 시작 유형에서만 지원됩니다. Inf1 인스턴스를 사용하려면 Manual Neuron device specification을 참고하세요.

Neuron 인스턴스 선택

Managed Instances 워크로드에 Neuron 지원 인스턴스 유형을 선택하려면 용량 공급자의 시작 템플릿에서 instanceRequirements 객체를 사용하세요. 다음 속성을 사용해 Neuron 지원 인스턴스를 선택할 수 있습니다.

  • acceleratorManufacturers – amazon-web-services를 사용해 AWS 가속기(Inferentia와 Trainium 포함)가 있는 인스턴스를 선택합니다.
  • acceleratorNames – inferentia2, trainium, 또는 trainium2를 사용해 특정 가속기 칩을 선택합니다.
  • allowedInstanceTypes – inf*와 trn*을 사용해 이름으로 Neuron 인스턴스 유형을 선택합니다.

다음 예시는 allowedInstanceTypes를 사용합니다.

{
    "instanceRequirements": {
        "allowedInstanceTypes": ["inf*", "trn*"]
    }
}

작업 정의

작업 정의에서 Neuron 디바이스를 요청하려면 유형이 NeuronDevice이고 값이 ALL인 resourceRequirements 항목을 추가하세요. 이는 컨테이너에 인스턴스의 모든 Neuron 디바이스에 대한 독점 접근을 제공합니다.

다음 제약이 적용됩니다.

  • 최대 하나의 컨테이너 정의가 resourceRequirements에 NeuronDevice를 지정할 수 있습니다.
  • Neuron 디바이스에 대해 같은 작업 정의에서 유형이 NeuronDevice인 resourceRequirements와 linuxParameters.devices를 결합할 수 없습니다.

작업이 시작된 후 DescribeTasks API 작업을 호출해 Neuron 디바이스 할당을 확인할 수 있습니다. 응답에는 할당된 Neuron 디바이스의 ID를 보여주는 각 컨테이너의 neuronDeviceIds 필드가 포함됩니다. 또한 DescribeContainerInstances API 작업을 호출해 컨테이너 인스턴스의 registeredResources와 remainingResources 필드에서 NEURON_DEVICES를 볼 수 있습니다.

예시 작업 정의는 Example Neuron task definitions를 참고하세요.

수동 Neuron 디바이스 지정

이 방법에서는 linuxParameters.devices 매개변수를 사용해 작업 정의에 AWS Trainium 또는 AWS Inferentia 디바이스 경로를 수동으로 지정합니다. 이 방법은 EC2 시작 유형과 Managed Instances 모두에서 작동합니다.

각 AWS Trainium 또는 AWS Inferentia 칩에서는 하나의 추론 또는 추론 교육 작업만 실행할 수 있습니다. 각 작업에 서로 다른 디바이스를 할당하면 인스턴스에 있는 칩 수만큼 많은 작업을 실행할 수 있습니다.

EC2 시작 유형의 경우 작업 배치 제약 조건을 구성할 때 인스턴스 유형 속성을 사용해 작업이 지정한 인스턴스 유형에서 시작되도록 할 수 있습니다. 자세한 내용은 How Amazon ECS places tasks on container instances를 참고하세요.

작업 정의 요구 사항

작업 정의는 단일 인스턴스 유형에 특정해야 합니다. 호스트 컨테이너 인스턴스에서 사용할 수 있는 특정 AWS Trainium 또는 AWS Inferentia 디바이스를 사용하도록 컨테이너를 구성해야 합니다. linuxParameters 매개변수를 사용해 이를 수행할 수 있습니다.

다음 표는 각 인스턴스 유형에 특정한 칩을 자세히 설명합니다.

인스턴스 유형 vCPUs RAM (GiB) AWS ML 가속기 칩 디바이스 경로
trn1.2xlarge 8 32 1 /dev/neuron0
trn1.32xlarge 128 512 16 /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15
trn2.48xlarge 192 2048 16 /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15
inf1.xlarge 4 8 1 /dev/neuron0
inf1.2xlarge 8 16 1 /dev/neuron0
inf1.6xlarge 24 48 4 /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3
inf1.24xlarge 96 192 16 /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11, /dev/neuron12, /dev/neuron13, /dev/neuron14, /dev/neuron15
inf2.xlarge 4 16 1 /dev/neuron0
inf2.8xlarge 32 128 1 /dev/neuron0
inf2.24xlarge 96 384 6 /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5
inf2.48xlarge 192 768 12 /dev/neuron0, /dev/neuron1, /dev/neuron2, /dev/neuron3, /dev/neuron4, /dev/neuron5, /dev/neuron6, /dev/neuron7, /dev/neuron8, /dev/neuron9, /dev/neuron10, /dev/neuron11

예시 작업 정의는 Example Neuron task definitions를 참고하세요.

Managed Instances

Managed Instances는 Neuron 드라이버를 포함하는 AMI를 자동으로 사용합니다. 추가 AMI 구성은 필요하지 않습니다.

EC2 시작 유형

Amazon ECS는 AWS Trainium 및 AWS Inferentia 워크로드용으로 Amazon Linux 2023 기반의 Amazon ECS 최적화 AMI를 제공합니다. 이 AMI에는 Docker용 AWS Neuron 드라이버와 런타임이 포함되어 있습니다. 이 AMI는 Amazon ECS에서 머신 러닝 추론 워크로드를 더 쉽게 실행하게 해줍니다.

Amazon EC2 Trn1, Inf1, Inf2 인스턴스를 시작할 때 Amazon ECS-optimized Amazon Linux 2023 (Neuron) AMI를 사용할 것을 권장합니다.

AWS CLI로 다음 명령을 사용해 현재 Amazon ECS-optimized Amazon Linux 2023 (Neuron) AMI를 검색할 수 있습니다.

aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/neuron/recommended

더 알아보기 (Learn more)