Il successo delle applicazioni di intelligenza artificiale generativa in un’ampia gamma di settori ha attirato l’attenzione e l’interesse delle aziende di tutto il mondo che desiderano riprodurre e superare i risultati della concorrenza o risolvere casi d’uso nuovi ed entusiasmanti. Questi clienti stanno esaminando modelli di base, come TII Falcon, Stable Diffusion XL o GPT-3.5 di OpenAI, come motori che alimentano l'innovazione dell'intelligenza artificiale generativa.
I Foundation Model sono una classe di modelli di intelligenza artificiale generativa in grado di comprendere e generare contenuti simili a quelli umani, grazie alle grandi quantità di dati non strutturati su cui sono stati addestrati. Questi modelli hanno rivoluzionato varie attività di visione artificiale (CV) e di elaborazione del linguaggio naturale (PNL), tra cui la generazione di immagini, la traduzione e la risposta alle domande. Fungono da elementi costitutivi per molte applicazioni di intelligenza artificiale e sono diventati una componente cruciale nello sviluppo di sistemi intelligenti avanzati.
Tuttavia, l’implementazione di modelli di fondazione può comportare sfide significative, in particolare in termini di costi e requisiti di risorse. Questi modelli sono noti per le loro dimensioni, che spesso vanno da centinaia di milioni a miliardi di parametri. Le loro grandi dimensioni richiedono ampie risorse computazionali, tra cui hardware potente e significativa capacità di memoria. In effetti, la distribuzione di modelli di base richiede solitamente almeno una (spesso più) GPU per gestire il carico computazionale in modo efficiente. Ad esempio, il modello TII Falcon-40B Instruct richiede che almeno un'istanza ml.g5.12xlarge venga caricata correttamente in memoria, ma offre prestazioni migliori con istanze più grandi. Di conseguenza, il ritorno sull’investimento (ROI) derivante dall’implementazione e dal mantenimento di questi modelli può essere troppo basso per dimostrare il valore aziendale, soprattutto durante i cicli di sviluppo o per carichi di lavoro impegnativi. Ciò è dovuto ai costi di gestione derivanti dalla disponibilità di istanze basate su GPU per sessioni lunghe, potenzialmente 24 ore su 7, XNUMX giorni su XNUMX.
All'inizio di quest'anno, abbiamo annunciato Roccia Amazzonica, un'API serverless per accedere ai modelli di base di Amazon e dei nostri partner di intelligenza artificiale generativa. Sebbene sia attualmente in anteprima privata, la sua API serverless ti consente di utilizzare modelli di base di Amazon, Anthropic, Stability AI e AI21, senza dover distribuire manualmente alcun endpoint. Tuttavia, i modelli open source di comunità come Hugging Face sono cresciuti molto e non tutti sono stati resi disponibili tramite Amazon Bedrock.
In questo post, affrontiamo queste situazioni e risolviamo il problema di rischiare costi elevati distribuendo modelli di base di grandi dimensioni Amazon Sage Maker endpoint asincroni da JumpStart di Amazon SageMaker. Ciò può aiutare a ridurre i costi dell'architettura, consentendo all'endpoint di funzionare solo quando le richieste sono in coda e per un breve periodo di vita, riducendo al contempo la scalabilità fino a zero quando nessuna richiesta è in attesa di essere soddisfatta. Sembra fantastico per molti casi d'uso; tuttavia, un endpoint ridotto a zero introdurrà un'ora di avvio a freddo prima di poter fornire inferenze.
Panoramica della soluzione
Il diagramma seguente illustra l'architettura della nostra soluzione.
L'architettura che implementiamo è molto semplice:
- L'interfaccia utente è un notebook, che può essere sostituito da un'interfaccia utente Web basata su Streamlit o tecnologia simile. Nel nostro caso, il notebook è un Amazon Sage Maker Studio notebook, in esecuzione su un'istanza ml.m5.large con il kernel CPU PyTorch 2.0 Python 3.10.
- Il notebook esegue query sull'endpoint in tre modi: SageMaker Python SDK, AWS SDK for Python (Boto3) e LangChain.
- L'endpoint viene eseguito in modo asincrono su SageMaker e sull'endpoint distribuiamo il modello Falcon-40B Instruct. Attualmente rappresenta lo stato dell'arte in termini di modelli di istruzioni ed è disponibile in SageMaker JumpStart. Una singola chiamata API ci consente di distribuire il modello sull'endpoint.
Cos'è l'inferenza asincrona di SageMaker
L'inferenza asincrona di SageMaker è una delle quattro opzioni di distribuzione in SageMaker, insieme a endpoint in tempo reale, inferenza batch e inferenza serverless. Per ulteriori informazioni sulle diverse opzioni di distribuzione, fare riferimento a Distribuire modelli per l'inferenza.
L'inferenza asincrona di SageMaker accoda le richieste in entrata e le elabora in modo asincrono, rendendo questa opzione ideale per richieste con grandi dimensioni di payload fino a 1 GB, tempi di elaborazione lunghi e requisiti di latenza quasi in tempo reale. Tuttavia, il vantaggio principale che offre quando si ha a che fare con modelli di base di grandi dimensioni, in particolare durante una prova di concetto (POC) o durante lo sviluppo, è la capacità di configurare l'inferenza asincrona per scalare fino a un conteggio di istanze pari a zero quando non ci sono richieste di processo, risparmiando così sui costi. Per ulteriori informazioni sull'inferenza asincrona di SageMaker, fare riferimento a Inferenza asincrona. Il diagramma seguente illustra questa architettura.
Per distribuire un endpoint di inferenza asincrona, è necessario creare un file AsyncInferenceConfig
oggetto. Se crei AsyncInferenceConfig
senza specificare i suoi argomenti, il default S3OutputPath
sarà s3://sagemaker-{REGION}-{ACCOUNTID}/async-endpoint-outputs/{UNIQUE-JOB-NAME}
ed S3FailurePath
sarà s3://sagemaker-{REGION}-{ACCOUNTID}/async-endpoint-failures/{UNIQUE-JOB-NAME}
.
Cos'è SageMaker JumpStart
Il nostro modello deriva da SageMaker JumpStart, una funzionalità di SageMaker che accelera il percorso di machine learning (ML) offrendo modelli preaddestrati, modelli di soluzioni e notebook di esempio. Fornisce l'accesso a un'ampia gamma di modelli preaddestrati per diversi tipi di problemi, consentendoti di iniziare le tue attività di ML con solide basi. SageMaker JumpStart offre anche modelli di soluzioni per casi d'uso comuni e notebook di esempio per l'apprendimento. Con SageMaker JumpStart, puoi ridurre il tempo e gli sforzi necessari per avviare i tuoi progetti ML con lanci di soluzioni con un solo clic e risorse complete per un'esperienza pratica di ML.
Lo screenshot seguente mostra un esempio solo di alcuni dei modelli disponibili nell'interfaccia utente JumpStart di SageMaker.
Distribuire il modello
Il nostro primo passo è distribuire il modello su SageMaker. Per fare ciò, possiamo utilizzare l'interfaccia utente per SageMaker JumpStart o SageMaker Python SDK, che fornisce un'API che possiamo utilizzare per distribuire il modello sull'endpoint asincrono:
Il completamento di questa chiamata può richiedere circa 10 minuti. Durante questo periodo, l'endpoint viene avviato, il contenitore insieme agli artefatti del modello vengono scaricati sull'endpoint, la configurazione del modello viene caricata da SageMaker JumpStart, quindi l'endpoint asincrono viene esposto tramite un endpoint DNS. Per garantire che il nostro endpoint possa ridimensionarsi fino a zero, dobbiamo configurare la scalabilità automatica sull'endpoint asincrono utilizzando Application Auto Scaling. È necessario prima registrare la variante dell'endpoint con Application Auto Scaling, definire una policy di dimensionamento e quindi applicare la policy di dimensionamento. In questa configurazione utilizziamo una metrica personalizzata utilizzando CustomizedMetricSpecification
, chiamato ApproximateBacklogSizePerInstance
, come mostrato nel codice seguente. Per un elenco dettagliato di Amazon Cloud Watch disponibili con l'endpoint di inferenza asincrona, fare riferimento a Monitoraggio con CloudWatch.
Puoi verificare che questa policy sia stata impostata correttamente accedendo alla console SageMaker, scegliendo endpoint per Inferenza nel riquadro di navigazione e cercando l'endpoint appena distribuito.
Invocare l'endpoint asincrono
Per richiamare l'endpoint, è necessario inserire il payload della richiesta Servizio di archiviazione semplice Amazon (Amazon S3) e fornire un puntatore a questo payload come parte del file InvokeEndpointAsync
richiesta. Al momento della chiamata, SageMaker mette in coda la richiesta per l'elaborazione e restituisce un identificatore e una posizione di output come risposta. Durante l'elaborazione, SageMaker inserisce il risultato nella posizione Amazon S3. Facoltativamente puoi scegliere di ricevere notifiche di successo o di errore con Servizio di notifica semplice Amazon (SNS Amazon).
SDK Python di SageMaker
Una volta completata la distribuzione, verrà restituito un file AsyncPredictor
oggetto. Per eseguire l'inferenza asincrona, è necessario caricare i dati su Amazon S3 e utilizzare il file predict_async()
metodo con l'URI S3 come input. Restituirà un file AsyncInferenceResponse
oggetto e puoi controllare il risultato usando il file get_response()
metodo.
In alternativa, se desideri verificare periodicamente la presenza di un risultato e restituirlo dopo la generazione, utilizza il file predict()
metodo. Usiamo questo secondo metodo nel seguente codice:
Boto3
Esploriamo ora il invoke_endpoint_async
metodo da Boto3 sagemaker-runtime
cliente. Consente agli sviluppatori di invocare in modo asincrono un endpoint SageMaker, fornendo un token per il monitoraggio dei progressi e il recupero della risposta in un secondo momento. Boto3 non offre un modo per attendere il completamento dell'inferenza asincrona come l'SDK di SageMaker Python get_result()
operazione. Pertanto, approfittiamo del fatto che Boto3 memorizzerà l'output dell'inferenza in Amazon S3 nel file response["OutputLocation"]
. Possiamo utilizzare la seguente funzione per attendere che il file di inferenza venga scritto su Amazon S3:
Con questa funzione ora possiamo interrogare l'endpoint:
LangChain
LangChain è un framework open source lanciato nell'ottobre 2022 da Harrison Chase. Semplifica lo sviluppo di applicazioni utilizzando modelli linguistici di grandi dimensioni (LLM) fornendo integrazioni con vari sistemi e origini dati. LangChain consente l'analisi dei documenti, il riepilogo, la creazione di chatbot, l'analisi del codice e altro ancora. Ha guadagnato popolarità, con il contributo di centinaia di sviluppatori e finanziamenti significativi da parte di società di venture capital. LangChain consente la connessione di LLM con fonti esterne, rendendo possibile la creazione di applicazioni dinamiche e sensibili ai dati. Offre librerie, API e documentazione per semplificare il processo di sviluppo.
LangChain fornisce librerie ed esempi per l'utilizzo degli endpoint SageMaker con il suo framework, semplificando l'utilizzo dei modelli ML ospitati su SageMaker come "cervello" della catena. Per ulteriori informazioni su come LangChain si integra con SageMaker, fare riferimento al Endpoint SageMaker nella documentazione di LangChain.
Uno dei limiti dell'attuale implementazione di LangChain è che non supporta nativamente gli endpoint asincroni. Per utilizzare un endpoint asincrono su LangChain, dobbiamo definire una nuova classe, SagemakerAsyncEndpoint
, che estende il SagemakerEndpoint
classe già disponibile in LangChain. Inoltre, forniamo le seguenti informazioni:
- Il bucket S3 e il prefisso in cui l'inferenza asincrona memorizzerà gli input (e gli output)
- Un numero massimo di secondi di attesa prima del timeout
- An
updated _call()
funzione con cui interrogare l'endpointinvoke_endpoint_async()
invece diinvoke_endpoint()
- Un modo per riattivare l'endpoint asincrono se è in avvio a freddo (ridotto a zero)
Per rivedere il file appena creato SagemakerAsyncEndpoint
, È possibile controllare il sagemaker_async_endpoint.py
filetto disponibili su GitHub.
ripulire
Una volta terminato il test della generazione di inferenze dall'endpoint, ricorda di eliminare l'endpoint per evitare di incorrere in costi aggiuntivi:
Conclusione
Quando si distribuiscono modelli di fondamenta di grandi dimensioni come TII Falcon, l'ottimizzazione dei costi è fondamentale. Questi modelli richiedono hardware potente e notevole capacità di memoria, il che comporta costi infrastrutturali elevati. L'inferenza asincrona di SageMaker, un'opzione di distribuzione che elabora le richieste in modo asincrono, riduce le spese portando il conteggio delle istanze a zero quando non ci sono richieste in sospeso. In questo post, abbiamo dimostrato come distribuire modelli base SageMaker JumpStart di grandi dimensioni su endpoint asincroni SageMaker. Abbiamo fornito esempi di codice utilizzando SageMaker Python SDK, Boto3 e LangChain per illustrare diversi metodi per richiamare endpoint asincroni e recuperare risultati. Queste tecniche consentono a sviluppatori e ricercatori di ottimizzare i costi utilizzando al tempo stesso le capacità dei modelli di base per sistemi avanzati di comprensione del linguaggio.
Per ulteriori informazioni sull'inferenza asincrona e SageMaker JumpStart, consulta i seguenti post:
Circa l'autore
Davide Gallitelli è uno Specialist Solutions Architect per AI/ML nella regione EMEA. Ha sede a Bruxelles e lavora a stretto contatto con i clienti in tutto il Benelux. È uno sviluppatore sin da quando era molto giovane, iniziando a programmare all'età di 7 anni. Ha iniziato a studiare AI/ML all'università e da allora se ne è innamorato.
- 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. Automobilistico/VE, Carbonio, Tecnologia pulita, Energia, Ambiente, Solare, Gestione dei rifiuti. Accedi qui.
- Platone Salute. Intelligence sulle biotecnologie e sulle sperimentazioni cliniche. Accedi qui.
- Grafico Prime. Migliora il tuo gioco di trading con ChartPrime. Accedi qui.
- BlockOffset. Modernizzare la proprietà della compensazione ambientale. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/optimize-deployment-cost-of-amazon-sagemaker-jumpstart-foundation-models-with-amazon-sagemaker-asynchronous-endpoints/
- :ha
- :È
- :non
- :Dove
- $ SU
- 1
- 10
- 100
- 12
- 13
- 15%
- 1M
- 2022
- 25
- 7
- a
- capace
- WRI
- accelera
- accetta
- accesso
- realizzazioni
- operanti in
- attività
- Inoltre
- Avanzate
- Vantaggio
- Dopo shavasana, sedersi in silenzio; saluti;
- AI
- Modelli AI
- AI / ML
- Consentire
- consente
- già
- anche
- Sebbene il
- Amazon
- Amazon Sage Maker
- JumpStart di Amazon SageMaker
- Amazon Web Services
- quantità
- importi
- an
- .
- ed
- ha annunciato
- Un altro
- Antropico
- in qualsiasi
- api
- API
- Applicazioni
- applicazioni
- APPLICA
- architettura
- SONO
- argomenti
- Arte
- AS
- At
- attenzione
- attratto
- auto
- disponibile
- media
- evitare
- AWS
- basato
- BE
- diventare
- stato
- prima
- essendo
- MIGLIORE
- maggiore
- miliardi
- Blocchi
- stile di vita
- Rompere
- Bruxelles
- Costruzione
- costruito
- affari
- ma
- by
- chiamata
- detto
- Materiale
- funzionalità
- capacità
- capace
- Ultra-Grande
- Custodie
- casi
- catena
- Catene
- sfide
- oneri
- inseguimento
- chatbot
- dai un'occhiata
- Scegli
- la scelta
- classe
- cliente
- strettamente
- codice
- freddo
- Venire
- viene
- Uncommon
- Comunità
- Aziende
- concorrenti
- completamento di una
- Completato
- Completa
- componente
- globale
- computer
- Visione computerizzata
- concetto
- Configurazione
- veloce
- consolle
- Contenitore
- contenuto
- contributi
- Costo
- Costi
- creare
- creato
- creazione
- cruciale
- Corrente
- Attualmente
- costume
- Clienti
- taglio
- tagliare i costi
- cicli
- dati
- trattare
- Predefinito
- definire
- richieste
- dimostrato
- schierare
- schierato
- distribuzione
- deployment
- dettagliati
- Dev
- Costruttori
- sviluppatori
- Mercato
- DITT
- diverso
- Emittente
- dimensioni
- disabile
- dns
- do
- documento
- documentazione
- non
- fatto
- giù
- dovuto
- durante
- dinamico
- e
- più facile
- in modo efficiente
- sforzo
- altro
- enable
- Abilita
- endpoint
- Motori
- abbastanza
- errore
- particolarmente
- Ogni
- esempio
- Esempi
- Tranne
- eccezione
- coinvolgenti
- spese
- esperienza
- esplora
- esposto
- si estende
- estensivo
- esterno
- extra
- Faccia
- fatto
- Caduto
- falso
- caratteristica
- Compila il
- Aziende
- Nome
- i seguenti
- Nel
- Fondazione
- quattro
- Contesto
- da
- function
- finanziamento
- guadagnato
- generato
- la generazione di
- ELETTRICA
- generativo
- AI generativa
- GitHub
- buono
- GPU
- grande
- Crescita
- maniglia
- Hardware
- Avere
- avendo
- he
- Aiuto
- qui
- Alta
- ospitato
- Come
- Tutorial
- Tuttavia
- HTML
- http
- HTTPS
- centinaia
- centinaia di milioni
- ideale
- identificatore
- if
- illustra
- Immagine
- implementazione
- importare
- in
- Compreso
- In arrivo
- indica
- industrie
- informazioni
- Infrastruttura
- Innovazione
- ingresso
- Ingressi
- esempio
- invece
- Integra
- integrazioni
- Intelligente
- interesse
- Interfaccia
- ai miglioramenti
- introdurre
- investimento
- IT
- SUO
- viaggio
- jpg
- json
- ad appena
- conosciuto
- Lingua
- grandi
- Latenza
- dopo
- lanciato
- lancia
- principale
- IMPARARE
- apprendimento
- meno
- biblioteche
- piace
- limiti
- Lista
- caricare
- località
- Lunghi
- cerca
- lotto
- amore
- Basso
- macchina
- machine learning
- fatto
- Principale
- Mantenere
- make
- Fare
- molti
- max
- massimo
- Memorie
- metodo
- metodi
- metrico
- Metrica
- milioni
- Minuti
- ML
- modello
- modelli
- Scopri di più
- Nome
- Naturale
- Elaborazione del linguaggio naturale
- navigazione
- Navigazione
- Bisogno
- New
- recentemente
- GENERAZIONE
- nlp
- no
- taccuino
- notifica
- notifiche
- adesso
- numero
- oggetto
- ottobre
- of
- offrire
- offerta
- Offerte
- di frequente
- on
- ONE
- esclusivamente
- open source
- operazione
- OTTIMIZZA
- ottimizzazione
- Opzione
- Opzioni
- or
- nostro
- su
- produzione
- vetro
- parametri
- parte
- particolarmente
- partner
- in attesa di
- Eseguire
- esegue
- immagine
- posto
- Partner
- Platone
- Platone Data Intelligence
- PlatoneDati
- PoC
- politica
- popolarità
- possibile
- Post
- Post
- potenzialmente
- energia
- potente
- Pratico
- predizione
- Predictor
- Anteprima
- Stampa
- un bagno
- Problema
- processi
- i processi
- lavorazione
- Progressi
- progetti
- prova
- prova del concetto
- Dimostra
- fornire
- purché
- fornisce
- fornitura
- Python
- pytorch
- query
- domanda
- aumentare
- gamma
- che vanno
- Leggi
- pronto
- tempo reale
- ricevere
- ridurre
- riduce
- regione
- registro
- ricorda
- rimuovere
- sostituito
- richiesta
- richieste
- richiedere
- necessario
- Requisiti
- richiede
- ricercatori
- risorsa
- Risorse
- risposta
- colpevole
- Risultati
- ritorno
- problemi
- recensioni
- rivoluzionato
- rischiando
- ROI
- Correre
- running
- sagemaker
- risparmio
- scalabile
- Scala
- scala
- sdk
- Secondo
- secondo
- AUTO
- servire
- serverless
- servizio
- Servizi
- sessioni
- set
- Corti
- mostrato
- Spettacoli
- significativa
- simile
- Un'espansione
- da
- singolo
- situazioni
- Taglia
- Dimensioni
- solido
- soluzione
- Soluzioni
- RISOLVERE
- alcuni
- fonti
- specialista
- spun
- Stabilità
- stabile
- inizia a
- iniziato
- Di partenza
- Regione / Stato
- step
- Fermare
- conservazione
- Tornare al suo account
- lineare
- snellire
- sostanziale
- il successo
- Con successo
- tale
- supporto
- supporti
- sicuro
- superare
- SISTEMI DI TRATTAMENTO
- Fai
- Target
- task
- tecniche
- Tecnologia
- modelli
- condizioni
- Testing
- Grazie
- che
- Il
- Lo Stato
- loro
- Li
- poi
- Là.
- in tal modo
- perciò
- Strumenti Bowman per analizzare le seguenti finiture:
- di
- questo
- quest'anno
- tre
- Attraverso
- per tutto
- tempo
- volte
- sincronizzazione
- a
- insieme
- token
- pure
- Tracking
- allenato
- Traduzione
- vero
- prova
- Tipi di
- ui
- per
- e una comprensione reciproca
- Università
- fino a quando
- su
- us
- uso
- Utente
- Interfaccia utente
- utilizzando
- generalmente
- APPREZZIAMO
- Variante
- vario
- Fisso
- impresa
- verificare
- molto
- via
- visione
- aspettare
- In attesa
- Wake
- Risvegliare
- volere
- Prima
- Modo..
- modi
- we
- sito web
- servizi web
- quando
- se
- quale
- while
- OMS
- largo
- Vasta gamma
- volere
- con
- senza
- Ha vinto
- lavori
- In tutto il mondo
- sarebbe
- scritto
- anno
- Tu
- giovane
- Trasferimento da aeroporto a Sharm
- te stesso
- zefiro
- zero