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

Creazione di un modello

L'esempio seguente mostra come creare un modello utilizzando AWS SDK for Python (Boto3). Le prime righe definiscono:

  • sagemaker_client: Un oggetto client SageMaker AI di basso livello che semplifica l'invio e la ricezione di richieste ai AWS servizi.

  • sagemaker_role: una variabile stringa con il ruolo SageMaker AI IAM Amazon Resource Name (ARN).

  • aws_region: una variabile di stringa con il nome della tua AWS regione.

import boto3 # Specify your AWS Region aws_region='<aws_region>' # Create a low-level SageMaker service client. sagemaker_client = boto3.client('sagemaker', region_name=aws_region) # Role to give SageMaker permission to access AWS services. sagemaker_role= "arn:aws:iam::<account>:role/*"

Successivamente, specifica la posizione del modello preformato archiviato in Amazon S3. In questo esempio, utilizziamo un XGBoost modello pre-addestrato denominatodemo-xgboost-model.tar.gz. L'URI completo di Amazon S3 è memorizzato in una variabile stringa model_url:

#Create a variable w/ the model S3 URI s3_bucket = '<your-bucket-name>' # Provide the name of your S3 bucket bucket_prefix='saved_models' model_s3_key = f"{bucket_prefix}/demo-xgboost-model.tar.gz" #Specify S3 bucket w/ model model_url = f"s3://{s3_bucket}/{model_s3_key}"

Specifica un container principale. Per il container principale, specifica l'immagine Docker contenente il codice di inferenza, gli artefatti (dall’addestramento precedente) e la mappa dell'ambiente personalizzata che il codice di inferenza utilizza quando distribuisci il modello per le previsioni.

In questo esempio, specifichiamo un'immagine del contenitore dell'algoritmo XGBoost integrato:

from sagemaker import image_uris # Specify an AWS container image. container = image_uris.retrieve(region=aws_region, framework='xgboost', version='0.90-1')

Crea un modello in Amazon SageMaker AI conCreateModel. Specificare le impostazioni seguenti:

  • 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 ruolo IAM che Amazon SageMaker AI 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.

model_name = '<The_name_of_the_model>' #Create model create_model_response = sagemaker_client.create_model( ModelName = model_name, ExecutionRoleArn = sagemaker_role, PrimaryContainer = { 'Image': container, 'ModelDataUrl': model_url, })

Per un elenco completo dei parametri SageMaker API, consulta la CreateModeldescrizione nella Guida di riferimento delle API.

Se utilizzi un contenitore fornito dall' SageMaker intelligenza artificiale, puoi aumentare il timeout del server del modello e le dimensioni del payload dai valori predefiniti ai valori massimi supportati dal framework impostando le variabili di ambiente in questo passaggio. Potresti non essere in grado di sfruttare le dimensioni massime di timeout e payload supportate da Asynchronous Inference se non imposti esplicitamente queste variabili. L'esempio seguente mostra come impostare le variabili di ambiente per un contenitore di inferenza basato su. PyTorch TorchServe

model_name = '<The_name_of_the_model>' #Create model create_model_response = sagemaker_client.create_model( ModelName = model_name, ExecutionRoleArn = sagemaker_role, PrimaryContainer = { 'Image': container, 'ModelDataUrl': model_url, 'Environment': { 'TS_MAX_REQUEST_SIZE': '100000000', 'TS_MAX_RESPONSE_SIZE': '100000000', 'TS_DEFAULT_RESPONSE_TIMEOUT': '1000' }, })

Dopo aver finito di creare l'endpoint, dovresti verificare di aver impostato correttamente le variabili di ambiente stampandole dallo script inference.py. La tabella seguente elenca le variabili di ambiente per diversi framework che potete impostare per modificare i valori predefiniti.

Framework Variabili di ambiente

PyTorch 1.8 (basato su TorchServe)

'TS_MAX_REQUEST_SIZE': '100000000'

'TS_MAX_RESPONSE_SIZE': '100000000'

'TS_DEFAULT_RESPONSE_TIMEOUT': '1000'

PyTorch 1.4 (basato su MMS)

'MMS_MAX_REQUEST_SIZE': '1000000000'

'MMS_MAX_RESPONSE_SIZE': '1000000000'

'MMS_DEFAULT_RESPONSE_TIMEOUT': '900'

HuggingFace Contenitore di inferenza (basato su MMS)

'MMS_MAX_REQUEST_SIZE': '2000000000'

'MMS_MAX_RESPONSE_SIZE': '2000000000'

'MMS_DEFAULT_RESPONSE_TIMEOUT': '900'