Domande frequenti sull'hosting modello - Amazon SageMaker AI

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Domande frequenti sull'hosting modello

Consulta le domande frequenti riportate di seguito per trovare le risposte alle domande più frequenti su SageMaker AI Inference Hosting.

Hosting generale

Le seguenti domande frequenti rispondono a domande generali comuni su SageMaker AI Inference.

R: Dopo aver creato e addestrato i modelli, Amazon SageMaker AI offre quattro opzioni per implementarli in modo da poter iniziare a fare previsioni. L’inferenza in tempo reale è adatta per i carichi di lavoro con requisiti di latenza di millisecondi, dimensioni payload fino a 25 MB e tempi di elaborazione fino a 60 secondi per le risposte normali e 8 minuti per le risposte in streaming. La trasformazione batch è ideale per le previsioni offline su grandi batch di dati disponibili in anticipo. L’inferenza asincrona è progettata per i carichi di lavoro che non hanno requisiti di latenza inferiori al secondo, dimensioni di payload fino a 1 GB e tempi di elaborazione fino a 60 minuti. Con l’inferenza serverless puoi implementare rapidamente modelli di machine learning per l'inferenza senza dover configurare o gestire l'infrastruttura sottostante e paghi solo per la capacità di calcolo utilizzata per elaborare le richieste di inferenza, ideale per carichi di lavoro intermittenti.

Se desideri elaborare le richieste in batch, potresti scegliere Trasformazione batch. Altrimenti, se desideri ricevere inferenze per ogni richiesta al tuo modello, potresti scegliere Inferenza asincrona, Inferenza serverless o Inferenza in tempo reale. Puoi scegliere Inferenza asincrona se hai tempi di elaborazione lunghi o carichi utili di grandi dimensioni e desideri mettere in coda le richieste. Puoi scegliere Inferenza serverless se il tuo carico di lavoro ha un traffico imprevedibile o intermittente. Puoi scegliere Inferenza in tempo reale se hai un traffico prolungato e hai bisogno di una latenza inferiore e costante per le tue richieste.

R: Per ottimizzare i costi con SageMaker AI Inference, devi scegliere l’opzione di hosting più adatta al tuo caso d’uso. Puoi anche utilizzare funzionalità di inferenza come Amazon SageMaker AI Savings Plans, ottimizzazione dei modelli con SageMaker Neo, endpoint multi-modello e endpoint multi-container o dimensionamento automatico. Per suggerimenti su come ottimizzare i costi di inferenza, consulta Best practice per l'ottimizzazione dei costi di inferenza.

R: Dovresti utilizzare Inferenza con funzione di suggerimento Amazon SageMaker se hai bisogno di consigli per la corretta configurazione endpoint per migliorare le prestazioni e ridurre i costi. In precedenza, i data scientist che volevano distribuire i propri modelli dovevano eseguire benchmark manuali per selezionare la giusta configurazione endpoint. Innanzitutto, dovevano selezionare il tipo di istanza di machine learning giusto tra gli oltre 70 tipi di istanze disponibili in base ai requisiti della risorsa dei modelli e ai payload di esempio e quindi ottimizzare il modello per tenere conto dei diversi hardware. Successivamente, hanno dovuto condurre test di carico approfonditi per verificare che i requisiti di latenza e velocità di trasmissione effettiva fossero soddisfatti e che i costi fossero bassi. Suggeritore di inferenza elimina questa complessità aiutandoti a fare quanto segue:

  • Inizia in pochi minuti con una raccomandazione di istanza.

  • Esegui test di carico su diversi tipi di istanze per ottenere consigli sulla configurazione endpoint nel giro di poche ore.

  • Ottimizza automaticamente i parametri del container e del server modello ed esegui ottimizzazioni del modello per un determinato tipo di istanza.

R: Gli endpoint di SageMaker AI sono endpoint HTTP REST che utilizzano un server web containerizzato, che include un server del modello. Questi container sono responsabili del caricamento e della gestione delle richieste per un modello di machine learning. Implementano un server Web che risponde a /invocations e /ping sulla porta 8080.

I server modello più comuni includono TensorFlow Serving, TorchServe e Multi Model Server. I container del framework SageMaker AI dispongono di questi server di modelli integrati.

R: Tutti gli elementi all’interno di SageMaker AI Inference sono containerizzati. SageMaker AI fornisce container gestiti per framework popolari come TensorFlow, SKlearn e HuggingFace. Per un elenco completo e aggiornato di tali immagini, consulta Immagini disponibili.

A volte esistono framework personalizzati per i quali potrebbe essere necessario creare un container. Questo approccio è noto come Bring Your Own Container, o BYOC. Con l’approccio BYOC, fornisci l’immagine Docker per configurare il tuo framework o la tua libreria, quindi ne effettui il push ad Amazon Elastic Container Registry (Amazon ECR), in modo da utilizzare l’immagine con SageMaker AI.

In alternativa, invece di creare un'immagine da zero, puoi estendere un container. Puoi prendere una delle immagini di base fornite da SageMaker AI e aggiungere dipendenze nel tuo file Docker.

R: SageMaker AI ti consente di introdurre il modello di framework che hai addestrato all’esterno di SageMaker AI e di implementarlo su qualsiasi opzione di hosting di SageMaker AI.

SageMaker AI richiede di impacchettare il modello in un file model.tar.gz e di disporre di una struttura delle directory specifica. Ciascun framework ha la propria struttura di modello (per esempi di strutture, vedere la domanda seguente). Per ulteriori informazioni, consulta la documentazione SageMaker Python SDK per TensorFlow, PyTorch e MXNet.

Sebbene sia possibile scegliere tra immagini di framework predefinite, come TensorFlow, PyTorch e MXNet, per ospitare il modello addestrato, è anche possibile creare il proprio container per ospitare i modelli addestrati sugli endpoint di SageMaker AI. Per una procedura dettagliata, vedi l'esempio di notebook Jupyter Creazione di un container di algoritmo personalizzato.

R: SageMaker AI richiede che gli artefatti del modello siano compressi in un file .tar.gz o in un tarball. SageMaker AI estrae automaticamente questo file .tar.gz nella directory /opt/ml/model/ del container. Il tarball non deve contenere collegamenti simbolici o symlink non necessari. Se si utilizza uno dei container del framework, come TensorFlow, Pytorch o MXNet, il container si aspetta che la struttura TAR sia la seguente:

TensorFlow

model.tar.gz/ |--[model_version_number]/ |--variables |--saved_model.pb code/ |--inference.py |--requirements.txt

PyTorch

model.tar.gz/ |- model.pth |- code/ |- inference.py |- requirements.txt # only for versions 1.3.1 and higher

MXNet

model.tar.gz/ |- model-symbol.json |- model-shapes.json |- model-0000.params |- code/ |- inference.py |- requirements.txt # only for versions 1.6.0 and higher

R: ContentType è il tipo MIME dei dati di input nel corpo della richiesta (il tipo MIME dei dati che stai inviando all'endpoint). Il server del modello utilizza il ContentType per determinare se è in grado di gestire il tipo fornito o meno.

Accept è il tipo MIME della risposta di inferenza (il tipo MIME dei dati restituiti dall'endpoint). Il server del modello utilizza il tipo Accept per determinare se è in grado di gestire e restituire il tipo fornito o meno.

I tipi MIME più comuni includono text/csv, application/json e application/jsonlines.

R: SageMaker AI passa qualsiasi richiesta al container del modello senza modifiche. Il container deve contenere la logica per deserializzare la richiesta. Per informazioni sui formati definiti per gli algoritmi integrati, consulta Common Data Formats for Inference. Se stai creando il tuo container o utilizzando un container SageMaker AI Framework, puoi includere la logica per accettare un formato di richiesta a tua scelta.

Allo stesso modo, anche SageMaker AI restituisce la risposta senza modifiche e quindi il client deve deserializzare la risposta. Nel caso degli algoritmi integrati, essi restituiscono risposte in formati specifici. Se stai creando il tuo container o utilizzando un container SageMaker AI Framework, puoi includere la logica per restituire una risposta nel formato a tua scelta.

Usa la chiamata all'API Richiama endpoint per creare inferenze sul tuo endpoint.

Quando passi l'input come payload all'API InvokeEndpoint, devi specificare il tipo corretto di dati di input previsto dal tuo modello. Quando trasmetti un payload nella chiamata API InvokeEndpoint, i byte della richiesta vengono inoltrati direttamente al container del modello. Ad esempio, per un'immagine, puoi utilizzare application/jpeg per ContentType e assicurarti che il tuo modello possa eseguire inferenze su questo tipo di dati. Questo vale per JSON, CSV, video o qualsiasi altro tipo di input con cui potresti avere a che fare.

Un altro fattore da considerare sono i limiti delle dimensioni payload. I limiti di payload sono 25 MB per gli endpoint in tempo reale e 4 MB per gli endpoint serverless. È possibile dividere il video in più fotogrammi e richiamare l'endpoint con ogni fotogramma singolarmente. In alternativa, se il tuo caso d'uso lo consente, puoi inviare l'intero video nel payload utilizzando un endpoint asincrono, che supporta payload fino a 1 GB.

Per un esempio che mostra come eseguire l'inferenza della visione artificiale su video di grandi dimensioni con l'inferenza asincrona, consulta questo post del blog.

Inferenza in tempo reale

Le seguenti domande frequenti rispondono alle domande comuni su SageMaker AI Real-Time Inference.

R: È possibile creare un endpoint di SageMaker AI con strumenti supportati da AWS, come AWS SDK, SageMaker Python SDK, Console di gestione AWS, AWS CloudFormation e AWS Cloud Development Kit (AWS CDK).

Nella creazione degli endpoint sono presenti tre entità chiave: un modello SageMaker AI, una configurazione dell’endpoint di SageMaker AI e un endpoint di SageMaker AI. Il modello SageMaker AI rimanda ai dati e all’immagine del modello che stai utilizzando. La configurazione dell'endpoint definisce le varianti di produzione, che possono includere il tipo di istanza e il conteggio istanze. È quindi possibile utilizzare la chiamata API create_endpoint o la chiamata .deploy() per SageMaker AI per creare un endpoint utilizzando i metadati della configurazione dell’endpoint e del modello.

R: No, puoi usare i vari SDK AWS (consulta Invoke/Create per informazioni sugli SDK disponibili) oppure richiamare direttamente le API web corrispondenti.

R: Un endpoint multi-modello è un’opzione di inferenza in tempo reale fornita da SageMaker AI. Con gli endpoint multi-modello, puoi ospitare migliaia di modelli dietro un unico endpoint. Il server multi-modello è un framework open source per servire modelli di machine learning. Fornisce le funzionalità di front-end HTTP e gestione del modello richieste dagli endpoint multi-modello per ospitare più modelli all'interno di un singolo container, caricare modelli e scaricare modelli dal container in modo dinamico ed eseguire l'inferenza su un modello caricato specifico.

R: SageMaker AI Real-Time Inference supporta diverse architetture di implementazione di modelli, come endpoint multi-modello, endpoint multi-container e pipeline di inferenza seriale.

Endpoint multi-modello (MME): MME consente ai clienti di distribuire migliaia di modelli iperpersonalizzati in modo conveniente. Tutti i modelli sono distribuiti su un parco istanze di risorse condivise. MME funziona al meglio quando i modelli hanno dimensioni e latenza simili e appartengono allo stesso framework ML. Questi endpoint sono ideali quando non è necessario richiamare sempre lo stesso modello. È possibile caricare dinamicamente i rispettivi modelli sull’endpoint di SageMaker AI per soddisfare la richiesta.

Endpoint multi-container (MCE): MCE consente ai clienti di implementare 15 container diversi con diversi framework e funzionalità ML senza avvii a freddo utilizzando un solo endpoint di SageMaker. È possibile richiamare direttamente questi container. MCE è la soluzione ideale quando si desidera conservare tutti i modelli in memoria.

Pipeline di inferenza seriali (SIP): è possibile utilizzare SIP per concatenare 2‐15 container su un singolo endpoint. SIP è adatto soprattutto per combinare la preelaborazione e l'inferenza dei modelli in un unico endpoint e per operazioni a bassa latenza.

Inferenza serverless

Le seguenti domande frequenti rispondono a domande comuni su Inferenza serverless Amazon SageMaker.

R: Implementa modelli con Amazon SageMaker Serverless Inference è un'opzione di servizio di modelli serverless creata appositamente per semplificare la distribuzione e la scalabilità dei modelli ML. Gli endpoint di inferenza serverless avviano automaticamente le risorse di calcolo e le ridimensionano in base al traffico, eliminando la necessità di scegliere il tipo di istanza, eseguire la capacità di allocazione o gestire il dimensionamento. È inoltre possibile specificare i requisiti di memoria per l'endpoint serverless. Paghi solo per la durata dell'esecuzione del codice di inferenza e per la quantità di dati elaborati, non per i periodi di inattività.

R: Inferenza serverless semplifica l'esperienza degli sviluppatori eliminando la necessità di fornire capacità in anticipo e gestire le policy di dimensionamento. Inferenza senza serverless può dimensionare istantaneamente da decine a migliaia di inferenze in pochi secondi in base ai modelli di utilizzo, il che la rende ideale per le applicazioni ML con traffico intermittente o imprevedibile. Ad esempio, un servizio di chatbot utilizzato da un'azienda di elaborazione delle buste paga registra un aumento delle richieste alla fine del mese, mentre il traffico è intermittente per il resto del mese. Il provisioning delle istanze per l'intero mese in questi scenari non è conveniente, in quanto si finisce per pagare per i periodi di inattività.

Inferenza serverless aiuta a risolvere questi tipi di casi d'uso fornendo una scalabilità automatica e rapida pronta all'uso senza la necessità di prevedere il traffico in anticipo o gestire le policy di dimensionamento. Inoltre, paghi solo per il tempo di calcolo necessario per eseguire il codice di inferenza e per l'elaborazione di dati, il che lo rende ideale per carichi di lavoro con traffico intermittente.

R: L'endpoint serverless ha una dimensione RAM minima di 1024 MB (1 GB) e la dimensione RAM massima che puoi scegliere è di 6144 MB (6 GB). Le dimensioni memoria che puoi scegliere sono 1024 MB, 2048 MB, 3072 MB, 4096 MB, 5120 MB o 6144 MB. Inferenza Serverless assegna automaticamente le risorse di calcolo in modo proporzionale alla memoria selezionata. Se scegli una dimensione di memoria maggiore, il container ha accesso a più vCPU.

Scegli la dimensione della memoria dell'endpoint in base alle dimensioni del modello. In genere, la dimensione della memoria deve essere almeno pari a quella del modello. Potrebbe essere necessario eseguire dei benchmark per scegliere la giusta selezione di memoria per il modello in base agli SLA di latenza. Gli incrementi delle dimensioni memoria hanno prezzi diversi; consulta la pagina Prezzi di Amazon SageMaker per ulteriori informazioni.

Batch Transform

Le seguenti domande frequenti rispondono a domande comuni su SageMaker AI Batch Transform.

R: Per formati di file specifici, come CSV, RecordIO e TFRecord, SageMaker AI può suddividere i dati in mini batch a record singolo o multiplo e inviarli come payload al container del modello. Quando il valore di BatchStrategy è MultiRecord, SageMaker AI invia il numero massimo di record per ogni richiesta, fino al limite di MaxPayloadInMB. Quando il valore di BatchStrategy è SingleRecord, SageMaker AI invia singoli record per ogni richiesta.

R: Il timeout massimo per la trasformazione batch è di 3600 secondi. Le dimensioni massime del payload per un record (per mini batch) sono pari a 100 MB.

R: Se usi l'API CreateTransformJob, puoi ridurre il tempo necessario per completare i processi di trasformazione di batch utilizzando valori differenti per parametri come MaxPayloadInMB, MaxConcurrentTransforms o BatchStrategy. Il valore ideale per MaxConcurrentTransforms è pari al numero di processi di calcolo nel processo di trasformazione di batch. Se utilizzi la console SageMaker AI, puoi specificare questi valori di parametro ottimali nella sezione Configurazione aggiuntiva della pagina Configurazione dei processi di trasformazione in batch. SageMaker AI trova automaticamente le impostazioni dei parametri ottimali per gli algoritmi integrati. Per gli algoritmi personalizzati, è necessario fornire questi valori tramite un endpoint execution-parameters.

R: La trasformazione batch supporta file CSV e JSON.

Inferenza asincrona

Le seguenti domande frequenti rispondono a domande comuni su SageMaker AI Asynchronous Inference.

R: L’inferenza asincrona mette in coda le richieste in entrata e le elabora in modo asincrono. Questa opzione è ideale per le richieste con dimensioni payload elevate o tempi di elaborazione lunghi che devono essere elaborate non appena arrivano. Facoltativamente, è possibile configurare le impostazioni di dimensionamento automatico per ridurre il conteggio istanze a zero quando non si elaborano attivamente le richieste.

R: Amazon SageMaker AI supporta il dimensionamento automatico (auto scaling) dell’endpoint asincrono. Auto Scaling modifica dinamicamente il numero di istanze assegnate a un modello in risposta alle variazioni nel carico di lavoro. A differenza di altri modelli ospitati supportati da SageMaker AI, con l’inferenza asincrona puoi anche ridurre verticalmente a zero le istanze degli endpoint asincroni. Le richieste ricevute quando non ci sono istanze vengono messe in coda per l'elaborazione una volta che l'endpoint è stato dimensionato. Per ulteriori informazioni, consulta Autoscale an asynchronous endpoint.

Inferenza serverless Amazon SageMaker, inoltre, dimensiona automaticamente fino a zero. Tuttavia, non lo noterai. SageMaker AI, infatti, gestisce il dimensionamento degli endpoint serverless, ma se non si riscontra alcun traffico, si applica la stessa infrastruttura.