Creare un endpoint a più modelli - 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à.

Creare un endpoint a più modelli

Puoi utilizzare la SageMaker console o creare un endpoint AWS SDK for Python (Boto) multimodello. Per creare un endpoint CPU o un endpoint di GPU backup tramite la console, consulta la procedura della console nelle sezioni seguenti. Se desideri creare un endpoint multimodello con AWS SDK for Python (Boto), usa la GPU procedura CPU o riportata nelle sezioni seguenti. I GPU flussi di lavoro CPU e sono simili ma presentano diverse differenze, come i requisiti del contenitore.

Creare un endpoint a più modelli (console)

Puoi creare entrambi gli CPU endpoint GPU multimodello supportati tramite la console. Utilizzare la procedura seguente per creare un endpoint multimodello tramite la console. SageMaker

Per creare un endpoint a più modelli (console)
  1. Apri la SageMaker console Amazon all'indirizzo https://console.aws.amazon.com/sagemaker/.

  2. Scegliere Model (Modello), quindi dal gruppo Inference (Inferenza) scegliere Create model (Crea modello).

  3. Per Model name (Nome modello), immettere un nome.

  4. Per IAMil ruolo, scegli o crea un IAM ruolo a cui è allegata la AmazonSageMakerFullAccess IAM policy.

  5. Nella sezione Definizione container per Fornisci artefatti dì modello e immagine di inferenza scegliere Utilizza più modelli.

    La sezione della pagina Crea modello in cui puoi scegliere Usa più modelli.
  6. Per l'immagine del contenitore Inference, inserisci il ECR percorso Amazon per l'immagine del contenitore desiderata.

    Per GPU i modelli, è necessario utilizzare un contenitore supportato dal NVIDIA Triton Inference Server. Per un elenco di immagini di container che funzionano con endpoint GPU supportati, consulta NVIDIATriton Inference Containers (solo supporto SM). Per ulteriori informazioni sul NVIDIA Triton Inference Server, consulta Use Triton Inference Server with. SageMaker

  7. Scegli Crea modello.

  8. Distribuire l'endpoint a più modelli come si farebbe con un endpoint a singolo modello. Per istruzioni, consulta Implementa il modello nei servizi di hosting SageMaker .

Crea un endpoint multimodello utilizzando con CPUs AWS SDK for Python (Boto3)

Utilizza la sezione seguente per creare un endpoint multimodello supportato da istanze. CPU Puoi creare un endpoint multimodello utilizzando Amazon SageMaker create_modele create_endpointAPIsproprio come creeresti un endpoint a modello singolo, ma con due modifiche. create_endpoint_config Quando si definisce il container del modello, è necessario passare un nuovo valore del parametro Mode: MultiModel. È inoltre necessario passare il campo ModelDataUrl che specifica il prefisso in S3 Amazon dove si trovano gli artefatti del modello, anziché il percorso di un artefatto di singolo modello, come si farebbe quando si distribuisce un singolo modello.

Per un notebook di esempio che consente di distribuire più XGBoost modelli SageMaker su un endpoint, consulta Multi-Model Endpoint Sample Notebook. XGBoost

La procedura seguente descrive i passaggi chiave utilizzati in quell'esempio per creare un endpoint multimodello supportato. CPU

Per distribuire il modello (AWS SDKper Python (Boto 3))
  1. Procurati un container con un'immagine che supporti la l'implementazione di endpoint a più modelli. Per un elenco di algoritmi e container di framework integrati che supportano endpoint a più modelli, consulta Algoritmi, framework e istanze supportati. Per questo esempio, utilizziamo l'algoritmo integrato Algoritmo K-Nearest Neighbors (k-NN). Chiamiamo la funzione di SDK utilità SageMaker Python image_uris.retrieve() per ottenere l'indirizzo per l'immagine dell'algoritmo integrato K-Nearest Neighbors.

    import sagemaker region = sagemaker_session.boto_region_name image = sagemaker.image_uris.retrieve("knn",region=region) container = { 'Image': image, 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>', 'Mode': 'MultiModel' }
  2. Ottieni un AWS SDK for Python (Boto3) SageMaker client e crea il modello che utilizza questo contenitore.

    import boto3 sagemaker_client = boto3.client('sagemaker') response = sagemaker_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [container])
  3. (Facoltativo) Se si utilizza una pipeline di inferenza seriale, ottenere i container aggiuntivi da includere nella pipeline e includerli nell'argomento Containers di CreateModel:

    preprocessor_container = { 'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<PREPROCESSOR_IMAGE>:<TAG>' } multi_model_container = { 'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<IMAGE>:<TAG>', 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>', 'Mode': 'MultiModel' } response = sagemaker_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [preprocessor_container, multi_model_container] )
    Nota

    È possibile utilizzare un solo multi-model-enabled endpoint in una pipeline di inferenza seriale.

  4. (Facoltativo) Se il tuo caso d'uso non trae vantaggio dalla memorizzazione nella cache del modello, imposta il valore del campo ModelCacheSetting del parametro MultiModelConfig su Disabled e includilo nell'argomento Container della chiamata a create_model. Il valore di default del campo ModelCacheSetting è Enabled.

    container = { 'Image': image, 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>', 'Mode': 'MultiModel' 'MultiModelConfig': { // Default value is 'Enabled' 'ModelCacheSetting': 'Disabled' } } response = sagemaker_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [container] )
  5. Configurare l'endpoint a più modelli per il modello. Si consiglia di configurare gli endpoint con almeno due istanze. Ciò consente di SageMaker fornire un set di previsioni ad alta disponibilità su più zone di disponibilità per i modelli.

    response = sagemaker_client.create_endpoint_config( EndpointConfigName = '<ENDPOINT_CONFIG_NAME>', ProductionVariants=[ { 'InstanceType': 'ml.m4.xlarge', 'InitialInstanceCount': 2, 'InitialVariantWeight': 1, 'ModelName': '<MODEL_NAME>', 'VariantName': 'AllTraffic' } ] )
    Nota

    È possibile utilizzare un solo multi-model-enabled endpoint in una pipeline di inferenza seriale.

  6. Creare l'endpoint a più modelli utilizzando i parametri EndpointName e EndpointConfigName.

    response = sagemaker_client.create_endpoint( EndpointName = '<ENDPOINT_NAME>', EndpointConfigName = '<ENDPOINT_CONFIG_NAME>')

Crea un endpoint multimodello utilizzando con GPUs AWS SDK for Python (Boto3)

Utilizza la sezione seguente per creare un GPU endpoint multimodello supportato. Puoi creare un endpoint multimodello utilizzando Amazon SageMaker create_modele in create_endpointAPIsmodo analogo alla creazione di endpoint a modello singolo, ma ci sono diverse modifiche. create_endpoint_config Quando si definisce il container del modello, è necessario passare un nuovo valore del parametro Mode: MultiModel. È inoltre necessario passare il campo ModelDataUrl che specifica il prefisso in S3 Amazon dove si trovano gli artefatti del modello, anziché il percorso di un artefatto di singolo modello, come si farebbe quando si distribuisce un singolo modello. Per gli endpoint multimodello GPU supportati, devi anche utilizzare un contenitore con NVIDIA Triton Inference Server ottimizzato per l'esecuzione su istanze. GPU Per un elenco di immagini di container che funzionano con gli endpoint GPU supportati, consulta NVIDIATriton Inference Containers (solo supporto SM).

Per un notebook di esempio che dimostra come creare un endpoint multimodello supportato daGPUs, consulta Esegui più modelli di deep learning con GPUs Amazon SageMaker Multi-model endpoints (). MME

La procedura seguente descrive i passaggi chiave per creare un endpoint multimodello supportato. GPU

Per distribuire il modello (AWS SDKper Python (Boto 3))
  1. Definizione dell'immagine del container. Per creare un endpoint multimodello con GPU supporto per i ResNet modelli, definisci il contenitore per utilizzare l'immagine di Triton Server. NVIDIA Questo contenitore supporta endpoint multimodello ed è ottimizzato per l'esecuzione su istanze. GPU Chiamiamo la funzione di SDK utilità SageMaker Python image_uris.retrieve() per ottenere l'indirizzo dell'immagine. Per esempio:

    import sagemaker region = sagemaker_session.boto_region_name // Find the sagemaker-tritonserver image at // https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-triton/resnet50/triton_resnet50.ipynb // Find available tags at https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only image = "<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/sagemaker-tritonserver:<TAG>".format( account_id=account_id_map[region], region=region ) container = { 'Image': image, 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>', 'Mode': 'MultiModel', "Environment": {"SAGEMAKER_TRITON_DEFAULT_MODEL_NAME": "resnet"}, }
  2. Ottieni un AWS SDK for Python (Boto3) SageMaker client e crea il modello che utilizza questo contenitore.

    import boto3 sagemaker_client = boto3.client('sagemaker') response = sagemaker_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [container])
  3. (Facoltativo) Se si utilizza una pipeline di inferenza seriale, ottenere i container aggiuntivi da includere nella pipeline e includerli nell'argomento Containers di CreateModel:

    preprocessor_container = { 'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<PREPROCESSOR_IMAGE>:<TAG>' } multi_model_container = { 'Image': '<ACCOUNT_ID>.dkr.ecr.<REGION_NAME>.amazonaws.com/<IMAGE>:<TAG>', 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>', 'Mode': 'MultiModel' } response = sagemaker_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [preprocessor_container, multi_model_container] )
    Nota

    È possibile utilizzare un solo multi-model-enabled endpoint in una pipeline di inferenza seriale.

  4. (Facoltativo) Se il tuo caso d'uso non trae vantaggio dalla memorizzazione nella cache del modello, imposta il valore del campo ModelCacheSetting del parametro MultiModelConfig su Disabled e includilo nell'argomento Container della chiamata a create_model. Il valore di default del campo ModelCacheSetting è Enabled.

    container = { 'Image': image, 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>', 'Mode': 'MultiModel' 'MultiModelConfig': { // Default value is 'Enabled' 'ModelCacheSetting': 'Disabled' } } response = sagemaker_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [container] )
  5. Configura l'endpoint multimodello con istanze GPU supportate per il modello. Ti consigliamo di configurare gli endpoint con più di un'istanza per consentire un'elevata disponibilità e maggiori accessi alla cache.

    response = sagemaker_client.create_endpoint_config( EndpointConfigName = '<ENDPOINT_CONFIG_NAME>', ProductionVariants=[ { 'InstanceType': 'ml.g4dn.4xlarge', 'InitialInstanceCount': 2, 'InitialVariantWeight': 1, 'ModelName': '<MODEL_NAME>', 'VariantName': 'AllTraffic' } ] )
  6. Creare l'endpoint a più modelli utilizzando i parametri EndpointName e EndpointConfigName.

    response = sagemaker_client.create_endpoint( EndpointName = '<ENDPOINT_NAME>', EndpointConfigName = '<ENDPOINT_CONFIG_NAME>')