Creazione di un endpoint serverless - 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à.

Creazione di un endpoint serverless

Importante

Le politiche IAM 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 policy IAM 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 danno i permessi per creare SageMaker risorse includono già le autorizzazioni per aggiungere tag durante la creazione di tali risorse.

Per creare un endpoint serverless, puoi utilizzare la SageMaker console Amazon, le API o il. AWS CLIÈ possibile creare un endpoint serverless utilizzando un processo simile a quello di un endpoint in tempo reale.

Creazione di un modello

Per creare il modello è necessario fornire la posizione degli artefatti del modello e l'immagine del container. Puoi anche utilizzare una versione del modello da SageMaker Model Registry. Gli esempi nelle sezioni seguenti mostrano come creare un modello utilizzando l'CreateModelAPI, il Model Registry e la SageMakerconsole Amazon.

Per creare un modello (utilizzando Model Registry)

Model Registry è una funzionalità SageMaker che ti aiuta a catalogare e gestire le versioni del tuo modello da utilizzare nelle pipeline ML. Per utilizzare Model Registry con Serverless Inference è necessario prima registrare una versione del modello in un gruppo di modelli di Model Registry. Per informazioni su come registrare un modello in Model Registry, seguire le procedure in Creazione di un gruppo di modelli e Registrazione di una versione del modello.

L'esempio seguente richiede l'ARN di una versione registrata del modello e utilizza l'AWS SDK for Python (Boto3) per chiamare l'API. CreateModel Per Serverless Inference, Model Registry è attualmente supportato solo dall' AWS SDK for Python (Boto3). Per l'esempio, specificare i valori seguenti:

  • Per model_name, inserire un nome per il modello.

  • Infattisagemaker_role, puoi utilizzare il ruolo SageMaker creato di default o un ruolo SageMaker IAM personalizzato dal passaggio 4 della sezione. Prerequisiti

  • Per ModelPackageName, specificare l'ARN per la versione del modello, che deve essere registrata su un gruppo di modelli in Model Registry.

#Setup import boto3 import sagemaker region = boto3.Session().region_name client = boto3.client("sagemaker", region_name=region) #Role to give SageMaker permission to access AWS services. sagemaker_role = sagemaker.get_execution_role() #Specify a name for the model model_name = "<name-for-model>" #Specify a Model Registry model version container_list = [ { "ModelPackageName": <model-version-arn> } ] #Create the model response = client.create_model( ModelName = model_name, ExecutionRoleArn = sagemaker_role, container_list )

Per creare un modello (utilizzando l'API)

L'esempio seguente utilizza l'AWS SDK for Python (Boto3) per chiamare l'API. CreateModel Specifica i seguenti valori:

  • sagemaker_role,Puoi infatti utilizzare il ruolo SageMaker creato di default o un ruolo SageMaker IAM personalizzato dal passaggio 4 della sezione. Prerequisiti

  • Per model_url, specificare l'URI di Amazon S3 per il proprio modello.

  • Per container, recuperare il container che si desidera utilizzare tramite il relativo percorso Amazon ECR. Questo esempio utilizza un contenitore SageMaker XGBoost fornito. Se non hai selezionato un SageMaker contenitore o non ne hai portato uno tuo, consulta il passaggio 6 della Prerequisiti sezione per ulteriori informazioni.

  • Per model_name, inserire un nome per il modello.

#Setup import boto3 import sagemaker region = boto3.Session().region_name client = boto3.client("sagemaker", region_name=region) #Role to give SageMaker permission to access AWS services. sagemaker_role = sagemaker.get_execution_role() #Get model from S3 model_url = "s3://DOC-EXAMPLE-BUCKET/models/model.tar.gz" #Get container image (prebuilt example) from sagemaker import image_uris container = image_uris.retrieve("xgboost", region, "0.90-1") #Create model model_name = "<name-for-model>" response = client.create_model( ModelName = model_name, ExecutionRoleArn = sagemaker_role, Containers = [{ "Image": container, "Mode": "SingleModel", "ModelDataUrl": model_url, }] )

Per creare un modello (utilizzando la console)

  1. Accedi alla SageMakerconsole Amazon.

  2. Nella scheda di navigazione, scegliere Inferenza.

  3. Dopodiché, scegliere Modelli.

  4. Scegliere Crea modello.

  5. In Nome modello, inserisci un nome per il modello che sia univoco per il tuo account e Regione AWS.

  6. Per il ruolo IAM, seleziona un ruolo IAM che hai già creato (vediPrerequisiti) o consenti SageMaker di crearne uno per te.

  7. In Definizione container 1, per Opzioni di input del container, selezionare Fornisci gli artefatti del modello e la posizione di input.

  8. Per Fornisci artefatti del modello e opzioni di immagine di inferenza, selezionare Utilizza un singolo modello.

  9. Per Posizione dell'immagine del codice di inferenza, inserisci un percorso Amazon ECR verso un container. L'immagine deve essere un'immagine SageMaker fornita da prime parti (ad esempio TensorFlow, XGBoost) o un'immagine che risiede in un repository Amazon ECR all'interno dello stesso account in cui si sta creando l'endpoint. Se non disponi di un container, torna alla fase 6 della sezione Prerequisiti per ulteriori informazioni.

  10. Per Posizione degli artefatti dei modelli, inserire l'URI di Amazon S3 nel proprio modello ML. Ad esempio, s3://DOC-EXAMPLE-BUCKET/models/model.tar.gz.

  11. (Facoltativo) Per Tag, aggiungere coppie chiave-valore per creare metadati per il modello.

  12. Scegli Crea modello.

Creare una configurazione endpoint

Dopo aver creato un modello, creare una configurazione endpoint. È quindi possibile distribuire il modello utilizzando le specifiche nella configurazione endpoint. Nella configurazione, si specifica se si desidera un endpoint in tempo reale o serverless. Per creare una configurazione endpoint serverless, puoi utilizzare la SageMaker console Amazon, l'CreateEndpointConfigAPI o il. AWS CLI Gli approcci all'API e alla console sono descritti nelle seguenti sezioni.

Per creare una configurazione endpoint (mediante l’API)

L'esempio seguente utilizza l'AWS SDK for Python (Boto3) per chiamare l'API. CreateEndpointConfig Specifica i seguenti valori:

  • Per EndpointConfigName, scegliere un nome per la configurazione endpoint. Il nome deve essere univoco all'interno dell’account in una Regione.

  • (Facoltativo) PerKmsKeyId, usa l'ID chiave, l'ARN della chiave, il nome alias o l'alias ARN per qualsiasi AWS KMS chiave che desideri utilizzare. SageMaker utilizza questa chiave per crittografare la tua immagine Amazon ECR.

  • Per ModelName, usare il nome del modello da distribuire. Dovrebbe essere lo stesso modello usato nella fase Creazione di un modello.

  • Per ServerlessConfig:

    • Imposta MemorySizeInMB su 2048. Per questo esempio, abbiamo impostato le dimensioni della memoria su 2048 MB, ma è possibile scegliere uno dei valori seguenti: 1024 MB, 2048 MB, 3072 MB, 4096 MB, 5120 MB o 6144 MB.

    • Imposta MaxConcurrency su 20. Per questo esempio, impostiamo il numero massimo di simultaneità su 20. Il numero massimo di richiami simultanei che è possibile impostare per un endpoint serverless è 200, mentre il valore minimo che è possibile scegliere è 1.

    • (Facoltativo) Per utilizzare Concorrenza assegnata, impostare ProvisionedConcurrency su 10. Per questo esempio, impostiamo Concorrenza assegnata su 10. Il numero ProvisionedConcurrency per un endpoint serverless deve essere inferiore o uguale al numero MaxConcurrency. È possibile lasciarlo vuoto se si desidera utilizzare l'endpoint Serverless Inference su richiesta. È possibile scalare dinamicamente Effettua il provisioning di simultaneità. Per ulteriori informazioni, consulta Dimensionamento automatico del provisioning simultaneo per un endpoint serverless.

response = client.create_endpoint_config( EndpointConfigName="<your-endpoint-configuration>", KmsKeyId="arn:aws:kms:us-east-1:123456789012:key/143ef68f-76fd-45e3-abba-ed28fc8d3d5e", ProductionVariants=[ { "ModelName": "<your-model-name>", "VariantName": "AllTraffic", "ServerlessConfig": { "MemorySizeInMB": 2048, "MaxConcurrency": 20, "ProvisionedConcurrency": 10, } } ] )

Per creare una configurazione endpoint (mediante la console)

  1. Accedi alla SageMakerconsole Amazon.

  2. Nella scheda di navigazione, scegliere Inferenza.

  3. Quindi, scegliere Configurazioni endpoint.

  4. Scegliere Crea configurazione endpoint.

  5. Per Nome configurazione endpoint, inserire un nome univoco all'interno dell'account in una Regione.

  6. Per Tipo di endpoint, selezionare Serverless.

    Screenshot dell'opzione relativa al tipo di endpoint nella console.
  7. Per le varianti di produzione, scegliere Aggiungi modello.

  8. In Aggiungi modello, selezionare il modello da utilizzare dall'elenco dei modelli, quindi scegliere Salva.

  9. Dopo aver aggiunto il modello, in Azioni, scegliere Modifica.

  10. Per Dimensioni memoria, scegliere le dimensioni della memoria desiderate in GB.

    Screenshot dell'opzione relativa alle dimensioni della memoria nella console.
  11. Per Max simultaneità, inserire il numero massimo di invocazioni simultanee desiderato per l'endpoint. Il valore massimo inseribile è 200, mentre quello minimo è 1.

  12. (Facoltativo) Per utilizzare Simultaneità assegnata, inserire il numero desiderato di chiamate simultanee nel campo dell’impostazione Simultaneità assegnata. Il numero di richiami simultanei assegnati deve essere minore o uguale al numero massimo di richiami simultanei.

  13. Selezionare Salva.

  14. (Facoltativo) Per Tag, immettere le coppie chiave-valore se si desidera creare metadati per la configurazione endpoint.

  15. Scegliere Crea configurazione endpoint.

Creare un endpoint

Per creare un endpoint serverless, puoi utilizzare la SageMaker console Amazon, l'CreateEndpointAPI o il. AWS CLI Gli approcci all'API e alla console sono descritti nelle seguenti sezioni. Una volta creato l'endpoint, potrebbero essere necessari alcuni minuti prima che l'endpoint diventi disponibile.

Per creare un endpoint (mediante l’API)

L'esempio seguente utilizza l'AWS SDK for Python (Boto3) per chiamare l'API. CreateEndpoint Specifica i seguenti valori:

  • Per EndpointName, inserire un nome per l'endpoint che sia univoco all'interno di una Regione nel proprio account.

  • Per EndpointConfigName, utilizzare il nome della configurazione endpoint creata nella sezione precedente.

response = client.create_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-endpoint-config>" )

Per creare un endpoint dell'interfaccia (mediante la console)

  1. Accedi alla SageMakerconsole Amazon.

  2. Nella scheda di navigazione, scegliere Inferenza.

  3. Dopodiché, scegliere Endpoint.

  4. Seleziona Crea endpoint.

  5. Per Nome dell'endpoint, inserire nel proprio account un nome univoco all'interno di una Regione.

  6. Per Collega configurazione endpoint, selezionare Utilizza una configurazione endpoint esistente.

  7. Per Configurazione endpoint, selezionare il nome della configurazione endpoint creata nella sezione precedente, quindi scegliere Seleziona la configurazione endpoint.

  8. (Facoltativo) Per Tag, immettere le coppie chiave-valore se si desidera creare metadati per l'endpoint.

  9. Seleziona Crea endpoint.

    Screenshot della pagina di creazione e configurazione endpoint nella console.