생성 데이터 인텔리전스

LLM 배포 비용을 평균 50% 절감하는 Amazon SageMaker의 새로운 추론 기능을 위해 Kubernetes Operators를 사용하세요 | 아마존 웹 서비스

시간

새로운 버전을 발표하게 되어 기쁘게 생각합니다. Kubernetes용 Amazon SageMaker 연산자 를 사용하여 Kubernetes용 AWS 컨트롤러(ACK). ACK는 각 컨트롤러가 AWS 서비스 API와 통신하는 Kubernetes 사용자 지정 컨트롤러를 구축하기 위한 프레임워크입니다. 이러한 컨트롤러를 사용하면 Kubernetes 사용자는 Kubernetes API를 사용하여 버킷, 데이터베이스 또는 메시지 대기열과 같은 AWS 리소스를 프로비저닝할 수 있습니다.

해제 v1.2.9 SageMaker ACK 연산자에 대한 지원이 추가되었습니다. 추론 구성요소, 지금까지는 SageMaker API와 AWS 소프트웨어 개발 키트(SDK)를 통해서만 사용할 수 있었습니다. 추론 구성 요소는 배포 비용을 최적화하고 대기 시간을 줄이는 데 도움이 됩니다. 새로운 추론 구성 요소 기능을 사용하면 동일한 모델에 하나 이상의 FM(기본 모델)을 배포할 수 있습니다. 아마존 세이지 메이커 엔드포인트를 제어하고 각 FM에 예약된 가속기 수와 메모리 양을 제어합니다. 이를 통해 리소스 활용도를 높이고 모델 배포 비용을 평균 50% 절감하며 사용 사례에 맞춰 엔드포인트를 확장할 수 있습니다. 자세한 내용은 다음을 참조하세요. Amazon SageMaker는 기초 모델 배포 비용과 지연 시간을 줄이는 데 도움이 되는 새로운 추론 기능을 추가합니다..

SageMaker 컨트롤러를 통해 추론 구성 요소를 사용할 수 있으므로 Kubernetes를 제어 플레인으로 사용하는 고객은 SageMaker에 모델을 배포하는 동안 추론 구성 요소를 활용할 수 있습니다.

이 게시물에서는 SageMaker ACK 연산자를 사용하여 SageMaker 추론 구성 요소를 배포하는 방법을 보여줍니다.

ACK 작동 방식

시연하다 ACK 작동 방식, 다음을 사용하여 예를 살펴보겠습니다. 아마존 단순 스토리지 서비스 (아마존 S3). 다음 다이어그램에서 Alice는 Kubernetes 사용자입니다. 그녀의 애플리케이션은 다음과 같은 S3 버킷의 존재에 따라 달라집니다. my-bucket.

ACK 작동 방식

워크플로는 다음 단계로 구성됩니다.

  1. 앨리스는 다음에게 전화를 겁니다. kubectl apply, Kubernetes를 설명하는 파일 전달 사용자 지정 리소스 그녀의 S3 버킷을 설명합니다. kubectl apply 라고 하는 이 파일을 전달합니다. 적하 목록, Kubernetes 컨트롤러 노드에서 실행되는 Kubernetes API 서버로.
  2. Kubernetes API 서버는 S3 버킷을 설명하는 매니페스트를 수신하고 Alice가 SXNUMX 버킷을 가지고 있는지 확인합니다. 권한 사용자 지정 리소스를 만들기 위해 종류 s3.services.k8s.aws/Bucket, 사용자 정의 리소스의 형식이 올바르게 지정되었는지 확인합니다.
  3. Alice가 승인되고 사용자 지정 리소스가 유효한 경우 Kubernetes API 서버는 사용자 지정 리소스를 해당 리소스에 기록합니다. etcd 데이터 저장소.
  4. 그런 다음 사용자 지정 리소스가 생성되었음을 Alice에게 응답합니다.
  5. 이때 ACK 서비스는 제어 장치 일반 Kubernetes의 컨텍스트 내 Kubernetes 작업자 노드에서 실행되는 Amazon S3의 경우 작은 무리, 종류의 새로운 커스텀 리소스가 있다는 알림을 받습니다. s3.services.k8s.aws/Bucket 이 생성되었습니다.
  6. 그런 다음 Amazon S3용 ACK 서비스 컨트롤러는 Amazon S3 API와 통신하여 S3 CreateBucket API AWS에서 버킷을 생성합니다.
  7. Amazon S3 API와 통신한 후 ACK 서비스 컨트롤러는 Kubernetes API 서버를 호출하여 사용자 지정 리소스의 지위 Amazon S3에서 받은 정보를 사용합니다.

주요 구성 요소

새로운 추론 기능은 SageMaker의 실시간 추론 엔드포인트를 기반으로 구축되었습니다. 이전과 마찬가지로 엔드포인트의 인스턴스 유형과 초기 인스턴스 수를 정의하는 엔드포인트 구성을 사용하여 SageMaker 엔드포인트를 생성합니다. 모델은 추론 구성요소인 새로운 구성으로 구성됩니다. 여기에서는 모델 아티팩트, 컨테이너 이미지 및 배포할 모델 복사본 수와 함께 모델의 각 복사본에 할당할 가속기 수와 메모리 양을 지정합니다.

다음의 새로운 추론 기능을 사용할 수 있습니다. 아마존 세이지 메이커 스튜디오Walk Through California 프로그램, SageMaker Python SDK, AWS SDKAWS 명령 줄 인터페이스 (AWS CLI). 그들은 또한 다음의 지원을 받습니다: AWS 클라우드 포메이션. 이제 다음과 같이 사용할 수도 있습니다. Kubernetes 용 SageMaker 연산자.

솔루션 개요

이 데모에서는 SageMaker 컨트롤러를 사용하여 돌리 v2 7B 모델 그리고 사본 FLAN-T5 XXL 모델 인사말 허깅페이스 모델 허브 새로운 추론 기능을 사용하여 SageMaker 실시간 엔드포인트에서

사전 조건

계속하려면 SageMaker ACK 컨트롤러 v1.2.9 이상이 설치된 Kubernetes 클러스터가 있어야 합니다. 프로비저닝 방법에 대한 지침은 Amazon Elastic Kubernetes 서비스 (Amazon EKS) 클러스터 아마존 엘라스틱 컴퓨트 클라우드 (Amazon EC2) eksctl을 사용하는 Linux 관리형 노드, 참조 Amazon EKS 시작하기 – eksctl. SageMaker 컨트롤러 설치에 대한 지침은 다음을 참조하십시오. ACK SageMaker 컨트롤러를 사용한 기계 학습.

LLM을 호스팅하려면 가속 인스턴스(GPU)에 액세스해야 합니다. 이 솔루션은 ml.g5.12xlarge 인스턴스 하나를 사용합니다. 다음 스크린샷에 표시된 것처럼 AWS 계정에서 이러한 인스턴스의 가용성을 확인하고 필요에 따라 서비스 할당량 증가 요청을 통해 이러한 인스턴스를 요청할 수 있습니다.

서비스 할당량 증가 요청

추론 구성요소 생성

추론 구성요소를 생성하려면 EndpointConfig, Endpoint, ModelInferenceComponent 이 섹션에 표시된 것과 유사한 YAML 파일. 사용 kubectl apply -f <yaml file> Kubernetes 리소스를 생성합니다.

다음을 통해 리소스 상태를 나열할 수 있습니다. kubectl describe <resource-type>; 예를 들어 kubectl describe inferencecomponent.

모델 리소스 없이 추론 구성 요소를 생성할 수도 있습니다. 에 제공된 지침을 참조하세요. API 문서 자세한 내용은.

엔드포인트 구성 YAML

다음은 EndpointConfig 파일의 코드입니다.

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: EndpointConfig
metadata:
  name: inference-component-endpoint-config
spec:
  endpointConfigName: inference-component-endpoint-config
  executionRoleARN: <EXECUTION_ROLE_ARN>
  productionVariants:
  - variantName: AllTraffic
    instanceType: ml.g5.12xlarge
    initialInstanceCount: 1
    routingConfig:
      routingStrategy: LEAST_OUTSTANDING_REQUESTS

엔드포인트 YAML

다음은 Endpoint 파일의 코드입니다.

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: Endpoint
metadata:
  name: inference-component-endpoint
spec:
  endpointName: inference-component-endpoint
  endpointConfigName: inference-component-endpoint-config

모델 YAML

다음은 모델 파일의 코드입니다.

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: Model
metadata:
  name: dolly-v2-7b
spec:
  modelName: dolly-v2-7b
  executionRoleARN: <EXECUTION_ROLE_ARN>
  containers:
  - image: 763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-tgi-inference:2.0.1-tgi0.9.3-gpu-py39-cu118-ubuntu20.04
    environment:
      HF_MODEL_ID: databricks/dolly-v2-7b
      HF_TASK: text-generation
---
apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: Model
metadata:
  name: flan-t5-xxl
spec:
  modelName: flan-t5-xxl
  executionRoleARN: <EXECUTION_ROLE_ARN>
  containers:
  - image: 763104351884.dkr.ecr.us-east-1.amazonaws.com/huggingface-pytorch-tgi-inference:2.0.1-tgi0.9.3-gpu-py39-cu118-ubuntu20.04
    environment:
      HF_MODEL_ID: google/flan-t5-xxl
      HF_TASK: text-generation

InferenceComponent YAML

다음 YAML 파일에서는 ml.g5.12xlarge 인스턴스가 4개의 GPU와 함께 제공된다는 점을 고려하여 각 모델에 2개의 GPU, 2개의 CPU 및 1,024MB의 메모리를 할당합니다.

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: InferenceComponent
metadata:
  name: inference-component-dolly
spec:
  inferenceComponentName: inference-component-dolly
  endpointName: inference-component-endpoint
  variantName: AllTraffic
  specification:
    modelName: dolly-v2-7b
    computeResourceRequirements:
      numberOfAcceleratorDevicesRequired: 2
      numberOfCPUCoresRequired: 2
      minMemoryRequiredInMb: 1024
  runtimeConfig:
    copyCount: 1

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: InferenceComponent
metadata:
  name: inference-component-flan
spec:
  inferenceComponentName: inference-component-flan
  endpointName: inference-component-endpoint
  variantName: AllTraffic
  specification:
    modelName: flan-t5-xxl
    computeResourceRequirements:
      numberOfAcceleratorDevicesRequired: 2
      numberOfCPUCoresRequired: 2
      minMemoryRequiredInMb: 1024
  runtimeConfig:
    copyCount: 1

모델 호출

이제 다음 코드를 사용하여 모델을 호출할 수 있습니다.

import boto3
import json

sm_runtime_client = boto3.client(service_name="sagemaker-runtime")
payload = {"inputs": "Why is California a great place to live?"}

response_dolly = sm_runtime_client.invoke_endpoint(
    EndpointName="inference-component-endpoint",
    InferenceComponentName="inference-component-dolly",
    ContentType="application/json",
    Accept="application/json",
    Body=json.dumps(payload),
)
result_dolly = json.loads(response_dolly['Body'].read().decode())
print(result_dolly)

response_flan = sm_runtime_client.invoke_endpoint(
    EndpointName="inference-component-endpoint",
    InferenceComponentName="inference-component-flan",
    ContentType="application/json",
    Accept="application/json",
    Body=json.dumps(payload),
)
result_flan = json.loads(response_flan['Body'].read().decode())
print(result_flan)

추론 구성요소 업데이트

기존 추론 구성 요소를 업데이트하려면 YAML 파일을 업데이트한 다음 다음을 사용할 수 있습니다. kubectl apply -f <yaml file>. 다음은 업데이트된 파일의 예입니다.

apiVersion: sagemaker.services.k8s.aws/v1alpha1
kind: InferenceComponent
metadata:
  name: inference-component-dolly
spec:
  inferenceComponentName: inference-component-dolly
  endpointName: inference-component-endpoint
  variantName: AllTraffic
  specification:
    modelName: dolly-v2-7b
    computeResourceRequirements:
      numberOfAcceleratorDevicesRequired: 2
      numberOfCPUCoresRequired: 4 # Update the numberOfCPUCoresRequired.
      minMemoryRequiredInMb: 1024
  runtimeConfig:
    copyCount: 1

추론 구성 요소 삭제

기존 추론 구성 요소를 삭제하려면 다음 명령을 사용하십시오. kubectl delete -f <yaml file>.

가용성 및 가격

새로운 SageMaker 추론 기능은 현재 미국 동부(오하이오, 버지니아 북부), 미국 서부(오레곤), 아시아 태평양(자카르타, 뭄바이, 서울, 싱가포르, 시드니, 도쿄), 캐나다(중부), 유럽(중부) AWS 리전에서 사용할 수 있습니다. 프랑크푸르트, 아일랜드, 런던, 스톡홀름), 중동(UAE) 및 남아메리카(상파울루). 가격 세부정보를 확인하려면 다음을 방문하세요. Amazon SageMaker 요금.

결론

이 게시물에서는 SageMaker ACK 연산자를 사용하여 SageMaker 추론 구성 요소를 배포하는 방법을 보여주었습니다. 지금 바로 Kubernetes 클러스터를 가동하고 새로운 SageMaker 추론 기능을 사용하여 FM을 배포하세요!


저자에 관하여

라제쉬 램챈더 AWS 전문 서비스 부문 수석 ML 엔지니어입니다. 그는 이제 막 시작하는 고객부터 AI 우선 전략으로 비즈니스를 선도하는 고객까지 AI/ML 및 GenAI 여정의 다양한 단계에서 고객을 돕습니다.

아미트 아로라 Amazon Web Services의 AI 및 ML 전문 설계자로서 기업 고객이 클라우드 기반 기계 학습 서비스를 사용하여 혁신을 빠르게 확장할 수 있도록 지원합니다. 그는 또한 워싱턴 DC의 Georgetown University에서 MS 데이터 과학 및 분석 프로그램의 겸임 강사이기도 합니다.

수리얀시 싱 AWS SageMaker의 소프트웨어 개발 엔지니어이며 대규모 AWS 고객을 위한 ML 분산 인프라 솔루션을 개발하는 일을 하고 있습니다.

사우라브 트리칸데 Amazon SageMaker Inference의 수석 제품 관리자입니다. 그는 고객과 함께 일하는 데 열정적이며 기계 학습의 민주화라는 목표에 동기를 부여합니다. 그는 복잡한 ML 애플리케이션, 다중 테넌트 ML 모델 배포, 비용 최적화 및 딥 러닝 모델 배포의 접근성 향상과 관련된 핵심 과제에 중점을 둡니다. 여가 시간에 Saurabh는 하이킹, 혁신적인 기술 학습, TechCrunch 팔로우, 가족과 함께 시간 보내기를 즐깁니다.

조나 리우조나 리우 Amazon SageMaker 팀의 소프트웨어 개발 엔지니어입니다. 그녀의 현재 작업은 개발자가 기계 학습 모델을 효율적으로 호스팅하고 추론 성능을 개선하도록 돕는 데 중점을 두고 있습니다. 그녀는 공간 데이터 분석과 AI를 사용하여 사회 문제를 해결하는 데 열정적입니다.

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?