에 대한
Lambda-Intructor는 AWS Lambda에서 텍스트-엠 베딩 모델 강사-크기를 실험적으로 배치 한 것입니다.
강사-래 지는 APACHE-2.0 라이센스에 따라 홍콩 대학교 NLP 그룹이 제작 한 모델이며 검색 작업에 대해 잘 수행합니다 (즉, 주어진 문장에 대한 관련 문서 찾기). 2023 년 6 월 현재, Hugging Face Leaderboard의 수많은 벤치 마크에서 OpenAi의 Text-embedding-ADA-002 와 함께 레벨에있는 것 같습니다.
잠재적 사용 사례 :
- 로컬 추론과 페어링 : 현지 기계에서 강사의 선반을 통해 많은 수의 임베딩을 생성합니다 (OpenAi와 같은 상업용 API에 대한 비용은 테스트를위한 것).
- 데이터 레지던트 : 유럽과 미국을 포함한 글로벌 AWS 지역에 Lambda 기능을 배포하십시오.
- 확장 성 : AWS Lambda는 서버 관리의 오버 헤드없이 사실상 무제한을 유지합니다.
- 저렴한 생산 추론 : AWS Lambda의 요청 당 가격과 24/7 서버를 실행하는 것.
- ChromADB 또는 Pinecone과 같은 벡터 데이터베이스와 함께 사용하십시오 .
성능, 비용 및 한계 :
- 콜드 스타트 : Lambda 기능의 콜드 스타트는 약 150 초입니다 ( 강사 기반 약 50 대).
- 추론 : 연속 요청은 요청 당 약 6 초 안에 처리됩니다 ( 강사 기반 약 3 초).
- 맥스. 토큰 : 강사-래 지는 512 개의 토큰 (약 380 단어)의 시퀀스 길이로 제한되는 반면, OpenAi의 텍스트-엠 베드 딩 -ADA-002는 최대 8191 토큰 (약 6000 단어)을 지원합니다.
- 비용 : AWS Lambda 비용은 다음과 같이 추정 할 수 있습니다.
- 구성:
- 지역 : EU- 센트럴 -1 (유럽, 프랑크푸르트)
- 무기 가격 : GB 초당 $ 0.0000133334
- 요청 : 1m 요청 당 $ 0.20
- 메모리 크기 : 10240 MB
- 계산:
- 기간 : $ 0.000013334 * 10,24 GB * 6 초 = 0.000819204096 / 요청
- 요청 : $ 0.20 / 1m 요청 = 0.0000002 / 요청
- 총 = $ 0.0008194 / 요청
- 2023 년 6 월 현재, 75%의 가격 인하 후 $ 0.0001/1k 토큰으로 Openai의 ADA V2보다 더 비싸다.
추가 개선 : AWS Lambda Provisioned Concurrency 및 AWS Compute Savings 계획을 통해 비용과 콜드 스타트가 더욱 향상 될 수 있습니다. 또한이 프로젝트의 한 달에 1m 요청으로 AWS 계산기를 확인하십시오.
전개
전제 조건
- 일반적인 AWS 지식이 도움이됩니다.
- Docker와 Git-LF를 로컬로 설치해야합니다.
- AWS-SAM을 로컬로 설치하고 AWS 계정으로 구성해야합니다.
- ARM 기반 지역 환경이 권장됩니다 (MAC M1/M2). 문제가 발생하면 ARM 기반 EC2 머신을 통해 배포하십시오 (아래 가이드).
설정
강사 모델을 로컬로 다운로드하고 Docker 컨테이너에 앱을 포장하여 ARM 기반 Lambda 기능에 배포합니다. ARM은 AWS의 저비용이므로 ARM을 사용하고 있으며 더 빠르게 나타났습니다.
- 저장소를 복제하십시오
git clone https://github.com/maxsagt/lambda-instructor.git
- 강사 large 모델을 ./app/model 폴더로 복제하십시오 (https://huggingface.co/hkunlp/instructor-large?clone=true 참조).
git lfs install ./app/model
git clone https://huggingface.co/hkunlp/instructor-large ./app/model
- AWS-SAM으로 Docker 컨테이너를 만듭니다
sam build --cached --parallel
- event.json에서 샘플 페이로드로 로컬로 테스트하십시오.
sam local invoke -e event.json
- AWS에 배포하십시오. AWS CloudFormation, Elastic Container Registry, S3, Lambda 및 IAM에 대한 AWS 사용자 또는 역할 요구 (임시) IAM 권한.
- 완료. AWS에는 추가 구성을위한 Lambda 기능이 있습니다. 예를 들어:
- Lambda 콘솔에서 Lambda 기능을 테스트하십시오.
- URL을 통해 Lambda 함수를 직접 사용하도록 Lambda 함수 URL을 구성하십시오.
- 보다 고급 API 기능을 위해 API 게이트웨이를 추가하십시오.
선택 사항 : ARM 기반 EC2 시스템을 통해 배포됩니다.
ARM 기계가 없거나 Docker 컨테이너의 빠른 업로드를 위해 AWS 내에 배포하려는 경우.
- AWS 인스턴스 생성 :
- Ubuntu 서버 22.04 LTS (HVM), SSD 볼륨 유형, AMI-0329D3839379BFD15, 아키텍처 : 64 비트 (ARM), 인스턴스 유형 : T4G.Medium, Storage : 20GIB GP3.
- VPC가 공개되어 있는지 확인하십시오.
- 인스턴스를 시작하십시오.
- 인스턴스를 클릭하고 액션 -> 보안을 통해 IAM 역할을 추가하십시오. IAM 역할은 IAM, S3, ECR, CloudFormation 및 Lambda Access가 필요합니다.
- 원격 AWS 인스턴스에 저장소 업로드 :
git clone https://github.com/maxsagt/lambda-instructor.git
cd lambda-instructor
zip -r deployment.zip . -x ' ./app/model/* '
PUBLIC_IPv4_DNS=ec2-x-xx-xxx-xxx.eu-central-1.compute.amazonaws.com
scp -o StrictHostKeyChecking=no -i " ../my_key.pem " ./deployment.zip ubuntu@ $PUBLIC_IPv4_DNS :deployment.zip
- 인스턴스에 로그인하고 샘플 배포 스크립트를 실행하십시오.
ssh -o StrictHostKeyChecking=no -i " ../my_key.pem " ubuntu@ $PUBLIC_IPv4_DNS
sudo apt install unzip
unzip -o deployment.zip
chmod +x sample_deployment.sh
sudo bash -x sample_deployment.sh
- 위에 빌드 및 배포. SAM 명령이 인식되지 않으면 여기에서 SAM 문서를 읽으십시오.
- 사용 후 인스턴스를 종료하는 것을 잊지 마십시오.
피드백
피드백과 기부금을 환영합니다!