Inteligența generativă a datelor

Utilizați operatorii Kubernetes pentru noi capabilități de inferență în Amazon SageMaker care reduc costurile de implementare a LLM cu 50% în medie | Amazon Web Services

Data:

Suntem încântați să anunțăm o nouă versiune a Operatori Amazon SageMaker pentru Kubernetes folosind Controlere AWS pentru Kubernetes (ACK). ACK este un cadru pentru construirea de controlere personalizate Kubernetes, în care fiecare controler comunică cu un API de serviciu AWS. Aceste controlere permit utilizatorilor Kubernetes să furnizeze resurse AWS, cum ar fi compartimente, baze de date sau cozi de mesaje, pur și simplu utilizând API-ul Kubernetes.

Eliberați v1.2.9 al operatorilor SageMaker ACK adaugă suport pentru componente de inferență, care până acum erau disponibile numai prin API-ul SageMaker și prin kiturile de dezvoltare software (SDK-uri) AWS. Componentele de inferență vă pot ajuta să optimizați costurile de implementare și să reduceți latența. Cu noile capabilități ale componentelor de inferență, puteți implementa unul sau mai multe modele de fundație (FM) pe același Amazon SageMaker punct final și controlați câte acceleratoare și câtă memorie este rezervată pentru fiecare FM. Acest lucru ajută la îmbunătățirea utilizării resurselor, reduce costurile de implementare a modelului în medie cu 50% și vă permite să scalați punctele finale împreună cu cazurile dvs. de utilizare. Pentru mai multe detalii, vezi Amazon SageMaker adaugă noi capabilități de inferență pentru a ajuta la reducerea costurilor de implementare a modelului de bază și a latenței.

Disponibilitatea componentelor de inferență prin controlerul SageMaker le permite clienților care folosesc Kubernetes ca plan de control să profite de componentele de inferență în timp ce își implementează modelele pe SageMaker.

În această postare, arătăm cum să folosiți operatorii SageMaker ACK pentru a implementa componentele de inferență SageMaker.

Cum funcționează ACK

A demonstra cum funcționează ACK, să ne uităm la un exemplu de utilizare Serviciul Amazon de stocare simplă (Amazon S3). În diagrama următoare, Alice este utilizatorul nostru Kubernetes. Aplicația ei depinde de existența unei găleți S3 numită my-bucket.

Cum funcționează ACK

Fluxul de lucru constă din următorii pași:

  1. Alice trimite un apel la kubectl apply, trecând un fișier care descrie un Kubernetes resursă personalizată descriindu-i găleata S3. kubectl apply trece acest fișier, numit a manifesta, către serverul API Kubernetes care rulează în nodul controlerului Kubernetes.
  2. Serverul API Kubernetes primește manifestul care descrie compartimentul S3 și determină dacă Alice are permisiuni pentru a crea o resursă personalizată de natural s3.services.k8s.aws/Bucketși că resursa personalizată este formatată corect.
  3. Dacă Alice este autorizată și resursa personalizată este validă, serverul API Kubernetes scrie resursa personalizată în etcd depozit de date.
  4. Apoi îi răspunde lui Alice că resursa personalizată a fost creată.
  5. În acest moment, serviciul ACK controlor pentru Amazon S3, care rulează pe un nod de lucru Kubernetes în contextul unui Kubernetes normal Păstaie, este notificat că o nouă resursă personalizată de acest fel s3.services.k8s.aws/Bucket a fost creat.
  6. Controlerul de serviciu ACK pentru Amazon S3 comunică apoi cu API-ul Amazon S3, apelând la S3 CreateBucket API pentru a crea găleata în AWS.
  7. După comunicarea cu Amazon S3 API, controlerul serviciului ACK apelează serverul API Kubernetes pentru a actualiza resursele personalizate. Starea cu informațiile primite de la Amazon S3.

Componente cheie

Noile capabilități de inferență se bazează pe punctele finale de inferență în timp real ale SageMaker. Ca și înainte, creați punctul final SageMaker cu o configurație a punctului final care definește tipul de instanță și numărul inițial de instanță pentru punctul final. Modelul este configurat într-un nou construct, o componentă de inferență. Aici, specificați numărul de acceleratoare și cantitatea de memorie pe care doriți să o alocați fiecărei copii a unui model, împreună cu artefactele modelului, imaginea containerului și numărul de copii ale modelului de implementat.

Puteți utiliza noile capacități de inferență de la Amazon SageMaker Studio, SageMaker Python SDK, SDK-uri AWS, și Interfața liniei de comandă AWS (AWS CLI). Sunt susținute și de Formarea AWS Cloud. Acum le poți folosi și cu Operatori SageMaker pentru Kubernetes.

Prezentare generală a soluțiilor

Pentru această demonstrație, folosim controlerul SageMaker pentru a implementa o copie a fișierului Model Dolly v2 7B și o copie a Model FLAN-T5 XXL de la Hugging Face Model Hub pe un punct final în timp real SageMaker folosind noile capabilități de inferență.

Cerințe preliminare

Pentru a urma, ar trebui să aveți un cluster Kubernetes cu controlerul SageMaker ACK v1.2.9 sau mai recent instalat. Pentru instrucțiuni despre cum să furnizați un Serviciul Amazon Elastic Kubernetes (Amazon EKS) cluster cu Cloud Elastic de calcul Amazon (Amazon EC2) Noduri gestionate Linux folosind eksctl, vezi Noțiuni introductive cu Amazon EKS – eksctl. Pentru instrucțiuni despre instalarea controlerului SageMaker, consultați Învățare automată cu controlerul ACK SageMaker.

Aveți nevoie de acces la instanțe accelerate (GPU) pentru găzduirea LLM-urilor. Această soluție folosește o instanță de ml.g5.12xlarge; puteți verifica disponibilitatea acestor instanțe în contul dvs. AWS și puteți solicita aceste instanțe după cum este necesar printr-o solicitare de creștere a cotelor de servicii, așa cum se arată în următoarea captură de ecran.

Solicitare de creștere a cotelor de servicii

Creați o componentă de inferență

Pentru a crea componenta de inferență, definiți EndpointConfig, Endpoint, Model, și InferenceComponent Fișiere YAML, similare cu cele afișate în această secțiune. Utilizare kubectl apply -f <yaml file> pentru a crea resursele Kubernetes.

Puteți enumera starea resursei prin kubectl describe <resource-type>; de exemplu, kubectl describe inferencecomponent.

De asemenea, puteți crea componenta de inferență fără o resursă de model. Consultați îndrumările furnizate în Documentație API pentru mai multe detalii.

EndpointConfig YAML

Următorul este codul pentru fișierul 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

Punctul final YAML

Următorul este codul pentru fișierul Endpoint:

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

Următorul este codul pentru fișierul Model:

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-uri

În următoarele fișiere YAML, având în vedere că instanța ml.g5.12xlarge vine cu 4 GPU-uri, alocam 2 GPU-uri, 2 CPU-uri și 1,024 MB de memorie fiecărui 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

Invocați modele

Acum puteți invoca modelele folosind următorul cod:

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)

Actualizați o componentă de inferență

Pentru a actualiza o componentă de inferență existentă, puteți actualiza fișierele YAML și apoi le puteți utiliza kubectl apply -f <yaml file>. Următorul este un exemplu de fișier actualizat:

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

Ștergeți o componentă de inferență

Pentru a șterge o componentă de inferență existentă, utilizați comanda kubectl delete -f <yaml file>.

Disponibilitate și prețuri

Noile capabilități de inferență SageMaker sunt disponibile astăzi în regiunile AWS SUA de Est (Ohio, N. Virginia), SUA de Vest (Oregon), Asia Pacific (Jakarta, Mumbai, Seul, Singapore, Sydney, Tokyo), Canada (Central), Europa ( Frankfurt, Irlanda, Londra, Stockholm), Orientul Mijlociu (EAU) și America de Sud (São Paulo). Pentru detalii despre preț, vizitați Prețuri Amazon SageMaker.

Concluzie

În această postare, am arătat cum să folosiți operatorii SageMaker ACK pentru a implementa componentele de inferență SageMaker. Porniți-vă clusterul Kubernetes și implementați-vă FM-urile folosind noile capabilități de inferență SageMaker astăzi!


Despre Autori

Rajesh Ramchander este inginer principal ML în servicii profesionale la AWS. El ajută clienții în diferite etape ale călătoriei lor AI/ML și GenAI, de la cei care abia au început până la cei care își conduc afacerea cu o strategie de AI.

Amit Arora este arhitect specialist AI și ML la Amazon Web Services, ajutând clienții întreprinderilor să folosească servicii de învățare automată bazate pe cloud pentru a-și scala rapid inovațiile. El este, de asemenea, lector adjunct în programul MS de știință a datelor și analiză la Universitatea Georgetown din Washington DC

Suryansh Singh este inginer de dezvoltare software la AWS SageMaker și lucrează la dezvoltarea soluțiilor de infrastructură distribuite ML pentru clienții AWS la scară.

Saurabh Trikande este Senior Product Manager pentru Amazon SageMaker Inference. Este pasionat de lucrul cu clienții și este motivat de obiectivul democratizării învățării automate. El se concentrează pe provocările de bază legate de implementarea de aplicații ML complexe, modele ML multi-locatari, optimizări ale costurilor și de a face implementarea modelelor de învățare profundă mai accesibilă. În timpul liber, lui Saurabh îi place să facă drumeții, să învețe despre tehnologii inovatoare, să urmeze TechCrunch și să petreacă timpul cu familia sa.

Ioana LiuIoana Liu este inginer de dezvoltare software în echipa Amazon SageMaker. Activitatea ei actuală se concentrează pe a ajuta dezvoltatorii să găzduiască eficient modele de învățare automată și să îmbunătățească performanța de inferență. Este pasionată de analiza datelor spațiale și de utilizarea inteligenței artificiale pentru a rezolva problemele societale.

spot_img

Ultimele informații

spot_img

Chat cu noi

Bună! Cu ce ​​​​vă pot ajuta?