Implementa modelli per l'inferenza in tempo reale - Amazon SageMaker

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à.

Implementa modelli per l'inferenza in tempo reale

Importante

IAMLe politiche personalizzate che consentono ad Amazon SageMaker Studio o Amazon SageMaker Studio Classic di creare SageMaker risorse Amazon devono inoltre concedere le autorizzazioni per aggiungere tag a tali risorse. L'autorizzazione per aggiungere tag alle risorse è necessaria perché Studio e Studio Classic taggano automaticamente tutte le risorse che creano. Se una IAM politica consente a Studio e Studio Classic di creare risorse ma non consente l'aggiunta di tag, si possono verificare errori AccessDenied "" durante il tentativo di creare risorse. Per ulteriori informazioni, consulta Fornisci le autorizzazioni per etichettare le risorse SageMaker.

AWS Policy gestite per Amazon SageMakerche concedono le autorizzazioni per creare SageMaker risorse includono già le autorizzazioni per aggiungere tag durante la creazione di tali risorse.

Esistono diverse opzioni per implementare un modello utilizzando SageMaker i servizi di hosting. È possibile distribuire un modello in modo interattivo con Studio. SageMaker In alternativa, puoi distribuire un modello a livello di codice utilizzando un AWS SDK, come Python SageMaker o for SDK Python (SDKBoto3). È inoltre possibile eseguire la distribuzione utilizzando. AWS CLI

Prima di iniziare

Prima di distribuire un SageMaker modello, individuate e prendete nota di quanto segue:

  • Regione AWS Dove si trova il tuo bucket Amazon S3

  • Il URI percorso Amazon S3 in cui sono archiviati gli artefatti del modello

  • Il ruolo di IAM SageMaker

  • Il percorso del ECR URI registro Amazon Docker per l'immagine personalizzata che contiene il codice di inferenza o il framework e la versione di un'immagine Docker integrata supportata e da AWS

Per un elenco delle opzioni Servizi AWS disponibili in ciascuna di esse Regione AWS, consulta Region Maps and Edge Networks. Vedi Creazione di IAM ruoli per informazioni su come creare un IAM ruolo.

Importante

Il bucket Amazon S3 in cui sono archiviati gli artefatti del modello deve trovarsi nello Regione AWS stesso modello che stai creando.

Utilizzo condiviso delle risorse con più modelli

Puoi distribuire uno o più modelli su un endpoint con Amazon. SageMaker Quando più modelli condividono un endpoint, utilizzano congiuntamente le risorse ivi ospitate, come le istanze di calcolo ML e gli acceleratori. CPUs Il modo più flessibile per distribuire più modelli su un endpoint consiste nel definire ogni modello come componente di inferenza.

Componenti di inferenza

Un componente di inferenza è un oggetto di SageMaker hosting che è possibile utilizzare per distribuire un modello su un endpoint. Nelle impostazioni del componente di inferenza, specificate il modello, l'endpoint e il modo in cui il modello utilizza le risorse ospitate dall'endpoint. Per specificare il modello, è possibile specificare un oggetto SageMaker Model oppure specificare direttamente gli artefatti e l'immagine del modello.

Nelle impostazioni, è possibile ottimizzare l'utilizzo delle risorse personalizzando il modo in cui CPU i core, gli acceleratori e la memoria richiesti vengono allocati al modello. È possibile distribuire più componenti di inferenza su un endpoint, in cui ogni componente di inferenza contiene un modello e le esigenze di utilizzo delle risorse per quel modello.

Dopo aver distribuito un componente di inferenza, è possibile richiamare direttamente il modello associato quando si utilizza l'azione in. InvokeEndpoint SageMaker API

I componenti di inferenza offrono i seguenti vantaggi:

Flessibilità

Il componente di inferenza separa i dettagli dell'hosting del modello dall'endpoint stesso. Ciò offre maggiore flessibilità e controllo sul modo in cui i modelli vengono ospitati e serviti con un endpoint. È possibile ospitare più modelli sulla stessa infrastruttura e aggiungere o rimuovere modelli da un endpoint in base alle esigenze. È possibile aggiornare ogni modello in modo indipendente.

Scalabilità

È possibile specificare quante copie di ciascun modello ospitare e impostare un numero minimo di copie per garantire che il modello venga caricato nella quantità necessaria per soddisfare le richieste. È possibile ridimensionare qualsiasi copia del componente di inferenza fino a zero, lasciando spazio a un'altra copia da scalare verso l'alto.

SageMaker impacchetta i tuoi modelli come componenti di inferenza quando li distribuisci utilizzando:

  • SageMaker Studio Classic.

  • Il SageMaker Python SDK per distribuire un oggetto Model (su cui si imposta il tipo di endpoint). EndpointType.INFERENCE_COMPONENT_BASED

  • Gli InferenceComponent oggetti AWS SDK for Python (Boto3) per definire che si distribuiscono su un endpoint.

Distribuisci modelli con Studio SageMaker

Completa i seguenti passaggi per creare e distribuire il modello in modo interattivo tramite Studio. SageMaker Per ulteriori informazioni su Studio, consulta la documentazione di Studio. Per ulteriori informazioni dettagliate sui vari scenari di implementazione, consulta il blog Package and deploy classic ML model and simple LLMs with Amazon SageMaker — Part 2.

Prepara gli artefatti e le autorizzazioni

Completa questa sezione prima di creare un modello in Studio. SageMaker

Hai due opzioni per portare i tuoi artefatti e creare un modello in Studio:

  1. Potete portare un tar.gz archivio preconfezionato, che dovrebbe includere gli artefatti del modello, qualsiasi codice di inferenza personalizzato e tutte le dipendenze elencate in un file. requirements.txt

  2. SageMaker può impacchettare i tuoi artefatti per te. Dovete solo inserire gli artefatti del modello non elaborato e le eventuali dipendenze in un requirements.txt file e SageMaker potete fornirvi il codice di inferenza predefinito (oppure potete sovrascrivere il codice predefinito con il vostro codice di inferenza personalizzato). SageMakersupporta questa opzione per i seguenti framework:,. PyTorch XGBoost

Oltre a fornire il modello, il ruolo AWS Identity and Access Management (IAM) e un contenitore Docker (o il framework e la versione desiderati per i quali SageMaker disponga di un contenitore predefinito), devi anche concedere le autorizzazioni per creare e distribuire modelli tramite Studio. SageMaker

Dovresti avere la AmazonSageMakerFullAccesspolicy associata al tuo IAM ruolo in modo da poter accedere SageMaker e ad altri servizi pertinenti. Per visualizzare i prezzi dei tipi di istanza in Studio, devi anche allegare la AWS PriceListServiceFullAccesspolitica (o, se non desideri allegare l'intera politica, più specificamente, l'pricing:GetProductsazione).

Se scegli di caricare gli artefatti del modello durante la creazione di un modello (o di caricare un file di payload di esempio per i consigli di inferenza), devi creare un bucket Amazon S3. Il nome del bucket deve essere preceduto dalla parola. SageMaker Sono SageMaker accettabili anche le maiuscole alternative di: o. Sagemaker sagemaker

Ti consigliamo di utilizzare la convenzione di denominazione dei bucket. sagemaker-{Region}-{accountID} Questo bucket viene utilizzato per archiviare gli artefatti che carichi.

Dopo aver creato il bucket, allega la seguente politica CORS (condivisione delle risorse tra origini) al bucket:

[ { "AllowedHeaders": ["*"], "ExposeHeaders": ["Etag"], "AllowedMethods": ["PUT", "POST"], "AllowedOrigins": ['https://*.sagemaker.aws'], } ]

Puoi allegare una CORS policy a un bucket Amazon S3 utilizzando uno dei seguenti metodi:

Crea un modello implementabile

In questo passaggio, crei una versione implementabile del modello SageMaker fornendo gli artefatti insieme a specifiche aggiuntive, come il contenitore e il framework desiderati, qualsiasi codice di inferenza personalizzato e le impostazioni di rete.

Crea un modello distribuibile in Studio effettuando le seguenti operazioni: SageMaker

  1. Apri l'applicazione SageMaker Studio.

  2. Nel riquadro di navigazione a sinistra scegliere Models (Modelli).

  3. Scegli la scheda Modelli distribuibili.

  4. Nella pagina Modelli distribuibili, scegli Crea.

  5. Nella pagina Crea modello implementabile, nel campo Nome modello, inserisci un nome per il modello.

Ci sono molte altre sezioni da compilare nella pagina Crea modello implementabile.

La sezione relativa alla definizione del contenitore ha l'aspetto della schermata seguente:

Schermata della sezione di definizione del contenitore per la creazione di un modello in Studio.
Per la sezione Definizione del contenitore, procedi come segue:
  1. Per Tipo di contenitore, seleziona Contenitore precostruito se desideri utilizzare un contenitore SageMaker gestito o seleziona Porta il tuo contenitore se hai il tuo contenitore.

  2. Se hai selezionato Contenitore precostruito, seleziona il framework Container, la versione del Framework e il tipo di hardware che desideri utilizzare.

  3. Se hai selezionato Bring your own container, inserisci un ECR percorso Amazon per l'immagine del ECR percorso verso il contenitore.

Quindi, compila la sezione Artefatti, che assomiglia alla seguente schermata:

Schermata della sezione Artifacts per la creazione di un modello in Studio.
Per la sezione Artefatti, procedi come segue:
  1. Se utilizzi uno dei framework che SageMaker supportano il packaging degli artefatti del modello (PyTorch orXGBoost), allora per gli artefatti puoi scegliere l'opzione Carica artefatti. Con questa opzione, puoi semplicemente specificare gli artefatti del modello non elaborato, qualsiasi codice di inferenza personalizzato in tuo possesso e il file requirements.txt e gestirà l'imballaggio dell'archivio al posto tuo. SageMaker Esegui questa operazione:

    1. Per gli artefatti, seleziona Carica artefatti per continuare a fornire i tuoi file. Altrimenti, se disponi già di un tar.gz archivio che contiene i file del modello, il codice di inferenza e il requirements.txt file, seleziona Input S3 per gli artefatti preconfezionati. URI

    2. Se hai scelto di caricare i tuoi artefatti, per il bucket S3, inserisci il percorso Amazon S3 verso un bucket in cui desideri archiviare gli artefatti dopo averli imballati SageMaker per te. Quindi, completa i seguenti passaggi.

    3. Per Carica gli artefatti del modello, carica i file del modello.

    4. Per Codice di inferenza, seleziona Usa codice di inferenza predefinito se desideri utilizzare il codice di inferenza predefinito che SageMaker fornisce l'inferenza. Altrimenti, seleziona Carica codice di inferenza personalizzato per utilizzare il tuo codice di inferenza.

    5. Per Upload requirements.txt, carica un file di testo che elenchi tutte le dipendenze che desideri installare in fase di esecuzione.

  2. Se non utilizzate un framework che SageMaker supporti la creazione di pacchetti di elementi del modello, Studio vi mostra l'opzione Artefatti preconfezionati e dovete fornire tutti gli artefatti già impacchettati come archivio. tar.gz Esegui questa operazione:

    1. Per gli artefatti preconfezionati, seleziona Input S3 URI per gli artefatti del modello preconfezionati se il tuo archivio è già caricato su Amazon S3. tar.gz Seleziona Carica artefatti del modello preconfezionati se desideri caricare direttamente il tuo archivio su. SageMaker

    2. Se hai selezionato Input S3 URI per gli artefatti del modello preconfezionati, inserisci il percorso Amazon S3 all'archivio per S3. URI Altrimenti, seleziona e carica l'archivio dal tuo computer locale.

La sezione successiva è Sicurezza, che assomiglia alla seguente schermata:

Schermata della sezione Sicurezza per la creazione di un modello in Studio.
Per la sezione Sicurezza, procedi come segue:
  1. Per IAMruolo, inserisci ARN per un IAM ruolo.

  2. (Facoltativo) Per Virtual Private Cloud (VPC), puoi selezionare un Amazon VPC per archiviare la configurazione del modello e gli artefatti.

  3. (Facoltativo) Attiva l'interruttore di isolamento della rete se desideri limitare l'accesso a Internet del tuo contenitore.

Infine, puoi facoltativamente compilare la sezione Opzioni avanzate, che assomiglia alla seguente schermata:

Schermata della sezione Opzioni avanzate per la creazione di un modello in Studio.
(Facoltativo) Per la sezione Opzioni avanzate, effettuate le seguenti operazioni:
  1. Attiva l'opzione Consigli di istanze personalizzate se desideri eseguire un job Amazon SageMaker Inference Recommender sul tuo modello dopo la sua creazione. Inference Recommender è una funzionalità che fornisce i tipi di istanze consigliati per ottimizzare le prestazioni e i costi dell'inferenza. È possibile visualizzare questi consigli sulle istanze durante la preparazione alla distribuzione del modello.

  2. Per Aggiungi variabili di ambiente, inserisci una variabile di ambiente per il contenitore come coppie chiave-valore.

  3. Per Tag, inserisci tutti i tag come coppie chiave-valore.

  4. Dopo aver completato la configurazione del modello e del contenitore, scegli Crea modello implementabile.

Ora dovresti avere un modello in SageMaker Studio pronto per la distribuzione.

Distribuzione del modello

Infine, si distribuisce il modello configurato nel passaggio precedente su un HTTPS endpoint. È possibile distribuire un singolo modello o più modelli sull'endpoint.

Compatibilità tra modelli ed endpoint

Prima di poter distribuire un modello su un endpoint, è necessario che il modello e l'endpoint siano compatibili e abbiano gli stessi valori per le seguenti impostazioni:

  • Il ruolo IAM

  • AmazonVPC, comprese le sue sottoreti e i gruppi di sicurezza

  • L'isolamento della rete (abilitato o disabilitato)

Studio impedisce di distribuire modelli su endpoint incompatibili nei seguenti modi:

  • Se tenti di distribuire un modello su un nuovo endpoint, SageMaker configura l'endpoint con impostazioni iniziali compatibili. Se si interrompe la compatibilità modificando queste impostazioni, Studio mostra un avviso e impedisce la distribuzione.

  • Se tenti di eseguire la distribuzione su un endpoint esistente e tale endpoint è incompatibile, Studio mostra un avviso e impedisce la distribuzione.

  • Se si tenta di aggiungere più modelli a una distribuzione, Studio impedisce di distribuire modelli incompatibili tra loro.

Quando Studio mostra l'avviso sull'incompatibilità tra modello ed endpoint, puoi scegliere Visualizza dettagli nell'avviso per vedere quali impostazioni sono incompatibili.

Un modo per distribuire un modello consiste nel fare quanto segue in Studio:

  1. Apri l'applicazione SageMaker Studio.

  2. Nel riquadro di navigazione a sinistra scegliere Models (Modelli).

  3. Nella pagina Modelli, selezionate uno o più modelli dall'elenco dei SageMaker modelli.

  4. Seleziona Deploy (Implementa).

  5. Per il nome dell'endpoint, apri il menu a discesa. È possibile selezionare un endpoint esistente oppure creare un nuovo endpoint su cui distribuire il modello.

  6. Per Tipo di istanza, seleziona il tipo di istanza che desideri utilizzare per l'endpoint. Se in precedenza hai eseguito un job Inference Recommender per il modello, i tipi di istanza consigliati vengono visualizzati nell'elenco sotto il titolo Consigliati. Altrimenti, vedrai alcune istanze di Prospective che potrebbero essere adatte al tuo modello.

    Compatibilità del tipo di istanza per JumpStart

    Se stai distribuendo un JumpStart modello, Studio mostra solo i tipi di istanza supportati dal modello.

  7. Per il conteggio iniziale delle istanze, inserisci il numero iniziale di istanze che desideri fornire per il tuo endpoint.

  8. Per Numero massimo di istanze, specifica il numero massimo di istanze che l'endpoint può fornire quando aumenta per far fronte all'aumento del traffico.

  9. Se il modello che stai implementando è uno dei più utilizzati JumpStart LLMs dal Model Hub, l'opzione Configurazioni alternative viene visualizzata dopo i campi Tipo di istanza e Numero di istanze.

    Per le più diffuse JumpStart LLMs, AWS dispone di tipi di istanze pre-confrontati per ottimizzare i costi o le prestazioni. Questi dati possono aiutarti a decidere quale tipo di istanza utilizzare per la distribuzione di. LLM Scegli Configurazioni alternative per aprire una finestra di dialogo che contiene i dati pre-confrontati. Il pannello ha l'aspetto della seguente schermata:

    Schermata del riquadro Configurazioni alternative

    Nella casella Configurazioni alternative, procedi come segue:

    1. Selezione di un tipo di istanza. Puoi scegliere Costo all'ora o Prestazioni migliori per visualizzare i tipi di istanze che ottimizzano i costi o le prestazioni per il modello specificato. Puoi anche scegliere Altre istanze supportate per visualizzare un elenco di altri tipi di istanze compatibili con il JumpStart modello. Notate che la selezione di un tipo di istanza qui sovrascrive qualsiasi selezione di istanza precedente specificata nel passaggio 6.

    2. (Facoltativo) Attiva l'interruttore Personalizza la configurazione selezionata per specificare il totale massimo di token (il numero massimo di token che desideri consentire, che è la somma dei token di input e dell'output generato dal modello), la lunghezza massima del token di input (il numero massimo di token che desideri consentire per l'immissione di ogni richiesta) e il numero massimo di richieste simultanee (il numero massimo di richieste che il modello può elaborare alla volta).

    3. Scegli Seleziona per confermare il tipo di istanza e le impostazioni di configurazione.

  10. Il campo Modello dovrebbe già essere compilato con il nome del modello o dei modelli che stai distribuendo. Puoi scegliere Aggiungi modello per aggiungere altri modelli alla distribuzione. Per ogni modello che aggiungi, compila i seguenti campi:

    1. Per Numero di CPU core, inserisci CPU i core che desideri dedicare all'utilizzo del modello.

    2. Per Numero minimo di copie, inserisci il numero minimo di copie del modello che desideri ospitare sull'endpoint in un dato momento.

    3. Per CPUMemoria minima (MB), inserisci la quantità minima di memoria (in MB) richiesta dal modello.

    4. Per CPUMemoria massima (MB), inserisci la quantità massima di memoria (in MB) che desideri consentire al modello di utilizzare.

  11. (Facoltativo) Per le opzioni avanzate, effettuate le seguenti operazioni:

    1. Per il IAMruolo, utilizzate il ruolo di SageMaker IAM esecuzione predefinito o specificate il vostro ruolo con le autorizzazioni necessarie. Tieni presente che questo IAM ruolo deve essere lo stesso che hai specificato durante la creazione del modello implementabile.

    2. Per Virtual Private Cloud (VPC), puoi specificare un ambiente VPC in cui ospitare il tuo endpoint.

    3. Per KMSChiave di crittografia, selezionate una AWS KMS chiave per crittografare i dati sul volume di archiviazione collegato all'istanza di calcolo ML che ospita l'endpoint.

    4. Attiva l'interruttore Abilita l'isolamento della rete per limitare l'accesso a Internet del contenitore.

    5. Per la configurazione del timeout, inserisci i valori per i campi Model data download timeout (secondi) e Container startup health check timeout (secondi). Questi valori determinano la quantità massima di tempo che SageMaker consente rispettivamente di scaricare il modello nel contenitore e avviare il contenitore.

    6. Per Tag, inserite tutti i tag come coppie chiave-valore.

    Nota

    SageMaker configura il IAM ruolo e VPC le impostazioni di isolamento della rete con valori iniziali compatibili con il modello che stai distribuendo. Se interrompi la compatibilità modificando queste impostazioni, Studio mostra un avviso e impedisce la distribuzione.

Dopo aver configurato le opzioni, la pagina dovrebbe apparire come nella schermata seguente.

Schermata della pagina del modello Deploy in Studio.

Dopo aver configurato la distribuzione, scegli Deploy per creare l'endpoint e distribuire il modello.

Implementa modelli con Python SDKs

Usando SageMaker PythonSDK, puoi creare il tuo modello in due modi. Il primo consiste nel creare un oggetto modello dalla ModelBuilder classe Model or. Se utilizzi la Model classe per creare il tuo Model oggetto, devi specificare il pacchetto del modello o il codice di inferenza (a seconda del server modello), gli script per gestire la serializzazione e la deserializzazione dei dati tra il client e il server ed eventuali dipendenze da caricare su Amazon S3 per il consumo. Il secondo modo per creare il modello consiste nel fornire artefatti del modello o ModelBuilder codice di inferenza. ModelBuilderacquisisce automaticamente le dipendenze, deduce le funzioni di serializzazione e deserializzazione necessarie e impacchetta le dipendenze per creare l'oggetto. Model Per ulteriori informazioni su ModelBuilder, consulta Crea un modello in Amazon SageMaker con ModelBuilder.

La sezione seguente descrive entrambi i metodi per creare il modello e distribuire l'oggetto del modello.

Configurazione

Gli esempi seguenti preparano il processo di distribuzione del modello. Importano le librerie necessarie e definiscono l'S3 URL che individua gli artefatti del modello.

SageMaker Python SDK
Esempio dichiarazioni di importazione

L'esempio seguente importa moduli da SageMaker PythonSDK, for Python (Boto3) e Python Standard Library. SDK Questi moduli forniscono metodi utili che consentono di distribuire i modelli e vengono utilizzati dagli altri esempi che seguono.

import boto3 from datetime import datetime from sagemaker.compute_resource_requirements.resource_requirements import ResourceRequirements from sagemaker.predictor import Predictor from sagemaker.enums import EndpointType from sagemaker.model import Model from sagemaker.session import Session
boto3 inference components
Esempio dichiarazioni di importazione

L'esempio seguente importa i moduli dalla libreria SDK for Python (Boto3) e dalla Python Standard Library. Questi moduli forniscono metodi utili che consentono di distribuire i modelli e vengono utilizzati dagli altri esempi che seguono.

import boto3 import botocore import sys import time
boto3 models (without inference components)
Esempio dichiarazioni di importazione

L'esempio seguente importa i moduli dalla libreria SDK for Python (Boto3) e dalla Python Standard Library. Questi moduli forniscono metodi utili che consentono di distribuire i modelli e vengono utilizzati dagli altri esempi che seguono.

import boto3 import botocore import datetime from time import gmtime, strftime
Esempio artefatto modello URL

Il codice seguente crea un esempio di Amazon URL S3. URLindividua gli artefatti del modello per un modello pre-addestrato in un bucket Amazon S3.

# Create a variable w/ the model S3 URL # The name of your S3 bucket: s3_bucket = "amzn-s3-demo-bucket" # The directory within your S3 bucket your model is stored in: bucket_prefix = "sagemaker/model/path" # The file name of your model artifact: model_filename = "my-model-artifact.tar.gz" # Relative S3 path: model_s3_key = f"{bucket_prefix}/"+model_filename # Combine bucket name, model file name, and relate S3 path to create S3 model URL: model_url = f"s3://{s3_bucket}/{model_s3_key}"

La versione completa di Amazon S3 URL è archiviata nella variabilemodel_url, utilizzata negli esempi seguenti.

Panoramica

Esistono diversi modi per distribuire modelli con Python o SDK for SageMaker SDK Python (Boto3). Le sezioni seguenti riassumono i passaggi da completare per diversi approcci possibili. Questi passaggi sono illustrati dagli esempi che seguono.

SageMaker Python SDK

Usando SageMaker PythonSDK, puoi creare il tuo modello in uno dei seguenti modi:

  • Crea un oggetto modello dalla Model classe: devi specificare il pacchetto del modello o il codice di inferenza (a seconda del server modello), gli script per gestire la serializzazione e la deserializzazione dei dati tra il client e il server ed eventuali dipendenze da caricare su Amazon S3 per il consumo.

  • Crea un oggetto modello dalla ModelBuilder classe: fornisci artefatti del modello o codice di inferenza e acquisisci ModelBuilder automaticamente le tue dipendenze, deduce le funzioni di serializzazione e deserializzazione necessarie e impacchetta le tue dipendenze per creare il tuo Model oggetto.

    Per ulteriori informazioni su ModelBuilder, consulta Crea un modello in Amazon SageMaker con ModelBuilder. Per ulteriori informazioni, puoi anche consultare il blog Package and deploy classic ML model and LLMs easily with SageMaker — Part 1.

Gli esempi che seguono descrivono entrambi i metodi per creare il modello e distribuire l'oggetto del modello. Per distribuire un modello in questi modi, è necessario completare i seguenti passaggi:

  1. Definite le risorse dell'endpoint da allocare al modello con un oggetto. ResourceRequirements

  2. Crea un oggetto modello dalle classi Model orModelBuilder. L'ResourceRequirementsoggetto è specificato nelle impostazioni del modello.

  3. Distribuite il modello su un endpoint utilizzando il deploy metodo dell'Modeloggetto.

boto3 inference components

Gli esempi che seguono mostrano come assegnare un modello a un componente di inferenza e quindi distribuire il componente di inferenza a un endpoint. Per distribuire un modello in questo modo, è necessario completare i seguenti passaggi:

  1. (Facoltativo) Create un oggetto SageMaker modello utilizzando il create_modelmetodo.

  2. Specificate le impostazioni per l'endpoint creando un oggetto di configurazione dell'endpoint. Per crearne uno, si usa il create_endpoint_configmetodo.

  3. Crea il tuo endpoint utilizzando il create_endpointmetodo e, nella tua richiesta, fornisci la configurazione dell'endpoint che hai creato.

  4. Crea un componente di inferenza utilizzando il metodo. create_inference_component Nelle impostazioni, specificate un modello effettuando una delle seguenti operazioni:

    • Specificare un oggetto SageMaker del modello

    • Specificare l'immagine URI del modello e S3 URL

    È inoltre possibile allocare le risorse degli endpoint al modello. Creando il componente di inferenza, si distribuisce il modello sull'endpoint. È possibile distribuire più modelli su un endpoint creando più componenti di inferenza, uno per ogni modello.

boto3 models (without inference components)

Gli esempi che seguono mostrano come creare un oggetto modello e quindi distribuire il modello su un endpoint. Per distribuire un modello in questo modo, è necessario completare i seguenti passaggi:

  1. Create un SageMaker modello utilizzando il create_modelmetodo.

  2. Specificate le impostazioni per l'endpoint creando un oggetto di configurazione dell'endpoint. Per crearne uno, si usa il create_endpoint_configmetodo. Nella configurazione dell'endpoint, assegnate l'oggetto del modello a una variante di produzione.

  3. Crea il tuo endpoint utilizzando il metodo. create_endpoint Nella richiesta, fornisci la configurazione dell'endpoint che hai creato.

    Quando crei l'endpoint, effettua il SageMaker provisioning delle risorse dell'endpoint e distribuisce il modello sull'endpoint.

Configura

Gli esempi seguenti configurano le risorse necessarie per distribuire un modello su un endpoint.

SageMaker Python SDK

L'esempio seguente assegna le risorse dell'endpoint a un modello con un oggetto. ResourceRequirements Queste risorse includono CPU core, acceleratori e memoria. Quindi, l'esempio crea un oggetto modello dalla Model classe. In alternativa, è possibile creare un oggetto modello istanziando la ModelBuilderclasse ed eseguendobuild: questo metodo è illustrato anche nell'esempio. ModelBuilderfornisce un'interfaccia unificata per il packaging del modello e, in questo caso, prepara un modello per l'implementazione di un modello su larga scala. L'esempio utilizza ModelBuilder per costruire un modello Hugging Face. (Puoi anche passare un modello). JumpStart Una volta creato il modello, è possibile specificare i requisiti di risorse nell'oggetto del modello. Nella fase successiva, si utilizza questo oggetto per distribuire il modello su un endpoint.

resources = ResourceRequirements( requests = { "num_cpus": 2, # Number of CPU cores required: "num_accelerators": 1, # Number of accelerators required "memory": 8192, # Minimum memory required in Mb (required) "copies": 1, }, limits = {}, ) now = datetime.now() dt_string = now.strftime("%d-%m-%Y-%H-%M-%S") model_name = "my-sm-model"+dt_string # build your model with Model class model = Model( name = "model-name", image_uri = "image-uri", model_data = model_url, role = "arn:aws:iam::111122223333:role/service-role/role-name", resources = resources, predictor_cls = Predictor, ) # Alternate mechanism using ModelBuilder # uncomment the following section to use ModelBuilder /* model_builder = ModelBuilder( model="<HuggingFace-ID>", # like "meta-llama/Llama-2-7b-hf" schema_builder=SchemaBuilder(sample_input,sample_output), env_vars={ "HUGGING_FACE_HUB_TOKEN": "<HuggingFace_token>}" } ) # build your Model object model = model_builder.build() # create a unique name from string 'mb-inference-component' model.model_name = unique_name_from_base("mb-inference-component") # assign resources to your model model.resources = resources */
boto3 inference components

L'esempio seguente configura un endpoint con il metodo. create_endpoint_config Assegnate questa configurazione a un endpoint quando lo create. Nella configurazione, si definiscono una o più varianti di produzione. Per ogni variante, puoi scegliere il tipo di istanza di cui desideri che Amazon SageMaker effettui il provisioning e puoi abilitare la scalabilità gestita delle istanze.

endpoint_config_name = "endpoint-config-name" endpoint_name = "endpoint-name" inference_component_name = "inference-component-name" variant_name = "variant-name" sagemaker_client.create_endpoint_config( EndpointConfigName = endpoint_config_name, ExecutionRoleArn = "arn:aws:iam::111122223333:role/service-role/role-name", ProductionVariants = [ { "VariantName": variant_name, "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1, "ManagedInstanceScaling": { "Status": "ENABLED", "MinInstanceCount": 1, "MaxInstanceCount": 2, }, } ], )
boto3 models (without inference components)
Esempio definizione del modello

L'esempio seguente definisce un SageMaker modello con il create_model metodo contenuto in AWS SDK for Python (Boto3).

model_name = "model-name" create_model_response = sagemaker_client.create_model( ModelName = model_name, ExecutionRoleArn = "arn:aws:iam::111122223333:role/service-role/role-name", PrimaryContainer = { "Image": "image-uri", "ModelDataUrl": model_url, } )

Questo esempio specifica quanto segue:

  • ModelName: un nome per il modello (in questo esempio viene memorizzato come una variabile di stringa chiamata model_name).

  • ExecutionRoleArn: Amazon Resource Name (ARN) del IAM ruolo che Amazon SageMaker può assumere per accedere agli artefatti del modello e alle immagini Docker per la distribuzione su istanze di calcolo ML o per lavori di trasformazione in batch.

  • PrimaryContainer: il percorso dell'immagine docker principale contenente il codice di inferenza, gli artefatti associati e la mappa dell'ambiente personalizzata che il codice di inferenza utilizza quando il modello è distribuito per le previsioni.

Esempio Configurazione dell'endpoint

L'esempio seguente configura un endpoint con il metodo. create_endpoint_config Amazon SageMaker utilizza questa configurazione per distribuire modelli. Nella configurazione, identifichi uno o più modelli, creati con il create_model metodo, per distribuire le risorse di cui desideri che Amazon SageMaker fornisca.

endpoint_config_response = sagemaker_client.create_endpoint_config( EndpointConfigName = "endpoint-config-name", # List of ProductionVariant objects, one for each model that you want to host at this endpoint: ProductionVariants = [ { "VariantName": "variant-name", # The name of the production variant. "ModelName": model_name, "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 # Number of instances to launch initially. } ] )

Questo esempio specifica le seguenti chiavi per il ProductionVariants campo:

Implementazione

Gli esempi seguenti implementano un modello su un endpoint.

SageMaker Python SDK

L'esempio seguente distribuisce il modello su un HTTPS endpoint in tempo reale con il deploy metodo dell'oggetto del modello. Se si specifica un valore per l'resourcesargomento sia per la creazione che per la distribuzione del modello, le risorse specificate per la distribuzione hanno la precedenza.

predictor = model.deploy( initial_instance_count = 1, instance_type = "ml.p4d.24xlarge", endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, resources = resources, )

Per il instance_type campo, l'esempio specifica il nome del tipo di EC2 istanza Amazon per il modello. Per il initial_instance_count campo, specifica il numero iniziale di istanze su cui eseguire l'endpoint.

Il seguente esempio di codice mostra un altro caso in cui si distribuisce un modello su un endpoint e quindi si distribuisce un altro modello sullo stesso endpoint. In questo caso è necessario fornire lo stesso nome di endpoint ai metodi di entrambi i modelli. deploy

# Deploy the model to inference-component-based endpoint falcon_predictor = falcon_model.deploy( initial_instance_count = 1, instance_type = "ml.p4d.24xlarge", endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, endpoint_name = "<endpoint_name>" resources = resources, ) # Deploy another model to the same inference-component-based endpoint llama2_predictor = llama2_model.deploy( # resources already set inside llama2_model endpoint_type = EndpointType.INFERENCE_COMPONENT_BASED, endpoint_name = "<endpoint_name>" # same endpoint name as for falcon model )
boto3 inference components

Una volta ottenuta la configurazione dell'endpoint, utilizzate il metodo create_endpoint per creare l'endpoint. Il nome dell'endpoint deve essere univoco all'interno e all'interno del tuo account. Regione AWS AWS

L'esempio seguente crea un endpoint utilizzando la configurazione dell'endpoint specificata nella richiesta. Amazon SageMaker utilizza l'endpoint per fornire risorse.

sagemaker_client.create_endpoint( EndpointName = endpoint_name, EndpointConfigName = endpoint_config_name, )

Dopo aver creato un endpoint, puoi implementarne uno o più modelli creando componenti di inferenza. L'esempio seguente ne crea uno con il metodo. create_inference_component

sagemaker_client.create_inference_component( InferenceComponentName = inference_component_name, EndpointName = endpoint_name, VariantName = variant_name, Specification = { "Container": { "Image": "image-uri", "ArtifactUrl": model_url, }, "ComputeResourceRequirements": { "NumberOfCpuCoresRequired": 1, "MinMemoryRequiredInMb": 1024 } }, RuntimeConfig = {"CopyCount": 2} )
boto3 models (without inference components)
Esempio implementazione

Fornire la configurazione dell'endpoint a. SageMaker Il servizio avvia le istanze di calcolo ML e distribuisce il modello o i modelli come specificato nella configurazione.

Una volta completata la configurazione del modello e dell'endpoint, utilizzate il metodo create_endpoint per creare l'endpoint. Il nome dell'endpoint deve essere univoco all'interno e all'interno del tuo account. Regione AWS AWS

L'esempio seguente crea un endpoint utilizzando la configurazione dell'endpoint specificata nella richiesta. Amazon SageMaker utilizza l'endpoint per fornire risorse e distribuire modelli.

create_endpoint_response = sagemaker_client.create_endpoint( # The endpoint name must be unique within an AWS Region in your AWS account: EndpointName = "endpoint-name" # The name of the endpoint configuration associated with this endpoint: EndpointConfigName = "endpoint-config-name")

Implementa modelli con AWS CLI

È possibile distribuire un modello su un endpoint utilizzando. AWS CLI

Panoramica

Quando si distribuisce un modello con AWS CLI, è possibile distribuirlo con o senza utilizzare un componente di inferenza. Le sezioni seguenti riepilogano i comandi eseguiti per entrambi gli approcci. Questi comandi sono illustrati dagli esempi che seguono.

With inference components

Per distribuire un modello con un componente di inferenza, procedi come segue:

  1. (Facoltativo) Create un modello con il create-modelcomando.

  2. Specificate le impostazioni per l'endpoint creando una configurazione dell'endpoint. Per crearne una, esegui il create-endpoint-configcomando.

  3. Crea il tuo endpoint utilizzando il create-endpointcomando. Nel corpo del comando, specifica la configurazione dell'endpoint che hai creato.

  4. Crea un componente di inferenza utilizzando il create-inference-component comando. Nelle impostazioni, specificate un modello effettuando una delle seguenti operazioni:

    • Specificare un oggetto SageMaker del modello

    • Specificare l'immagine URI del modello e S3 URL

    È inoltre possibile allocare le risorse degli endpoint al modello. Creando il componente di inferenza, si distribuisce il modello sull'endpoint. È possibile distribuire più modelli su un endpoint creando più componenti di inferenza, uno per ogni modello.

Without inference components

Per distribuire un modello senza utilizzare un componente di inferenza, procedi come segue:

  1. Create un SageMaker modello utilizzando il create-modelcomando.

  2. Specificate le impostazioni per l'endpoint creando un oggetto di configurazione dell'endpoint. Per crearne uno, si usa il create-endpoint-configcomando. Nella configurazione dell'endpoint, si assegna l'oggetto del modello a una variante di produzione.

  3. Crea il tuo endpoint utilizzando il comando. create-endpoint Nel corpo del comando, specifica la configurazione dell'endpoint che hai creato.

    Quando crei l'endpoint, effettua il SageMaker provisioning delle risorse dell'endpoint e distribuisce il modello sull'endpoint.

Configura

Gli esempi seguenti configurano le risorse necessarie per distribuire un modello su un endpoint.

With inference components
Esempio create-endpoint-config comando

L'esempio seguente crea una configurazione dell'endpoint con il create-endpoint-configcomando.

aws sagemaker create-endpoint-config \ --endpoint-config-name endpoint-config-name \ --execution-role-arn arn:aws:iam::111122223333:role/service-role/role-name\ --production-variants file://production-variants.json

In questo esempio, il file production-variants.json definisce una variante di produzione con quanto segue: JSON

[ { "VariantName": "variant-name", "ModelName": "model-name", "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 } ]

Se il comando ha esito positivo, AWS CLI risponde con la ARN per la risorsa creata.

{ "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint-config/endpoint-config-name" }
Without inference components
Esempio comando create-model

L'esempio seguente crea un modello con il comando create-model.

aws sagemaker create-model \ --model-name model-name \ --execution-role-arn arn:aws:iam::111122223333:role/service-role/role-name \ --primary-container "{ \"Image\": \"image-uri\", \"ModelDataUrl\": \"model-s3-url\"}"

Se il comando ha esito positivo, AWS CLI risponde con il ARN per la risorsa creata.

{ "ModelArn": "arn:aws:sagemaker:us-west-2:111122223333:model/model-name" }
Esempio create-endpoint-config comando

L'esempio seguente crea una configurazione dell'endpoint con il create-endpoint-configcomando.

aws sagemaker create-endpoint-config \ --endpoint-config-name endpoint-config-name \ --production-variants file://production-variants.json

In questo esempio, il file production-variants.json definisce una variante di produzione con quanto segue: JSON

[ { "VariantName": "variant-name", "ModelName": "model-name", "InstanceType": "ml.p4d.24xlarge", "InitialInstanceCount": 1 } ]

Se il comando ha esito positivo, AWS CLI risponde con la ARN per la risorsa creata.

{ "EndpointConfigArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint-config/endpoint-config-name" }

Implementazione

Gli esempi seguenti distribuiscono un modello su un endpoint.

With inference components
Esempio comando create-endpoint

L'esempio seguente crea un endpoint con il comando create-endpoint.

aws sagemaker create-endpoint \ --endpoint-name endpoint-name \ --endpoint-config-name endpoint-config-name

Se il comando ha esito positivo, AWS CLI risponde con il for per la ARN risorsa creata.

{ "EndpointArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint/endpoint-name" }
Esempio create-inference-component comando

L'esempio seguente crea un componente di inferenza con il create-inference-component comando.

aws sagemaker create-inference-component \ --inference-component-name inference-component-name \ --endpoint-name endpoint-name \ --variant-name variant-name \ --specification file://specification.json \ --runtime-config "{\"CopyCount\": 2}"

In questo esempio, il file specification.json definisce il contenitore e le risorse di calcolo con quanto segue: JSON

{ "Container": { "Image": "image-uri", "ArtifactUrl": "model-s3-url" }, "ComputeResourceRequirements": { "NumberOfCpuCoresRequired": 1, "MinMemoryRequiredInMb": 1024 } }

Se il comando ha esito positivo, AWS CLI risponde con la ARN per la risorsa che hai creato.

{ "InferenceComponentArn": "arn:aws:sagemaker:us-west-2:111122223333:inference-component/inference-component-name" }
Without inference components
Esempio comando create-endpoint

L'esempio seguente crea un endpoint con il comando create-endpoint.

aws sagemaker create-endpoint \ --endpoint-name endpoint-name \ --endpoint-config-name endpoint-config-name

Se il comando ha esito positivo, AWS CLI risponde con il for per la ARN risorsa creata.

{ "EndpointArn": "arn:aws:sagemaker:us-west-2:111122223333:endpoint/endpoint-name" }