AWS Lambda PlatoBlockchain Data Intelligence에 기계 학습 추론 데이터 캡처 솔루션을 배포합니다. 수직 검색. 일체 포함.

AWS Lambda에 기계 학습 추론 데이터 캡처 솔루션 배포

머신 러닝(ML) 예측을 모니터링하면 배포된 모델의 품질을 개선하는 데 도움이 될 수 있습니다. 프로덕션에서 만들어진 추론에서 데이터를 캡처하면 배포된 모델을 모니터링하고 모델 품질의 편차를 감지할 수 있습니다. 이러한 편차를 조기에 사전에 감지하면 모델 재교육, 업스트림 시스템 감사 또는 품질 문제 수정과 같은 수정 조치를 취할 수 있습니다.

AWS 람다 실시간 ML 추론을 대규모로 제공할 수 있는 서버리스 컴퓨팅 서비스입니다. 이 게시물에서는 Lambda ML 추론 워크로드에 배포할 수 있는 샘플 데이터 캡처 기능을 보여줍니다.

2020년 500월 Lambda는 컨테이너 이미지에 대한 지원을 패키징 형식으로 도입했습니다. 이 기능은 배포 패키지 크기 제한을 10MB에서 2021GB로 늘렸습니다. 이 기능이 출시되기 전에는 패키지 크기 제약으로 인해 TensorFlow 또는 PyTorch와 같은 ML 프레임워크를 Lambda 함수에 배포하기가 어려웠습니다. 출시 후 증가된 패키지 크기 제한으로 인해 ML은 Lambda에 배포하기에 실행 가능하고 매력적인 워크로드가 되었습니다. XNUMX년에 ML 추론은 Lambda 서비스에서 가장 빠르게 성장하는 워크로드 유형 중 하나였습니다.

아마존 세이지 메이커, Amazon의 완전 관리형 ML 서비스에는 자체 모델 모니터링 기능이 포함되어 있습니다. 그러나 이 게시물의 샘플 프로젝트는 ML 추론에 Lambda를 사용하는 고객을 위해 모델 모니터링에 사용할 데이터 캡처를 수행하는 방법을 보여줍니다. 이 프로젝트는 추론 기능의 성능 및 지연 시간에 대한 영향을 최소화하기 위해 Lambda 확장을 사용하여 추론 데이터를 캡처합니다. Lambda 확장을 사용하면 함수 개발자에 대한 영향도 최소화됩니다. 확장을 통해 통합하여 모니터링 기능을 여러 기능에 적용하고 중앙 집중식 팀에서 유지 관리할 수 있습니다.

솔루션 개요

이 프로젝트에는 distillbert 기반의 사전 훈련된 질문 응답 모델을 사용하여 실시간 추론을 제공하는 서버리스 애플리케이션에 대한 소스 코드와 지원 파일이 포함되어 있습니다. 이 프로젝트는 Hugging Face 질문과 답변 자연어 처리(NLP) 모델을 사용합니다. 파이 토치 자연어 추론 작업을 수행합니다. 이 프로젝트에는 모델 예측을 위한 추론 데이터 캡처를 수행하는 솔루션도 포함되어 있습니다. Lambda 함수 작성자는 추론 요청 입력과 예측 결과에서 확장으로 보낼 데이터를 정확히 결정할 수 있습니다. 이 솔루션에서는 모델의 입력과 응답을 확장으로 보냅니다. 그런 다음 확장 프로그램은 주기적으로 데이터를 아마존 단순 스토리지 서비스 (Amazon S3) 버킷. 다음을 사용하여 데이터 캡처 확장 프로그램을 컨테이너 이미지로 빌드합니다. makefile. 그런 다음 Lambda 추론 기능을 컨테이너 이미지로 구축하고 확장 컨테이너 이미지를 컨테이너 이미지 계층으로 추가합니다. 다음 다이어그램은 아키텍처의 개요를 보여줍니다.

Lambda 확장은 Lambda 함수를 보강하는 방법입니다. 이 프로젝트에서는 외부 Lambda 확장을 사용하여 추론 요청과 추론의 예측을 기록합니다. 외부 확장은 Lambda 런타임 환경에서 별도의 프로세스로 실행되어 추론 기능에 대한 영향을 줄입니다. 그러나 함수는 CPU, 메모리 및 스토리지와 같은 리소스를 Lambda 함수와 공유합니다. 최적의 리소스 가용성을 보장하려면 Lambda 함수에 충분한 메모리를 할당하는 것이 좋습니다. (테스트에서 추론 Lambda 함수에 5GB의 메모리를 할당했으며 최적의 리소스 가용성과 추론 지연 시간을 확인했습니다). 추론이 완료되면 Lambda 서비스는 즉시 응답을 반환하고 확장이 S3 버킷에 대한 요청 및 응답 로깅을 완료할 때까지 기다리지 않습니다. 이 패턴을 사용하면 모니터링 확장이 추론 지연 시간에 영향을 미치지 않습니다. Lambda 확장에 대해 자세히 알아보려면 이 비디오 시리즈를 확인하십시오.

프로젝트 내용

이 프로젝트는 AWS 서버리스 애플리케이션 모델 (AWS SAM) 명령줄 인터페이스(CLI). 이 명령줄 도구를 사용하면 개발자가 응용 프로그램을 초기화하고 구성할 수 있습니다. 로컬에서 패키지, 빌드 및 테스트 AWS 클라우드에 배포합니다.

이 프로젝트의 소스 코드는 다음에서 다운로드할 수 있습니다. GitHub 저장소.

이 프로젝트에는 다음 파일과 폴더가 포함되어 있습니다.

  • 앱/앱.py – ML 추론을 위한 코드를 포함하여 애플리케이션의 Lambda 함수에 대한 코드.
  • 앱/도커파일 – 추론 기능을 패키징하는 컨테이너 이미지를 빌드하기 위한 Dockerfile, Hugging Face에서 다운로드한 모델 및 계층으로 빌드된 Lambda 확장. .zip 함수와 달리 레이어는 함수 생성 시 컨테이너 패키지 Lambda 함수에 연결할 수 없습니다. 대신 레이어를 만들고 그 내용을 컨테이너 이미지에 복사합니다.
  • 확장 – 모델 모니터 확장 파일. 이 Lambda 확장은 추론 함수에 대한 입력과 S3 버킷에 해당하는 예측을 기록하는 데 사용됩니다.
  • 앱/모델 – 허깅페이스에서 다운받은 모델.
  • 앱/요구사항.txt – 컨테이너에 설치할 Python 종속성.
  • 이벤트 – 기능을 테스트하는 데 사용할 수 있는 호출 이벤트.
  • 템플릿.yaml – 애플리케이션의 AWS 리소스를 정의하는 설명자 파일입니다.

애플리케이션은 Lambda 함수 및 아마존 API 게이트웨이 API. 이러한 리소스는 template.yaml 이 프로젝트의 파일입니다. 애플리케이션 코드를 업데이트하는 것과 동일한 배포 프로세스를 통해 템플릿을 업데이트하여 AWS 리소스를 추가할 수 있습니다.

사전 조건

이 연습에서는 다음과 같은 전제 조건이 있어야합니다.

샘플 애플리케이션 배포

처음으로 애플리케이션을 빌드하려면 다음 단계를 완료하십시오.

  • 셸에서 다음 코드를 실행합니다. (이렇게 하면 확장도 빌드됩니다):
  • 모델 모니터 애플리케이션의 Docker 이미지를 빌드하십시오. 빌드 내용은 .aws-sam 예배 규칙서
docker build -t serverless-ml-model-monitor:latest .

docker tag serverless-ml-model-monitor:latest .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • Amazon ECR에 로그인:
aws ecr get-login-password --region us-east-1 docker login --username AWS --password-stdin .dkr.ecr.us-east-1.amazonaws.com

  • Amazon ECR에 리포지토리를 생성합니다.

aws ecr create-repositoryrepository-name serverless-ml-model-monitor--image-scanning-configuration scanOnPush=true--region us-east-1

  • 컨테이너 이미지를 Amazon ECR에 푸시합니다.
docker push .dkr.ecr.us-east-1.amazonaws.com/serverless-ml-model-monitor:latest

  • 1번 줄 주석 해제 앱/도커파일 올바른 ECR 저장소 이미지를 가리키도록 편집한 다음 앱/도커 파일:
WORKDIR /opt
COPY --from=layer /opt/ .

  • 애플리케이션을 다시 빌드합니다.

Lambda는 컨테이너 이미지 패키징 유형에 대해 직접 Lambda 계층을 지원하지 않기 때문에 다시 빌드합니다. 먼저 모델 모니터링 구성 요소를 컨테이너 이미지로 빌드하고 Amazon ECR에 업로드한 다음 모델 모니터링 애플리케이션에서 해당 이미지를 컨테이너 계층으로 사용해야 합니다.

  • 마지막으로 Lambda 함수, API 게이트웨이 및 확장을 배포합니다.
sam deploy --guided

이 명령은 일련의 프롬프트와 함께 애플리케이션을 패키징하고 AWS에 배포합니다.

  • 스택 이름 : 배포된 이름 AWS 클라우드 포메이션 스택. 이것은 계정 및 지역에 고유해야 하며 프로젝트 이름과 일치하는 것이 좋은 출발점입니다.
  • AWS 리전 : 애플리케이션을 배포할 AWS 리전입니다.
  • 배포하기 전에 변경 사항 확인 :로 설정된 경우 yes, 수동 검토를 위해 실행하기 전에 모든 변경 세트가 표시됩니다. no로 설정하면 AWS SAM CLI가 애플리케이션 변경 사항을 자동으로 배포합니다.
  • AWS SAM CLI IAM 역할 생성 허용 : 이 예제를 비롯한 많은 AWS SAM 템플릿은 다음을 생성합니다. AWS 자격 증명 및 액세스 관리 AWS 서비스에 액세스하기 위해 포함된 Lambda 함수에 필요한 (IAM) 역할. 기본적으로 이러한 권한은 필요한 최소 권한으로 범위가 지정됩니다. IAM 역할을 생성하거나 수정하는 CloudFormation 스택을 배포하려면 CAPABILITY_IAM 가치 capabilities 제공되어야 합니다. 이 프롬프트를 통해 권한이 제공되지 않은 경우 이 예제를 배포하려면 명시적으로 전달해야 합니다. --capabilities CAPABILITY_IAM ~로 sam deploy 명령.
  • samconfig.toml에 인수 저장 :로 설정된 경우 yes, 선택 사항은 프로젝트 내부의 구성 파일에 저장되므로 나중에 실행할 수 있습니다. sam deploy 애플리케이션에 변경 사항을 배포하기 위한 매개변수 없이

배포 후 표시되는 출력 값에서 API Gateway 엔드포인트 URL을 찾을 수 있습니다.

애플리케이션 테스트

애플리케이션을 테스트하려면 Postman 또는 curl을 사용하여 API Gateway 엔드포인트에 요청을 보냅니다. 예를 들어:

curl -X POST -H "Content-Type: text/plain" https://.execute-api.us-east-1.amazonaws.com/Prod/nlp-qa -d '{"question": "Where do you live?", "context": "My name is Clara and I live in Berkeley."}'

다음 코드와 같은 출력이 표시되어야 합니다. ML 모델은 컨텍스트에서 추론하고 우리 질문에 대한 답변을 반환했습니다.

{
    "Question": "Where do you live?",
    "Answer": "Berkeley",
    "score": 0.9113729596138
}

몇 분 후 S3 버킷에 파일이 표시되어야 합니다. nlp-qamodel-model-monitoring-modelmonitorbucket- 입력 및 추론이 기록됩니다.

정리

생성한 샘플 애플리케이션을 삭제하려면 AWS CLI를 사용하십시오.

aws cloudformation delete-stack --stack-name 

결론

이 게시물에서는 모델 모니터링 기능을 Lambda 확장으로 구현하고 이를 Lambda ML 추론 워크로드에 배포했습니다. 우리는 이 솔루션을 구축하고 자신의 AWS 계정에 배포하는 방법을 보여주었습니다. 마지막으로 모니터의 기능을 확인하기 위한 테스트를 실행하는 방법을 보여주었습니다.

의견 섹션에 의견이나 질문을 제공하십시오. 더 많은 서버리스 학습 리소스를 보려면 다음을 방문하세요. 서버리스 랜드.


저자에 관하여

AWS Lambda PlatoBlockchain Data Intelligence에 기계 학습 추론 데이터 캡처 솔루션을 배포합니다. 수직 검색. 일체 포함.댄 폭스 Serverless를 위한 Worldwide Specialist Organization의 수석 전문가 솔루션 설계자입니다. Dan은 고객과 협력하여 서버리스 서비스를 활용하여 확장 가능하고 내결함성이 있는 고성능의 비용 효율적인 애플리케이션을 구축할 수 있도록 지원합니다. 댄은 콜로라도의 아름다운 볼더에서 살면서 일할 수 있어 감사합니다.

AWS Lambda PlatoBlockchain Data Intelligence에 기계 학습 추론 데이터 캡처 솔루션을 배포합니다. 수직 검색. 일체 포함.뉴턴 자인 AWS Lambda에서 기계 학습, 고성능 컴퓨팅(HPC) 및 미디어 처리 고객을 위한 새로운 경험 구축을 담당하는 수석 제품 관리자입니다. 그는 성능 향상, 지연 시간 감소, 확장성 향상, 안정성 향상, 비용 절감을 위한 새로운 기능 개발을 주도하고 있습니다. 그는 또한 AWS 고객이 컴퓨팅 집약적 애플리케이션을 위한 효과적인 서버리스 전략을 정의하도록 지원합니다.

AWS Lambda PlatoBlockchain Data Intelligence에 기계 학습 추론 데이터 캡처 솔루션을 배포합니다. 수직 검색. 일체 포함.딕샤 샤르마 AWS의 솔루션 아키텍트이자 기계 학습 전문가입니다. 그녀는 특히 기계 학습 및 서버리스 기술 분야에서 고객이 클라우드 채택을 가속화하도록 돕습니다. Diksha는 고객에게 비즈니스 및 IT 과제를 해결하는 데 있어 AWS의 가치를 보여주는 맞춤형 개념 증명을 배포합니다. 그녀는 고객에게 AWS 지식을 제공하고 고객과 협력하여 원하는 솔루션을 구축합니다.

AWS Lambda PlatoBlockchain Data Intelligence에 기계 학습 추론 데이터 캡처 솔루션을 배포합니다. 수직 검색. 일체 포함.베다 라만 메릴랜드에 기반을 둔 기계 학습을 위한 선임 전문가 솔루션 설계자입니다. Veda는 고객과 협력하여 고객이 효율적이고 안전하며 확장 가능한 기계 학습 애플리케이션을 설계할 수 있도록 지원합니다. Veda는 고객이 기계 학습을 위해 서버리스 기술을 활용하도록 돕는 데 관심이 있습니다.

AWS Lambda PlatoBlockchain Data Intelligence에 기계 학습 추론 데이터 캡처 솔루션을 배포합니다. 수직 검색. 일체 포함. 조쉬 칸 서버리스의 세계적인 기술 리더이자 수석 솔루션 설계자입니다. 그는 신생 기업에서 세계 최대 규모의 기업에 이르기까지 모든 규모의 고객이 AWS 서버리스 기술을 효과적으로 사용할 수 있도록 돕는 AWS의 서버리스 전문가로 구성된 글로벌 커뮤니티를 이끌고 있습니다.

타임 스탬프 :

더보기 AWS 기계 학습