Plato data-intelligentie.
Verticaal zoeken & Ai.

Gebruik Kubernetes Operators voor nieuwe inferentiemogelijkheden in Amazon SageMaker die de LLM-implementatiekosten gemiddeld met 50% verlagen | Amazon-webservices

Datum:

Met trots kondigen wij een nieuwe versie aan van de Amazon SageMaker-operators voor Kubernetes met de AWS-controllers voor Kubernetes (ACK). ACK is een raamwerk voor het bouwen van aangepaste Kubernetes-controllers, waarbij elke controller communiceert met een AWS-service-API. Met deze controllers kunnen Kubernetes-gebruikers eenvoudig AWS-bronnen zoals buckets, databases of berichtenwachtrijen inrichten met behulp van de Kubernetes API.

Sinds v1.2.9 van de SageMaker ACK Operators voegt ondersteuning toe voor gevolgtrekking componenten, die tot nu toe alleen beschikbaar waren via de SageMaker API en de AWS Software Development Kits (SDK's). Inferentiecomponenten kunnen u helpen de implementatiekosten te optimaliseren en de latentie te verminderen. Met de nieuwe mogelijkheden voor inferentiecomponenten kunt u een of meer basismodellen (FM's) hierop implementeren Amazon Sage Maker eindpunt en bepaalt hoeveel versnellers en hoeveel geheugen er voor elke FM is gereserveerd. Dit helpt het gebruik van resources te verbeteren, verlaagt de kosten voor modelimplementatie gemiddeld met 50% en stelt u in staat eindpunten samen met uw gebruiksscenario's te schalen. Voor meer details, zie Amazon SageMaker voegt nieuwe inferentiemogelijkheden toe om de implementatiekosten en latentie van het basismodel te helpen verminderen.

De beschikbaarheid van inferentiecomponenten via de SageMaker-controller stelt klanten die Kubernetes als besturingsvlak gebruiken in staat om te profiteren van inferentiecomponenten terwijl ze hun modellen op SageMaker implementeren.

In dit bericht laten we zien hoe u SageMaker ACK-operators kunt gebruiken om SageMaker-inferentiecomponenten te implementeren.

Hoe ACK werkt

Laten zien hoe ACK werkt, laten we een voorbeeld bekijken met behulp van Amazon eenvoudige opslagservice (Amazone S3). In het volgende diagram is Alice onze Kubernetes-gebruiker. Haar toepassing is afhankelijk van het bestaan ​​van een S3-bucket genaamd my-bucket.

Hoe ACK werkt

De workflow bestaat uit de volgende stappen:

  1. Alice belt naar kubectl apply, een bestand doorgeven dat een Kubernetes beschrijft aangepaste bron beschrijft haar S3-emmer. kubectl apply geeft dit bestand door, genaamd a manifesteren, naar de Kubernetes API-server die wordt uitgevoerd in het Kubernetes-controllerknooppunt.
  2. De Kubernetes API-server ontvangt het manifest dat de S3-bucket beschrijft en bepaalt of Alice dat heeft gedaan permissies om een ​​aangepaste bron van te maken soort s3.services.k8s.aws/Bucketen dat de aangepaste bron correct is opgemaakt.
  3. Als Alice geautoriseerd is en de aangepaste bron geldig is, schrijft de Kubernetes API-server de aangepaste bron naar zijn etcd gegevensopslag.
  4. Vervolgens antwoordt het aan Alice dat de aangepaste bron is gemaakt.
  5. Op dit punt is de ACK-service controleur voor Amazon S3, dat draait op een Kubernetes-werkknooppunt binnen de context van een normale Kubernetes Peul, wordt ervan op de hoogte gesteld dat er een nieuwe aangepaste bron van soort s3.services.k8s.aws/Bucket Is gemaakt.
  6. De ACK-servicecontroller voor Amazon S3 communiceert vervolgens met de Amazon S3 API en roept de S3 CreateBucket-API om de bucket in AWS te maken.
  7. Na communicatie met de Amazon S3 API roept de ACK-servicecontroller de Kubernetes API-server aan om de aangepaste brongegevens bij te werken toestand met informatie die het van Amazon S3 heeft ontvangen.

Belangrijke onderdelen

De nieuwe inferentiemogelijkheden bouwen voort op de realtime inferentie-eindpunten van SageMaker. Net als voorheen maakt u het SageMaker-eindpunt met een eindpuntconfiguratie die het exemplaartype en het initiële aantal exemplaren voor het eindpunt definieert. Het model is geconfigureerd in een nieuwe constructie, een inferentiecomponent. Hier geeft u het aantal versnellers en de hoeveelheid geheugen op die u aan elke kopie van een model wilt toewijzen, samen met de modelartefacten, de containerimage en het aantal te implementeren modelkopieën.

U kunt de nieuwe inferentiemogelijkheden van gebruiken Amazon SageMaker Studio SageMaker Python-SDK, AWS SDK's en AWS-opdrachtregelinterface (AWS CLI). Zij worden ook ondersteund door AWS CloudFormatie. Nu kun je ze ook gebruiken SageMaker-operators voor Kubernetes.

Overzicht oplossingen

Voor deze demo gebruiken we de SageMaker-controller om een ​​kopie van de Dolly v2 7B-model en een kopie van de FLAN-T5 XXL-model van het Knuffelen Gezicht Model Hub op een real-time eindpunt van SageMaker met behulp van de nieuwe inferentiemogelijkheden.

Voorwaarden

Om verder te gaan, moet u een Kubernetes-cluster hebben waarop de SageMaker ACK-controller v1.2.9 of hoger is geïnstalleerd. Voor instructies over het inrichten van een Amazon Elastic Kubernetes-service (Amazon EKS) cluster met Amazon Elastic Compute-cloud (Amazon EC2) Linux beheerde knooppunten met behulp van eksctl, zie Aan de slag met Amazon EKS – eksctl. Voor instructies over het installeren van de SageMaker-controller raadpleegt u Machine learning met de ACK SageMaker-controller.

U hebt toegang nodig tot versnelde instanties (GPU's) voor het hosten van de LLM's. Deze oplossing gebruikt één exemplaar van ml.g5.12xlarge; u kunt de beschikbaarheid van deze instances controleren in uw AWS-account en deze instances indien nodig aanvragen via een Service Quota verhogingsverzoek, zoals weergegeven in de volgende schermafbeelding.

Servicequota verhogen het verzoek

Maak een inferentiecomponent

Om uw inferentiecomponent te maken, definieert u de EndpointConfig, Endpoint, Model en InferenceComponent YAML-bestanden, vergelijkbaar met de bestanden die in deze sectie worden weergegeven. Gebruik kubectl apply -f <yaml file> om de Kubernetes-resources te maken.

U kunt de status van de resource weergeven via kubectl describe <resource-type>; bijvoorbeeld, kubectl describe inferencecomponent.

U kunt de inferentiecomponent ook zonder modelresource maken. Raadpleeg de richtlijnen in de API-documentatie voor meer details.

EndpointConfig-YAML

Hier volgt de code voor het EndpointConfig-bestand:

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

Eindpunt YAML

Het volgende is de code voor het Endpoint-bestand:

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

Het volgende is de code voor het modelbestand:

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

In de volgende YAML-bestanden wijzen we, aangezien de ml.g5.12xlarge-instantie wordt geleverd met 4 GPU's, 2 GPU's, 2 CPU's en 1,024 MB geheugen toe aan elk 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

Roep modellen op

U kunt de modellen nu aanroepen met de volgende code:

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)

Een inferentiecomponent bijwerken

Als u een bestaande gevolgtrekkingscomponent wilt bijwerken, kunt u de YAML-bestanden bijwerken en vervolgens gebruiken kubectl apply -f <yaml file>. Hier volgt een voorbeeld van een bijgewerkt bestand:

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

Verwijder een gevolgtrekkingscomponent

Gebruik de opdracht om een ​​bestaande gevolgtrekkingscomponent te verwijderen kubectl delete -f <yaml file>.

Beschikbaarheid en prijzen

De nieuwe SageMaker-inferentiemogelijkheden zijn vandaag beschikbaar in de AWS-regio's US East (Ohio, N. Virginia), US West (Oregon), Asia Pacific (Jakarta, Mumbai, Seoul, Singapore, Sydney, Tokyo), Canada (Centraal), Europa ( Frankfurt, Ierland, Londen, Stockholm), het Midden-Oosten (VAE) en Zuid-Amerika (São Paulo). Voor prijsinformatie, bezoek Amazon SageMaker-prijzen.

Conclusie

In dit bericht hebben we laten zien hoe u SageMaker ACK-operators kunt gebruiken om SageMaker-inferentiecomponenten te implementeren. Start uw Kubernetes-cluster en implementeer vandaag nog uw FM's met behulp van de nieuwe SageMaker-inferentiemogelijkheden!


Over de auteurs

Rajesh Ramchander is een Principal ML Engineer in Professional Services bij AWS. Hij helpt klanten in verschillende stadia van hun AI/ML- en GenAI-traject, van klanten die net begonnen zijn tot klanten die hun bedrijf leiden met een AI-first-strategie.

Amit Arora is een AI- en ML-specialistarchitect bij Amazon Web Services, die zakelijke klanten helpt bij het gebruik van cloudgebaseerde machine learning-services om hun innovaties snel op te schalen. Hij is ook adjunct-docent in het MS data science and analytics-programma aan de Georgetown University in Washington DC

Suryansh Singh is een Software Development Engineer bij AWS SageMaker en werkt aan de ontwikkeling van ML-gedistribueerde infrastructuuroplossingen voor AWS-klanten op schaal.

Saurabh Trikande is Senior Product Manager voor Amazon SageMaker Inference. Hij heeft een passie voor het werken met klanten en wordt gemotiveerd door het doel om machine learning te democratiseren. Hij richt zich op kernuitdagingen met betrekking tot het inzetten van complexe ML-applicaties, multi-tenant ML-modellen, kostenoptimalisaties en het toegankelijker maken van de inzet van deep learning-modellen. In zijn vrije tijd houdt Saurabh van wandelen, leren over innovatieve technologieën, TechCrunch volgen en tijd doorbrengen met zijn gezin.

John LiuJohn Liu is een Software Development Engineer in het Amazon SageMaker-team. Haar huidige werk is gericht op het helpen van ontwikkelaars om machine learning-modellen efficiënt te hosten en de prestaties van gevolgtrekkingen te verbeteren. Ze is gepassioneerd door ruimtelijke data-analyse en het gebruik van AI om maatschappelijke problemen op te lossen.

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?