Generativ dataintelligens

Brug Kubernetes Operators til nye slutningsmuligheder i Amazon SageMaker, der reducerer LLM-implementeringsomkostningerne med 50 % i gennemsnit | Amazon Web Services

Dato:

Vi er glade for at kunne annoncere en ny version af Amazon SageMaker-operatører til Kubernetes ved hjælp af AWS-controllere til Kubernetes (ACK). ACK er en ramme til at bygge Kubernetes brugerdefinerede controllere, hvor hver controller kommunikerer med en AWS service API. Disse controllere giver Kubernetes-brugere mulighed for at levere AWS-ressourcer som buckets, databaser eller meddelelseskøer blot ved at bruge Kubernetes API.

Slip v1.2.9 af SageMaker ACK Operators tilføjer understøttelse til slutningskomponenter, som indtil nu kun var tilgængelige gennem SageMaker API og AWS Software Development Kits (SDK'er). Inferenskomponenter kan hjælpe dig med at optimere implementeringsomkostningerne og reducere latens. Med de nye inferenskomponentfunktioner kan du implementere en eller flere fundamentmodeller (FM'er) på samme Amazon SageMaker endepunkt og kontroller, hvor mange acceleratorer og hvor meget hukommelse, der er reserveret til hver FM. Dette hjælper med at forbedre ressourceudnyttelsen, reducerer omkostningerne til modelimplementering i gennemsnit med 50 % og lader dig skalere slutpunkter sammen med dine use cases. For flere detaljer, se Amazon SageMaker tilføjer nye inferensfunktioner for at hjælpe med at reducere omkostningerne til implementering af fundamentmodeller og latens.

Tilgængeligheden af ​​inferenskomponenter gennem SageMaker-controlleren gør det muligt for kunder, der bruger Kubernetes som deres kontrolplan, at drage fordel af inferenskomponenter, mens de implementerer deres modeller på SageMaker.

I dette indlæg viser vi, hvordan man bruger SageMaker ACK-operatører til at implementere SageMaker-inferenskomponenter.

Hvordan ACK virker

At demonstrere hvordan ACK virker, lad os se på et eksempel ved hjælp af Amazon Simple Storage Service (Amazon S3). I det følgende diagram er Alice vores Kubernetes-bruger. Hendes ansøgning afhænger af eksistensen af ​​en S3-spand med navn my-bucket.

Hvordan ACK virker

Arbejdsgangen består af følgende trin:

  1. Alice ringer til kubectl apply, der sender en fil, der beskriver en Kubernetes tilpasset ressource beskriver hendes S3-spand. kubectl apply sender denne fil, kaldet a manifest, til Kubernetes API-serveren, der kører i Kubernetes-controllernoden.
  2. Kubernetes API-serveren modtager manifestet, der beskriver S3-bøtten og bestemmer, om Alice har Tilladelser at oprette en tilpasset ressource af slags s3.services.k8s.aws/Bucket, og at den tilpassede ressource er korrekt formateret.
  3. Hvis Alice er autoriseret, og den tilpassede ressource er gyldig, skriver Kubernetes API-serveren den tilpassede ressource til sin etcd datalager.
  4. Den svarer derefter til Alice, at den tilpassede ressource er blevet oprettet.
  5. På dette tidspunkt er ACK-tjenesten controller til Amazon S3, som kører på en Kubernetes-arbejderknude i sammenhæng med en normal Kubernetes Pod, meddeles, at en ny tilpasset ressource af slagsen s3.services.k8s.aws/Bucket er blevet oprettet.
  6. ACK-servicecontrolleren til Amazon S3 kommunikerer derefter med Amazon S3 API'et ved at kalde S3 CreateBucket API at oprette bøtten i AWS.
  7. Efter at have kommunikeret med Amazon S3 API, kalder ACK-servicecontrolleren Kubernetes API-serveren for at opdatere den tilpassede ressources status med oplysninger, den modtog fra Amazon S3.

Nøglekomponenter

De nye inferensfunktioner bygger på SageMakers realtidsslutningsendepunkter. Som før opretter du SageMaker-slutpunktet med en slutpunktskonfiguration, der definerer instanstypen og det indledende instansantal for endepunktet. Modellen er konfigureret i en ny konstruktion, en inferenskomponent. Her angiver du antallet af acceleratorer og mængden af ​​hukommelse, du vil allokere til hver kopi af en model, sammen med modelartefakter, containerbillede og antallet af modelkopier, der skal implementeres.

Du kan bruge de nye slutningsmuligheder fra Amazon SageMaker Studio, SageMaker Python SDK, AWS SDK'erog AWS kommandolinjegrænseflade (AWS CLI). De er også støttet af AWS CloudFormation. Nu kan du også bruge dem med SageMaker-operatører til Kubernetes.

Løsningsoversigt

Til denne demo bruger vi SageMaker-controlleren til at implementere en kopi af Dolly v2 7B model og en kopi af FLAN-T5 XXL model fra Hugging Face Model Hub på et SageMaker-endepunkt i realtid ved hjælp af de nye inferensfunktioner.

Forudsætninger

For at følge med skal du have en Kubernetes-klynge med SageMaker ACK-controlleren v1.2.9 eller nyere installeret. For instruktioner om, hvordan du klargør en Amazon Elastic Kubernetes Service (Amazon EKS) klynge med Amazon Elastic Compute Cloud (Amazon EC2) Linux-administrerede noder ved hjælp af eksctl, se Kom godt i gang med Amazon EKS – eksctl. For instruktioner om installation af SageMaker-controlleren, se Maskinlæring med ACK SageMaker Controller.

Du skal have adgang til accelererede instanser (GPU'er) for at være vært for LLM'erne. Denne opløsning bruger én forekomst af ml.g5.12xlarge; du kan tjekke tilgængeligheden af ​​disse forekomster på din AWS-konto og anmode om disse forekomster efter behov via en anmodning om forhøjelse af servicekvoter, som vist på det følgende skærmbillede.

Anmodning om forhøjelse af servicekvoter

Opret en slutningskomponent

For at oprette din inferenskomponent skal du definere EndpointConfig, Endpoint, Modelog InferenceComponent YAML-filer, der ligner dem, der er vist i dette afsnit. Brug kubectl apply -f <yaml file> at oprette Kubernetes-ressourcerne.

Du kan angive status for ressourcen via kubectl describe <resource-type>; for eksempel, kubectl describe inferencecomponent.

Du kan også oprette inferenskomponenten uden en modelressource. Se vejledningen i API dokumentation for flere detaljer.

EndpointConfig YAML

Følgende er koden til EndpointConfig-filen:

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

Slutpunkt YAML

Følgende er koden til Endpoint-filen:

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

Model YAML

Følgende er koden til modelfilen:

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'er

I de følgende YAML-filer, givet at ml.g5.12xlarge-forekomsten kommer med 4 GPU'er, allokerer vi 2 GPU'er, 2 CPU'er og 1,024 MB hukommelse til hver model:

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

Påkald modeller

Du kan nu kalde modellerne ved hjælp af følgende kode:

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)

Opdater en inferenskomponent

For at opdatere en eksisterende inferenskomponent kan du opdatere YAML-filerne og derefter bruge kubectl apply -f <yaml file>. Følgende er et eksempel på en opdateret fil:

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

Slet en inferenskomponent

Brug kommandoen for at slette en eksisterende inferenskomponent kubectl delete -f <yaml file>.

Tilgængelighed og priser

De nye SageMaker-inferensfunktioner er tilgængelige i dag i AWS-regionerne i USA øst (Ohio, N. Virginia), USA vest (Oregon), Asia Pacific (Jakarta, Mumbai, Seoul, Singapore, Sydney, Tokyo), Canada (Central), Europa ( Frankfurt, Irland, London, Stockholm), Mellemøsten (UAE) og Sydamerika (São Paulo). For prisoplysninger, besøg Amazon SageMaker-priser.

Konklusion

I dette indlæg viste vi, hvordan man bruger SageMaker ACK-operatører til at implementere SageMaker-inferenskomponenter. Tænd din Kubernetes-klynge, og implementer dine FM'er ved hjælp af de nye SageMaker-inferensfunktioner i dag!


Om forfatterne

Rajesh Ramchander er Principal ML Engineer i Professional Services hos AWS. Han hjælper kunder på forskellige stadier i deres AI/ML- og GenAI-rejse, fra dem, der lige er startet hele vejen til dem, der leder deres forretning med en AI-first-strategi.

Amit Arora er en AI og ML Specialist Architect hos Amazon Web Services, der hjælper virksomhedskunder med at bruge cloud-baserede maskinlæringstjenester til hurtigt at skalere deres innovationer. Han er også adjungeret lektor i MS data science and analytics-programmet ved Georgetown University i Washington DC

Suryansh Singh er softwareudviklingsingeniør hos AWS SageMaker og arbejder med at udvikle ML-distribuerede infrastrukturløsninger til AWS-kunder i stor skala.

Saurabh Trikande er Senior Product Manager for Amazon SageMaker Inference. Han brænder for at arbejde med kunder og er motiveret af målet om at demokratisere machine learning. Han fokuserer på kerneudfordringer relateret til implementering af komplekse ML-applikationer, multi-tenant ML-modeller, omkostningsoptimeringer og at gøre implementering af deep learning-modeller mere tilgængelig. I sin fritid nyder Saurabh at vandre, lære om innovative teknologier, følge TechCrunch og tilbringe tid med sin familie.

Johna LiuJohna Liu er softwareudviklingsingeniør i Amazon SageMaker-teamet. Hendes nuværende arbejde fokuserer på at hjælpe udviklere med effektivt at være vært for maskinlæringsmodeller og forbedre inferens ydeevne. Hun brænder for rumlig dataanalyse og brug af AI til at løse samfundsproblemer.

spot_img

Seneste efterretninger

spot_img

Chat med os

Hej! Hvordan kan jeg hjælpe dig?