소개
이 기사에서는 AWS의 EC2와 Lambda를 최근에 점점 더 인기있는 여러 플랫폼과 비교할 것입니다.
이 방법으로 가장 잘 작동하는 것을 더 잘 이해할 수 있습니다.
부수적으로, 나는이 공급 업체들로부터 보상을받지 못하므로 여기에 공유하는 정보는 개인적인 의견입니다.
일부 사람들은 이러한 프레임 워크 사이의 성능 차이를 측정했으며 자신의 연구를 반드시 수행해야합니다.
CPU에서 실행되는 작은 컨버터 모델을 배포하려면 Hugging Face 파이프 라인 또는 Transformers 라이브러리를 직접 사용했습니다.
처리 시간
일관성을 위해 각 테스트에 동일한 프롬프트를 사용했습니다. 400m 모델의 경우 텍스트를 30 조각으로 배치했습니다.
그러나
그러나, 당신은 그들 모두의 GPU 비용이 가장 높은 Sagemaker를 살펴 봐야합니다. AWS를 사용해야하는 경우 EC2를 직접 사용하는 것이 가장 좋습니다.
항상 확장하고 확장 할 필요는 없지만 계산해야합니다.
서버리스 제공 업체는 여기에서 더 나은 선택입니다. Bentoml의 경우 크기를 자동으로 줄이기 전에 적어도 5 분 동안 유휴 상태를 유지해야하며 HF 엔드 포인트의 경우 15 분 동안 기다려야합니다.
사람들이 매일 저축 계좌에 약간의 돈을 절약하는 것에 대해 생각하십시오. 여기에서 초과 지불하는 것은 그 반대 일 것입니다.
이 경우 콜드 스타트와 자유 시간이 사라집니다. 이것은 한 번에 모든 것을 한 번에 작업하면 영구 컨테이너를 사용하는 것이 더 나은 옵션이라는 것을 보여줍니다. 훨씬 저렴합니다.
CPU 테스트와 마찬가지로, 우리는 주문형 서비스가 스케일 다운 시간이 없기 때문에 24 시간 동안 실행된다고 가정합니다.
HF 엔드 포인트는 코더가 아닌 경우 사용하기가 매우 쉽습니다. 간단한 클릭으로 Huggingface Center에서 모델을 배포 할 수 있으므로 사용하기 쉽습니다. 기술을 알고 있다면 더 많은 것을 제어 할 수있는 다른 옵션을 선호 할 수 있습니다.
복제를 위해, 그들은 거대한 팬층과 다른 사람들이 공유하는 많은 공개 모델을 가지고 있습니다. 주변에 커뮤니티가 있습니다. 그들은 한 번의 클릭 교육 및 배포 프로세스가있어 운영을보다 쉽게 만들 수 있습니다.
복제의 경우 자신의 모델을 배포하는 경우 GPU 기계가 필요하며 Baseten의 경우 Truss라는 라이브러리를 다운로드해야합니다.
기술 세부 사항
이 섹션에서는 AWS Lambda 및 EFS를 사용하여 키워드 추출을 위해 미세 조정 된 400m 모델을 배포하고 Modal과 같은 업데이트 된 플랫폼의 배포와 비교하는 방법을 소개합니다.
를 사용하여 Lambda에 배포하십시오
이 부분의 경우,이를 읽거나 따라 배포 할 수 있습니다.
우리는이 파일의 모델을 원하는 모델로 쉽게 변경할 수 있습니다.
에 대한 키워드 추출 튜토리얼 및 텍스트 분류 자습서를 확인할 수 있습니다.
iAM 역할
배포가 완료되면 AWS 콘솔의 Lambda로 이동하여 새로운 기능을 찾을 수 있습니다. 직접 테스트 할 수 있습니다. 첫 번째 런은 느리지 만 예열되면 속도가 더 빠릅니다.
시작하려면 모달 계정이 필요하고 Python3을 설치해야합니다. 계정을 만들면 터미널을 열고 새 폴더를 만들 수 있습니다.
이 스크립트는 modal
이 함수를 실행하려면 터미널에서 얻는 URL을 호출 할 수 있습니다.
연구
콜드 스타트 중 전체 처리 시간을 계산했는데 콜드 스타트 전용 계산을 직접 확인하십시오.
CPU 가격도 살펴 보겠습니다.
CPU 케이스에서 보았 듯이
한 번에 250 개의 통화를 실행하는 것이 더 비용 효율적입니다.
를 따르려면 컴퓨터에 git, aws cdk, docker, nodejs 18, python 3.9를 설치해야합니다. 이 모든 것을 설치 한 후에는 새 터미널을 열 수 있습니다.
당신이 볼 수 있듯이, 우리는 여기에 두 가지 옵션이 있지만이 스크립트는 파이프 라인을 사용하고 있으므로 동일한 작업을 수행 할 수 있습니다.
나는 일반적으로 사용하는 새 모델을 사용하여 다음 파일의 코드를 변경했으며 "텍스트"는 "텍스트"뿐만 아니라 배치 처리에 사용될 것으로 기대했습니다.
<code>git clone https://github.com/aws-samples/zero-administration-inference-with-aws-lambda-for-hugging-face.git</code>
<code>cd zero-administration-inference-with-aws-lambda-for-hugging-face</code>
<code>.code</code>
<code># inference/summarization.py
import json
from transformers import pipeline
extractor = pipeline("text2text-generation", model="ilsilfverskiold/tech-keywords-extractor")
def handler(event, context):
# texts should be an array
texts = event['texts']
response = {
"statusCode": 200,
"body": extractor(texts)[0]
}
return response</code>
<code>git clone https://github.com/aws-samples/zero-administration-inference-with-aws-lambda-for-hugging-face.git</code>
그런 다음 가상 환경을 설정할 수 있습니다.
<code>cd zero-administration-inference-with-aws-lambda-for-hugging-face</code>
<code>.code</code>
<code># inference/summarization.py
import json
from transformers import pipeline
extractor = pipeline("text2text-generation", model="ilsilfverskiold/tech-keywords-extractor")
def handler(event, context):
# texts should be an array
texts = event['texts']
response = {
"statusCode": 200,
"body": extractor(texts)[0]
}
return response</code>