Creazione di un modello - 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 modello

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

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

  • sagemaker_role: una variabile stringa con il SageMaker IAM ruolo 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. La versione completa di Amazon S3 URI è archiviata 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 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 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.

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, consulta la CreateModeldescrizione nella Guida di SageMaker API riferimento. API

Se utilizzi un contenitore SageMaker fornito, 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 Inference 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 suMMS)

'MMS_ _ MAX REQUEST _SIZE': '2000000000'

'MMS_ _ MAX RESPONSE _SIZE': '2000000000'

'MMS_ DEFAULT _ RESPONSE _TIMEOUT': '900'