Hugging Face 및 Amazon SageMaker 비동기 추론 엔드포인트 PlatoBlockchain Data Intelligence로 고가치 연구를 개선하십시오. 수직 검색. 일체 포함.

Hugging Face 및 Amazon SageMaker 비동기 추론 엔드포인트로 고가치 연구 개선

많은 AWS 고객이 연구, 분석 및 비즈니스 인텔리전스를 서비스로 제공합니다. 이러한 유형의 연구 및 비즈니스 인텔리전스를 통해 최종 고객은 시장 및 경쟁자보다 앞서 있고 성장 기회를 식별하며 문제를 사전에 해결할 수 있습니다. 예를 들어, 당사의 금융 서비스 부문 고객 중 일부는 주식, 헤지 펀드 및 투자 관리 회사에 대한 연구를 수행하여 동향을 이해하고 포트폴리오 전략을 식별하는 데 도움을 줍니다. 건강 산업에서 건강 연구의 점점 더 많은 부분이 정보 기반입니다. 많은 연구에는 진단, 치료 또는 기타 연구 프로젝트를 위해 초기에 수집된 데이터의 분석이 수반되었으며 현재 새로운 연구 목적으로 사용되고 있습니다. 이러한 형태의 건강 연구는 새로운 사례를 피하기 위한 효과적인 XNUMX차 예방, 조기 발견을 위한 XNUMX차 예방, 더 나은 질병 관리를 위한 예방으로 이어졌습니다. 연구 결과는 삶의 질을 향상시킬 뿐만 아니라 의료비 절감에도 도움이 됩니다.

고객은 공개 및 비공개 소스의 정보를 소화하는 경향이 있습니다. 그런 다음 기존 또는 사용자 지정 자연어 처리(NLP) 모델을 적용하여 추세를 요약 및 식별하고 이 정보를 기반으로 통찰력을 생성합니다. 이러한 유형의 연구 작업에 사용되는 NLP 모델은 대규모 모델을 다루며 일반적으로 현재 비용 최적화되지 않은 전용 엔드포인트와 코퍼스의 크기를 고려하여 요약해야 하는 긴 기사를 포함합니다. 이러한 애플리케이션은 하루 중 다른 시간에 들어오는 트래픽 버스트를 수신합니다.

우리는 고객이 필요에 따라 XNUMX으로 축소하고 추론 기능을 높일 수 있는 기능을 통해 큰 이점을 얻을 것이라고 믿습니다. 이렇게 하면 연구 비용이 최적화되고 여전히 추론의 품질이 저하되지 않습니다. 이 게시물은 얼굴을 껴안는 방법에 대해 설명합니다. 아마존 세이지 메이커 비동기 추론은 이를 달성하는 데 도움이 될 수 있습니다.

TensorFlow, PyTorch 및 Apache MXNet과 같은 여러 딥 러닝 프레임워크를 사용하여 텍스트 요약 모델을 구축할 수 있습니다. 이러한 모델에는 일반적으로 다양한 크기의 여러 텍스트 문서의 큰 입력 페이로드가 있습니다. 고급 딥 러닝 모델은 모델 추론 전에 컴퓨팅 집약적인 사전 처리가 필요합니다. 처리 시간은 몇 분이면 HTTP API를 통해 페이로드를 전달하여 실시간 추론을 실행하는 옵션이 제거됩니다. 대신 다음과 같은 개체 저장소에서 비동기식으로 입력 페이로드를 처리해야 합니다. 아마존 단순 스토리지 서비스 (Amazon S3) 자동 대기열 및 사전 정의된 동시성 임계값. 시스템은 작업이 완료되면 상태 알림을 수신하고 리소스를 정리하여 불필요한 비용을 줄일 수 있어야 합니다.

SageMaker는 데이터 과학자와 개발자가 ML을 위해 특별히 제작된 광범위한 기능 세트를 결합하여 고품질 ML(기계 학습) 모델을 신속하게 준비, 구축, 교육 및 배포할 수 있도록 지원합니다. SageMaker는 XGBoost(컨테이너, SDK), 사이킷런(컨테이너, SDK), 파이토치(컨테이너, SDK), 텐서플로우(컨테이너, SDK) 및 Apache MXNet(컨테이너, SDK).

SageMaker는 새 데이터에 대한 추론을 생성하기 위해 훈련된 ML 모델을 배포하는 네 가지 옵션을 제공합니다.
  1. 실시간 추론 엔드포인트는 ms에서 초 단위로 짧은 대기 시간 요구 사항으로 처리해야 하는 워크로드에 적합합니다.
  2. 일괄 변환 대규모 데이터 배치에 대한 오프라인 예측에 이상적입니다.
  3. Amazon SageMaker 서버리스 추론 (미리 보기 모드이며 이 글을 쓰는 시점에서 프로덕션 워크로드에는 권장되지 않음) ML 모델을 쉽게 배포하고 확장할 수 있는 특수 제작된 추론 옵션입니다. Serverless Inference는 트래픽 급증 사이에 유휴 기간이 있고 콜드 스타트를 허용할 수 있는 워크로드에 이상적입니다.
  4. 비동기 추론 엔드포인트는 들어오는 요청을 대기열에 넣습니다. 요청 크기가 크고(최대 1GB) 추론 처리 시간이 몇 분(최대 15분)인 워크로드에 이상적입니다. 비동기식 추론을 사용하면 처리할 요청이 없을 때 인스턴스 수를 XNUMX으로 자동 조정하여 비용을 절감할 수 있습니다.

솔루션 개요

이 게시물에서 우리는 배포 페가수스 모델 텍스트 요약을 수행하도록 사전 훈련된 포옹하는 얼굴 에 SageMaker 호스팅 서비스. 단순화를 위해 Hugging Face의 모델을 그대로 사용합니다. 그러나 다음을 수행할 수 있습니다. 사용자 정의 데이터 세트를 기반으로 모델 미세 조정. 에서 사용 가능한 다른 모델을 시험해 볼 수도 있습니다. 허깅페이스 모델 허브. 또한 예측을 얻을 수 있는 이 모델을 호스팅하는 비동기식 추론 엔드포인트를 프로비저닝합니다.

비동기 추론 끝점의 추론 처리기는 기사를 입력 페이로드로 예상합니다. 기사의 요약된 텍스트는 출력입니다. 출력은 추세 분석을 위해 데이터베이스에 저장되거나 추가 분석을 위해 다운스트림으로 제공됩니다. 이 다운스트림 분석은 연구에 도움이 되는 데이터 통찰력을 도출합니다.

비동기식 추론 엔드포인트를 통해 사용자 정의 동시성 및 완료 알림을 제공하는 방법을 보여줍니다. 트래픽이 감소하면 XNUMX으로 축소되고 요청 대기열이 가득 차면 다시 확장되도록 엔드포인트 뒤의 인스턴스의 Auto Scaling을 구성합니다.

우리는 또한 아마존 클라우드 워치 대기열 크기, 총 처리 시간 및 처리된 호출을 모니터링하기 위한 메트릭.

다음 다이어그램에서는 비동기 추론 끝점을 사용하여 추론을 수행하는 동안 관련된 단계를 보여줍니다.

Hugging Face 및 Amazon SageMaker 비동기 추론 엔드포인트 PlatoBlockchain Data Intelligence로 고가치 연구를 개선하십시오. 수직 검색. 일체 포함.

  1. 우리의 사전 훈련 페가수스 ML 모델은 먼저 확장 엔드포인트에서 호스팅됩니다.
  2. 사용자는 요약할 기사를 입력 S3 버킷에 업로드합니다.
  3. 비동기 추론 엔드포인트는 API를 사용하여 호출됩니다.
  4. 추론이 완료되면 결과가 출력 S3 버킷에 저장됩니다.
  5. An 아마존 단순 알림 서비스 (Amazon SNS) 완료된 성공 또는 실패를 알리는 알림이 사용자에게 전송됩니다.

비동기 추론 끝점 만들기

실시간 호스팅 엔드포인트와 유사한 비동기 추론 엔드포인트를 생성합니다. 단계에는 SageMaker 모델 생성, 끝점 구성 및 끝점 배포가 포함됩니다. 두 가지 유형의 끝점 간의 차이점은 비동기 추론 끝점 구성에 다음이 포함된다는 것입니다. AsyncInferenceConfig 부분. 여기에서 엔드포인트 호출의 결과에 대한 S3 출력 경로를 지정하고 선택적으로 성공 및 실패 알림에 대한 SNS 주제를 포함합니다. 또한 고객이 결정한 대로 인스턴스당 최대 동시 호출 수를 지정합니다. 다음 코드를 참조하십시오.

AsyncInferenceConfig={ "OutputConfig": { "S3OutputPath": f"s3://{bucket}/{bucket_prefix}/output", # Optionally specify Amazon SNS topics for notifications "NotificationConfig": { "SuccessTopic": success_topic, "ErrorTopic": error_topic, } }, "ClientConfig": { "MaxConcurrentInvocationsPerInstance": 2 #increase this value up to throughput peak for ideal performance } }

비동기 추론을 위한 엔드포인트 구성을 생성하는 API에 대한 자세한 내용은 다음을 참조하세요. 비동기 추론 끝점 만들기.

비동기 추론 엔드포인트 호출

다음 스크린샷은 입력 페이로드로 사용하는 간단한 기사를 보여줍니다.
Hugging Face 및 Amazon SageMaker 비동기 추론 엔드포인트 PlatoBlockchain Data Intelligence로 고가치 연구를 개선하십시오. 수직 검색. 일체 포함.

다음 코드는 기사를 다음으로 업로드합니다. input.json Amazon S3에 파일:

sm_session.upload_data( input_location, bucket=sm_session.default_bucket(), key_prefix=prefix, extra_args={"ContentType": "text/plain"})

Amazon S3 URI를 입력 페이로드 파일에 사용하여 엔드포인트를 호출합니다. 응답 객체에는 완료 후 결과를 검색하기 위한 Amazon S3의 출력 위치가 포함됩니다.

response = sm_runtime.invoke_endpoint_async(EndpointName=endpoint_name, InputLocation=input_1_s3_location)
output_location = response['OutputLocation']

다음 스크린샷은 요약 후 샘플 출력을 보여줍니다.
Hugging Face 및 Amazon SageMaker 비동기 추론 엔드포인트 PlatoBlockchain Data Intelligence로 고가치 연구를 개선하십시오. 수직 검색. 일체 포함.

비동기 추론 엔드포인트를 호출하는 API에 대한 자세한 내용은 다음을 참조하세요. 비동기 추론 끝점 호출.

사용자 정의 동시성을 사용하여 호출 요청을 대기열에 넣습니다.

비동기 추론 끝점은 자동으로 호출 요청을 대기열에 넣습니다. 이것은 다양한 모니터링 메트릭이 있는 완전 관리형 대기열이며 추가 구성이 필요하지 않습니다. 그것은 사용 MaxConcurrentInvocationsPerInstance 이전 요청이 완료된 후 대기열의 새 요청을 처리하기 위해 이전 엔드포인트 구성의 매개변수입니다. MaxConcurrentInvocationsPerInstance SageMaker 클라이언트가 모델 컨테이너로 보낸 최대 동시 요청 수입니다. 값이 제공되지 않으면 SageMaker가 최적의 값을 선택합니다.

비동기 추론 엔드포인트 내의 Auto Scaling 인스턴스

최소 용량은 XNUMX이고 최대 용량은 XNUMX개의 인스턴스로 Auto Scaling 정책을 설정했습니다. 실시간 호스팅 엔드포인트와 달리 비동기 추론 엔드포인트는 최소 용량을 XNUMX으로 설정하여 인스턴스를 XNUMX으로 축소하는 것을 지원합니다. 우리는 사용 ApproximateBacklogSizePerInstance 추가 확장을 위해 인스턴스당 XNUMX개의 대상 대기열 백로그가 있는 조정 정책 구성에 대한 메트릭입니다. 쿨다운 기간을 설정했습니다. ScaleInCooldown 120초까지 ScaleOutCooldown 120초까지. 에 대한 가치 ApproximateBacklogSizePerInstance 트래픽과 확장 속도에 대한 민감도에 따라 선택됩니다. 축소 속도가 빠를수록 비용이 적게 발생하지만 새 요청이 들어올 때 다시 확장해야 할 가능성이 높아집니다. 축소 속도가 느려질수록 비용이 더 많이 발생하지만 다음을 수행할 가능성은 줄어듭니다. 규모가 작을 때 요청이 들어옵니다.

client = boto3.client('application-autoscaling') # Common class representing Application Auto Scaling for SageMaker amongst other services resource_id='endpoint/' + endpoint_name + '/variant/' + 'variant1' # This is the format in which application autoscaling references the endpoint response = client.register_scalable_target(
ServiceNamespace='sagemaker', #
ResourceId=resource_id,
ScalableDimension='sagemaker:variant:DesiredInstanceCount',
MinCapacity=0,
MaxCapacity=5
) response = client.put_scaling_policy(
PolicyName='Invocations-ScalingPolicy',
ServiceNamespace='sagemaker', # The namespace of the AWS service that provides the resource.
ResourceId=resource_id, # Endpoint name
ScalableDimension='sagemaker:variant:DesiredInstanceCount', # SageMaker supports only Instance Count
PolicyType='TargetTrackingScaling', # 'StepScaling'|'TargetTrackingScaling'
TargetTrackingScalingPolicyConfiguration={ 'TargetValue': 5.0, # The target value for the metric. 'CustomizedMetricSpecification': { 'MetricName': 'ApproximateBacklogSizePerInstance', 'Namespace': 'AWS/SageMaker', 'Dimensions': [{'Name': 'EndpointName', 'Value': endpoint_name }], 'Statistic': 'Average',
}, 'ScaleInCooldown': 120, # ScaleInCooldown - The amount of time, in seconds, after a scale-in activity completes before another scale in activity can start. 'ScaleOutCooldown': 120 # ScaleOutCooldown - The amount of time, in seconds, after a scale-out activity completes before another scale out activity can start.
# 'DisableScaleIn': True|False - indicates whether scale in by the target tracking policy is disabled.
# If the value is true, scale-in is disabled and the target tracking policy won't remove capacity from the scalable resource.
}
)

비동기식 추론 엔드포인트를 자동 확장하는 API에 대한 자세한 내용은 비동기식 추론 끝점 자동 크기 조정.

비동기 추론 끝점에서 알림 구성

각 엔드포인트 호출 결과에 대한 성공 및 오류 알림에 대해 두 개의 별도 SNS 주제를 생성합니다.

sns_client = boto3.client('sns')
response = sns_client.create_topic(Name="Async-Demo-ErrorTopic2")
error_topic = response['TopicArn']
response = sns_client.create_topic(Name="Async-Demo-SuccessTopic2")
success_topic = response['TopicArn']

알림에 대한 다른 옵션에는 S3 버킷의 출력을 주기적으로 확인하거나 S3 버킷 알림을 사용하여 초기화하는 것이 포함됩니다. AWS 람다 파일 업로드 기능. SNS 알림은 앞에서 설명한 대로 엔드포인트 구성 섹션에 포함됩니다.

비동기 추론 끝점에서 알림을 설정하는 방법에 대한 자세한 내용은 다음을 참조하세요. 예측 결과 확인.

비동기 추론 엔드포인트 모니터링

비동기식 추론과 관련된 내장된 추가 CloudWatch 지표를 사용하여 비동기식 추론 엔드포인트를 모니터링합니다. 예를 들어 다음을 사용하여 각 인스턴스의 대기열 길이를 모니터링합니다. ApproximateBacklogSizePerInstance 및 총 대기열 길이 ApproximateBacklogSize.

전체 측정항목 목록은 다음을 참조하세요. 비동기 추론 엔드포인트 모니터링.

엔드포인트 구성을 최적화하여 고성능으로 가장 비용 효율적인 인스턴스를 얻을 수 있습니다. 예를 들어 Amazon Elastic Inference 또는 AWS Inferentia와 함께 인스턴스를 사용할 수 있습니다. 또한 다른 모델 서버 및 컨테이너 매개변수를 조정하면서 동시성 수준을 처리량 피크까지 점진적으로 높일 수 있습니다.

CloudWatch 그래프

이전 섹션에서 설명한 Auto Scaling 정책으로 활성화된 비동기 추론 엔드포인트로 일정 기간 동안 유입되는 10,000개의 추론 요청 트래픽을 시뮬레이션했습니다.

다음 스크린샷은 요청이 들어오기 시작하기 전의 인스턴스 메트릭을 보여줍니다. 실행 중인 인스턴스가 없는 라이브 엔드포인트로 시작합니다.
Hugging Face 및 Amazon SageMaker 비동기 추론 엔드포인트 PlatoBlockchain Data Intelligence로 고가치 연구를 개선하십시오. 수직 검색. 일체 포함.

다음 그래프는 어떻게 BacklogSizeBacklogSizePerInstance Auto Scaling이 시작되고 Auto Scaling 프로세스의 일부로 프로비저닝된 여러 인스턴스에서 엔드포인트의 로드를 공유하면 메트릭이 변경됩니다.
Hugging Face 및 Amazon SageMaker 비동기 추론 엔드포인트 PlatoBlockchain Data Intelligence로 고가치 연구를 개선하십시오. 수직 검색. 일체 포함.

다음 스크린샷에서 볼 수 있듯이 추론 횟수가 늘어남에 따라 인스턴스 수가 증가했습니다.
Hugging Face 및 Amazon SageMaker 비동기 추론 엔드포인트 PlatoBlockchain Data Intelligence로 고가치 연구를 개선하십시오. 수직 검색. 일체 포함.

다음 스크린샷은 축소를 통해 엔드포인트를 실행 중인 인스턴스가 XNUMX인 초기 상태로 되돌리는 방법을 보여줍니다.
Hugging Face 및 Amazon SageMaker 비동기 추론 엔드포인트 PlatoBlockchain Data Intelligence로 고가치 연구를 개선하십시오. 수직 검색. 일체 포함.

정리

모든 요청이 완료되면 실시간 호스팅 엔드포인트를 삭제하는 것과 유사하게 엔드포인트를 삭제할 수 있습니다. 비동기 추론 엔드포인트의 최소 용량을 XNUMX으로 설정하면 XNUMX으로 축소된 후 인스턴스 요금이 발생하지 않습니다.

엔드포인트에 대해 Auto Scaling을 활성화한 경우 엔드포인트를 삭제하기 전에 엔드포인트를 확장 가능한 대상으로 등록 취소해야 합니다. 이렇게 하려면 다음 코드를 실행합니다.

response = client.deregister_scalable_target(ServiceNamespace='sagemaker',ResourceId='resource_id',ScalableDimension='sagemaker:variant:DesiredInstanceCount')

이 데모에서 사용한 인스턴스에 대한 요금이 부과되므로 사용 후에는 엔드포인트를 삭제하는 것을 잊지 마십시오.

sm_client.delete_endpoint(EndpointName=endpoint_name)

S3 객체와 SNS 주제도 삭제해야 합니다. SNS 알림에 대해 사용하고 작업할 다른 AWS 리소스를 생성한 경우 해당 리소스를 삭제할 수도 있습니다.

결론

이 게시물에서는 SageMaker의 새로운 비동기 추론 기능을 사용하여 요약 작업의 일부인 일반적인 대용량 입력 페이로드를 처리하는 방법을 보여주었습니다. 추론을 위해 Hugging Face의 모델을 사용하고 이를 비동기 추론 엔드포인트에 배포했습니다. 버스트 트래픽, 높은 모델 처리 시간, 연구 분석과 관련된 대용량 페이로드의 일반적인 문제를 설명했습니다. 내부 대기열, 사전 정의된 동시성 제한을 관리하고 응답 알림을 구성하고 자동으로 XNUMX으로 축소하는 비동기 추론 끝점의 고유한 기능은 이러한 문제를 해결하는 데 도움이 되었습니다. 이 예제의 전체 코드는 다음에서 사용할 수 있습니다. GitHub의.

SageMaker 비동기 추론을 시작하려면 다음을 확인하십시오. 비동기 추론.


저자에 관하여

Hugging Face 및 Amazon SageMaker 비동기 추론 엔드포인트 PlatoBlockchain Data Intelligence로 고가치 연구를 개선하십시오. 수직 검색. 일체 포함.디네시 쿠마르 수브라마니 스코틀랜드 에든버러에 위치한 UKIR SMB 팀의 수석 솔루션 설계자입니다. 그는 인공 지능과 기계 학습을 전문으로 합니다. Dinesh는 다양한 산업 분야의 고객과 협력하여 고객의 AWS 서비스 문제를 해결하는 것을 즐깁니다. 직장 밖에서는 가족과 함께 시간을 보내고 체스를 하고 장르를 넘나드는 음악을 즐기는 것을 좋아합니다.

Hugging Face 및 Amazon SageMaker 비동기 추론 엔드포인트 PlatoBlockchain Data Intelligence로 고가치 연구를 개선하십시오. 수직 검색. 일체 포함.라구 라메샤 Amazon SageMaker 서비스 팀의 ML 솔루션 설계자입니다. 그는 고객이 ML 프로덕션 워크로드를 대규모로 SageMaker로 구축, 배포 및 마이그레이션하도록 돕는 데 중점을 두고 있습니다. 그는 기계 학습, AI 및 컴퓨터 비전 영역을 전문으로 하며 UT Dallas에서 컴퓨터 과학 석사 학위를 취득했습니다. 여가 시간에는 여행과 사진 촬영을 즐깁니다.

타임 스탬프 :

더보기 AWS 기계 학습