AWS Neuron 기계 학습 워크로드에 대한 Amazon ECS 작업 정의 - Amazon Elastic Container Service

AWS Neuron 기계 학습 워크로드에 대한 Amazon ECS 작업 정의

기계 학습 워크로드를 위해 Amazon EC2 Trn1, Amazon EC2 Inf1Amazon EC2 Inf2 인스턴스를 클러스터에 등록할 수 있습니다.

Amazon EC2 Trn1 인스턴스는 AWS Trainium 칩으로 구동됩니다. 이러한 인스턴스는 클라우드에서의 기계 학습을 위한 고성능 및 저비용 교육을 제공합니다. Trn1 인스턴스에서 AWS Neuron과 함께 기계 학습 프레임워크를 사용하여 기계 학습 추론 모델을 교육시킬 수 있습니다. 그런 다음 Inf1 인스턴스 또는 Inf2 인스턴스에서 모델을 실행하여 AWS Inferentia 칩의 가속을 사용할 수 있습니다.

Amazon EC2 Inf1 인스턴스 및 Inf2 인스턴스는 AWS Inferentia 칩으로 구동됩니다. 이 칩은 클라우드에서 고성능의 가장 저렴한 추론을 제공합니다.

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

고려 사항

Amazon ECS에 Neuron 배포를 시작하기 전에 다음에 주의하세요.

  • 클러스터에 Trn1, Inf1, Inf2 및 그 외 인스턴스가 혼재되어 있을 수 있습니다.

  • AWS Neuron을 지원하는 기계 학습 프레임워크를 사용하는 컨테이너에 Linux 애플리케이션이 필요합니다.

    중요

    다른 프레임워크를 사용하는 애플리케이션은 Trn1, Inf1 및 Inf2 인스턴스에서 성능이 향상되지 않을 수 있습니다.

  • AWSTrainium 또는 AWSInferentia 칩에서 단 하나의 추론 또는 추론 교육 태스크만 실행할 수 있습니다. Inf1의 경우 각 칩에는 4개의 NeuronCore가 있습니다. Trn1과 Inf2의 경우 각 칩에는 2개의 NeuronCore가 있습니다. 각 Trn1, Inf1 및 Inf2 인스턴스의 칩이 존재하는 만큼 많은 작업을 실행할 수 있습니다.

  • 서비스를 생성하거나 독립적 태스크를 실행할 경우 작업 배치 제약 조건을 구성할 때 인스턴스 유형 속성을 사용할 수 있습니다. 이렇게 하면 지정한 컨테이너 인스턴스에서 태스크가 시작됩니다. 이렇게 하면 전체 리소스 사용률을 최적화하고 추론 워크로드에 대한 작업이 Trn1, Inf1 및 Inf2 인스턴스에 있는지 확인할 수 있습니다. 자세한 내용은 Amazon ECS가 컨테이너 인스턴스에 작업을 배치하는 방법 단원을 참조하십시오.

    다음의 예제에서는 default 클러스터에 있는 Inf1.xlarge 인스턴스에서 태스크를 실행합니다.

    aws ecs run-task \ --cluster default \ --task-definition ecs-inference-task-def \ --placement-constraints type=memberOf,expression="attribute:ecs.instance-type == Inf1.xlarge"
  • Neuron 리소스 요구 사항은 태스크 정의에서 정의할 수 없습니다. 그 대신에 호스트 컨테이너 인스턴스에서 특정 AWS Trainium 또는 AWS Inferentia 칩을 사용하도록 컨테이너를 구성합니다. linuxParameters 파라미터 및 지정한 디바이스 세부 정보를 사용하여 이 작업을 수행할 수 있습니다. 자세한 내용은 태스크 정의 요구 사항 단원을 참조하십시오.

Amazon ECS 최적화 Amazon Linux 2023(Neuron) AMI 사용

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

Amazon ECS에 최적화된 Amazon Linux 2023(Neuron) AMI는 다음 리전에서 지원됩니다.

  • 미국 동부(버지니아 북부)

  • 미국 동부(오하이오)

  • 미국 서부(캘리포니아 북부)

  • 미국 서부(오레곤)

  • 아시아 태평양(뭄바이)

  • 아시아 태평양(오사카)

  • 아시아 태평양(서울)

  • 아시아 태평양(도쿄)

  • 아시아 태평양(싱가포르)

  • 아시아 태평양(시드니)

  • 캐나다(중부)

  • 유럽(프랑크푸르트)

  • 유럽(아일랜드)

  • 유럽(런던)

  • 유럽(파리)

  • 유럽(스톡홀름)

  • 남아메리카(상파울루)

Amazon ECS 최적화 Amazon Linux 2(Neuron) AMI 사용

Amazon ECS는AWS Trainium 및 AWS Inferentia 워크로드용 Amazon Linux 2를 기반으로 하는 Amazon ECS에 최적화된 AMI를 제공합니다. 이는 Docker용 AWS Neuron 드라이버 및 런타임과 함께 제공됩니다. 이 AMI를 사용하면 Amazon ECS에서 더욱 쉽게 기계 학습 인퍼런스 워크로드를 실행할 수 있습니다.

Amazon EC2 Trn1, Inf1 및 Inf2 인스턴스를 시작할 때 Amazon ECS 최적화 Amazon Linux 2(Neuron) AMI를 사용하는 것이 좋습니다.

최신 Amazon ECS 최적화 Amazon Linux 2(Neuron) AMI는 다음 명령으로 AWS CLI에서 검색할 수 있습니다.

aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/inf/recommended

Amazon ECS 최적화 Amazon Linux 2(Neuron) AMI는 다음 리전에서 지원됩니다.

  • 미국 동부(버지니아 북부)

  • 미국 동부(오하이오)

  • 미국 서부(캘리포니아 북부)

  • 미국 서부(오레곤)

  • 아시아 태평양(뭄바이)

  • 아시아 태평양(오사카)

  • 아시아 태평양(서울)

  • 아시아 태평양(도쿄)

  • 아시아 태평양(싱가포르)

  • 아시아 태평양(시드니)

  • 캐나다(중부)

  • 유럽(프랑크푸르트)

  • 유럽(아일랜드)

  • 유럽(런던)

  • 유럽(파리)

  • 유럽(스톡홀름)

  • 남아메리카(상파울루)

태스크 정의 요구 사항

Amazon ECS에 Neuron을 배포하려면 태스크 정의에 TensorFlow용 추론 모델을 제공하는 사전 구축된 컨테이너에 대한 컨테이너 정의를 포함해야 합니다. AWS 딥 러닝 컨테이너에 의해 제공됩니다. 이 컨테이너에는 AWS Neuron 런타임과 TensorFlow Serving 애플리케이션이 포함됩니다. 시작 시 이 컨테이너는 Amazon S3에서 모델을 가져오고, 저장된 모델로 Neuron TensorFlow Serving을 시작하고, 예측 요청을 기다립니다. 다음 예의 컨테이너 이미지에는 TensorFlow 1.15와 Ubuntu 18.04가 있습니다. Neuron에 최적화된 사전 구축된 Deep Learning Containers의 전체 목록은 GitHub에서 관리됩니다. 자세한 내용은 Using AWS Neuron TensorFlow Serving을 참조하세요.

763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-inference-neuron:1.15.4-neuron-py37-ubuntu18.04

또는, 자체 Neuron 사이드카 컨테이너 이미지를 구축할 수 있습니다. 자세한 내용은 AWS Deep Learning AMIs 개발자 안내서의 Tutorial: Neuron TensorFlow Serving을 참조하세요.

작업 정의는 단일 인스턴스 유형에만 고유해야 합니다. 호스트 컨테이너 인스턴스에서 특정 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
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