AWS Neuron 기계 학습 워크로드에 대한 Amazon ECS 작업 정의
기계 학습 워크로드를 위해 클러스터에서 Amazon EC2 Trn1
Amazon EC2 Trn1, Trn2 인스턴스는 AWS Trainium
Amazon EC2 Inf1 인스턴스 및 Inf2 인스턴스는 AWS Inferentia
기계 학습 모델은 특화된 소프트웨어 개발 키트(SDK) AWS Neuron
고려 사항
Amazon ECS에 Neuron 배포를 시작하기 전에 다음에 주의하세요.
-
시작 유형에 따라 클러스터에 Trn1, Trn2, Inf1, Inf2 및 그 외 인스턴스가 혼재되어 있을 수 있습니다.
-
AWS Neuron을 지원하는 기계 학습 프레임워크를 사용하는 컨테이너에 Linux 애플리케이션이 필요합니다.
중요
다른 프레임워크를 사용하는 애플리케이션은 Trn1, Trn2, Inf1 및 Inf2 인스턴스에서 성능이 향상되지 않을 수 있습니다.
-
Amazon ECS는 Neuron 디바이스 액세스 구성을 위한 두 가지 접근 방식을 지원합니다.
-
관리형 Neuron 디바이스 할당 - 컨테이너 정의에서
NeuronDevice유형의resourceRequirements파라미터를 사용합니다. Amazon ECS는 자동으로 Neuron 디바이스를 검색하고 컨테이너에 할당합니다. 관리형 인스턴스에서만 사용할 수 있습니다. 자세한 내용은 관리형 Neuron 디바이스 할당 섹션을 참조하세요. -
수동 Neuron 디바이스 지정 -
linuxParameters.devices파라미터를 사용하여 Neuron 디바이스 경로를 명시적으로 지정합니다. EC2 인스턴스 시작 유형과 관리형 인스턴스 모두에서 사용할 수 있습니다. 자세한 내용은 수동 Neuron 디바이스 지정 섹션을 참조하세요.
중요
충돌을 피하려면 한 가지 접근 방식만 일관되게 사용하세요.
-
관리형 Neuron 디바이스 할당
관리형 인스턴스를 사용하면 컨테이너 정의에서 resourceRequirements 파라미터를 통해 Neuron 디바이스를 요청할 수 있습니다. Amazon ECS는 인스턴스에서 Neuron 디바이스를 자동으로 검색하고, 태스크에 할당하고, 인스턴스의 모든 Neuron 디바이스에 액세스할 수 있는 컨테이너를 구성합니다. 태스크에는 모든 디바이스에 대한 독점 액세스가 필요하므로 인스턴스당 하나의 Neuron 태스크만 실행됩니다.
참고
Inf1 인스턴스는 EC2 시작 유형에서만 지원됩니다. Inf1 인스턴스를 사용하려면 수동 Neuron 디바이스 지정 섹션을 참조하세요.
Neuron 인스턴스 선택
관리형 인스턴스 워크로드에 대해 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 디바이스에 대해
resourceRequirements(NeuronDevice유형)와linuxParameters.devices를 함께 사용할 수 없습니다.
태스크가 시작된 후 DescribeTasks API 작업을 직접적으로 호출하여 Neuron 디바이스 할당을 확인할 수 있습니다. 응답에는 할당된 Neuron 디바이스의 ID를 보여주는 각 컨테이너의 neuronDeviceIds 필드가 포함됩니다. DescribeContainerInstances API 작업을 직접적으로 호출하여 컨테이너 인스턴스의 registeredResources 및 remainingResources 필드에서 NEURON_DEVICES를 확인할 수도 있습니다.
태스크 정의 예제는 Neuron 태스크 정의 예제 섹션을 참조하세요.
수동 Neuron 디바이스 지정
이 접근 방식을 사용하면 linuxParameters.devices 파라미터로 태스크 정의에서 AWS Trainium 또는 AWS Inferentia 디바이스 경로를 수동으로 지정할 수 있습니다. 이 접근 방식은 EC2 시작 유형과 관리형 인스턴스 모두에서 작동합니다.
각 AWSTrainium
EC2 시작 유형의 경우 태스크 배치 제약 조건을 구성할 때 인스턴스 유형 속성을 사용하여 태스크가 지정한 인스턴스 유형에서 시작되도록 할 수 있습니다. 자세한 내용은 Amazon ECS가 컨테이너 인스턴스에 작업을 배치하는 방법 섹션을 참조하세요.
태스크 정의 요구 사항
작업 정의는 단일 인스턴스 유형에만 고유해야 합니다. 호스트 컨테이너 인스턴스에서 특정 AWS Trainium 또는 AWS Inferentia 디바이스를 사용하도록 컨테이너를 구성해야 합니다. linuxParameters 파라미터를 사용해 이 작업을 수행할 수 있습니다. 다음 표에는 각 인스턴스 유형에 해당하는 칩이 자세히 나와 있습니다.
| 인스턴스 유형 | vCPU | 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 | 1536 | 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 | 8 | 16 | 1 | /dev/neuron0 |
| inf2.8xlarge | 32 | 64 | 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 |
태스크 정의 예제는 Neuron 태스크 정의 예제 섹션을 참조하세요.
관리형 인스턴스
관리형 인스턴스는 Neuron 드라이버가 포함된 AMI를 자동으로 사용합니다. 추가 AMI 구성은 필요하지 않습니다.
EC2 시작 유형
Amazon ECS는 AWS Trainium 및 AWS Inferentia 워크로드용 Amazon Linux 2023을 기반으로 하는 Amazon ECS에 최적화된 AMI를 제공합니다. 이는 Docker용 AWS Neuron 드라이버 및 런타임과 함께 제공됩니다. 이 AMI를 사용하면 Amazon ECS에서 더욱 쉽게 기계 학습 인퍼런스 워크로드를 실행할 수 있습니다.
Amazon EC2 Trn1, Inf1, Inf2 인스턴스를 시작할 때 Amazon ECS 최적화 Amazon Linux 2023(Neuron) AMI를 사용하는 것을 권장합니다.
다음 명령으로 AWS CLI를 사용하여 현재 Amazon ECS에 최적화된 Amazon Linux 2023(Neuron) AMI를 검색할 수 있습니다.
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2023/neuron/recommended