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 basato su CPU o GPU tramite la console, consulta la procedura della console nelle sezioni seguenti. Se desideri creare un endpoint multimodello con AWS SDK for Python (Boto), utilizza la procedura CPU o GPU descritta nelle sezioni seguenti. I flussi di lavoro della CPU e GPU sono simili ma presentano diverse differenze, come i requisiti del container.

Creare un endpoint a più modelli (console)

È possibile creare endpoint a più modelli supportati da CPU e GPU tramite la console. Usa la seguente procedura 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 il ruolo IAM, scegli o crea un ruolo IAM a cui è collegata la policy IAM AmazonSageMakerFullAccess.

  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 è possibile scegliere Usa più modelli per ospitare più modelli su un singolo endpoint.
  6. Per Immagine del container dell'inferenza, inserisci il percorso Amazon ECR per l'immagine del container desiderata.

    Per i modelli GPU, è necessario utilizzare un container supportato da NVIDIA Triton Inference Server. Per un elenco di immagini di container che funzionano con endpoint supportati da GPU, consulta Container di inferenza Triton NVIDIA (solo supporto SM). Per ulteriori informazioni su 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 CPU con AWS SDK for Python (Boto3)

Utilizza la sezione seguente per creare un endpoint a più modelli supportato da istanze di CPU. Puoi creare un endpoint multimodello utilizzando Amazon SageMaker create_modele le create_endpointAPI proprio come faresti per creare 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 utilizza SageMaker per distribuire più modelli XGBoost su un endpoint, consulta Multi-Model Endpoint XGBoost Sample Notebook.

Nella procedura seguente vengono illustrate le fasi chiave utilizzate nell'esempio per creare un endpoint a più modelli supportato dalla CPU.

Per distribuire il modello (AWS SDK per 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 utilità SageMaker Python SDK 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 le GPU con AWS SDK for Python (Boto3)

Utilizza la sezione seguente per creare un endpoint a più modelli supportato da istanze di GPU. Crei un endpoint multimodello utilizzando Amazon SageMaker create_modele le create_endpointAPI in modo simile 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 a più modelli supportati da GPU, devi anche utilizzare un container con NVIDIA Triton Inference Server ottimizzato per l'esecuzione su istanze GPU. Per un elenco di immagini di container che funzionano con endpoint supportati da GPU, consulta Container di inferenza Triton NVIDIA (solo supporto SM).

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

Nella procedura seguente vengono illustrate le fasi chiave per creare un endpoint a più modelli supportato dalla GPU.

Per distribuire il modello (AWS SDK per Python (Boto 3))
  1. Definizione dell'immagine del container. Per creare un endpoint multimodello con supporto GPU per i ResNet modelli, definisci il contenitore per utilizzare l'immagine del server NVIDIA Triton. Questo container supporta endpoint a più modelli ed è ottimizzato per l'esecuzione su istanze GPU. Chiamiamo la funzione di utilità SageMaker Python SDK 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. Configurare l'endpoint a più modelli con istanze supportate da GPU 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>')