Siamo entusiasti di annunciare una nuova versione di Operatori Amazon SageMaker per Kubernetes usando il Controller AWS per Kubernetes (ACK). ACK è un framework per la creazione di controller personalizzati Kubernetes, in cui ciascun controller comunica con un'API del servizio AWS. Questi controller consentono agli utenti Kubernetes di effettuare il provisioning di risorse AWS come bucket, database o code di messaggi semplicemente utilizzando l'API Kubernetes.
Rilasciare v1.2.9 degli operatori ACK di SageMaker aggiunge il supporto per componenti di inferenza, che fino ad ora erano disponibili solo tramite l'API SageMaker e i kit di sviluppo software (SDK) AWS. I componenti di inferenza possono aiutarti a ottimizzare i costi di distribuzione e ridurre la latenza. Con le nuove funzionalità dei componenti di inferenza, puoi distribuire uno o più modelli di base (FM) sullo stesso Amazon Sage Maker endpoint e controllare quanti acceleratori e quanta memoria è riservata per ciascuna FM. Ciò contribuisce a migliorare l'utilizzo delle risorse, riduce i costi di distribuzione del modello in media del 50% e consente di adattare gli endpoint in base ai casi d'uso. Per maggiori dettagli, vedere Amazon SageMaker aggiunge nuove funzionalità di inferenza per contribuire a ridurre i costi di distribuzione e la latenza del modello di base.
La disponibilità di componenti di inferenza tramite il controller SageMaker consente ai clienti che utilizzano Kubernetes come piano di controllo di sfruttare i componenti di inferenza durante la distribuzione dei propri modelli su SageMaker.
In questo post mostriamo come utilizzare gli operatori ACK di SageMaker per distribuire i componenti di inferenza di SageMaker.
Come funziona ACK
Dimostrare come funziona ACK, diamo un'occhiata a un esempio utilizzando Servizio di archiviazione semplice Amazon (Amazon S3). Nel diagramma seguente, Alice è il nostro utente Kubernetes. La sua applicazione dipende dall'esistenza di un bucket S3 denominato my-bucket
.
Il flusso di lavoro è costituito dai seguenti passaggi:
- Alice lancia una chiamata a
kubectl apply
, passando un file che descrive un Kubernetes risorsa personalizzata descrivendo il suo secchiello S3.kubectl apply
passa questo file, chiamato a manifesto, al server API Kubernetes in esecuzione nel nodo del controller Kubernetes. - Il server API Kubernetes riceve il manifest che descrive il bucket S3 e determina se Alice lo ha fatto permessi per creare una risorsa personalizzata di tipo
s3.services.k8s.aws/Bucket
e che la risorsa personalizzata sia formattata correttamente. - Se Alice è autorizzata e la risorsa personalizzata è valida, il server API Kubernetes scrive la risorsa personalizzata nel suo file
etcd
archivio dati. - Quindi risponde ad Alice che la risorsa personalizzata è stata creata.
- A questo punto, il servizio ACK controllore per Amazon S3, che è in esecuzione su un nodo di lavoro Kubernetes nel contesto di un normale Kubernetes Baccello, viene notificato che è disponibile una nuova risorsa personalizzata di tipo kind
s3.services.k8s.aws/Bucket
è stato creato. - Il controller del servizio ACK per Amazon S3 comunica quindi con l'API Amazon S3, chiamando il file API S3 CreateBucket per creare il bucket in AWS.
- Dopo aver comunicato con l'API Amazon S3, il controller del servizio ACK chiama il server API Kubernetes per aggiornare le risorse personalizzate status con le informazioni ricevute da Amazon S3.
Componenti chiave
Le nuove funzionalità di inferenza si basano sugli endpoint di inferenza in tempo reale di SageMaker. Come in precedenza, crei l'endpoint SageMaker con una configurazione dell'endpoint che definisce il tipo di istanza e il conteggio iniziale delle istanze per l'endpoint. Il modello è configurato in un nuovo costrutto, un componente di inferenza. Qui puoi specificare il numero di acceleratori e la quantità di memoria che desideri allocare a ciascuna copia di un modello, insieme agli artefatti del modello, all'immagine del contenitore e al numero di copie del modello da distribuire.
È possibile utilizzare le nuove funzionalità di inferenza da Amazon Sage Maker Studio, le SDK Python di SageMaker, SDK AWSe Interfaccia della riga di comando di AWS (AWS CLI). Sono inoltre supportati da AWS CloudFormazione. Ora puoi anche usarli con Operatori SageMaker per Kubernetes.
Panoramica della soluzione
Per questa demo utilizziamo il controller SageMaker per distribuire una copia del file Modello Dolly v2B e una copia del Modello FLAN-T5 XXL dal Hub del modello del viso che abbraccia su un endpoint in tempo reale SageMaker utilizzando le nuove funzionalità di inferenza.
Prerequisiti
Per proseguire, dovresti avere un cluster Kubernetes con il controller SageMaker ACK v1.2.9 o versione successiva installato. Per istruzioni su come eseguire il provisioning di un Servizio Amazon Elastic Kubernetes (Amazon EKS) con Cloud di calcolo elastico di Amazon (Amazon EC2) Nodi gestiti Linux che utilizzano eksctl, vedere Iniziare con Amazon EKS – eksctl. Per istruzioni sull'installazione del controller SageMaker, fare riferimento a Apprendimento automatico con il controller ACK SageMaker.
È necessario accedere alle istanze accelerate (GPU) per ospitare i LLM. Questa soluzione utilizza un'istanza di ml.g5.12xlarge; puoi verificare la disponibilità di queste istanze nel tuo account AWS e richiederle secondo necessità tramite una richiesta di aumento delle quote di servizio, come mostrato nello screenshot seguente.
Creare un componente di inferenza
Per creare il componente di inferenza, definisci il file EndpointConfig
, Endpoint
, Model
e InferenceComponent
File YAML, simili a quelli mostrati in questa sezione. Utilizzo kubectl apply -f <yaml file>
per creare le risorse Kubernetes.
È possibile elencare lo stato della risorsa tramite kubectl describe <resource-type>
; per esempio, kubectl describe inferencecomponent
.
È inoltre possibile creare il componente di inferenza senza una risorsa modello. Fare riferimento alle indicazioni fornite nel Documentazione delle API per ulteriori dettagli.
EndpointConfig YAML
Quello che segue è il codice per il file EndpointConfig:
Endpoint YAML
Di seguito è riportato il codice per il file Endpoint:
Modello YAML
Quello che segue è il codice per il file modello:
YAML InferenceComponent
Nei seguenti file YAML, dato che l'istanza ml.g5.12xlarge è dotata di 4 GPU, stiamo assegnando 2 GPU, 2 CPU e 1,024 MB di memoria a ciascun modello:
Invocare modelli
Ora puoi richiamare i modelli utilizzando il seguente codice:
Aggiorna un componente di inferenza
Per aggiornare un componente di inferenza esistente, puoi aggiornare i file YAML e quindi utilizzare kubectl apply -f <yaml file>
. Di seguito è riportato un esempio di file aggiornato:
Elimina un componente di inferenza
Per eliminare un componente di inferenza esistente, utilizzare il comando kubectl delete -f <yaml file>
.
Disponibilità e prezzi
Le nuove funzionalità di inferenza di SageMaker sono oggi disponibili nelle regioni AWS Stati Uniti orientali (Ohio, N. Virginia), Stati Uniti occidentali (Oregon), Asia Pacifico (Giacarta, Mumbai, Seul, Singapore, Sydney, Tokyo), Canada (Centrale), Europa ( Francoforte, Irlanda, Londra, Stoccolma), Medio Oriente (EAU) e Sud America (San Paolo). Per i dettagli sui prezzi, visitare Prezzi di Amazon SageMaker.
Conclusione
In questo post, abbiamo mostrato come utilizzare gli operatori ACK di SageMaker per distribuire i componenti di inferenza di SageMaker. Avvia il tuo cluster Kubernetes e distribuisci i tuoi FM utilizzando le nuove funzionalità di inferenza di SageMaker oggi stesso!
Informazioni sugli autori
Rajesh Ramchander è Principal ML Engineer in Servizi professionali presso AWS. Aiuta i clienti nelle varie fasi del loro percorso verso l'intelligenza artificiale/ML e la GenAI, da quelli che hanno appena iniziato fino a quelli che stanno guidando la propria attività con una strategia incentrata sull'intelligenza artificiale.
Amit Arora è un AI e ML Specialist Architect presso Amazon Web Services, che aiuta i clienti aziendali a utilizzare i servizi di machine learning basati su cloud per scalare rapidamente le loro innovazioni. È anche docente a contratto nel programma MS data science and analytics presso la Georgetown University di Washington DC
Suryansh Singh è un ingegnere di sviluppo software presso AWS SageMaker e lavora allo sviluppo di soluzioni di infrastruttura distribuita ML per i clienti AWS su larga scala.
Saurabh Trikande è un Senior Product Manager per Amazon SageMaker Inference. È appassionato di lavorare con i clienti ed è motivato dall'obiettivo di democratizzare l'apprendimento automatico. Si concentra sulle sfide principali relative all'implementazione di applicazioni ML complesse, modelli ML multi-tenant, ottimizzazioni dei costi e rendere più accessibile l'implementazione di modelli di deep learning. Nel tempo libero, Saurabh ama fare escursioni, conoscere tecnologie innovative, seguire TechCrunch e trascorrere del tempo con la sua famiglia.
Giovanni Liu è un Software Development Engineer nel team di Amazon SageMaker. Il suo lavoro attuale si concentra sull'aiutare gli sviluppatori a ospitare in modo efficiente modelli di machine learning e migliorare le prestazioni di inferenza. È appassionata di analisi dei dati spaziali e utilizza l'intelligenza artificiale per risolvere i problemi della società.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- PlatoData.Network Generativo verticale Ai. Potenzia te stesso. Accedi qui.
- PlatoAiStream. Intelligenza Web3. Conoscenza amplificata. Accedi qui.
- PlatoneESG. Carbonio, Tecnologia pulita, Energia, Ambiente, Solare, Gestione dei rifiuti. Accedi qui.
- Platone Salute. Intelligence sulle biotecnologie e sulle sperimentazioni cliniche. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/use-kubernetes-operators-for-new-inference-capabilities-in-amazon-sagemaker-that-reduce-llm-deployment-costs-by-50-on-average/