제퍼넷 로고

Amazon SageMaker에서 리소스 크기를 적절하게 조정하고 불필요한 비용 방지

시간

아마존 세이지 메이커 기계 학습 (ML) 모델을 빌드, 학습, 배포 및 모니터링 할 수있는 완전 관리 형 서비스입니다. 모듈 식 설계를 통해 ML 수명주기의 여러 단계에서 사용 사례에 적합한 기능을 선택하고 선택할 수 있습니다. Amazon SageMaker는 인프라 관리의 무거운 작업을 추상화하고 다양한 기능과 종량제를 사용하여 대규모 ML 활동에 원하는 민첩성과 확장 성을 제공하는 기능을 제공합니다. 가격 모델입니다.

이 게시물에서는 Amazon SageMaker의 가격 모델을 간략히 설명하고 Amazon SageMaker 리소스 사용 비용을 최적화하여 ML 모델을 효과적이고 효율적으로 구축, 교육 및 배포하는 방법에 대한 몇 가지 모범 사례를 제공합니다. 또한이 게시물은 비용이 발생하는 유휴 리소스를 자동으로 중지하거나 감지하는 프로그래밍 방식을 제공하여 불필요한 비용을 방지 할 수 있습니다.

Amazon SageMaker 요금

기계 학습은 코드 프로토 타입을 작성하고 데이터 세트를 탐색하고, 실시간 및 오프라인 예측을 위해 모델을 처리, 학습 및 호스팅하기위한 다양한 계산 요구 사항이있는 반복 프로세스입니다. 기존 패러다임에서는 다양한 워크로드를 지원하기 위해 적절한 양의 컴퓨팅 리소스를 추정하는 것이 어렵고 리소스를 과도하게 프로비저닝하는 경우가 많습니다. Amazon SageMaker의 모듈 식 설계는 ML 수명주기의 각 단계에 따라 ML 워크로드의 확장 성, 성능 및 비용을 최적화 할 수있는 유연성을 제공합니다. Amazon SageMaker 작동 방식에 대한 자세한 내용은 다음 리소스를 참조하십시오.

  1. Amazon SageMaker 란 무엇입니까?
  2. 아마존 세이지 메이커 스튜디오
  3. Amazon SageMaker 시작하기

다음 다이어그램은 ML 수명주기의 각 단계에 대한 모듈 식 설계를 단순화 한 그림입니다. 빌드, 학습 (및 조정) 및 배포라고하는 각 환경은 가격이 다른 별도의 컴퓨팅 리소스를 사용합니다.

Amazon SageMaker에서 ML 여정과 관련된 비용에 대한 자세한 내용은 Amazon SageMaker로 머신 러닝에 대한 총 소유 비용을 낮추고 생산성을 높이십시오..

Amazon SageMaker에서는 사용한만큼만 지불하면됩니다. Amazon SageMaker 내 가격은 ML 단계 (빌딩, 처리, 교육 및 모델 배포 (또는 호스팅))별로 분류되며이 섹션에서 자세히 설명합니다.

환경 구축

Amazon SageMaker는 ML 모델을 구축하기위한 두 가지 환경을 제공합니다. SageMaker Studio 노트북 온 디맨드 노트북 인스턴스. Amazon SageMaker Studio는 협업적이고 유연하며 관리되는 Jupyter 노트북 환경을 사용하는 ML 용 완전 통합 개발 환경입니다. 이제 최초의 완전 통합 개발 환경 (IDE) 인 Amazon SageMaker Studio에 무료로 액세스 할 수 있으며 Studio 내에서 사용하는 AWS 서비스에 대해서만 비용을 지불하면됩니다. 자세한 내용은 Amazon SageMaker Studio 둘러보기.

컴퓨팅 인스턴스의 가격은 다음에 설명 된대로 Studio 및 온 디맨드 인스턴스 모두에서 동일합니다. Amazon SageMaker 요금. Studio를 사용하면 노트북과 데이터 파일 및 스크립트와 같은 관련 아티팩트가 아마존 탄성 파일 시스템 (Amazon EFS). 스토리지 요금에 대한 자세한 내용은 Amazon EFS 요금.

Amazon SageMaker 온 디맨드 노트북 인스턴스는 다음을 실행하는 완전 관리 형 컴퓨팅 인스턴스입니다. Jupyter 노트북 앱. Amazon SageMaker는 인스턴스 및 관련 리소스 생성을 관리합니다. 노트북에는 ML 워크 플로를 실행하거나 다시 만드는 데 필요한 모든 것이 포함되어 있습니다. 노트북 인스턴스에서 Jupyter 노트북을 사용하여 데이터를 준비 및 처리하고, 모델을 교육하기위한 코드를 작성하고, 모델을 Amazon SageMaker 호스팅에 배포하고, 모델을 테스트 또는 검증 할 수 있습니다.

처리

Amazon SageMaker Processing을 사용하면 완전 관리 형 인프라에서 전처리, 후 처리 및 모델 평가 워크로드를 쉽게 실행할 수 있습니다. Amazon SageMaker는 사용자를 대신하여 인스턴스를 관리하고 작업에 대한 인스턴스를 시작하고 작업이 완료되면 인스턴스를 종료합니다. 자세한 내용은 Amazon SageMaker 처리 – 완전 관리 형 데이터 처리 및 모델 평가.

훈련 및 튜닝

학습 데이터 세트의 크기와 결과가 얼마나 빨리 필요한지에 따라 단일 범용 인스턴스에서 GPU 인스턴스의 분산 클러스터에 이르는 리소스를 사용할 수 있습니다. Amazon SageMaker는 사용자를 대신하여 이러한 리소스를 관리하고 훈련 작업을 위해 컴퓨팅 리소스를 자동으로 프로비저닝, 시작, 중지 및 종료합니다. Amazon SageMaker 교육 및 조정을 사용하면 교육에 인스턴스가 소비 된 시간에 대해서만 비용을 지불하면됩니다. 자세한 내용은 대규모 딥 러닝 모델 훈련 및 조정.

Amazon SageMaker 자동 모델 튜닝초 매개 변수 조정이라고도하는은 사용자가 정의한 인스턴스 클러스터에 지정한 초 매개 변수 범위와 알고리즘을 사용하여 데이터 세트에서 많은 학습 작업을 실행하여 모델의 최상의 버전을 찾습니다. 교육과 마찬가지로 튜닝 시간 동안 사용한 리소스에 대해서만 비용을 지불합니다.

배포 및 호스팅

두 가지 방법으로 추론을위한 모델 배포를 수행 할 수 있습니다.

  • 실시간 추론을위한 ML 호스팅 – 모델을 교육 한 후 배포하여 Amazon SageMaker 호스팅 서비스와 함께 영구 엔드 포인트를 사용하여 실시간으로 예측을 얻을 수 있습니다.
  • 일괄 변환 - 당신이 사용할 수있는 Amazon SageMaker 배치 변환 전체 데이터 세트에 대한 예측을 오프라인으로 가져 오기

Amazon SageMaker 요금 모델

다음 표는 Amazon SageMaker의 요금 모델을 요약 한 것입니다.

ML 컴퓨팅 인스턴스 스토리지 데이터 처리 입 / 출력
빌드 (온 디맨드 노트북 인스턴스) 노트북 인스턴스가 실행되는 동안 사용 된 인스턴스 시간당. GB- 월 프로비저닝 된 스토리지 비용. 비용이 들지 않습니다.
빌드 (Studio 노트북) 인스턴스가 실행되는 동안 소비 된 인스턴스 시간당. Amaon Elastic File System (EFS) 가격보기. 비용이 들지 않습니다.
처리 처리 작업이 실행되는 동안 각 인스턴스에 사용 된 인스턴스 시간당. GB- 월 프로비저닝 된 스토리지 비용. 비용이 들지 않습니다.
교육 및 조정

온 디맨드 인스턴스 : 인스턴스를 사용할 수있는 시간부터 종료 또는 중지 될 때까지 각 인스턴스에 사용 된 인스턴스 시간당. 사용 된 각 부분 인스턴스 시간은 초당 청구됩니다.

스팟 트레이닝 : 관리 형 스팟 교육을 사용하여 온 디맨드 인스턴스에 비해 최대 90 % 비용 절감.

GB- 월 프로비저닝 된 스토리지. 비용이 들지 않습니다.
일괄 변환 일괄 변환 작업이 실행되는 동안 각 인스턴스에 사용 된 인스턴스 시간당. 비용이 들지 않습니다. 비용 없음
배포 (호스팅) 엔드 포인트가 실행되는 동안 각 인스턴스에 사용 된 인스턴스 시간당. GB- 월 프로비저닝 된 스토리지. 엔드 포인트 인스턴스에서 처리 된 GB 데이터 및 처리 된 GB 데이터.

다음을 사용하여 Amazon SageMaker를 시작할 수도 있습니다. 프리 티어. 가격에 대한 자세한 내용은 Amazon SageMaker 요금.

Amazon SageMaker 노트북, 작업 처리, 교육 및 배포를위한 적절한 크기의 컴퓨팅 리소스

ML 수명주기의 각 단계에서 사용하는 시간과 리소스를 기준으로 요금을 세분화하면 Amazon SageMaker 비용을 최적화하고 실제로 필요한만큼만 지불 할 수 있습니다. 이 섹션에서는 Amazon SageMaker ML 수명주기에 적합한 리소스를 선택하는 데 도움이되는 일반 지침에 대해 설명합니다.

Amazon SageMaker는 현재 ML 컴퓨팅 인스턴스 다음 인스턴스 패밀리에서 :

  • T – 범용 버스트 가능한 성능 인스턴스 (일관되게 높은 수준의 CPU가 필요하지 않지만 필요할 때 매우 빠른 CPU에 대한 전체 액세스 권한이있는 경우 상당한 이점)
  • M – 범용 인스턴스
  • C – 컴퓨팅 최적화 인스턴스 (컴퓨팅 바운드 애플리케이션에 이상적)
  • R – 메모리 최적화 인스턴스 (메모리에서 대용량 데이터 세트를 처리하는 워크로드에 빠른 성능을 제공하도록 설계됨)
  • P, G 및 Inf – 가속 컴퓨팅 인스턴스 (하드웨어 가속기 또는 코 프로세서 사용)
  • EIA – 추론 가속 인스턴스 (사용 아마존 탄성 추론)

Amazon SageMaker ML 컴퓨팅 인스턴스에서 실행되는 컴퓨팅 워크로드에 대한 인스턴스 유형 고려 사항은 아마존 엘라스틱 컴퓨트 클라우드 (Amazon EC2) 인스턴스. 가상 CPU 수 및 메모리 양과 같은 인스턴스 사양에 대한 자세한 내용은 다음을 참조하십시오. Amazon SageMaker 요금.

환경 구축

Amazon SageMaker 노트북 인스턴스 환경은 대화 형 데이터 탐색, 스크립트 작성, 기능 엔지니어링 및 모델링 프로토 타이핑에 적합합니다. 다음 섹션에 설명 된대로 대화 형 빌드를 위해 컴퓨팅에서 더 작은 인스턴스가있는 노트북을 사용하고 무거운 작업은 더 큰 인스턴스가있는 임시 학습, 조정 및 처리 작업에 맡기는 것이 좋습니다. 이렇게하면 노트북에서 대규모 인스턴스 (또는 GPU)를 지속적으로 실행하지 않아도됩니다. 이를 통해 올바른 인스턴스를 선택하여 빌드 비용을 최소화 할 수 있습니다.

구축 단계에서 Amazon SageMaker 온 디맨드 노트북 인스턴스의 크기는 의미있는 탐색 데이터 분석 (EDA)을 위해 메모리에로드하는 데 필요한 데이터 양과 필요한 계산 양에 따라 다릅니다. 범용 인스턴스 (예 : T 또는 M 제품군)로 소규모로 시작하고 필요에 따라 확장하는 것이 좋습니다.

버스트 가능한 T 인스턴스 제품군은 노트북 활동에 이상적입니다. 계산은 셀을 실행할 때만 수행되지만 CPU에서 최대 성능을 원할 때만 수행되기 때문입니다. 예를 들면 ml.t2.medium 4GB 메모리 내에 보관할 수있는 작은 데이터 세트를 처리하는 대부분의 기본 데이터 처리, 기능 엔지니어링 및 EDA에 충분합니다. 다음과 같이 메모리 용량이 더 큰 인스턴스를 선택할 수 있습니다. ml.m5.12xlarge (192GB 메모리), 피쳐 엔지니어링을 위해 훨씬 더 많은 데이터를 메모리에로드해야하는 경우. 기능 엔지니어링에 과도한 컴퓨팅 작업 (예 : 이미지 처리)이 포함 된 경우 다음과 같이 컴퓨팅에 최적화 된 C 제품군 인스턴스 중 하나를 사용할 수 있습니다. ml.c5.xlarge.

온 디맨드 노트북 인스턴스에 비해 Studio 노트북의 이점은 Studio를 사용하면 컴퓨팅 리소스는 완전히 탄력적이며 즉시 인스턴스를 변경할 수 있습니다., 컴퓨팅 수요 변화에 따라 컴퓨팅을 확장 및 축소 할 수 있습니다 (예 : ml.t3.mediumml.g4dn.xlarge 작업을 중단하거나 인프라를 관리하지 않고도 빌드 컴퓨팅 수요가 증가함에 따라. 한 인스턴스에서 다른 인스턴스로 원활하게 이동할 수 있으며 인스턴스가 시작되는 동안 계속 작업 할 수 있습니다. 온 디맨드 노트북 인스턴스를 사용하는 경우 인스턴스를 중지하고 설정을 업데이트 한 다음 새 인스턴스 유형으로 다시 시작해야합니다.

빌드 비용을 낮추려면 온 디맨드 노트북 인스턴스를 중지하거나 필요하지 않을 때 Studio 인스턴스를 종료하는 것이 좋습니다. 또한 다음을 사용할 수 있습니다. AWS 자격 증명 및 액세스 관리 (나는) 조건 키 특정 사용자에 대해 GPU 인스턴스와 같은 특정 인스턴스 유형을 제한하여 비용을 제어하는 ​​효과적인 방법입니다. 섹션에서 더 자세히 설명합니다. 불필요한 비용을 피하기위한 권장 사항.

처리 환경

데이터의 하위 집합으로 데이터 탐색 및 프로토 타이핑을 완료하고 전체 데이터에 전처리 및 변환을 적용 할 준비가 되었으면 Amazon SageMaker 처리 작업 사용중인 비교적 작은 노트북 인스턴스를 확장하지 않고 EDA 단계에서 작성한 처리 스크립트를 사용합니다. Amazon SageMaker Processing은 코드, 컨테이너 및 데이터와 같은 전체 데이터 세트를 처리하는 데 필요한 모든 것을 Amazon SageMaker 노트북 인스턴스와 별도의 컴퓨팅 인프라로 발송합니다. Amazon SageMaker Processing은 리소스 프로비저닝, 데이터 및 아티팩트 전송, 작업 완료 후 인프라 종료를 처리합니다.

Amazon SageMaker Processing 사용의 이점은 작업이 실행되는 동안 처리 인스턴스에 대해서만 비용을 지불한다는 것입니다. 따라서 비용에 대해 너무 걱정하지 않고 강력한 인스턴스를 활용할 수 있습니다. 예를 들어 일반적인 권장 사항으로 ml.m5.4xlarge 중간 작업 (MB의 데이터), ml.c5.18xlarge 과도한 컴퓨팅 용량이 필요한 워크로드 또는 ml.r5.8xlarge 처리를 위해 메모리에 여러 GB의 데이터를로드하고 처리 작업 시간에 대해서만 지불하려는 경우. 경우에 따라 더 큰 인스턴스를 사용하여 작업을 더 빨리 완료하고 총 작업 비용을 더 적게 지불하는 것을 고려할 수 있습니다.

또는 분산 처리의 경우 인스턴스 수를 늘려 더 작은 인스턴스의 클러스터를 사용할 수 있습니다. 이를 위해 다음과 같이 입력 객체를 분할 할 수 있습니다. 아마존 단순 스토리지 서비스 (Amazon S3) 키 설정 s3_data_distribution_type='ShardedByS3Key' 내부 처리 입력 각 인스턴스가 더 관리하기 쉬운 입력 개체를 거의 동일한 수로 받고 대신 클러스터에서 더 작은 인스턴스를 사용하여 잠재적 인 비용을 절감 할 수 있습니다. 또한 처리 작업을 비동기식으로 수행 할 수 있습니다. .run (…, 대기 = False), 마치 작업을 제출하고 다른 활동을 위해 노트북 셀을 즉시 다시 가져 오는 것처럼 빌드 컴퓨팅 인스턴스 시간을보다 효율적으로 사용할 수 있습니다.

교육 및 튜닝 환경

Amazon SageMaker 처리에 대한 동일한 컴퓨팅 패러다임과 이점이 Amazon SageMaker 교육 및 조정에 적용됩니다. 완전 관리 형 Amazon SageMaker Training을 사용하면 코드, 컨테이너 및 데이터와 같은 훈련 작업에 필요한 모든 것을 Amazon SageMaker 노트북 인스턴스와는 별도의 컴퓨팅 인프라로 발송합니다. 따라서 학습 작업은 노트북 인스턴스의 컴퓨팅 리소스에 의해 제한되지 않습니다. Amazon SageMaker Training Python SDK는 다음을 호출 할 때 비동기식 교육도 지원합니다. .fit(…, wait = False). 전화와 같은 다른 활동을 위해 노트북 셀을 즉시 돌려받습니다. .fit() 프로파일 링 목적으로 다른 ML 컴퓨팅 인스턴스를 사용하거나 실험 목적으로 하이퍼 파라미터 설정의 변형을 사용하는 다른 훈련 작업에 대해서도 마찬가지입니다. ML 교육은 종종 ML 수명주기에서 컴퓨팅 집약적이고 시간이 많이 걸리는 부분 일 수 있기 때문에 교육 작업은 원격 컴퓨팅 인프라에서 비동기 적으로 발생하므로 교육 작업을 시작하는 경우 비용 최적화를 위해 노트북 인스턴스를 안전하게 종료 할 수 있습니다. 오늘의 마지막 작업. 섹션에서 사용하지 않는 유휴 온 디맨드 노트북 인스턴스를 자동으로 종료하는 방법에 대해 설명합니다. 불필요한 비용을 피하기위한 권장 사항.

학습용 인스턴스를 선택할 때 고려해야하는 비용 최적화 요소는 다음과 같습니다.

  • 인스턴스 패밀리 – 교육에 적합한 인스턴스 유형은 무엇입니까? 전체 교육 비용을 최적화해야하며 때로는 더 큰 인스턴스를 선택하면 교육 속도가 훨씬 빨라져 총 비용이 줄어들 수 있습니다. 알고리즘이 GPU 인스턴스를 활용할 수도 있습니까?
  • 인스턴스 크기 – 알고리즘이 훈련을 실행하는 데 필요한 최소 컴퓨팅 및 메모리 용량은 얼마입니까? 분산 교육을 사용할 수 있습니까?
  • 인스턴스 수 – 분산 교육을 사용할 수있는 경우 클러스터에서 사용할 수있는 인스턴스 유형 (CPU 또는 GPU)은 무엇이며 몇 개입니까?

인스턴스 유형 선택과 관련하여 워크로드에 사용하는 알고리즘 또는 프레임 워크를 기반으로 결정할 수 있습니다. Amazon SageMaker 내장 알고리즘을 사용하는 경우 정교한 프로그래밍없이 유리한 출발을 할 수 있습니다. 기본 제공 알고리즘의 인스턴스 유형 자세한 지침은. 예를 들면 XGBoost 현재는 CPU를 사용하여 훈련합니다. 메모리 바운드 (컴퓨팅 바운드와 반대) 알고리즘입니다. 따라서 범용 컴퓨팅 인스턴스 (예 : M5)은 컴퓨팅 최적화 인스턴스보다 더 나은 선택입니다 (예 : C4).

또한 훈련 데이터를 보관할 수 있도록 선택한 인스턴스에 충분한 총 메모리를 확보하는 것이 좋습니다. 주 메모리 (libsvm 입력 모드에서 사용할 수있는 out-of-core 기능)에 맞지 않는 데이터를 처리하기 위해 디스크 공간 사용을 지원하지만 캐시 파일을 디스크에 쓰면 알고리즘 처리 시간이 느려집니다. 에 대한 물체 감지 알고리즘, 학습을 위해 다음 GPU 인스턴스를 지원합니다.

  • ml.p2.xlarge
  • ml.p2.8xlarge
  • ml.p2.16xlarge
  • ml.p3.2xlarge
  • ml.p3.8xlarge
  • ml.p3.16xlarge

대규모 배치 크기의 학습에는 더 많은 메모리가있는 GPU 인스턴스를 사용하는 것이 좋습니다. 분산 학습을 위해 다중 GPU 및 다중 머신 설정에서 알고리즘을 실행할 수도 있습니다.

너라면 나만의 알고리즘 가져 오기스크립트 모드 또는 맞춤 컨테이너, 먼저 워크로드를 실행할 인스턴스 유형을 결정하기 위해 프레임 워크 또는 알고리즘이 CPU, GPU 또는 둘 다를 지원하는지 여부를 명확히해야합니다. 예를 들면 scikit-learn은 GPU를 지원하지 않습니다.즉, 가속화 된 컴퓨팅 인스턴스를 사용한 훈련은 런타임에 실질적인 이득을 얻지 못하지만 인스턴스 비용을 초과 지불하게됩니다. 분산 방식으로 학습하는 경우 워크로드에 대해 어떤 인스턴스 유형과 인스턴스 수를 결정하려면 작업을 프로파일 링하여 인스턴스 수와 런타임 사이의 최적 지점을 찾는 것이 좋습니다. 이는 비용으로 이어집니다. 자세한 내용은 Amazon Web Services는 BERT 및 Mask R-CNN에 대한 단식 교육 시간을 달성했습니다.. 또한 인스턴스 유형, 인스턴스 수 및 런타임 간의 균형을 찾아야합니다. 자세한 내용은 Amazon SageMaker에서 TensorFlow를 사용하여 자연어 처리를위한 ALBERT 교육.

GPU 기반의 경우 PG 인스턴스 패밀리의 경우 차이점을 고려해야합니다. 예를 들면 P3 GPU 컴퓨팅 인스턴스는 가장 빠른 학습 시간을 위해 대규모 분산 학습 작업을 처리하도록 설계되었으며 G4 인스턴스는 비용 효율적인 소규모 학습 작업에 적합합니다.

교육에서 고려해야 할 또 다른 요소는 온 디맨드 인스턴스 또는 스팟 인스턴스. 교육용 온 디맨드 ML 인스턴스를 사용하면 인스턴스가 사용 된 시간을 기준으로 온 디맨드 요금으로 ML 컴퓨팅 용량에 대한 비용을 지불 할 수 있습니다. 그러나 중단 될 수 있거나 특정 시간에 시작 및 중지 할 필요가없는 작업의 경우 관리 형 스팟 인스턴스 (관리되는 스팟 교육). Amazon SageMaker는 온 디맨드 인스턴스에 비해 모델 교육 비용을 최대 90 %까지 줄이고 사용자를 대신하여 스팟 중단을 관리합니다.

배포 / 호스팅 환경

대부분의 경우, ML 애플리케이션 개발 및 실행을위한 인프라 지출의 최대 90 %가 추론에 사용되므로 고성능의 비용 효율적인 ML 추론 인프라가 매우 중요합니다. 이는 주로 빌드 및 학습 작업이 빈번하지 않고 빌드 및 학습 기간에 대해서만 비용을 지불하지만 엔드 포인트 인스턴스가 항상 실행되기 때문입니다 (인스턴스가 서비스중인 동안). 따라서 올바른 호스팅 방법과 올바른 유형의 인스턴스를 선택하면 ML 프로젝트의 총 비용에 큰 영향을 미칠 수 있습니다.

모델 배포의 경우 사용 사례에서 거꾸로 작업하는 것이 중요합니다. 예측 빈도는 얼마입니까? 애플리케이션에 대한 실시간 트래픽과 클라이언트에 대한 실시간 응답을 기대하십니까? 동일한 사용 사례에 대해 서로 다른 데이터 하위 집합에 대해 학습 된 모델이 많습니까? 예측 트래픽이 변동합니까? 추론 지연이 문제입니까?

이러한 각 상황에 대해 Amazon SageMaker의 호스팅 옵션이 있습니다. 추론 데이터가 배치로 제공되는 경우 Amazon SageMaker 일괄 변환 완전 관리 형 인프라 프로비저닝 및 해체를 통해 예측을 얻을 수있는 비용 효율적인 방법입니다. 단일 사용 사례에 대해 여러 모델을 학습 한 경우 다중 모달 엔드 포인트는 사용자 또는 세그먼트별로 학습 된 ML 모델 호스팅 비용을 절약 할 수있는 좋은 방법입니다. 자세한 내용은 Amazon SageMaker 다중 모델 엔드 포인트를 사용하여 추론 비용 절감.

모델 호스팅 방법을 결정한 후 부하 테스트 과잉 프로비저닝을 방지하고 필요하지 않은 용량에 대해 추가 비용을 지불하기 위해 라이브 엔드 포인트에 대한 자동 확장을 사용하거나 사용하지 않고 적절한 인스턴스 유형 및 집합 크기를 결정하는 모범 사례입니다. GPU에서 가장 효율적으로 훈련하는 알고리즘은 효율적인 추론을 위해 GPU의 이점을 얻지 못할 수 있습니다. 가장 비용 효율적인 솔루션을 결정하기 위해 부하 테스트를하는 것이 중요합니다. 다음 순서도는 결정 프로세스를 요약합니다.

Amazon SageMaker는 범용 인스턴스에서 컴퓨팅 최적화 및 GPU 기반 인스턴스에 이르기까지 추론에 사용할 수있는 인스턴스 패밀리에 대한 다양한 옵션을 제공합니다. 각 제품군은 서로 다른 애플리케이션에 최적화되어 있으며 모든 인스턴스 유형이 추론 작업에 적합한 것은 아닙니다. 예 : Amazon Inf1 인스턴스 높은 처리량과 짧은 지연 시간을 제공하고 클라우드에서 추론 당 비용이 가장 낮습니다. G4 추론 G4 용 인스턴스는 GPU 인스턴스에 대한 추론 당 비용이 가장 낮으며 GPU 인스턴스에 대해 더 높은 성능, 더 낮은 지연 시간 및 낮은 추론 당 비용을 제공합니다. 과 P3 인스턴스는 훈련에 최적화되어 있으며, 가장 빠른 훈련 시간을 위해 대규모 분산 훈련 작업을 처리하도록 설계되었으므로 추론에 완전히 활용되지 않습니다.

추론 비용을 낮추는 또 다른 방법은 Elastic Inference를 사용하여 추론 작업에서 최대 75 %의 비용을 절감하는 것입니다. 추론을위한 인스턴스 유형과 크기를 선택하는 것은 관련된 많은 요인을 고려할 때 쉽지 않을 수 있습니다. 예를 들어 더 큰 모델의 경우 CPU의 추론 지연 시간이 온라인 애플리케이션의 요구 사항을 충족하지 못할 수 있지만 본격적인 GPU의 비용은 정당화되지 않을 수 있습니다. 또한 RAM 및 CPU와 같은 리소스는 원시 추론 속도보다 애플리케이션의 전반적인 성능에 더 중요 할 수 있습니다. Elastic Inference를 사용하면 적절한 양의 GPU 기반 추론 가속화를 모든 Amazon 컴퓨팅 인스턴스에 연결할 수 있습니다. 이는 Amazon SageMaker 노트북 인스턴스 및 엔드 포인트에서도 사용할 수 있으며, 내장 알고리즘과 딥 러닝 환경을 가속화합니다. 이를 통해 애플리케이션에 가장 적합한 가격 / 성능 비율을 선택할 수 있습니다. 예를 들어 ml.c5.large 다음으로 구성된 인스턴스 eia1.medium 가속 비용은 ml.p2.xlarge하지만 성능이 10 ~ 15 % 만 느립니다. 자세한 내용은 Amazon Elastic Inference – GPU 기반 딥 러닝 추론 가속화.

또한 다음을 사용할 수 있습니다. Amazon SageMaker 용 Auto Scaling 필요할 때마다 엔드 포인트에 용량 또는 가속화 된 인스턴스를 자동으로 추가 및 제거합니다. 이 기능을 사용하면 추론 볼륨을 면밀히 모니터링하고 이에 대응하여 엔드 포인트 구성을 변경하는 대신 엔드 포인트는 다음을 사용하여 결정된 실제 워크로드에 따라 인스턴스 수를 자동으로 조정합니다. 아마존 클라우드 워치 정책에 정의 된 메트릭 및 목표 값. 자세한 내용은 AWS 오토 스케일링.

불필요한 비용을 피하기위한 권장 사항

특정 Amazon SageMaker 리소스 (예 : 처리, 교육, 조정 및 배치 변환 인스턴스)는 임시적이며 Amazon SageMaker는 작업이 완료되면 인스턴스를 자동으로 시작하고 종료합니다. 그러나 다른 리소스 (예 : 빌드 컴퓨팅 리소스 또는 호스팅 엔드 포인트)는 일시적이지 않으며 사용자는 이러한 리소스를 중지하거나 종료해야하는시기를 제어 할 수 있습니다. 따라서 유휴 리소스를 식별하고 중지하는 방법을 알면 비용 최적화가 향상 될 수 있습니다. 이 섹션에서는 이러한 프로세스를 자동화하는 몇 가지 유용한 방법에 대해 설명합니다.

구축 환경 : 유휴 온 디맨드 노트북 인스턴스 자동 중지

유휴 노트북 인스턴스 비용을 피하는 한 가지 방법은 수명주기 구성을 사용하여 유휴 인스턴스를 자동으로 중지하는 것입니다. 와 수명주기 구성 Amazon SageMaker에서는 노트북 인스턴스에 패키지 또는 샘플 노트북을 설치하거나 네트워킹 및 보안을 구성하여 노트북 환경을 사용자 지정할 수 있으며, 그렇지 않으면 셸 스크립트를 사용하여 사용자 지정할 수 있습니다. 이러한 유연성을 통해 노트북 환경을 설정하고 실행하는 방법을 더 많이 제어 할 수 있습니다.

AWS는 노트북 라이프 사이클 구성 스크립트의 공용 저장소 유휴 노트북을 중지하기위한 샘플 bash 스크립트를 포함하여 노트북 인스턴스를 사용자 정의하는 일반적인 사용 사례를 해결합니다.

특정 기간 (설정 한 매개 변수) 동안 유휴 상태이면 자동으로 중지되도록 수명주기 구성을 사용하여 노트북 인스턴스를 구성 할 수 있습니다. Jupyter 노트북의 유휴 상태는 다음과 같이 정의됩니다. GitHub 문제. 이를 위해 새 수명주기 구성을 생성하려면 다음 단계를 따르십시오.

  1. Amazon SageMaker 콘솔에서 수명주기 구성.
  2. 왼쪽 메뉴에서 만들기 새로운 수명주기 구성 (새로 만드는 경우).
  3. 럭셔리 성함, 영숫자를 사용하여 이름을 입력하고 -이지만 공백은 없습니다. 이름은 최대 63 자입니다. 예를 들면 Stop-Idle-Instance.
  4. 노트북을 생성 할 때와 시작할 때마다 실행되는 스크립트를 생성하려면 노트북 시작.
  5. . 스타트 수첩 편집기, 스크립트를 입력하십시오.
  6. 왼쪽 메뉴에서 구성 만들기.

이 목적으로 사용할 bash 스크립트는 다음에서 찾을 수 있습니다. 수명주기 구성 샘플을위한 AWS 샘플 리포지토리. 이 스크립트는 기본적으로 매개 변수에 정의 된대로 특정 유휴 시간에 크론 작업을 실행합니다. IDLE_TIME 스크립트에서. 이 시간을 원하는대로 변경하고 필요에 따라 스크립트를 변경할 수 있습니다. 수명주기 구성 페이지.

이 스크립트가 작동하려면 노트북이 다음 두 가지 기준을 충족해야합니다.

  • 노트북 인스턴스는 인터넷에 연결되어 예시 구성 Python 스크립트 (autostop.py) 공용 저장소에서
  • 노트북 인스턴스 실행 역할 권한 SageMaker:StopNotebookInstance 노트북을 중지하고 SageMaker:DescribeNotebookInstance 노트북을 설명하기 위해

인터넷 연결을 허용하지 않는 VPC에서 노트북 인스턴스를 생성하는 경우 bash 스크립트에 Python 스크립트를 인라인으로 추가해야합니다. 스크립트는 GitHub 레포. 다음과 같이 bash 스크립트에 입력하고 대신 수명주기 구성에 사용합니다.

#!/bin/bash
set -e
# PARAMETERS
IDLE_TIME=3600 echo "Creating the autostop.py"
cat << EOF > autostop.py
##
## [PASTE PYTHON SCRIPT FROM GIT REPO HERE]
##
EOF echo "Starting the SageMaker autostop script in cron"
(crontab -l 2>/dev/null; echo "*/5 * * * * /usr/bin/python $PWD/autostop.py --time $IDLE_TIME --ignore-connections") | crontab -

다음 스크린 샷은 Amazon SageMaker 콘솔에서 수명주기 구성을 선택하는 방법을 보여줍니다.

또는 Amazon S3에 스크립트를 저장하고 VPC 엔드 포인트를 통해 스크립트에 연결할 수 있습니다. 자세한 내용은 새로운 기능 – Amazon S3 용 VPC 엔드 포인트.

이제 수명주기 구성을 생성 했으므로 새 노트북을 생성하거나 기존 노트북을 업데이트 할 때 온 디맨드 노트북 인스턴스에 할당 할 수 있습니다. 수명주기 구성으로 노트북을 생성하려면 (이 게시물에서는 Stop-Idle-Instance)에서 스크립트를 노트북 아래의 노트북에 할당해야합니다. 추가 구성 부분. 다른 모든 단계는에 설명 된 것과 동일합니다. 온 디맨드 노트북 인스턴스 생성. 수명주기 구성을 기존 노트북에 연결하려면 먼저 온 디맨드 노트북 인스턴스를 중지하고 설정 업데이트 인스턴스를 변경합니다. 수명주기 구성을 추가 구성 안내

빌드 환경 : 주문형 노트북 인스턴스의 시작 및 중지 예약

또 다른 방법은 노트북이 특정 시간에 시작 및 중지되도록 예약하는 것입니다. 예를 들어 전자 필기장 (예 : 특정 그룹의 전자 필기장 또는 계정에있는 모든 전자 필기장)을 오전 7시에 시작하고 평일 (월요일부터 금요일까지) 오후 00시에 모두 중지하려면 다음을 수행 할 수 있습니다. 이것을 사용하여 Amazon CloudWatch 이벤트AWS 람다 기능. Lambda 함수 구성에 대한 자세한 내용은 AWS Lambda 콘솔에서 기능 구성. 이 사용 사례의 일정을 작성하려면 다음 섹션의 단계를 따르세요.

Lambda 함수로 노트북 시작

Lambda 함수로 노트북을 시작하려면 다음 단계를 완료하십시오.

  1. Lambda 콘솔에서 Lambda 함수 생성 이름에 특정 키워드가 포함 된 온 디맨드 노트북 인스턴스를 시작합니다. 이 게시물에서는 개발 팀의 주문형 노트북 인스턴스 이름이 dev-.
  2. Python을 함수의 런타임으로 사용하고 함수 이름을 지정합니다. start-dev-notebooks.

Lambda 함수에는 SageMakerFullAccess 정책에 첨부 실행 IAM 역할.

  1. 다음 스크립트를 기능 코드 편집 영역 :
# Code to start InService Notebooks that contain specific keywords in their name
# Change "dev-" in NameContains to your specific use case import boto3
client = boto3.client('sagemaker')
def lambda_handler(event, context): try: response_nb_list = client.list_notebook_instances( NameContains='dev-', # Change this to your specific use case StatusEquals= 'Stopped' ) for nb in response_nb_list['NotebookInstances']: response_nb_stop = client.start_notebook_instance( NotebookInstanceName = nb['NotebookInstanceName']) return {"Status": "Success"} except: return {"Status": "Failure"}

  1. $XNUMX Million 미만 기본 설정, 변경 시간 초과15 분 (최대).

이 단계에서는 여러 노트북을 중지 및 시작하는 동안 기능이 최대 허용 시간 제한 범위를 갖도록합니다.

  1. 함수를 저장하십시오.

Lambda 함수로 노트북 중지

Lambda 함수로 노트북을 중지하려면 동일한 단계를 수행하고 다음 스크립트를 사용하고 함수의 이름을 지정합니다. stop-dev-notebooks:

# Code to stop InService Notebooks that contain specific keywords in their name
# Change "dev-" in NameContains to your specific use case import boto3
client = boto3.client('sagemaker')
def lambda_handler(event, context): try: response_nb_list = client.list_notebook_instances( NameContains='dev-', # Change this to your specific use case StatusEquals= 'InService' ) for nb in response_nb_list['NotebookInstances']: response_nb_stop = client.stop_notebook_instance( NotebookInstanceName = nb['NotebookInstanceName']) return {"Status": "Success"} except: return {"Status": "Failure"}

CloudWatch 이벤트 생성

이제 함수를 만들었으므로 다음을 수행해야합니다. 특정 일정에 따라 이러한 기능을 트리거하는 이벤트 생성.

우리는 사용 cron 표현 일정 형식. 사용자 정의 cron 표현식 작성에 대한 자세한 정보는 다음을 참조하십시오. 규칙에 대한 일정 표현식. 모든 예약 된 이벤트는 UTC 시간대를 사용하며 일정의 최소 정밀도는 1 분입니다.

예를 들어, 연중 월요일부터 금요일까지 오전 7시에 대한 cron 표현식은 다음과 같습니다. 0 7 ? * MON-FRI *, 같은 날 오후 9시 0 21 ? * MON-FRI *.

특정 일정에 인스턴스를 중지하기위한 이벤트를 생성하려면 다음 단계를 완료하세요.

  1. CloudWatch 콘솔의 이벤트선택한다. 규칙.
  2. 왼쪽 메뉴에서 규칙 만들기.
  3. $XNUMX Million 미만 이벤트 원본, 고르다 시간표, 다음을 선택하십시오. 크론 표현.
  4. 크론 표현식을 입력합니다 (예 : 21 ? * MON-FRI * 월요일부터 금요일까지 오후 9시).
  5. $XNUMX Million 미만 목표선택한다. 람다 함수.
  6. 목록에서 기능을 선택하십시오 (이 게시물의 경우 stop-dev-notebooks).
  7. 왼쪽 메뉴에서 세부 정보 구성

  1. 이벤트 이름을 추가하십시오. Stop-Notebooks-Event및 설명.
  2. 휴가 사용
  3. 왼쪽 메뉴에서 만들기.

동일한 단계에 따라 일정에 따라 노트북을 시작하는 예약 된 이벤트를 만들 수 있습니다 (예 : 평일 오전 7시). 직원이 하루를 시작할 때 노트북이 준비되고 서비스됩니다.

호스팅 환경 : 유휴 Amazon SageMaker 엔드 포인트 자동 감지

ML 모델을 엔드 포인트로 배포하여 실시간 추론을 위해 모델을 테스트 할 수 있습니다. 때때로 이러한 엔드 포인트가 우연히 서비스 상태로 남아있어 계정에 대한 지속적인 비용이 발생합니다. CloudWatch 이벤트 및 Lambda 함수를 사용하여 이러한 엔드 포인트를 자동으로 감지하고 수정 조치 (예 : 삭제)를 수행 할 수 있습니다. 예를 들어 엔드 포인트가 지난 시간 동안 유휴 상태 였는지 감지 할 수 있습니다 (24 시간과 같은 특정 기간 동안 호출이 없음). 이 섹션에서 제공하는 함수 스크립트는 유휴 엔드 포인트를 감지하고 메시지를 아마존 단순 알림 서비스 (Amazon SNS) 주제와 유휴 엔드 포인트 목록. 이 주제에 계정 관리자를 구독 할 수 있으며, 감지되면 유휴 엔드 포인트 목록이 포함 된 이메일을 수신합니다. 이 예약 된 이벤트를 생성하려면 다음 단계를 따르십시오.

  1. SNS 주제 생성 이메일이나 전화 번호를 구독하세요.
  2. Lambda 함수 생성 다음 스크립트로.
    1. Lambda 함수에는 IAM 실행 역할에 다음 정책이 연결되어 있어야합니다. CloudWatchReadOnlyAccess, AmazonSNSFullAccessAmazonSageMakerReadOnly.
import boto3
from datetime import datetime
from datetime import timedelta def lambda_handler(event, context): idle_threshold_hr = 24 # Change this to your threshold in hours cw = boto3.client('cloudwatch') sm = boto3.client('sagemaker') sns = boto3.client('sns') try: inservice_endpoints = sm.list_endpoints( SortBy='CreationTime', SortOrder='Ascending', MaxResults=100, # NameContains='string', # for example 'dev-' StatusEquals='InService' ) idle_endpoints = [] for ep in inservice_endpoints['Endpoints']: ep_describe = sm.describe_endpoint( EndpointName=ep['EndpointName'] ) metric_response = cw.get_metric_statistics( Namespace='AWS/SageMaker', MetricName='Invocations', Dimensions=[ { 'Name': 'EndpointName', 'Value': ep['EndpointName'] }, { 'Name': 'VariantName', 'Value': ep_describe['ProductionVariants'][0]['VariantName'] } ], StartTime=datetime.utcnow()-timedelta(hours=idle_threshold_hr), EndTime=datetime.utcnow(), Period=int(idle_threshold_hr*60*60), Statistics=['Sum'], Unit='None' ) if len(metric_response['Datapoints'])==0: idle_endpoints.append(ep['EndpointName']) if len(idle_endpoints) > 0: response_sns = sns.publish( TopicArn='YOUR SNS TOPIC ARN HERE', Message="The following endpoints have been idle for over {} hrs. Log on to Amazon SageMaker console to take actions.nn{}".format(idle_threshold_hr, 'n'.join(idle_endpoints)), Subject='Automated Notification: Idle Endpoints Detected', MessageStructure='string' ) return {'Status': 'Success'} except: return {'Status': 'Fail'}

이 코드를 수정하여 다음을 기준으로 엔드 포인트를 필터링 할 수도 있습니다. 리소스 태그. 자세한 내용은 다음을 참조하십시오. AWS Python SDK Boto3 설명서.

엔드 포인트 조사

이 스크립트는 감지 된 유휴 엔드 포인트 목록과 함께 이메일 (또는 SNS 주제 구성 방식에 따라 문자 메시지)을 보냅니다. 그런 다음 Amazon SageMaker 콘솔에 로그인하여 해당 엔드 포인트를 조사하고, 사용하지 않는 이탈 엔드 포인트 인 경우 삭제할 수 있습니다. 이를 수행하려면 다음 단계를 완료하십시오.

  1. Amazon SageMaker 콘솔의 추론선택한다. 종점.

해당 리전의 계정에있는 모든 엔드 포인트 목록을 볼 수 있습니다.

  1. 조사 할 엔드 포인트를 선택하고 감시 장치, 선택 호출 메트릭을 봅니다.
  2. $XNUMX Million 미만 모든 측정 항목, 고르다 호출

끝점에서 호출 활동을 볼 수 있습니다. 관심있는 기간 동안 호출 이벤트 (또는 활동)가없는 경우 엔드 포인트가 사용 중이 아니므로 삭제할 수 있음을 의미합니다.

  1. 엔드 포인트를 삭제할 것이 확실한 경우 엔드 포인트 목록으로 돌아가서 삭제할 엔드 포인트를 선택한 다음 행위 메뉴, 선택

결론

이 게시물에서는 Amazon SageMaker 가격 책정 작동 방식, ML 프로젝트의 여러 단계에 대해 Amazon SageMaker 컴퓨팅 리소스 크기를 적절하게 조정하는 모범 사례, 유휴 온 디맨드 노트북 인스턴스를 자동으로 중지하거나 유휴 Amazon SageMaker 엔드 포인트를 자동으로 감지하여 수정 조치를 취할 수 있습니다.

Amazon SageMaker의 작동 방식과 Amazon SageMaker 리소스의 요금 모델을 이해하면 ML 프로젝트의 총 비용을 더욱 최적화하는 단계를 수행 할 수 있습니다.


저자 소개

Nick Minaie는 인공 지능 및 기계 학습 (AI / ML) 전문 솔루션 설계자로서 고객이 규모에 맞게 잘 설계된 기계 학습 솔루션으로의 여정을 지원합니다. 여가 시간에는 가족 시간, 추상 회화 및 자연 탐험을 즐깁니다.

Michael Hsieh는 수석 AI / ML 전문가 솔루션 설계자입니다. 그는 고객과 협력하여 AWS ML 제품과 ML 도메인 지식을 결합하여 ML 여정을 발전시킵니다. 시애틀 이식인으로서 그는 하이킹 코스, SLU의 경치 좋은 카약 타기, Shilshole Bay의 일몰과 같이 도시가 제공해야하는 대자연을 탐험하는 것을 좋아합니다.

출처 : https://aws.amazon.com/blogs/machine-learning/right-sizing-resources-and-avoiding-unnecessary-costs-in-amazon-sagemaker/

spot_img

최신 인텔리전스

spot_img