

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Opciones de alojamiento
<a name="realtime-endpoints-options"></a>

En los siguientes temas se describen las opciones de alojamiento en tiempo real de SageMaker IA disponibles y cómo configurar, invocar y eliminar cada opción de alojamiento.

**Topics**
+ [Puntos de conexión de modelo único](realtime-single-model.md)
+ [Puntos de conexión multimodelo](multi-model-endpoints.md)
+ [Puntos de conexión con varios contenedores](multi-container-endpoints.md)
+ [Canalizaciones de inferencia en Amazon AI SageMaker](inference-pipelines.md)
+ [Eliminar puntos de conexión y recursos](realtime-endpoints-delete-resources.md)

# Puntos de conexión de modelo único
<a name="realtime-single-model"></a>

Puede crear, actualizar y eliminar puntos de conexión de inferencia en tiempo real que alojen un único modelo con Amazon SageMaker Studio, AWS SDK para Python (Boto3), el SageMaker Python SDK o la AWS CLI. Para ver los procedimientos y los códigos de ejemplo, consulte [Implementación de modelos para inferencia en tiempo real](realtime-endpoints-deploy-models.md).

# Puntos de conexión multimodelo
<a name="multi-model-endpoints"></a>

Los puntos de conexión multimodelo proporcionan una solución escalable y rentable para implementar grandes cantidades de modelos. Utilizan la misma flota de recursos y un contenedor de servicio compartido para alojar todos sus modelos. Esto reduce los costos de alojamiento al mejorar la utilización del punto de conexión en comparación con el uso de puntos de conexión de modelo único. También reduce la sobrecarga de implementación, ya que Amazon SageMaker AI gestiona la carga de modelos en la memoria y su escalado en función de los patrones de tráfico hacia su punto final.

El siguiente diagrama muestra cómo funcionan los puntos de conexión multimodelo en comparación con los puntos de conexión de un solo modelo.

![\[Diagrama que muestra cómo los puntos de conexión multimodelo alojan los modelos en comparación con la forma en que lo hacen los puntos de conexión de un solo modelo\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/multi-model-endpoints-diagram.png)


Los puntos de conexión multimodelo son ideales para alojar una gran cantidad de modelos que utilizan el mismo marco de ML en un contenedor de servidores compartido. Si tiene una combinación de modelos a los que se accede con frecuencia y con poca frecuencia, un punto de conexión multimodelo puede atender este tráfico de manera eficiente con menos recursos y un mayor ahorro de costos. Su aplicación debe tolerar las penalizaciones de latencia ocasionales relacionadas con el arranque en frío que se producen al invocar modelos que se utilizan con poca frecuencia.

Los puntos de conexión multimodelo admiten el alojamiento de modelos respaldados tanto por CPU como por GPU. Al utilizar modelos respaldados por GPU, puede reducir los costos de implementación del modelo mediante un mayor uso del punto de conexión y sus instancias de computación acelerada subyacentes.

Los puntos de conexión multimodelo permiten compartir el tiempo de los recursos de memoria en todos los modelos. Esto funciona mejor cuando los modelos son bastante similares en tamaño y latencia de invocación. Cuando es el caso, los puntos de conexión multimodelo pueden usar eficazmente instancias en todos los modelos. Si tiene modelos que tienen transacciones por segundo (TPS) o requisitos de latencia notablemente más altos, le recomendamos alojarlos en puntos de conexión dedicados.

Puede utilizar puntos de conexión multimodelo con las siguientes funciones:
+ [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-overview.html)y VPCs
+ [Escalado automático](multi-model-endpoints-autoscaling.md)
+ [Canalizaciones de inferencia en serie](https://docs.aws.amazon.com/sagemaker/latest/dg/inference-pipelines.html) (pero solo se puede incluir un contenedor habilitado para varios modelos en una canalización de inferencia)
+ Prueba A/B

Puede utilizar la consola de IA AWS SDK para Python (Boto) o la consola de SageMaker IA para crear un punto final multimodelo. Puede utilizar puntos de conexión multimodelo con respaldo de CPU, puede crear su punto de conexión con contenedores personalizados integrando la biblioteca [Multi Model Server](https://github.com/awslabs/multi-model-server).

**Topics**
+ [Cómo funcionan los puntos de conexión multimodelo](#how-multi-model-endpoints-work)
+ [Cuadernos de ejemplo para puntos de conexión multimodelo](#multi-model-endpoint-sample-notebooks)
+ [Algoritmos, marcos e instancias compatibles con puntos de conexión multimodelo](multi-model-support.md)
+ [Recomendaciones de instancia para implementaciones de puntos de conexión multimodelo](multi-model-endpoint-instance.md)
+ [Creación de un punto de conexión multimodelo](create-multi-model-endpoint.md)
+ [Invocar un punto de conexión multimodelo](invoke-multi-model-endpoint.md)
+ [Agregar o eliminar modelos](add-models-to-endpoint.md)
+ [Cree su propio contenedor para terminales SageMaker multimodelo de IA](build-multi-model-build-container.md)
+ [Seguridad de puntos de conexión multimodelo](multi-model-endpoint-security.md)
+ [CloudWatch Métricas para despliegues de terminales multimodelo](multi-model-endpoint-cloudwatch-metrics.md)
+ [Establezca el comportamiento de almacenamiento en caché del modelo de SageMaker punto final multimodelo de IA](multi-model-caching.md)
+ [Establecer políticas de escalado automático para implementaciones de puntos de conexión multimodelo](multi-model-endpoints-autoscaling.md)

## Cómo funcionan los puntos de conexión multimodelo
<a name="how-multi-model-endpoints-work"></a>

 SageMaker La IA gestiona el ciclo de vida de los modelos alojados en puntos finales multimodelo en la memoria del contenedor. En lugar de descargar todos los modelos de un bucket de Amazon S3 al contenedor al crear el punto de conexión, la SageMaker IA los carga y almacena en caché de forma dinámica cuando los invoca. Cuando la SageMaker IA recibe una solicitud de invocación para un modelo en particular, hace lo siguiente: 

1. Enruta la solicitud a una instancia detrás del punto de conexión.

1. Descarga el modelo desde el bucket de S3 al volumen de almacenamiento de esa instancia.

1. Carga el modelo en la memoria del contenedor (CPU o GPU, dependiendo de si tiene instancias respaldadas por CPU o GPU) de esa instancia de computación acelerada. Si el modelo ya está cargado en la memoria del contenedor, la invocación es más rápida porque la SageMaker IA no necesita descargarlo ni cargarlo.

SageMaker La IA sigue dirigiendo las solicitudes de un modelo a la instancia en la que el modelo ya está cargado. Sin embargo, si el modelo recibe muchas solicitudes de invocación y hay instancias adicionales para el punto final multimodelo, la SageMaker IA enruta algunas solicitudes a otra instancia para acomodar el tráfico. Si el modelo aún no está cargado en la segunda instancia, el modelo se descarga en el volumen de almacenamiento de esa instancia y se carga en la memoria del contenedor.

Cuando el uso de memoria de una instancia es elevado y la SageMaker IA necesita cargar otro modelo en la memoria, descarga los modelos no utilizados del contenedor de esa instancia para garantizar que haya suficiente memoria para cargar el modelo. Los modelos que se descargan permanecen en el volumen de almacenamiento de la instancia y se pueden cargar en la memoria del contenedor más adelante sin volver a descargarse desde el bucket S3. Si el volumen de almacenamiento de la instancia alcanza su capacidad máxima, la SageMaker IA elimina los modelos no utilizados del volumen de almacenamiento.

Para eliminar un modelo, deja de enviar solicitudes y elimínalo del bucket de S3. SageMaker La IA proporciona una capacidad de punto final multimodelo en un contenedor de servicio. Al agregar modelos a un punto de conexión multimodelo y eliminarlos del mismo, no es necesario actualizar el punto de conexión en sí. Para añadir un modelo, se carga en el bucket S3 y se empieza a invocar. No necesita cambios de código para usarlo.

**nota**  
Al actualizar un punto de conexión multimodelo, las solicitudes de invocación iniciales en el punto de conexión pueden experimentar latencias más altas, ya que Smart Routing en los puntos de conexión multimodelo se adapta a su patrón de tráfico. Sin embargo, una vez que conozca su patrón de tráfico, podrá experimentar latencias bajas en los modelos que utilice con más frecuencia. Los modelos que se utilizan con menos frecuencia pueden sufrir algunas latencias de arranque en frío, ya que los modelos se cargan dinámicamente en una instancia.

## Cuadernos de ejemplo para puntos de conexión multimodelo
<a name="multi-model-endpoint-sample-notebooks"></a>

Para obtener más información sobre cómo usar puntos de conexión multimodelo, puede probar los siguientes cuadernos de ejemplo:
+ Ejemplos para puntos de conexión multimodelo que utilizan instancias respaldadas por CPU:
  + [ XGBoost Ejemplo de cuaderno de punto final multimodelo](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/multi_model_xgboost_home_value/xgboost_multi_model_endpoint_home_value.html): este cuaderno muestra cómo implementar varios XGBoost modelos en un punto final.
  + [Cuaderno de ejemplo BYOC para terminales multimodelo](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/multi_model_bring_your_own/multi_model_endpoint_bring_your_own.html): este cuaderno muestra cómo configurar e implementar un contenedor de clientes que admita puntos finales multimodelo en la IA. SageMaker 
+ Ejemplo para puntos de conexión multimodelo que utilizan instancias respaldadas por GPU:
  + [Ejecute varios modelos de aprendizaje profundo GPUs con puntos de conexión multimodelo (MME) de Amazon SageMaker AI: en este cuaderno se muestra cómo utilizar un contenedor de inferencias Triton de NVIDIA para implementar ResNet -50 modelos en un punto final](https://github.com/aws/amazon-sagemaker-examples/blob/main/multi-model-endpoints/mme-on-gpu/cv/resnet50_mme_with_gpu.ipynb) multimodelo.

Para obtener instrucciones sobre cómo crear instancias de Jupyter Notebook y acceder a ellas, que puede utilizar para ejecutar los ejemplos anteriores en IA, consulte. SageMaker [Instancias de Amazon SageMaker Notebook](nbi.md) Una vez que hayas creado una instancia de bloc de notas y la hayas abierto, selecciona la pestaña **Ejemplos de SageMaker IA** para ver una lista de todos los ejemplos de SageMaker IA. Los cuadernos de punto de conexión multimodelo se encuentran en la sección **FUNCIONALIDAD AVANZADA**. Para abrir un bloc de notas, elija su pestaña **Usar** y, a continuación, **Crear copia**.

Para obtener más información sobre casos de uso de puntos de conexión multimodelo, consulte los siguientes blogs y recursos:
+ Vídeo: [Alojar miles de modelos con SageMaker IA](https://www.youtube.com/watch?v=XqCNTWmHsLc&t=751s)
+ Vídeo: [SageMaker AI ML para SaaS](https://www.youtube.com/watch?v=BytpYlJ3vsQ)
+ Blog: [Cómo escalar la inferencia de machine learning para casos de uso de SaaS multiusuario](https://aws.amazon.com/blogs/machine-learning/how-to-scale-machine-learning-inference-for-multi-tenant-saas-use-cases/)
+ Caso práctico: [Veeva Systems](https://aws.amazon.com/partners/success/advanced-clinical-veeva/)

# Algoritmos, marcos e instancias compatibles con puntos de conexión multimodelo
<a name="multi-model-support"></a>

Para obtener información sobre algoritmos, marcos y tipos de instancias que puedes usar con puntos de conexión multimodelo, consulte las siguientes secciones.

## Algoritmos, marcos e instancias compatibles para puntos de conexión multimodelo que utilizan instancias respaldadas por CPU
<a name="multi-model-support-cpu"></a>

Los contenedores de inferencia de los siguientes algoritmos y marcos admiten puntos de conexión multimodelo:
+ [XGBoost algoritmo con Amazon SageMaker AI](xgboost.md)
+ [Algoritmo k vecinos más próximos (k-NN) (K-Nearest Neighbors)](k-nearest-neighbors.md)
+ [Algoritmo de aprendizaje lineal](linear-learner.md)
+ [Algoritmo de bosque de corte aleatorio (RCF)](randomcutforest.md)
+ [Recursos para usar TensorFlow con Amazon SageMaker AI](tf.md)
+ [Recursos para usar Scikit-learn con Amazon AI SageMaker](sklearn.md)
+ [Recursos para usar Apache MXNet con Amazon SageMaker AI](mxnet.md)
+ [Recursos para usar PyTorch con Amazon SageMaker AI](pytorch.md)

Para utilizar cualquier otro marco o algoritmo, utilice el kit de herramientas de inferencia de SageMaker IA para crear un contenedor que admita puntos finales multimodelo. Para obtener información, consulte [Cree su propio contenedor para terminales SageMaker multimodelo de IA](build-multi-model-build-container.md).

Los puntos de conexión multimodelo admiten todos los tipos de instancias de CPU.

## Algoritmos, marcos e instancias compatibles para puntos de conexión multimodelo que utilizan instancias respaldadas por GPU
<a name="multi-model-support-gpu"></a>

[El servidor de inferencia Triton de IA permite alojar varios modelos respaldados por GPU en puntos finales multimodelo. SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) Esto es compatible con los principales marcos de inferencia, como NVIDIA® TensorRT™, Python PyTorch, ONNX MXNet, scikit-learn XGBoost, OpenVINO, C\$1\$1 personalizado RandomForest y más.

Para usar cualquier otro marco o algoritmo, puede usar el backend Triton para Python o C\$1\$1 para escribir la lógica de su modelo y servir cualquier modelo personalizado. Una vez que tenga el servidor listo, puede empezar a implementar cientos de modelos de aprendizaje profundo en un punto de conexión.

Los puntos de conexión multimodelo admiten los siguientes tipos de instancias de GPU:


| Familia de instancias | Tipo de instancia | v CPUs | GiB de memoria por vCPU | GPUs | Memoria de GPU | 
| --- | --- | --- | --- | --- | --- | 
| p2 | ml.p2.xlarge | 4 | 15.25 | 1 | 12 | 
| p3 | ml.p3.2xlarge | 8 | 7.62 | 1 | 16 | 
| g5 | ml.g5.xlarge | 4 | 4 | 1 | 24 | 
| g5 | ml.g5.2xlarge | 8 | 4 | 1 | 24 | 
| g5 | ml.g5.4xlarge | 16 | 4 | 1 | 24 | 
| g5 | ml.g5.8xlarge | 32 | 4 | 1 | 24 | 
| g5 | ml.g5.16xlarge | 64 | 4 | 1 | 24 | 
| g4dn | ml.g4dn.xlarge | 4 | 4 | 1 | 16 | 
| g4dn | ml.g4dn.2xlarge | 8 | 4 | 1 | 16 | 
| g4dn | ml.g4dn.4xlarge | 16 | 4 | 1 | 16 | 
| g4dn | ml.g4dn.8xlarge | 32 | 4 | 1 | 16 | 
| g4dn | ml.g4dn.16xlarge | 64 | 4 | 1 | 16 | 

# Recomendaciones de instancia para implementaciones de puntos de conexión multimodelo
<a name="multi-model-endpoint-instance"></a>

Hay varios aspectos que se deben tener en cuenta al seleccionar un tipo de instancia de SageMaker AI ML para un punto final multimodelo:
+ Aprovisione suficiente capacidad de [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html) para todos los modelos que tenga que atender.
+ Equilibre el rendimiento (minimice los inicios en frío) y el costo (no aprovisione en exceso la capacidad de instancia). Para obtener información sobre el tamaño del volumen de almacenamiento que la SageMaker IA adjunta a cada tipo de instancia para un punto final y para un punto final multimodelo, consulte. [Volúmenes de almacén de instancias](host-instance-storage.md)
+ Para un contenedor configurado para ejecutarse en modo `MultiModel`, el volumen de almacenamiento aprovisionado para sus instancias tiene más memoria que el modo `SingleModel` predeterminado. Esto permite almacenar más modelos en caché en el volumen de almacenamiento de la instancia que en modo `SingleModel`.

A la hora de elegir un tipo de instancia de SageMaker AI ML, ten en cuenta lo siguiente:
+ Actualmente, los puntos de conexión multimodelo se admiten en todos los tipos de instancias de CPU y en tipos de instancias de una sola GPU.
+ Para la distribución del tráfico (patrones de acceso) a los modelos que desea alojar detrás del punto de conexión multimodelo, junto con el tamaño del modelo (cuántos modelos se pueden cargar en la memoria en la instancia), tenga en cuenta la siguiente información:
  + Piensa en la cantidad de memoria de una instancia como el espacio de caché para que se carguen los modelos, y piensa en el número v CPUs como el límite de simultaneidad para realizar inferencias en los modelos cargados (suponiendo que la invocación de un modelo esté vinculada a la CPU).
  + En el caso de las instancias respaldadas por la CPU, la cantidad de v CPUs afecta al número máximo de invocaciones simultáneas por instancia (suponiendo que la invocación de un modelo esté vinculada a la CPU). Una cantidad mayor de v te CPUs permite invocar más modelos únicos de forma simultánea.
  + En el caso de instancias respaldadas por GPU, una mayor cantidad de memoria de GPU e instancia le permite tener más modelos cargados y listos para servir solicitudes de inferencia.
  + En el caso de instancias respaldadas por CPU y GPU, tenga disponible memoria “holgada” para que los modelos no utilizados puedan descargarse, y especialmente para los puntos de conexión multimodelo con varias instancias. Si falla una instancia o una zona de disponibilidad, los modelos de esas instancias se redireccionarán a otras instancias situadas detrás del punto de conexión.
+ Determine su tolerancia a loading/downloading los tiempos:
  + Las familias de tipos de instancia d (por ejemplo, m5d, c5d o r5d) y g5s vienen con una SSD NVMe (memoria no volátil express), que ofrece un alto I/O rendimiento y podría reducir el tiempo necesario para descargar los modelos al volumen de almacenamiento y para que el contenedor cargue el modelo desde el volumen de almacenamiento.
  + Como los tipos de instancia d y g5 vienen con un almacenamiento NVMe SSD, SageMaker AI no adjunta un volumen de almacenamiento de Amazon EBS a estas instancias de procesamiento de aprendizaje automático que alojan el punto final multimodelo. El escalado automático funciona mejor cuando los modelos tienen un tamaño similar y son homogéneos, es decir, cuando sus requisitos de recursos y latencia de inferencia son similares.

También puede utilizar las siguientes instrucciones para optimizar la carga de modelos en sus puntos de conexión multimodelo:

**Elegir un tipo de instancia que no pueda almacenar todos los modelos de destino en la memoria**

En algunos casos, puede optar por reducir los costos y elegir un tipo de instancia que no pueda almacenar todos los modelos de destino en la memoria a la vez. SageMaker La IA descarga los modelos de forma dinámica cuando se queda sin memoria para dejar espacio a un nuevo modelo de segmentación. En el caso de modelos que se solicitan con poca frecuencia, se sacrifica la latencia de carga dinámica. En los casos con necesidades de latencia más estrictas, puede optar por tipos de instancia más grandes o más instancias. Invertir tiempo por adelantado en las pruebas y el análisis del rendimiento le ayuda a realizar implementaciones de producción satisfactorias.

**Evaluar los resultados de caché de su modelo**

 CloudWatch Las métricas de Amazon pueden ayudarte a evaluar tus modelos. Para obtener más información sobre las métricas que puede utilizar con puntos de conexión multimodelo, consulte [CloudWatch Métricas para despliegues de terminales multimodelo](multi-model-endpoint-cloudwatch-metrics.md).

 Puede utilizar la estadística `Average` de la métrica `ModelCacheHit` para monitorizar la proporción de solicitudes en las que el modelo ya está cargado. Puede utilizar la estadística `SampleCount` de la métrica `ModelUnloadingTime` para monitorizar el número de solicitudes de descarga enviadas al contenedor durante un período de tiempo. Si los modelos se descargan con demasiada frecuencia (un indicador de *pérdidas*, donde los modelos se descargan y se cargan de nuevo porque no hay suficiente espacio en caché para el conjunto de modelos de trabajo), considere utilizar un tipo de instancia mayor con más memoria o aumentar el número de instancias detrás del punto de conexión multimodelo. En el caso de los puntos de conexión multimodelo con varias instancias, tenga en cuenta que un modelo puede cargarse en más de una instancia.

# Creación de un punto de conexión multimodelo
<a name="create-multi-model-endpoint"></a>

Puede utilizar la consola de SageMaker IA o la AWS SDK para Python (Boto) para crear un punto final multimodelo. Para crear un punto de conexión respaldado por CPU o GPU a través de la consola, consulte el procedimiento de la consola en las siguientes secciones. Si desea crear un punto final multimodelo con el AWS SDK para Python (Boto), utilice el procedimiento de CPU o GPU de las siguientes secciones. Los flujos de trabajo de la CPU y GPU son similares, pero presentan varias diferencias, como los requisitos del contenedor.

**Topics**
+ [Creación de un punto de conexión multimodelo (consola)](#create-multi-model-endpoint-console)
+ [Cree un punto final multimodelo utilizando el CPUs AWS SDK para Python (Boto3)](#create-multi-model-endpoint-sdk-cpu)
+ [Cree un punto final multimodelo utilizando el GPUs AWS SDK para Python (Boto3)](#create-multi-model-endpoint-sdk-gpu)

## Creación de un punto de conexión multimodelo (consola)
<a name="create-multi-model-endpoint-console"></a>

Puede crear puntos de conexión multimodelo compatibles con la CPU y la GPU a través de la consola. Utilice el siguiente procedimiento para crear un punto final multimodelo a través de la consola de SageMaker IA.

**Para crear un punto de conexión multimodelo (consola)**

1. Abre la consola Amazon SageMaker AI en [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Elija **Modelo** y, a continuación, en el grupo **Inferencia**, elija **Crear modelo**. 

1. En **Nombre del modelo**, escriba un nombre.

1. Par el **rol de IAM**, escoja o cree un rol de IAM que tenga asociada la política de IAM `AmazonSageMakerFullAccess`. 

1.  En la sección **Definición de contenedor**, en **Proporcionar opciones de imagen de inferencia y artefactos de modelo**, elija **Utilizar modelos múltiples**.  
![\[Sección de la página Crear modelo donde puede elegir Usar varios modelos\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/mme-create-model-ux-2.PNG)

1. Para la **Imagen del contenedor de inferencia**, introduzca la ruta de Amazon ECR de la imagen de contenedor que desee.

   Para los modelos de GPU, debe utilizar un contenedor respaldado por el servidor de inferencia NVIDIA Triton. Para obtener una lista de imágenes de contenedores que funcionan con terminales respaldados por GPU, consulte los [contenedores de inferencia NVIDIA Triton (solo compatibles con SM)](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only). Para obtener más información sobre el servidor de inferencia Triton de NVIDIA, consulte [Uso del servidor de inferencia Triton](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) con IA. SageMaker 

1. Seleccione **Crear modelo**.

1. Implemente el punto de conexión multimodelo como lo haría con un punto de conexión de modelo único. Para obtener instrucciones, consulte [Implemente el modelo en los servicios de alojamiento de SageMaker IA](ex1-model-deployment.md#ex1-deploy-model).

## Cree un punto final multimodelo utilizando el CPUs AWS SDK para Python (Boto3)
<a name="create-multi-model-endpoint-sdk-cpu"></a>

Utilice la siguiente sección para crear un punto de conexión multimodelo respaldado por instancias de CPU. Puede crear un punto final multimodelo con Amazon SageMaker AI y [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model), de la [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint) APIs misma manera que crearía un punto final de un solo modelo, pero con dos cambios. Al definir el contenedor de modelos, debe transferir un nuevo valor de parámetro `Mode`, `MultiModel`. También debe transferir el campo `ModelDataUrl` que especifica el prefijo en Amazon S3 donde se encuentran los artefactos del modelo, en lugar de la ruta a un solo artefacto del modelo, como haría cuando se implementa un solo modelo.

Para ver un ejemplo de bloc de notas que utiliza la SageMaker IA para implementar varios XGBoost modelos en un terminal, consulte el cuaderno de [ XGBoost muestra de terminales multimodelo](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/multi_model_xgboost_home_value/xgboost_multi_model_endpoint_home_value.html). 

En el siguiente procedimiento se describen los pasos clave utilizados en esa muestra para crear un punto de conexión multimodelo.

**Para implementar el modelo (AWS SDK para Python (Boto 3))**

1. Obtenga un contenedor con una imagen que permita implementar puntos de conexión multimodelo. Para obtener una lista de los algoritmos integrados y contenedores de marcos que admiten puntos de conexión multimodelo, consulte [Algoritmos, marcos e instancias compatibles con puntos de conexión multimodelo](multi-model-support.md). Para este ejemplo, utilizamos el algoritmo integrado [Algoritmo k vecinos más próximos (k-NN) (K-Nearest Neighbors)](k-nearest-neighbors.md). Llamamos a la función de utilidad [SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable/v2.html) `image_uris.retrieve()` para obtener la dirección de la imagen del algoritmo integrado 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'
               }
   ```

1. Obtenga un cliente de AWS SDK para Python (Boto3) SageMaker IA y cree el modelo que usa este contenedor.

   ```
   import boto3
   sagemaker_client = boto3.client('sagemaker')
   response = sagemaker_client.create_model(
                 ModelName        = '<MODEL_NAME>',
                 ExecutionRoleArn = role,
                 Containers       = [container])
   ```

1. (Opcional) Si usa una canalización de inferencia en serie, obtenga los contenedores adicionales que se incluirán en la canalización e inclúyalos en el argumento `Containers` de `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**  
Solo puede usar un multi-model-enabled punto final en una canalización de inferencia en serie.

1. (Opcional) Si su caso de uso no aprovecha almacenamiento en caché del modelo, defina el valor del campo `ModelCacheSetting` del parámetro `MultiModelConfig` en `Disabled` e inclúyalo en el argumento `Container` de la llamada a `create_model`. El valor predeterminado del campo `ModelCacheSetting` es `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]
               )
   ```

1. Configure el punto de conexión multimodelo para el modelo. Recomendamos configurar los puntos de conexión con al menos dos instancias. Esto permite a la SageMaker IA proporcionar a los modelos un conjunto de predicciones de alta disponibilidad en varias zonas de disponibilidad.

   ```
   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**  
Solo puede usar un multi-model-enabled punto final en una canalización de inferencia en serie.

1. Creación del punto de conexión multimodelo utilizando los parámetros `EndpointName` y `EndpointConfigName`.

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

## Cree un punto final multimodelo utilizando el GPUs AWS SDK para Python (Boto3)
<a name="create-multi-model-endpoint-sdk-gpu"></a>

Utilice la siguiente sección para crear un punto de conexión multimodelo respaldado por GPU. Se crea un punto final multimodelo mediante Amazon SageMaker AI y [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model), de [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint) APIs forma similar a la creación de puntos finales de un solo modelo, pero hay varios cambios. Al definir el contenedor de modelos, debe transferir un nuevo valor de parámetro `Mode`, `MultiModel`. También debe transferir el campo `ModelDataUrl` que especifica el prefijo en Amazon S3 donde se encuentran los artefactos del modelo, en lugar de la ruta a un solo artefacto del modelo, como haría cuando se implementa un solo modelo. En el caso de puntos de conexión multimodelo respaldados por GPU, también debe utilizar un contenedor con el servidor de inferencia NVIDIA Triton que esté optimizado para ejecutarse en instancias de GPU. Para obtener una lista de imágenes de contenedores que funcionan con terminales respaldados por GPU, consulte los [contenedores de inferencia NVIDIA Triton (solo compatibles con SM)](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only).

Para ver un ejemplo de bloc de notas que muestra cómo crear un punto final multimodelo respaldado por GPUs, consulte [Ejecutar varios modelos de aprendizaje profundo con puntos de enlace multimodelo (MME) de GPUs Amazon SageMaker AI](https://github.com/aws/amazon-sagemaker-examples/blob/main/multi-model-endpoints/mme-on-gpu/cv/resnet50_mme_with_gpu.ipynb).

En el siguiente procedimiento se describen los pasos clave para crear un punto de conexión multimodelo.

**Para implementar el modelo (AWS SDK para Python (Boto 3))**

1. Defina la imagen del contenedor. Para crear un punto final multimodelo con soporte de GPU para ResNet los modelos, defina el contenedor para usar la imagen del servidor [NVIDIA Triton](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html). Este contenedor admite puntos de conexión multimodelo y está optimizado para ejecutarse en instancias de GPU. Llamamos a la función de utilidad [SageMaker AI Python SDK](https://sagemaker.readthedocs.io/en/stable/v2.html) `image_uris.retrieve()` para obtener la dirección de la imagen. Por ejemplo:

   ```
   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"},
               }
   ```

1. Obtenga un cliente de AWS SDK para Python (Boto3) SageMaker IA y cree el modelo que utiliza este contenedor.

   ```
   import boto3
   sagemaker_client = boto3.client('sagemaker')
   response = sagemaker_client.create_model(
                 ModelName        = '<MODEL_NAME>',
                 ExecutionRoleArn = role,
                 Containers       = [container])
   ```

1. (Opcional) Si usa una canalización de inferencia en serie, obtenga los contenedores adicionales que se incluirán en la canalización e inclúyalos en el argumento `Containers` de `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**  
Solo puede usar un multi-model-enabled punto final en una canalización de inferencia en serie.

1. (Opcional) Si su caso de uso no aprovecha almacenamiento en caché del modelo, defina el valor del campo `ModelCacheSetting` del parámetro `MultiModelConfig` en `Disabled` e inclúyalo en el argumento `Container` de la llamada a `create_model`. El valor predeterminado del campo `ModelCacheSetting` es `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]
               )
   ```

1. Configure el punto de conexión multimodelo con instancias respaldadas por GPU para el modelo. Recomendamos configurar los puntos de conexión con más de una instancia para permitir una alta disponibilidad y un mayor número de visitas a la memoria caché.

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

1. Creación del punto de conexión multimodelo utilizando los parámetros `EndpointName` y `EndpointConfigName`.

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

# Invocar un punto de conexión multimodelo
<a name="invoke-multi-model-endpoint"></a>

Para invocar un punto final de varios modelos, utilice el [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime.html#SageMakerRuntime.Client.invoke_endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime.html#SageMakerRuntime.Client.invoke_endpoint)de SageMaker AI Runtime del mismo modo que si se invocara un punto final de un solo modelo, con un solo cambio. Transfiera un nuevo parámetro de `TargetModel` que especifique cuál de los modelos en el punto de conexión establecer como destino. La `InvokeEndpoint` solicitud SageMaker AI Runtime se admite `X-Amzn-SageMaker-Target-Model` como un nuevo encabezado que toma la ruta relativa del modelo especificado para la invocación. El sistema de SageMaker IA construye la ruta absoluta del modelo combinando el prefijo que se proporciona como parte de la llamada a la `CreateModel` API con la ruta relativa del modelo.

Los siguientes procedimientos son los mismos para los puntos de conexión multimodelo respaldados por CPU y GPU.

------
#### [ AWS SDK for Python (Boto 3) ]

La solicitud de predicción de ejemplo siguiente utiliza el [SDK AWS para Python (Boto 3)](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime.html) en el cuaderno de muestras.

```
response = runtime_sagemaker_client.invoke_endpoint(
                        EndpointName = "<ENDPOINT_NAME>",
                        ContentType  = "text/csv",
                        TargetModel  = "<MODEL_FILENAME>.tar.gz",
                        Body         = body)
```

------
#### [ AWS CLI ]

 En el siguiente ejemplo, se muestra cómo realizar una solicitud CVS con dos filas mediante AWS Command Line Interface (AWS CLI):

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name "<ENDPOINT_NAME>" \
  --body "1.0,2.0,5.0"$'\n'"2.0,3.0,4.0" \
  --content-type "text/csv" \
  --target-model "<MODEL_NAME>.tar.gz"
  output_file.txt
```

Si la inferencia se realizó correctamente, se crea un `output_file.txt` con información sobre sus solicitudes de inferencia. Para obtener más ejemplos sobre cómo hacer predicciones con el AWS CLI, consulte [Hacer predicciones con el AWS CLI en la](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/deploying_tensorflow_serving.html#making-predictions-with-the-aws-cli) documentación del SDK de SageMaker Python.

------

El punto de conexión multimodelo carga dinámicamente los modelos de destino según sea necesario. Esto se puede observar al ejecutar el [Cuaderno de muestras de MME](https://sagemaker-examples.readthedocs.io/en/latest/advanced_functionality/multi_model_xgboost_home_value/xgboost_multi_model_endpoint_home_value.html), ya que itera por invocaciones aleatorias en diferentes modelos de destino que están alojados detrás del mismo punto de conexión. La primera solicitud contra un modelo específico tarda más tiempo porque el modelo se tiene que descargar de Amazon Simple Storage Service (Amazon S3) y cargar en la memoria. Esto se denomina *arranque en frío* y se prevé que en los puntos de conexión multimodelo se optimice para obtener una mejor relación precio-rendimiento para los clientes. Las llamadas posteriores terminan más rápido porque no hay sobrecarga adicional una vez que el modelo se haya cargado.

**nota**  
En el caso de las instancias respaldadas por GPU, el código de respuesta HTTP con 507 del contenedor de la GPU indica una falta de memoria o de otros recursos. Esto hace que los modelos no utilizados se descarguen del contenedor para cargar los modelos que se utilizan con más frecuencia.

## Reintente las solicitudes en caso de errores ModelNotReadyException
<a name="invoke-multi-model-config-retry"></a>

La primera vez que llame a `invoke_endpoint` para solicitar un modelo, este se descargará de Amazon Simple Storage Service y se cargará en el contenedor de inferencias. Esto hace que la primera llamada tarde más en devolverse. Las llamadas posteriores al mismo modelo finalizan más rápido, porque el modelo ya está cargado.

SageMaker La IA devuelve la respuesta a una llamada en un `invoke_endpoint` plazo de 60 segundos. Algunos modelos son demasiado grandes para descargarlos en 60 segundos. Si el modelo no termina de cargarse antes del límite de tiempo de espera de 60 segundos, la solicitud a `invoke_endpoint` devuelve el código de error `ModelNotReadyException` y el modelo continúa descargándose y cargándose en el contenedor de inferencia durante un máximo de 360 segundos. Si recibe un código de error `ModelNotReadyException` para una solicitud `invoke_endpoint`, vuelva a intentarlo. De forma predeterminada, las `invoke_endpoint` solicitudes de reintento AWS SDKs para Python (Boto 3) (con el [modo de reintento heredado](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/retries.html#legacy-retry-mode)) y Java que producen errores. `ModelNotReadyException` Puede configurar la estrategia de reintento para seguir reintentando la solicitud durante un máximo de 360 segundos. Si espera que su modelo tarde más de 60 segundos en descargarse y cargarse en el contenedor, establezca el tiempo de espera del socket del SDK en 70 segundos. Para obtener más información sobre cómo configurar la estrategia de reintento para AWS SDK para Python (Boto3), consulte [Configurar un modo de reintento](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/retries.html#configuring-a-retry-mode). El código siguiente muestra un ejemplo que configura la estrategia de reintento para reintentar las llamadas a `invoke_endpoint` durante un máximo de 180 segundos.

```
import boto3
from botocore.config import Config

# This example retry strategy sets the retry attempts to 2. 
# With this setting, the request can attempt to download and/or load the model 
# for upto 180 seconds: 1 orginal request (60 seconds) + 2 retries (120 seconds)
config = Config(
    read_timeout=70,
    retries={
        'max_attempts': 2  # This value can be adjusted to 5 to go up to the 360s max timeout
    }
)
runtime_sagemaker_client = boto3.client('sagemaker-runtime', config=config)
```

# Agregar o eliminar modelos
<a name="add-models-to-endpoint"></a>

Puede implementar modelos adicionales en un punto de conexión multimodelo e invocarlos a través de ese punto de conexión de inmediato. Al agregar un modelo nuevo, no es necesario actualizar o reducir el punto de conexión, por lo que evita el costo de crear y ejecutar un punto de conexión independiente para cada modelo nuevo. El proceso para agregar y eliminar modelos es el mismo para los puntos de conexión multimodelo respaldados por CPU y GPU.

 SageMaker La IA descarga los modelos no utilizados del contenedor cuando la instancia alcanza su capacidad de memoria y es necesario descargar más modelos al contenedor. SageMaker La IA también elimina los artefactos de modelos no utilizados del volumen de almacenamiento de la instancia cuando el volumen alcanza su capacidad máxima y es necesario descargar nuevos modelos. La primera invocación a un modelo recién agregado tarda más tiempo porque el punto de conexión tarda tiempo en descargar el modelo desde S3 a la memoria del contenedor en la instancia que aloja el punto de conexión

Con el punto de conexión ya en ejecución, copie un nuevo conjunto de artefactos de modelo en la ubicación de Amazon S3 en la que almacene los modelos.

```
# Add an AdditionalModel to the endpoint and exercise it
aws s3 cp AdditionalModel.tar.gz s3://amzn-s3-demo-bucket/path/to/artifacts/
```

**importante**  
Para actualizar un modelo, proceda como haría al agregar un modelo nuevo. Use un nombre nuevo y único. No sobrescriba artefactos del modelo en Amazon S3 ya que la versión antigua del modelo podría aún cargarse en los contenedores o en el volumen de almacenamiento de las instancias en el punto de conexión. Las invocaciones al nuevo modelo podrían invocar la versión anterior del modelo. 

Las aplicaciones cliente pueden solicitar predicciones del modelo de destino adicional en cuanto se almacene en S3.

```
response = runtime_sagemaker_client.invoke_endpoint(
                        EndpointName='<ENDPOINT_NAME>',
                        ContentType='text/csv',
                        TargetModel='AdditionalModel.tar.gz',
                        Body=body)
```

Para eliminar un modelo de un punto de conexión multimodelo, deje de invocar el modelo desde los clientes y elimínelo de la ubicación de S3 donde se almacenan los artefactos del modelo.

# Cree su propio contenedor para terminales SageMaker multimodelo de IA
<a name="build-multi-model-build-container"></a>

Consulte las siguientes secciones para incorporar su propio contenedor y sus dependencias a los puntos de conexión multimodelo.

**Topics**
+ [Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por CPU](#build-multi-model-container-cpu)
+ [Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por GPU](#build-multi-model-container-gpu)
+ [Usa el kit de herramientas de inferencia de IA SageMaker](#multi-model-inference-toolkit)
+ [Contrato para contenedores personalizados para puntos de conexión multimodelo](mms-container-apis.md)

## Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por CPU
<a name="build-multi-model-container-cpu"></a>

Si ninguna de las imágenes de contenedor prediseñadas satisface sus necesidades, puede crear su propio contenedor para usarlo con puntos de conexión multimodelo respaldados por CPU.

Se espera que las imágenes personalizadas de Amazon Elastic Container Registry (Amazon ECR) implementadas en SageMaker Amazon AI cumplan con el contrato básico descrito [Código de inferencia personalizado con los servicios de alojamiento](your-algorithms-inference-code.md) en el que se rige la SageMaker forma en que la IA interactúa con un contenedor de Docker que ejecuta su propio código de inferencia. Para que un contenedor pueda cargar y servir varios modelos de forma simultánea, hay otros APIs comportamientos que se deben seguir. Este contrato adicional incluye nuevos modelos APIs para cargar, enumerar, obtener y descargar modelos, y una API diferente para invocar los modelos. También hay diferentes comportamientos en los escenarios de error que APIs es necesario respetar. Para indicar que el contenedor cumple los requisitos adicionales, puede agregar el siguiente comando al archivo de Docker:

```
LABEL com.amazonaws.sagemaker.capabilities.multi-models=true
```

SageMaker La IA también inyecta una variable de entorno en el contenedor

```
SAGEMAKER_MULTI_MODEL=true
```

Si está creando un punto de conexión multimodelo para una canalización de inferencia en serie, el archivo Docker debe tener las etiquetas necesarias para las canalizaciones de inferencia multimodelo y en serie. Para obtener más información acerca de las canalizaciones de información en serie, consulte [Ejecutar predicciones en tiempo real con una canalización de inferencia](inference-pipeline-real-time.md).

Para ayudarle a implementar estos requisitos para un contenedor personalizado, hay dos bibliotecas disponibles:
+ [Multi Model Server](https://github.com/awslabs/multi-model-server) es un marco de código abierto para ofrecer modelos de aprendizaje automático que se pueden instalar en contenedores para proporcionar la interfaz que cumpla con los requisitos del nuevo contenedor de puntos finales multimodelo. APIs Proporciona las capacidades de administración de modelos y front-end HTTP requeridas por los puntos de conexión multimodelo para alojar varios modelos dentro de un único contenedor, cargar y descargar modelos del contenedor dinámicamente y realizar inferencia en un modelo cargado especificado. También proporciona un backend conectable que admite un controlador backend personalizado conectable donde puede implementar su propio algoritmo.
+ [SageMaker AI Inference Toolkit](https://github.com/aws/sagemaker-inference-toolkit) es una biblioteca que dota al servidor multimodelo de una configuración y unos ajustes que lo hacen compatible con los puntos finales multimodelo de IA. SageMaker También le permite ajustar parámetros de rendimiento importantes, como el número de trabajadores por modelo, en función de las necesidades de su situación. 

## Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por GPU
<a name="build-multi-model-container-gpu"></a>

En la actualidad, las bibliotecas Multi Model Server y AI Inference Toolkit no admiten la funcionalidad «trae tu propio contenedor» (BYOC) en terminales multimodelo con instancias respaldadas por la GPU. SageMaker 

[Para crear puntos de conexión multimodelo con instancias respaldadas por GPU, puede utilizar el servidor de inferencia NVIDIA Triton, compatible con SageMaker IA, junto con los contenedores de [inferencia NVIDIA Triton](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html).](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only) Para crear tus propias dependencias, puedes crear tu propio contenedor con el [servidor de inferencia NVIDIA Triton](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) compatible con la SageMaker IA como imagen base de tu archivo de Docker:

```
FROM 301217895009.dkr.ecr.us-west-2.amazonaws.com/sagemaker-tritonserver:22.07-py3
```

**importante**  
Los contenedores con el servidor de inferencia Triton son los únicos contenedores compatibles que puede utilizar para puntos de conexión multimodelo respaldados por GPU.

## Usa el kit de herramientas de inferencia de IA SageMaker
<a name="multi-model-inference-toolkit"></a>

**nota**  
El kit de herramientas de inferencia de SageMaker IA solo es compatible con terminales multimodelo respaldados por la CPU. Actualmente, el kit de herramientas de inferencia de SageMaker IA no es compatible con los terminales multimodelo compatibles con la GPU.

Los contenedores prediseñados que admiten puntos de conexión multimodelo se muestran en [Algoritmos, marcos e instancias compatibles con puntos de conexión multimodelo](multi-model-support.md). Si desea usar cualquier otro marco o algoritmo, necesita compilar un contenedor. La forma más sencilla de hacerlo es utilizar el [kit de herramientas de inferencia de SageMaker IA](https://github.com/aws/sagemaker-inference-toolkit) para ampliar un contenedor prediseñado existente. El kit de herramientas de inferencia de SageMaker IA es una implementación para el servidor multimodelo (MMS) que crea puntos finales que se pueden implementar en la IA. SageMaker [Para ver un ejemplo de cuaderno que muestra cómo configurar e implementar un contenedor personalizado que admita terminales multimodelo en la SageMaker IA, consulte el cuaderno de muestra BYOC para terminales multimodelo.](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/advanced_functionality/multi_model_bring_your_own)

**nota**  
El kit de herramientas de inferencia de SageMaker IA solo admite controladores de modelos de Python. Si desea implementar su controlador en cualquier otro lenguaje, debe crear su propio contenedor que implemente el punto final multimodelo adicional. APIs Para obtener información, consulte [Contrato para contenedores personalizados para puntos de conexión multimodelo](mms-container-apis.md).

**Para ampliar un contenedor mediante el kit de herramientas de inferencia de SageMaker IA**

1. Cree un controlador del modelo. MMS espera un controlador del modelo, que es un archivo de Python que implementa funciones para preprocesar, obtener predicciones del modelo y procesar la salida en un controlador del modelo. Para obtener un ejemplo de un controlador del modelo, consulte [model\$1handler.py](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/multi_model_bring_your_own/container/model_handler.py) en el cuaderno de muestras.

1. Importe el conjunto de herramientas de inferencia y utilice su función `model_server.start_model_server` para iniciar MMS. El siguiente ejemplo procede del archivo `dockerd-entrypoint.py` del cuaderno de muestras. Observe que la llamada a `model_server.start_model_server` pasa el controlador del modelo descrito en el paso anterior:

   ```
   import subprocess
   import sys
   import shlex
   import os
   from retrying import retry
   from subprocess import CalledProcessError
   from sagemaker_inference import model_server
   
   def _retry_if_error(exception):
       return isinstance(exception, CalledProcessError or OSError)
   
   @retry(stop_max_delay=1000 * 50,
          retry_on_exception=_retry_if_error)
   def _start_mms():
       # by default the number of workers per model is 1, but we can configure it through the
       # environment variable below if desired.
       # os.environ['SAGEMAKER_MODEL_SERVER_WORKERS'] = '2'
       model_server.start_model_server(handler_service='/home/model-server/model_handler.py:handle')
   
   def main():
       if sys.argv[1] == 'serve':
           _start_mms()
       else:
           subprocess.check_call(shlex.split(' '.join(sys.argv[1:])))
   
       # prevent docker exit
       subprocess.call(['tail', '-f', '/dev/null'])
       
   main()
   ```

1. En su `Dockerfile`, copie el controlador del modelo del primer paso y especifique el archivo de Python del paso anterior como el punto de entrada en su `Dockerfile`. Las líneas siguientes son del archivo [Dockerfile](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/advanced_functionality/multi_model_bring_your_own/container/Dockerfile) utilizado en el cuaderno de muestras:

   ```
   # Copy the default custom service file to handle incoming data and inference requests
   COPY model_handler.py /home/model-server/model_handler.py
   
   # Define an entrypoint script for the docker image
   ENTRYPOINT ["python", "/usr/local/bin/dockerd-entrypoint.py"]
   ```

1. Compile y registre su contenedor. El siguiente guión de intérprete de comandos del cuaderno de muestras compila el contenedor y lo carga en un repositorio de Amazon Elastic Container Registry de su cuenta de AWS :

   ```
   %%sh
   
   # The name of our algorithm
   algorithm_name=demo-sagemaker-multimodel
   
   cd container
   
   account=$(aws sts get-caller-identity --query Account --output text)
   
   # Get the region defined in the current configuration (default to us-west-2 if none defined)
   region=$(aws configure get region)
   region=${region:-us-west-2}
   
   fullname="${account}.dkr.ecr.${region}.amazonaws.com/${algorithm_name}:latest"
   
   # If the repository doesn't exist in ECR, create it.
   aws ecr describe-repositories --repository-names "${algorithm_name}" > /dev/null 2>&1
   
   if [ $? -ne 0 ]
   then
       aws ecr create-repository --repository-name "${algorithm_name}" > /dev/null
   fi
   
   # Get the login command from ECR and execute it directly
   $(aws ecr get-login --region ${region} --no-include-email)
   
   # Build the docker image locally with the image name and then push it to ECR
   # with the full name.
   
   docker build -q -t ${algorithm_name} .
   docker tag ${algorithm_name} ${fullname}
   
   docker push ${fullname}
   ```

Ahora puede usar este contenedor para implementar puntos finales multimodelo en IA. SageMaker 

**Topics**
+ [Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por CPU](#build-multi-model-container-cpu)
+ [Utilice sus propias dependencias para puntos de conexión multimodelo en instancias respaldadas por GPU](#build-multi-model-container-gpu)
+ [Usa el kit de herramientas de inferencia de IA SageMaker](#multi-model-inference-toolkit)
+ [Contrato para contenedores personalizados para puntos de conexión multimodelo](mms-container-apis.md)

# Contrato para contenedores personalizados para puntos de conexión multimodelo
<a name="mms-container-apis"></a>

Para gestionar varios modelos, tu contenedor debe ser compatible con un conjunto APIs que permita a Amazon SageMaker AI comunicarse con el contenedor para cargar, publicar, obtener y descargar los modelos según sea necesario. `model_name`Se utiliza en el nuevo conjunto de APIs como parámetro de entrada clave. Se espera que el contenedor del cliente realice un seguimiento de los modelos cargados mediante `model_name` como clave de asignación. Además, `model_name` es un identificador opaco y no es necesariamente el valor del parámetro `TargetModel` transferido a la API `InvokeEndpoint`. El `TargetModel` valor original de la `InvokeEndpoint` solicitud se pasa al contenedor en APIs forma de `X-Amzn-SageMaker-Target-Model` encabezado que se puede usar para fines de registro.

**nota**  
Actualmente, solo se admiten terminales multimodelo para instancias respaldadas por GPU con el contenedor del servidor de [inferencia NVIDIA Triton](https://docs.aws.amazon.com/sagemaker/latest/dg/triton.html) de SageMaker AI. Este contenedor ya implementa el contrato que se define a continuación. Los clientes pueden usar este contenedor directamente con sus puntos de conexión multimodelo de GPU, sin necesidad de realizar ningún trabajo adicional.

Puede configurar lo siguiente APIs en sus contenedores para los puntos finales multimodelo respaldados por la CPU.

**Topics**
+ [API Load Model](#multi-model-api-load-model)
+ [API List Model](#multi-model-api-list-model)
+ [API Get Model](#multi-model-api-get-model)
+ [API Unload Model](#multi-model-api-unload-model)
+ [API Invoke Model](#multi-model-api-invoke-model)

## API Load Model
<a name="multi-model-api-load-model"></a>

Indica al contenedor que cargue un modelo particular presente en el campo `url` del cuerpo en la memoria del contenedor del cliente y que realice un seguimiento del mismo con el `model_name` asignado. Después de cargar un modelo, el contenedor debe estar listo para servir solicitudes de inferencia usando este `model_name`.

```
POST /models HTTP/1.1
Content-Type: application/json
Accept: application/json

{
     "model_name" : "{model_name}",
     "url" : "/opt/ml/models/{model_name}/model",
}
```

**nota**  
Si `model_name` ya está cargado, esta API debería devolver 409. Cada vez que no se pueda cargar un modelo por falta de memoria o de cualquier otro recurso, esta API debería devolver un código de estado HTTP 507 a SageMaker AI, que luego iniciará la descarga de los modelos no utilizados para su recuperación.

## API List Model
<a name="multi-model-api-list-model"></a>

Devuelve la lista de modelos cargados en la memoria del contenedor del cliente.

```
GET /models HTTP/1.1
Accept: application/json

Response = 
{
    "models": [
        {
             "modelName" : "{model_name}",
             "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        {
            "modelName" : "{model_name}",
            "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        ....
    ]
}
```

Esta API también admite paginación.

```
GET /models HTTP/1.1
Accept: application/json

Response = 
{
    "models": [
        {
             "modelName" : "{model_name}",
             "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        {
            "modelName" : "{model_name}",
            "modelUrl" : "/opt/ml/models/{model_name}/model",
        },
        ....
    ]
}
```

SageMaker Inicialmente, AI puede llamar a la API List Models sin proporcionar un valor para. `next_page_token` Si se devuelve un campo `nextPageToken` como parte de la respuesta, se proporcionará como el valor de `next_page_token` una llamada posterior a List Models. Si no se devuelve un `nextPageToken`, significa que no hay más modelos para devolver.

## API Get Model
<a name="multi-model-api-get-model"></a>

Esta es una API de lectura simple en la entidad `model_name`.

```
GET /models/{model_name} HTTP/1.1
Accept: application/json

{
     "modelName" : "{model_name}",
     "modelUrl" : "/opt/ml/models/{model_name}/model",
}
```

**nota**  
Si `model_name` no se carga, esta API debería devolver 404.

## API Unload Model
<a name="multi-model-api-unload-model"></a>

Indica a la plataforma de SageMaker IA que dé instrucciones al contenedor del cliente para que descargue un modelo de la memoria. Esto inicia el desalojo de un modelo candidato tal como determina la plataforma al iniciar el proceso de carga de un nuevo modelo. Los recursos aprovisionados a `model_name` los debe reclamar el contenedor cuando esta API devuelve una respuesta.

```
DELETE /models/{model_name}
```

**nota**  
Si `model_name` no se carga, esta API debería devolver 404.

## API Invoke Model
<a name="multi-model-api-invoke-model"></a>

Realiza una solicitud de predicción del `model_name` particular suministrado. La `InvokeEndpoint` solicitud SageMaker AI Runtime se admite `X-Amzn-SageMaker-Target-Model` como un nuevo encabezado que sigue la ruta relativa del modelo especificado para la invocación. El sistema de SageMaker IA construye la ruta absoluta del modelo combinando el prefijo que se proporciona como parte de la llamada a la `CreateModel` API con la ruta relativa del modelo.

```
POST /models/{model_name}/invoke HTTP/1.1
Content-Type: ContentType
Accept: Accept
X-Amzn-SageMaker-Custom-Attributes: CustomAttributes
X-Amzn-SageMaker-Target-Model: [relativePath]/{artifactName}.tar.gz
```

**nota**  
Si `model_name` no se carga, esta API debería devolver 404.

Además, en las instancias de GPU, si `InvokeEndpoint` se produce un error por falta de memoria o de otros recursos, esta API debería devolver un código de estado HTTP 507 a la SageMaker IA, que a su vez iniciará la descarga de los modelos no utilizados para su recuperación.

# Seguridad de puntos de conexión multimodelo
<a name="multi-model-endpoint-security"></a>

Los modelos y los datos en un punto de conexión multimodelo se encuentran coubicados en el volumen de almacenamiento de la instancia y en la memoria del contenedor. Todas las instancias de los puntos de enlace de Amazon SageMaker AI se ejecutan en un único contenedor arrendatario de tu propiedad. Solo los modelos pueden ejecutarse en el punto de conexión multimodelo. Es su responsabilidad gestionar el mapeo de las solicitudes a los modelos y proporcionar a los usuarios acceso a los modelos de destino correctos. SageMaker La IA utiliza las [funciones de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) para proporcionar políticas de IAM basadas en la identidad que se utilizan para especificar las acciones y los recursos permitidos o denegados y las condiciones en las que se permiten o deniegan las acciones.

De forma predeterminada, una entidad principal de IAM con permisos [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html) en un punto de conexión multimodelo puede invocar cualquier modelo en la dirección del prefijo S3 definido en la operación [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html), siempre que el rol de ejecución de IAM definido en la operación tenga permisos para descargar el modelo. Si necesita restringir el acceso [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html) a un grupo limitado de modelos en S3, lleve a cabo una de estas acciones:
+ Restrinja las llamadas `InvokeEndpont` a modelos específicos alojados en el punto de conexión mediante la clave de condición IAM `sagemaker:TargetModel`. Por ejemplo, la siguiente política permite solicitudes `InvokeEndpont` solo cuando el valor del campo `TargetModel` coincide con una de las expresiones regulares especificadas:

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Action": [
                  "sagemaker:InvokeEndpoint"
              ],
              "Effect": "Allow",
              "Resource":
              "arn:aws:sagemaker:us-east-1:111122223333:endpoint/endpoint_name",
              "Condition": {
                  "StringLike": {
                      "sagemaker:TargetModel": ["company_a/*", "common/*"]
                  }
              }
          }
      ]
  }
  ```

------

  Para obtener información sobre las claves de condición de SageMaker IA, consulte [Claves de condición para Amazon SageMaker AI](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsagemaker.html#amazonsagemaker-policy-keys) en la *Guía del AWS Identity and Access Management usuario*.
+ Cree puntos de conexión multimodelo con prefijos S3 más restrictivos. 

Para obtener más información sobre cómo la SageMaker IA utiliza los roles para administrar el acceso a los puntos finales y realizar operaciones en su nombre, consulte[Cómo utilizar las funciones de ejecución de la SageMaker IA](sagemaker-roles.md). Es posible que sus clientes también tengan ciertos requisitos de aislamiento de datos dictados por sus propios requisitos de cumplimiento que se pueden satisfacer mediante identidades de IAM.

# CloudWatch Métricas para despliegues de terminales multimodelo
<a name="multi-model-endpoint-cloudwatch-metrics"></a>

Amazon SageMaker AI proporciona métricas para los puntos de conexión para que pueda supervisar la tasa de aciertos de la memoria caché, el número de modelos cargados y los tiempos de espera de los modelos para cargarse, descargarse y cargarse en un punto final multimodelo. Algunas de las métricas son diferentes para los puntos finales multimodelo respaldados por CPU y GPU, por lo que en las siguientes secciones se describen las CloudWatch métricas de Amazon que puede usar para cada tipo de punto final multimodelo.

Para obtener más información sobre las métricas, consulte **Métricas de carga de modelo de punto de conexión multimodelo** y **Métricas de instancia de modelo de punto de conexión multimodelo** en [Métricas de Amazon SageMaker AI en Amazon CloudWatch](monitoring-cloudwatch.md). Las métricas por modelo no son compatibles. 

## CloudWatch métricas para puntos finales multimodelo respaldados por la CPU
<a name="multi-model-endpoint-cloudwatch-metrics-cpu"></a>

Puede supervisar las siguientes métricas en puntos de conexión multimodelo respaldados por CPU.

El espacio de `AWS/SageMaker` nombres incluye el siguiente modelo de métricas de carga de las llamadas a. [ InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html)

Las métricas están disponibles con una frecuencia de un minuto.

Para obtener información sobre cuánto tiempo se conservan CloudWatch las métricas, consulta la *referencia [GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html)de la CloudWatch API de Amazon*.

**Métricas de carga de modelo de punto de conexión multimodelo**


| Métrica | Description (Descripción) | 
| --- | --- | 
| ModelLoadingWaitTime  |  El intervalo de tiempo que una solicitud de invocación ha esperado a que se descargue o cargue el modelo de destino, o ambos, para realizar la inferencia.  Unidades: microsegundos  Estadísticas válidas: Average, Sum, Min, Max, Sample Count.   | 
| ModelUnloadingTime  |  El intervalo de tiempo que tardó en descargar el modelo a través de la llamada a la API `UnloadModel` del contenedor.  Unidades: microsegundos  Estadísticas válidas: Average, Sum, Min, Max, Sample Count.   | 
| ModelDownloadingTime |  El intervalo de tiempo que se tardó en descargar el modelo de Amazon Simple Storage Service (Amazon S3). Unidades: microsegundos Estadísticas válidas: Average, Sum, Min, Max, Sample Count.   | 
| ModelLoadingTime  |  El intervalo de tiempo que tardó en cargar el modelo a través de la llamada a la API `LoadModel` del contenedor. Unidades: microsegundos  Estadísticas válidas: Average, Sum, Min, Max, Sample Count.   | 
| ModelCacheHit  |  El número de solicitudes `InvokeEndpoint` enviadas al punto de conexión multimodelo para el que ya se ha cargado el modelo. La estadística Promedio muestra la proporción de solicitudes para las que el modelo ya se ha cargado. Unidades: ninguna Estadísticas válidas: Average, Sum, Sample Count.  | 

**Dimensiones para métricas de carga de modelo de punto de conexión multimodelo**


| Dimensión | Description (Descripción) | 
| --- | --- | 
| EndpointName, VariantName |  Filtra las métricas de invocación de punto de conexión para una `ProductionVariant` del punto de conexión y la variante especificados.  | 

Los espacios de nombres `/aws/sagemaker/Endpoints` contienen las siguientes métricas de instancia de las llamadas a [ InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html).

Las métricas están disponibles con una frecuencia de un minuto.

Para obtener información sobre cuánto tiempo se conservan CloudWatch las métricas, consulta la *referencia [GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html)de la CloudWatch API de Amazon*.

**Métricas de instancia de modelo de punto de conexión multimodelo**


| Métrica | Description (Descripción) | 
| --- | --- | 
| LoadedModelCount  |  El número de modelos cargados en los contenedores del punto de conexión multimodelo. Esta métrica se emite por instancia. La estadística Promedio con un período de 1 minuto indica el número medio de modelos cargados por instancia. La estadística Suma indica el número total de modelos cargados en todas las instancias del punto de conexión. Los modelos de los que realiza el seguimiento de esta métrica no son necesariamente únicos porque un modelo puede cargarse en varios contenedores en el punto de conexión. Unidades: ninguna Estadísticas válidas: Average, Sum, Min, Max, Sample Count.  | 
| CPUUtilization  |  La suma de la utilización de cada núcleo individual de la CPU. La utilización de la CPU de cada núcleo oscila entre 0 y 100. Por ejemplo, si hay cuatro CPUs, el `CPUUtilization` rango es del 0% al 400%. Para las variantes de punto de conexión, el valor es la suma de la utilización de la CPU de los contenedores principales y suplementarios en la instancia. Unidad: porcentaje  | 
| MemoryUtilization |  El porcentaje de memoria que utilizan los contenedores en una instancia. Este valor oscila del 0 % al 100 %. Para las variantes de punto de conexión, el valor es la suma de la utilización de la memoria de los contenedores principales y suplementarios en la instancia. Unidad: porcentaje  | 
| DiskUtilization |  El porcentaje de espacio en disco usado por los contenedores en una instancia. Este valor oscila del 0 % al 100 %. Para las variantes de punto de conexión, el valor es la suma de la utilización del espacio en disco de los contenedores principales y suplementarios en la instancia. Unidad: porcentaje  | 

## CloudWatch métricas para despliegues de terminales multimodelo con GPU
<a name="multi-model-endpoint-cloudwatch-metrics-gpu"></a>

Puede supervisar las siguientes métricas en puntos de conexión multimodelo respaldados por GPU.

El espacio de `AWS/SageMaker` nombres incluye las siguientes métricas de carga del modelo de las llamadas a. [ InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html)

Las métricas están disponibles con una frecuencia de un minuto.

Para obtener información sobre cuánto tiempo se conservan CloudWatch las métricas, consulta la *referencia [GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html)de la CloudWatch API de Amazon*.

**Métricas de carga de modelo de punto de conexión multimodelo**


| Métrica | Description (Descripción) | 
| --- | --- | 
| ModelLoadingWaitTime  |  El intervalo de tiempo que una solicitud de invocación ha esperado a que se descargue o cargue el modelo de destino, o ambos, para realizar la inferencia.  Unidades: microsegundos  Estadísticas válidas: Average, Sum, Min, Max, Sample Count.   | 
| ModelUnloadingTime  |  El intervalo de tiempo que tardó en descargar el modelo a través de la llamada a la API `UnloadModel` del contenedor.  Unidades: microsegundos  Estadísticas válidas: Average, Sum, Min, Max, Sample Count.   | 
| ModelDownloadingTime |  El intervalo de tiempo que se tardó en descargar el modelo de Amazon Simple Storage Service (Amazon S3). Unidades: microsegundos Estadísticas válidas: Average, Sum, Min, Max, Sample Count.   | 
| ModelLoadingTime  |  El intervalo de tiempo que tardó en cargar el modelo a través de la llamada a la API `LoadModel` del contenedor. Unidades: microsegundos  Estadísticas válidas: Average, Sum, Min, Max, Sample Count.   | 
| ModelCacheHit  |  El número de solicitudes `InvokeEndpoint` enviadas al punto de conexión multimodelo para el que ya se ha cargado el modelo. La estadística Promedio muestra la proporción de solicitudes para las que el modelo ya se ha cargado. Unidades: ninguna Estadísticas válidas: Average, Sum, Sample Count.  | 

**Dimensiones para métricas de carga de modelo de punto de conexión multimodelo**


| Dimensión | Description (Descripción) | 
| --- | --- | 
| EndpointName, VariantName |  Filtra las métricas de invocación de punto de conexión para una `ProductionVariant` del punto de conexión y la variante especificados.  | 

Los espacios de nombres `/aws/sagemaker/Endpoints` contienen las siguientes métricas de instancia de las llamadas a [ InvokeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html).

Las métricas están disponibles con una frecuencia de un minuto.

Para obtener información sobre cuánto tiempo se conservan CloudWatch las métricas, consulta la *referencia [GetMetricStatistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricStatistics.html)de la CloudWatch API de Amazon*.

**Métricas de instancia de modelo de punto de conexión multimodelo**


| Métrica | Description (Descripción) | 
| --- | --- | 
| LoadedModelCount  |  El número de modelos cargados en los contenedores del punto de conexión multimodelo. Esta métrica se emite por instancia. La estadística Promedio con un período de 1 minuto indica el número medio de modelos cargados por instancia. La estadística Suma indica el número total de modelos cargados en todas las instancias del punto de conexión. Los modelos de los que realiza el seguimiento de esta métrica no son necesariamente únicos porque un modelo puede cargarse en varios contenedores en el punto de conexión. Unidades: ninguna Estadísticas válidas: Average, Sum, Min, Max, Sample Count.  | 
| CPUUtilization  |  La suma de la utilización de cada núcleo individual de la CPU. La utilización de la CPU de cada núcleo oscila entre 0 y 100. Por ejemplo, si hay cuatro CPUs, el `CPUUtilization` rango es del 0% al 400%. Para las variantes de punto de conexión, el valor es la suma de la utilización de la CPU de los contenedores principales y suplementarios en la instancia. Unidad: porcentaje  | 
| MemoryUtilization |  El porcentaje de memoria que utilizan los contenedores en una instancia. Este valor oscila del 0 % al 100 %. Para las variantes de punto de conexión, el valor es la suma de la utilización de la memoria de los contenedores principales y suplementarios en la instancia. Unidad: porcentaje  | 
| GPUUtilization |  El porcentaje de unidades de GPU usadas por los contenedores en una instancia. El valor puede oscilar entre 0 y 100 y se multiplica por el número de. GPUs Por ejemplo, si hay cuatro GPUs, el `GPUUtilization` rango es del 0% al 400%. Para las variantes de punto de conexión, el valor es la suma de la utilización de la GPU de los contenedores principales y suplementarios en la instancia. Unidad: porcentaje  | 
| GPUMemoryUtilization |  El porcentaje de memoria de GPU que utilizan los contenedores en una instancia. El rango de valores es de 0 a 100 y se multiplica por el número de. GPUs Por ejemplo, si hay cuatro GPUs, el `GPUMemoryUtilization` rango es del 0% al 400%. Para las variantes de punto de conexión, el valor es la suma de la utilización de la memoria de la GPU de los contenedores principales y suplementarios en la instancia. Unidad: porcentaje  | 
| DiskUtilization |  El porcentaje de espacio en disco usado por los contenedores en una instancia. Este valor oscila del 0 % al 100 %. Para las variantes de punto de conexión, el valor es la suma de la utilización del espacio en disco de los contenedores principales y suplementarios en la instancia. Unidad: porcentaje  | 

# Establezca el comportamiento de almacenamiento en caché del modelo de SageMaker punto final multimodelo de IA
<a name="multi-model-caching"></a>

De forma predeterminada, los puntos de conexión multimodelo almacenan en caché los modelos que se utilizan con más frecuencia en la memoria (CPU o GPU, dependiendo de si tiene instancias respaldadas por CPU o GPU) y en disco para proporcionar inferencias de baja latencia. Los modelos en caché se descargan y se and/or eliminan del disco solo cuando un contenedor se queda sin memoria o espacio en disco para adaptarse a un modelo recién diseñado.

Puede cambiar el comportamiento de almacenamiento en caché de un punto de conexión multimodelo y habilitar o deshabilitar explícitamente el almacenamiento en caché del modelo configurando el parámetro `ModelCacheSetting` al llamar a [create\$1model](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model).

Recomendamos establecer el valor del parámetro `ModelCacheSetting` en `Disabled` para los casos de uso que no aprovechen el almacenamiento en caché del modelo. Por ejemplo, cuando es necesario servir una gran cantidad de modelos desde el punto de conexión, pero cada modelo se invoca solo una vez (o con muy poca frecuencia). En estos casos de uso, si se establece el valor del parámetro `ModelCacheSetting` en `Disabled` permite un mayor número de transacciones por segundo (TPS) para solicitudes `invoke_endpoint`, en comparación con el modo de almacenamiento en caché predeterminado. Un TPS más alto en estos casos de uso se debe a que la SageMaker IA hace lo siguiente después de la solicitud: `invoke_endpoint`
+ Descarga el modelo de la memoria de forma asíncrona y lo elimina del disco inmediatamente después de invocarlo.
+ Proporciona una mayor simultaneidad para descargar y cargar modelos en el contenedor de inferencias. Tanto en el caso de los puntos finales respaldados por la CPU como por la GPU, la simultaneidad es un factor del número de la v CPUs de la instancia contenedora.

Para obtener instrucciones sobre cómo elegir un tipo de instancia de SageMaker IA ML para un punto final multimodelo, consulte. [Recomendaciones de instancia para implementaciones de puntos de conexión multimodelo](multi-model-endpoint-instance.md)

# Establecer políticas de escalado automático para implementaciones de puntos de conexión multimodelo
<a name="multi-model-endpoints-autoscaling"></a>

SageMaker Los puntos finales multimodelo de IA son totalmente compatibles con el escalado automático, que gestiona las réplicas de los modelos para garantizar que los modelos escalen en función de los patrones de tráfico. Se recomienda configurar el punto de conexión multimodelo y el tamaño de las instancias teniendo en cuenta [Recomendaciones de instancia para implementaciones de puntos de conexión multimodelo](multi-model-endpoint-instance.md) y también configurar la instancia en función del escalado automático para el punto de conexión. Las tasas de invocación utilizadas para desencadenar un evento de escalado automático se basan en el conjunto agregado de predicciones a través del conjunto completo de modelos atendidos por el punto de conexión. Para obtener más información sobre cómo configurar el escalado automático de puntos finales, consulte [Escalar automáticamente los modelos de Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html).

Puede configurar políticas de escalado automático con métricas predefinidas y personalizadas en puntos de conexión multimodelo respaldados por CPU y GPU.

**nota**  
SageMaker Las métricas de puntos finales multimodelo de IA están disponibles con un nivel de detalle de un minuto.

## Definir una política de escalado
<a name="multi-model-endpoints-autoscaling-define"></a>

Para especificar las métricas y los valores de destino para una política de escalado, puede configurar una política de escalado de seguimiento de destino. Puede utilizar una métrica predefinida o una métrica personalizada.

La configuración de la política de escalado está representada por un bloque JSON. Puede guardar su configuración de la política de escalado como bloque JSON en un archivo de texto. Este archivo de texto se utiliza al invocar la API Application Auto Scaling AWS CLI o la API. Para obtener más información acerca de la sintaxis de configuración de la política, consulte `[TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)` en la *referencia de la API de Auto Scaling de aplicaciones*.

Las siguientes opciones están disponibles para definir una configuración de la política de escalado de seguimiento de destino.

### Uso de una métrica predefinida
<a name="multi-model-endpoints-autoscaling-predefined"></a>

Para definir rápidamente una política de escalado de seguimiento de destino para una variante, utilice la métrica predefinida `SageMakerVariantInvocationsPerInstance`. `SageMakerVariantInvocationsPerInstance` es el número medio de veces por minuto que cada instancia de una variante se invoca. Le recomendamos fehacientemente el uso de esta métrica.

Para usar una métrica predefinida en una política de escalado, cree una configuración de seguimiento de destino para su política. En la configuración de seguimiento de destino, incluya `PredefinedMetricSpecification` para la métrica predefinida y `TargetValue` para el valor de destino de esa métrica.

El siguiente ejemplo es una configuración de política típica para el escalado de seguimiento de destino para una variante. En esta configuración, utilizamos la métrica predefinida `SageMakerVariantInvocationsPerInstance` para ajustar el número de las instancias de variantes de manera que cada instancia disponga de una métrica `InvocationsPerInstance` de `70`.

```
{"TargetValue": 70.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "InvocationsPerInstance"
    }
}
```

**nota**  
Le recomendamos que utilice `InvocationsPerInstance` mientras utilice puntos de conexión multimodelo. El `TargetValue` de esta métrica depende de los requisitos de latencia de la aplicación. También le recomendamos que realice una prueba de carga de sus puntos de conexión para configurar los valores de los parámetros de escalado adecuados. Para obtener más información sobre las pruebas de carga y la configuración del escalado automático para sus puntos de enlace, consulte el blog [Configuración de puntos de enlace de inferencia de escalado automático en Amazon AI](https://aws.amazon.com/blogs/machine-learning/configuring-autoscaling-inference-endpoints-in-amazon-sagemaker/). SageMaker 

### Uso de una métrica personalizada
<a name="multi-model-endpoints-autoscaling-custom"></a>

Si tiene que definir una política de escalado de seguimiento de destino que cumpla sus requisitos personalizados, defina una métrica personalizada. Puede definir una métrica personalizada en función de cualquier métrica de variante de producción que cambie en proporción al escalado.

No todas las métricas de SageMaker IA funcionan para el seguimiento de objetivos. La métrica debe ser una métrica de utilización válida y debe describir el nivel de actividad de una instancia. El valor de la métrica debe aumentar o reducirse en proporción inversa al número de instancias de variantes. Es decir, el valor de la métrica debe disminuir cuando el número de instancias aumenta.

**importante**  
Antes de implementar el escalado automático en producción, debe realizar la prueba del escalado automático con su métrica personalizada.

#### Ejemplo de métrica personalizada para un punto de conexión multimodelo respaldado por CPU
<a name="multi-model-endpoints-autoscaling-custom-cpu"></a>

En el siguiente ejemplo aparece una configuración de seguimiento de destino para una política de escalado. En esta configuración, para una variante llamada `my-model`, la métrica personalizada de `CPUUtilization` ajusta el número de instancias del punto de conexión en función de la utilización media de la CPU del 50 por ciento en todas las instancias.

```
{"TargetValue": 50,
    "CustomizedMetricSpecification":
    {"MetricName": "CPUUtilization",
        "Namespace": "/aws/sagemaker/Endpoints",
        "Dimensions": [
            {"Name": "EndpointName", "Value": "my-endpoint" },
            {"Name": "ModelName","Value": "my-model"}
        ],
        "Statistic": "Average",
        "Unit": "Percent"
    }
}
```

#### Ejemplo de métrica personalizada para un punto de conexión multimodelo respaldado por GPU
<a name="multi-model-endpoints-autoscaling-custom-gpu"></a>

En el siguiente ejemplo aparece una configuración de seguimiento de destino para una política de escalado. En esta configuración, para una variante llamada `my-model`, la métrica personalizada de `GPUUtilization` ajusta el número de instancias del punto de conexión en función de la utilización media de la GPU del 50 por ciento en todas las instancias.

```
{"TargetValue": 50,
    "CustomizedMetricSpecification":
    {"MetricName": "GPUUtilization",
        "Namespace": "/aws/sagemaker/Endpoints",
        "Dimensions": [
            {"Name": "EndpointName", "Value": "my-endpoint" },
            {"Name": "ModelName","Value": "my-model"}
        ],
        "Statistic": "Average",
        "Unit": "Percent"
    }
}
```

## Incorporación de un periodo de recuperación
<a name="multi-model-endpoints-autoscaling-cooldown"></a>

Para agregar un periodo de recuperación para el escalado horizontal de su modelo, especifique un valor, en segundos, para `ScaleOutCooldown`. De forma similar, para agregar un periodo de recuperación para reducir horizontalmente su modelo, agregue un valor, en segundos, para `ScaleInCooldown`. Para obtener más información acerca de `ScaleInCooldown` y `ScaleOutCooldown`, consulte `[TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)` en la *referencia de la API de Application Auto Scaling*.

A continuación se muestra un ejemplo de la configuración de seguimiento de destino para una política de escalado. En esta configuración, la métrica predefinida `SageMakerVariantInvocationsPerInstance` se utiliza para ajustar el escalado según una media de `70` en todas las instancias de esa variante. La configuración proporciona un periodo de recuperación de escalado descendente de 10 minutos y un periodo de recuperación de escalado ascendente de 5 minutos.

```
{"TargetValue": 70.0,
    "PredefinedMetricSpecification":
    {"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance"
    },
    "ScaleInCooldown": 600,
    "ScaleOutCooldown": 300
}
```

# Puntos de conexión con varios contenedores
<a name="multi-container-endpoints"></a>

SageMaker Los puntos de enlace multicontenedor de IA permiten a los clientes implementar varios contenedores, que utilizan diferentes modelos o marcos, en un único punto de enlace de IA. SageMaker Los contenedores se pueden ejecutar en secuencia como una canalización de inferencia, o se puede acceder a cada contenedor de forma individual mediante la invocación directa para mejorar la utilización de los puntos de conexión y optimizar los costes.

Para obtener información sobre cómo invocar los contenedores de un punto de conexión multicontenedor de forma secuencial, consulte [Canalizaciones de inferencia en Amazon AI SageMaker](inference-pipelines.md).

Para obtener información sobre cómo invocar un contenedor específico de un punto de conexión multicontenedor, consulte [Invoque un punto de conexión multicontenedor con invocación directa](multi-container-direct.md)

**Topics**
+ [Para crear un punto de conexión multicontenedor (Boto 3)](multi-container-create.md)
+ [Actualice un punto de conexión multicontenedor](multi-container-update.md)
+ [Invoque un punto de conexión multicontenedor con invocación directa](multi-container-direct.md)
+ [Seguridad con puntos de conexión multicontenedor con invocación directa](multi-container-security.md)
+ [Métricas de puntos de conexión multicontenedor con invocación directa](multi-container-metrics.md)
+ [Puntos de conexión multicontenedor](multi-container-auto-scaling.md)
+ [Solución de problemas de puntos de conexión multicontenedor](multi-container-troubleshooting.md)

# Para crear un punto de conexión multicontenedor (Boto 3)
<a name="multi-container-create"></a>

Cree un punto final de varios contenedores mediante una llamada [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)y [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html) APIs como lo haría si creara cualquier otro punto de enlace. [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html) Puede ejecutar estos contenedores secuencialmente como una canalización de inferencia o ejecutar cada contenedor individual mediante la invocación directa. Los puntos de conexión multicontenedor tienen los siguientes requisitos cuando llama: `create_model`
+ Utilice el parámetro `Containers` en lugar de `PrimaryContainer` e incluya más de un contenedor en el parámetro `Containers`.
+ El `ContainerHostname` parámetro es obligatorio para cada contenedor en un punto de conexión multicontenedor con invocación directa.
+ Defina el parámetro `Mode` del campo `InferenceExecutionConfig` en `Direct` para la invocación directa de cada contenedor o `Serial` para utilizarlos como una canalización de inferencia. El modo predeterminado es `Serial`. 

**nota**  
Actualmente, hay un límite de hasta 15 contenedores admitidos en un punto de conexión multicontenedor.

En el siguiente ejemplo, se crea un modelo multicontenedor para la invocación directa.

1. Cree elementos contenedores y `InferenceExecutionConfig` con invocación directa.

   ```
   container1 = {
                    'Image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myimage1:mytag',
                    'ContainerHostname': 'firstContainer'
                }
   
   container2 = {
                    'Image': '123456789012.dkr.ecr.us-east-1.amazonaws.com/myimage2:mytag',
                    'ContainerHostname': 'secondContainer'
                }
   inferenceExecutionConfig = {'Mode': 'Direct'}
   ```

1. Cree el modelo con los elementos contenedores y establece el campo `InferenceExecutionConfig`.

   ```
   import boto3
   sm_client = boto3.Session().client('sagemaker')
   
   response = sm_client.create_model(
                  ModelName = 'my-direct-mode-model-name',
                  InferenceExecutionConfig = inferenceExecutionConfig,
                  ExecutionRoleArn = role,
                  Containers = [container1, container2]
              )
   ```

Para crear un punto de conexión, debe llamar a [create\$1endpoint\$1config](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint_config) y [create\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint) como lo haría para crear cualquier otro punto de conexión.

# Actualice un punto de conexión multicontenedor
<a name="multi-container-update"></a>

Para actualizar un punto final multicontenedor de Amazon SageMaker AI, complete los siguientes pasos.

1.  Llame a [create\$1model](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_model) para crear un nuevo modelo con un nuevo valor para el parámetro `Mode` del campo `InferenceExecutionConfig`.

1.  Llame a [create\$1endpoint\$1config](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint_config) para crear una nueva configuración de punto de conexión con un nombre diferente utilizando el nuevo modelo que creó en el paso anterior.

1.  Llame a [update\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.update_endpoint) para actualizar el punto de conexión con la nueva configuración de punto final que creó en el paso anterior. 

# Invoque un punto de conexión multicontenedor con invocación directa
<a name="multi-container-direct"></a>

SageMaker Los puntos de enlace de varios contenedores de IA permiten a los clientes implementar varios contenedores para implementar diferentes modelos en un punto final de IA. SageMaker Puede alojar hasta 15 contenedores de inferencia diferentes en un único punto de conexión. Al utilizar la invocación directa, puede enviar una solicitud a un contenedor de inferencia específico alojado en un punto de conexión multicontenedor.

 Para invocar un punto de conexión multicontenedor con invocación directa, llame a [invoke\$1endpoint](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime.html#SageMakerRuntime.Client.invoke_endpoint) como lo haría con cualquier otro punto de conexión y especifique qué contenedor desea invocar mediante el parámetro `TargetContainerHostname`.

 

 En el siguiente ejemplo, se invoca directamente el `secondContainer` de un punto de conexión multicontenedor para obtener una predicción.

```
import boto3
runtime_sm_client = boto3.Session().client('sagemaker-runtime')

response = runtime_sm_client.invoke_endpoint(
   EndpointName ='my-endpoint',
   ContentType = 'text/csv',
   TargetContainerHostname='secondContainer', 
   Body = body)
```

 Para cada solicitud de invocación directa a un punto de conexión multicontenedor, solo el contenedor con `TargetContainerHostname` procesa la solicitud de invocación. Se producirán errores de validación si realiza alguna de las siguientes acciones:
+ Especificar un `TargetContainerHostname` que no exista en el punto de conexión
+ No especifique un valor para `TargetContainerHostname` en una solicitud a un punto de conexión configurado para invocación directa
+ No especifique un valor para `TargetContainerHostname` en una solicitud a un punto de conexión configurado para invocación directa.

# Seguridad con puntos de conexión multicontenedor con invocación directa
<a name="multi-container-security"></a>

 En el caso de puntos de conexión multicontenedor con invocación directa, hay varios contenedores alojados en una sola instancia que comparten memoria y un volumen de almacenamiento. Es su responsabilidad utilizar contenedores seguros, mantener el mapeo correcto de las solicitudes a los contenedores de destino y proporcionar a los usuarios el acceso correcto a los contenedores de destino. SageMaker La IA utiliza las funciones de IAM para proporcionar políticas de IAM basadas en la identidad que se utilizan para especificar si se permite o deniega el acceso a un recurso a esa función y en qué condiciones. Para obtener más información acerca de los roles de IAM, consulte [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) en la *AWS Identity and Access Management Guía del usuario*. Para obtener más información acerca de las políticas basadas en recursos, consulte [Políticas basadas en identidad y políticas basadas en recursos](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html).

De forma predeterminada, una entidad principal de IAM con `InvokeEndpoint` permisos en un punto de conexión multicontenedor y con invocación directa puede invocar cualquier contenedor situado dentro del punto de conexión con el nombre que especifique al llamar a `invoke_endpoint`. Si necesita restringir el `invoke_endpoint` acceso a un conjunto limitado de contenedores dentro de un punto de conexión multicontenedor, utilice la clave de condición de IAM `sagemaker:TargetContainerHostname`. Las siguientes políticas muestran cómo limitar las llamadas a contenedores específicos dentro de un punto de conexión.

La siguiente política permite solicitudes `invoke_endpoint` solo cuando el valor del campo `TargetContainerHostname` coincide con una de las expresiones regulares especificadas.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "sagemaker:InvokeEndpoint"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:sagemaker:us-east-1:111122223333:endpoint/endpoint_name",
            "Condition": {
                "StringLike": {
                    "sagemaker:TargetModel": [
                        "customIps*",
                        "common*"
                    ]
                }
            }
        }
    ]
}
```

------

La siguiente política deniega solicitudes `invoke_endpoint` solo cuando el valor del campo `TargetContainerHostname` coincide con una de las expresiones regulares especificadas de la declaración `Deny`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "sagemaker:InvokeEndpoint"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:sagemaker:us-east-1:111122223333:endpoint/endpoint_name",
            "Condition": {
                "StringLike": {
                    "sagemaker:TargetModel": [
                        "model_name*"
                    ]
                }
            }
        },
        {
            "Action": [
                "sagemaker:InvokeEndpoint"
            ],
            "Effect": "Deny",
            "Resource": "arn:aws:sagemaker:us-east-1:111122223333:endpoint/endpoint_name",
            "Condition": {
                "StringLike": {
                    "sagemaker:TargetModel": [
                        "special-model_name*"
                    ]
                }
            }
        }
    ]
}
```

------

 *Para obtener información sobre las claves de condición de la SageMaker IA, consulte las claves de [condición de la SageMaker IA en la Guía](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonsagemaker.html#amazonsagemaker-policy-keys) del usuario.AWS Identity and Access Management *

# Métricas de puntos de conexión multicontenedor con invocación directa
<a name="multi-container-metrics"></a>

Además de las métricas de puntos finales que aparecen en la lista[Métricas de Amazon SageMaker AI en Amazon CloudWatch](monitoring-cloudwatch.md), la SageMaker IA también proporciona métricas por contenedor.

Las métricas por contenedor para los puntos finales de varios contenedores con invocación directa se ubican en dos espacios de nombres y se clasifican en dos espacios de nombres: CloudWatch y. `AWS/SageMaker` `aws/sagemaker/Endpoints` El espacio de nombres `AWS/SageMaker` incluye métricas relacionadas con la invocación y el espacio de nombres `aws/sagemaker/Endpoints` incluye métricas de uso de memoria y CPU.

En la siguiente tabla, se enumeran las métricas por contenedor para los puntos de conexión multicontenedor con invocación directa. Todas las métricas utilizan la dimensión [`EndpointName, VariantName, ContainerName`], que filtra las métricas en un punto de conexión específico, para una variante específica y correspondientes a un contenedor específico. Estas métricas comparten los mismos nombres de métrica que las de las canalizaciones de inferencia, pero a nivel de contenedor [`EndpointName, VariantName, ContainerName`].

 


|  |  |  |  | 
| --- |--- |--- |--- |
|  Nombre de métrica  |  Description (Descripción)  |  Dimensión  |  NameSpace  | 
|  Invocations  |  El número de solicitudes InvokeEndpoint enviadas a un contenedor dentro de un punto de conexión. Para obtener el número total de solicitudes enviadas a un contenedor, utilice la estadística Sum. Unidades: ninguna Estadísticas válidas: Sum, Sample Count |  EndpointName, VariantName, ContainerName  | AWS/SageMaker | 
|  Invocation4XX Errors  |  El número de solicitudes InvokeEndpoint para el que el modelo devolvió un código de respuesta HTTP en un contenedor específico 4xx. Para cada respuesta, la IA envía 4xx un. SageMaker 1 Unidades: ninguna Estadísticas válidas: Average, Sum  |  EndpointName, VariantName, ContainerName  | AWS/SageMaker | 
|  Invocation5XX Errors  |  El número de solicitudes InvokeEndpoint para el que el modelo devolvió un código de respuesta HTTP en un contenedor específico 5xx. Para cada 5xx respuesta, la SageMaker IA envía un1. Unidades: ninguna Estadísticas válidas: Average, Sum  |  EndpointName, VariantName, ContainerName  | AWS/SageMaker | 
|  ContainerLatency  |  El tiempo que tardó el contenedor objetivo en responder visto desde la SageMaker IA. ContainerLatencyincluye el tiempo que se tardó en enviar la solicitud, obtener la respuesta del contenedor del modelo y completar la inferencia en el contenedor. Unidades: microsegundos Estadísticas válidas: Average, Sum, Min, Max, Sample Count |  EndpointName, VariantName, ContainerName  | AWS/SageMaker | 
|  OverheadLatency  |  El tiempo que se suma al tiempo necesario para responder a una solicitud de un cliente por parte de la SageMaker IA en concepto de gastos generales. OverheadLatencyse mide desde el momento en que SageMaker AI recibe la solicitud hasta que devuelve una respuesta al cliente, menos elModelLatency. La latencia de sobrecargas puede variar en función de los tamaños de carga de solicitud y respuesta, la frecuencia de solicitud y la autenticación o la autorización de la solicitud, entre otros factores. Unidades: microsegundos Estadísticas válidas: Average, Sum, Min, Max, “Recuento de muestras”  |  EndpointName, VariantName, ContainerName  | AWS/SageMaker | 
|  CPUUtilization  | El porcentaje de unidades de CPU usadas por cada contenedor que se ejecutan en una instancia. El valor oscila entre el 0% y el 100% y se multiplica por el número de CPUs. Por ejemplo, si hay cuatro CPUs, CPUUtilization puede oscilar entre el 0% y el 400%. En el caso de los puntos finales con invocación directa, el número de CPUUtilization métricas es igual al número de contenedores de ese punto final. Unidad: porcentaje  |  EndpointName, VariantName, ContainerName  | aws/sagemaker/Endpoints | 
|  MemoryUtilizaton  |  El porcentaje de memoria que utiliza cada contenedor que se ejecuta en una instancia. Este valor oscila entre 0 % y 100 %. Al igual que CPUUtilization en los puntos finales con invocación directa, el número de MemoryUtilization métricas es igual al número de contenedores en ese punto final. Unidad: porcentaje  |  EndpointName, VariantName, ContainerName  | aws/sagemaker/Endpoints | 

Todas las métricas de la tabla anterior son específicas de los puntos de conexión multicontenedor con invocación directa. Además de estas métricas especiales por contenedor, también hay métricas a nivel de variante con dimensiones `[EndpointName, VariantName]` para todas las métricas de la tabla previstas `ContainerLatency`.

# Puntos de conexión multicontenedor
<a name="multi-container-auto-scaling"></a>

Si desea configurar el escalado automático para un punto de conexión multicontenedor mediante la métrica `InvocationsPerInstance`, le recomendamos que el modelo de cada contenedor muestre un uso de la CPU y una latencia similares en cada solicitud de inferencia. Esto se recomienda porque si el tráfico al punto de conexión multicontenedor pasa de un modelo de bajo uso de CPU a un modelo de alto uso de CPU, pero el volumen total de llamadas sigue siendo el mismo, el punto de conexión no se amplía y es posible que no haya suficientes instancias para gestionar todas las solicitudes al modelo de alto uso de CPU. Para obtener información sobre la configuración del escalado automático de puntos de conexión, consulte [Escalado automático de los modelos de Amazon SageMaker AI](endpoint-auto-scaling.md).

# Solución de problemas de puntos de conexión multicontenedor
<a name="multi-container-troubleshooting"></a>

Las siguientes secciones pueden ayudarle a solucionar errores de puntos de conexión multicontenedor.

## Errores de comprobación de estado de ping
<a name="multi-container-ping-errors"></a>

 Con varios contenedores, la memoria y CPU del punto de conexión están sometidas a una mayor presión durante la creación del punto de conexión. En concreto, las métricas `MemoryUtilization` y `CPUUtilization` son más altas que las de los puntos de conexión de un solo contenedor, ya que la presión de utilización es proporcional al número de contenedores. Por este motivo, le recomendamos que elija tipos de instancias con suficiente memoria y CPU para asegurarse de que la instancia dispone de memoria suficiente para cargar todos los modelos (la misma guía se aplica a la implementación de una canalización de inferencia). De lo contrario, es posible que no se pueda crear el punto de conexión y se produzca un error como `XXX did not pass the ping health check`.

## Falta la etiqueta Docker accept-bind-to-port = true
<a name="multi-container-missing-accept"></a>

Los contenedores de un punto de conexión multicontenedor escuchan en el puerto especificado en la variable de entorno `SAGEMAKER_BIND_TO_PORT` en lugar de puerto 8080. Cuando un contenedor se ejecuta en un punto final con varios contenedores, la SageMaker IA proporciona automáticamente esta variable de entorno al contenedor. Si esta variable de entorno no está presente, los contenedores de manera predeterminada asignan el uso del puerto 8080. Para indicar que el contenedor cumple con este requisito, ejecute el siguiente comando para añadir una etiqueta a su Dockerfile: 

```
LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true
```

 De lo contrario, aparecerá un mensaje de error como `Your Ecr Image XXX does not contain required com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true Docker label(s).`

 Si su contenedor necesita escuchar en otro puerto, elija un puerto que esté en el intervalo especificado por la variable de entorno `SAGEMAKER_SAFE_PORT_RANGE`. Especifique el valor como un rango inclusivo en el formato *XXXX* -*YYYY*, donde XXXX y YYYY son números enteros de varios dígitos. SageMaker La IA proporciona este valor automáticamente cuando se ejecuta el contenedor en un punto final con varios contenedores. 

# Canalizaciones de inferencia en Amazon AI SageMaker
<a name="inference-pipelines"></a>

Una *canalización de inferencias* es un modelo de Amazon SageMaker AI que se compone de una secuencia lineal de dos a quince contenedores que procesan las solicitudes de inferencias sobre los datos. Utiliza una canalización de inferencias para definir e implementar cualquier combinación de algoritmos integrados de SageMaker IA previamente entrenados y sus propios algoritmos personalizados empaquetados en contenedores de Docker. Puede utilizar una canalización de inferencia para combinar tareas de ciencia de datos de preprocesamiento, predicciones y posprocesamiento. Las canalizaciones de inferencia se administran completamente.

Puedes añadir contenedores SageMaker AI Spark ML Serving y scikit-learn que reutilizan los transformadores de datos desarrollados para los modelos de entrenamiento. Todo el proceso de inferencias ensamblado puede considerarse un modelo de SageMaker IA que se puede utilizar para hacer predicciones en tiempo real o para procesar transformaciones por lotes directamente sin ningún preprocesamiento externo. 

Dentro de un modelo de canalización de inferencias, la SageMaker IA gestiona las invocaciones como una secuencia de solicitudes HTTP. El primer contenedor de la canalización gestiona la solicitud inicial, luego la respuesta intermedia se envía como una solicitud al segundo contenedor y así sucesivamente, para cada contenedor de la canalización. SageMaker La IA devuelve la respuesta final al cliente. 

Al implementar el modelo de canalización, la SageMaker IA instala y ejecuta todos los contenedores de cada instancia de Amazon Elastic Compute Cloud (Amazon EC2) del punto final o del trabajo de transformación. El procesamiento de características y las inferencias se ejecutan con baja latencia, ya que los contenedores están ubicados en las misma instancias de EC2. Puede definir los contenedores para un modelo de canalización mediante la operación [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html) o desde la consola. En lugar de configurar un `PrimaryContainer`, utilice el parámetro `Containers` para configurar los contenedores que componen la canalización. También se especifica el orden en el que se ejecutan los contenedores. 

Un modelo de canalización es inmutable, pero puede actualizar una canalización de inferencia implementando una nueva con la operación [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateEndpoint.html). Esta modularidad admite una mayor flexibilidad durante la experimentación. 

Para obtener información sobre cómo crear una canalización de inferencias con el registro de SageMaker modelos, consulte. [Implementación del registro de modelos con el registro de modelos](model-registry.md)

El uso de esta característica no tiene costos adicionales. Solo tiene que pagar por las instancias que se ejecutan en un punto de conexión.

**Topics**
+ [Cuadernos de ejemplo para canalizaciones de inferencia](#inference-pipeline-sample-notebooks)
+ [Procesamiento de características con Spark ML y Scikit-learn](inference-pipeline-mleap-scikit-learn-containers.md)
+ [Creación de un modelo de canalización](inference-pipeline-create-console.md)
+ [Ejecutar predicciones en tiempo real con una canalización de inferencia](inference-pipeline-real-time.md)
+ [Transformaciones por lotes con canalizaciones de inferencia](inference-pipeline-batch.md)
+ [Registros y métricas de canalización de inferencias](inference-pipeline-logs-metrics.md)
+ [Solución de problemas de canalizaciones de inferencia](inference-pipeline-troubleshoot.md)

## Cuadernos de ejemplo para canalizaciones de inferencia
<a name="inference-pipeline-sample-notebooks"></a>

Para ver un ejemplo que muestra cómo crear e implementar canalizaciones de inferencia, consulte el cuaderno de muestra [Inference Pipeline with Scikit-learn and Linear Learner](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-python-sdk/scikit_learn_inference_pipeline). Para obtener instrucciones sobre cómo crear instancias de Jupyter Notebook y acceder a ellas, que puede utilizar para ejecutar el ejemplo en SageMaker IA, consulte. [Instancias de Amazon SageMaker Notebook](nbi.md) 

Para ver una lista de todos los ejemplos de SageMaker IA, después de crear y abrir una instancia de bloc de notas, selecciona la pestaña **Ejemplos de SageMaker IA**. Existen tres blocs de notas de canalización de inferencias. Los dos primeros blocs de notas de canalización de inferencias que acabamos de describir se encuentran en la carpeta `advanced_functionality` y el tercer bloc de notas está en la carpeta `sagemaker-python-sdk`. Para abrir un bloc de notas, elija su pestaña **Usar** y, a continuación, elija **Crear copia**.

# Procesamiento de características con Spark ML y Scikit-learn
<a name="inference-pipeline-mleap-scikit-learn-containers"></a>

Antes de entrenar un modelo con algoritmos integrados o personalizados de Amazon SageMaker AI, puedes usar los preprocesadores Spark y scikit-learn para transformar tus datos y diseñar funciones. 

## Procesamiento de características con Spark ML
<a name="feature-processing-spark"></a>

Puedes ejecutar trabajos de Spark ML con [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html), un servicio ETL (extraer, transformar, cargar) sin servidor, desde tu cuaderno de SageMaker IA. También puede conectarse a clústeres de EMR existentes para ejecutar trabajos de Spark ML con [Amazon EMR](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-what-is-emr.html). Para ello, necesitas un rol AWS Identity and Access Management (de IAM) que te permita realizar llamadas desde tu bloc de notas de SageMaker IA a. AWS Glue

**nota**  
Para ver qué versiones de Python y Spark son AWS Glue compatibles, consulta las [notas de la versión de AWS Glue](/glue/latest/dg/release-notes.html).

Después de diseñar las funciones, empaquetas y serializas los trabajos de Spark ML MLeap en MLeap contenedores que puedes añadir a un proceso de inferencia. No es necesario utilizar clústeres de Spark administrados externamente. Con este enfoque, puede escalar sin problemas a partir de una muestra de filas a terabytes de datos. Los mismos transformadores trabajar tanto para entrenamiento como para inferencia, por lo que no es necesario duplicar el preprocesamiento y la lógica de ingeniería de características o desarrollar una solución puntual para que persistan los modelos. Con las canalizaciones de inferencia, no es necesario mantenerse fuera de la infraestructura, y puede realizar predicciones directamente a partir de las entradas de datos.

Cuando ejecutas un trabajo de Spark ML AWS Glue, una canalización de Spark ML se serializa en formato. [MLeap](https://github.com/combust/mleap) Luego, puede usar el trabajo con el [contenedor de servicio de modelos SparkML](https://github.com/aws/sagemaker-sparkml-serving-container) en una canalización de inferencias de SageMaker IA. *MLeap*es un formato de serialización y un motor de ejecución para procesos de aprendizaje automático. Es compatible con Spark, Scikit-learn y TensorFlow para entrenar canalizaciones y exportarlas a una canalización serializada llamada Bundle. MLeap Puedes volver a deserializar los paquetes para convertirlos en Spark para puntuarlos en modo lote o en tiempo de ejecución para potenciar los servicios de API en tiempo real. MLeap 

Para ver un ejemplo que muestra cómo utilizar el proceso con Spark ML, consulte el cuaderno de muestra [Entrenar un modelo de aprendizaje automático con Apache Spark en Amazon EMR e implementarlo en SageMaker IA](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-python-sdk/sparkml_serving_emr_mleap_abalone).

## Procesamiento de características con Scikit-Learn
<a name="feature-processing-with-scikit"></a>

Puede ejecutar y empaquetar trabajos de scikit-learn en contenedores directamente en Amazon AI. SageMaker Para consultar un ejemplo de código de Python para crear un modelo caracterizador de scikit-learn que se entrena en [conjuntos de datos de la flor Iris de Fisher](http://archive.ics.uci.edu/ml/datasets/Iris) y predice la especie de iris en función de medidas morfológicas, consulte la página de [entrenamiento y predicción de IRIS con SageMaker Scikit-learn](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-python-sdk/scikit_learn_iris). 

# Creación de un modelo de canalización
<a name="inference-pipeline-create-console"></a>

Para crear un modelo de canalización que pueda implementarse en un punto final o usarse para un trabajo de transformación por lotes, utilice la consola Amazon SageMaker AI o la `CreateModel` operación. 

**Para crear una canalización de inferencia (consola)**

1. Abre la consola Amazon SageMaker AI en [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Elija **Modelos** y, a continuación, seleccione **Crear modelos** en el grupo **Inferencia**. 

1. En la página **Crear modelo**, proporcione un nombre de modelo, elija un rol de IAM y, si desea utilizar una VPC privada, especifique los valores de la VPC.   
![\[La página para crear un modelo para una canalización de inferencia.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/create-pipeline-model.png)

1. Para añadir información sobre los contenedores en la canalización de inferencia, seleccione **Agregar contenedor** y luego haga clic en **Siguiente**.

1. Complete los campos para cada contenedor en el orden en el que desee ejecutarlos, hasta un máximo de quince. Complete los campos **Opciones de entrada del contenedor**, **Ubicación de la imagen de código de inferencia** y, opcionalmente, **Ubicación de artefactos de modelos**, **Nombre de host de contenedor** y **Variables de entorno**.  
![\[Creación de un modelo de canalización con contenedores.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/create-pipeline-model-containers.png)

   La **MyInferencePipelineModel**página resume la configuración de los contenedores que proporcionan información para el modelo. Si has proporcionado las variables de entorno en la definición de contenedor correspondiente, SageMaker AI las muestra en el campo **Variables de entorno**.  
![\[El resumen de configuración de contenedor para el modelo de canalización.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/pipeline-MyInferencePipelinesModel-recap.png)

# Ejecutar predicciones en tiempo real con una canalización de inferencia
<a name="inference-pipeline-real-time"></a>

Puede utilizar modelos entrenados en una canalización de inferencia para realizar predicciones en tiempo real directamente sin realizar preprocesamiento externo. Al configurar la canalización, puede optar por utilizar los transformadores de funciones integrados que ya están disponibles en Amazon SageMaker AI. O bien, puede implementar su propia lógica de transformación con solo unas pocas líneas de código de scikit-learn o Spark. 

[MLeap](https://combust.github.io/mleap-docs/), un formato de serialización y motor de ejecución para canalizaciones de aprendizaje automático, es compatible con Spark, scikit-learn y TensorFlow para entrenar canalizaciones y exportarlas a una canalización serializada denominada Bundle. MLeap Puedes volver a deserializar los paquetes para convertirlos en Spark para obtener una puntuación por lotes o en tiempo de ejecución para potenciar los servicios de API en tiempo real. MLeap 

Los contenedores de una canalización escuchan en el puerto especificado en la variable de entorno `SAGEMAKER_BIND_TO_PORT` (en lugar de 8080). Cuando se ejecuta en una canalización de inferencias, la SageMaker IA proporciona automáticamente esta variable de entorno a los contenedores. Si esta variable de entorno no está presente, los contenedores de manera predeterminada asignan el uso del puerto 8080. Para indicar que el contenedor cumple con este requisito, ejecute el siguiente comando para añadir una etiqueta a su Dockerfile:

```
LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true
```

Si su contenedor necesita escuchar en otro puerto, elija un puerto que esté en el intervalo especificado por la variable de entorno `SAGEMAKER_SAFE_PORT_RANGE`. Especifique el valor como un rango inclusivo en el formato**"XXXX-YYYY"**, donde `XXXX` y `YYYY` son números enteros de varios dígitos. SageMaker La IA proporciona este valor automáticamente cuando se ejecuta el contenedor en una canalización de varios contenedores.

**nota**  
Para utilizar imágenes de Docker personalizadas en una canalización que incluye [algoritmos integrados de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html), necesitas una política de [Amazon Elastic Container Registry (Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html). Su repositorio de Amazon ECR debe conceder permiso a la SageMaker IA para extraer la imagen. Para obtener más información, consulte [Solución de problemas de permisos de Amazon ECR para canalizaciones de inferencia](inference-pipeline-troubleshoot.md#inference-pipeline-troubleshoot-permissions).

## Creación e implementación de un punto de conexión de canalización de inferencia
<a name="inference-pipeline-real-time-sdk"></a>

El siguiente código crea e implementa un modelo de canalización de inferencias en tiempo real con SparkML y XGBoost modelos en serie con el SDK de IA. SageMaker 

```
from sagemaker.model import Model
from sagemaker.pipeline_model import PipelineModel
from sagemaker.sparkml.model import SparkMLModel

sparkml_data = 's3://{}/{}/{}'.format(s3_model_bucket, s3_model_key_prefix, 'model.tar.gz')
sparkml_model = SparkMLModel(model_data=sparkml_data)
xgb_model = Model(model_data=xgb_model.model_data, image=training_image)

model_name = 'serial-inference-' + timestamp_prefix
endpoint_name = 'serial-inference-ep-' + timestamp_prefix
sm_model = PipelineModel(name=model_name, role=role, models=[sparkml_model, xgb_model])
sm_model.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge', endpoint_name=endpoint_name)
```

## Solicitar inferencia en tiempo real desde un punto de conexión de canalización de inferencia
<a name="inference-pipeline-endpoint-request"></a>

El ejemplo siguiente muestra cómo realizar predicciones en tiempo real llamando a un punto de conexión de inferencia y trasladando una carga de solicitud en formato JSON:

```
import sagemaker
from sagemaker.predictor import json_serializer, json_deserializer, Predictor

payload = {
        "input": [
            {
                "name": "Pclass",
                "type": "float",
                "val": "1.0"
            },
            {
                "name": "Embarked",
                "type": "string",
                "val": "Q"
            },
            {
                "name": "Age",
                "type": "double",
                "val": "48.0"
            },
            {
                "name": "Fare",
                "type": "double",
                "val": "100.67"
            },
            {
                "name": "SibSp",
                "type": "double",
                "val": "1.0"
            },
            {
                "name": "Sex",
                "type": "string",
                "val": "male"
            }
        ],
        "output": {
            "name": "features",
            "type": "double",
            "struct": "vector"
        }
    }

predictor = Predictor(endpoint=endpoint_name, sagemaker_session=sagemaker.Session(), serializer=json_serializer,
                                content_type='text/csv', accept='application/json')

print(predictor.predict(payload))
```

La respuesta que obtiene de `predictor.predict(payload)` es el resultado de la inferencia del modelo.

## Ejemplo de canalización de inferencia en tiempo real
<a name="inference-pipeline-example"></a>

Puedes ejecutar este [cuaderno de ejemplo con el SKLearn predictor](https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/scikit_learn_randomforest/Sklearn_on_SageMaker_end2end.ipynb) que muestra cómo implementar un punto final, ejecutar una solicitud de inferencia y, a continuación, deserializar la respuesta. Encuentra este cuaderno y otros ejemplos en el [ GitHub repositorio de SageMaker ejemplos de Amazon](https://github.com/awslabs/amazon-sagemaker-examples).

# Transformaciones por lotes con canalizaciones de inferencia
<a name="inference-pipeline-batch"></a>

Para obtener inferencias sobre un conjunto de datos completo, ejecute una transformación por lotes en un modelo entrenado. Para ejecutar inferencias en un conjunto de datos completo, puede utilizar el mismo modelo de canalización de inferencias que se creó e implementó en un punto de conexión con el procesamiento en tiempo real de trabajos de transformación por lotes. Para ejecutar un trabajo de transformación por lotes en una canalización, descargue los datos de entrada desde Amazon S3 y envíelos en una o varias solicitudes HTTP al modelo de canalización de inferencia. Para ver un ejemplo que muestra cómo preparar los datos para una transformación por lotes, consulte la «Sección 2: Preprocesar los datos de alojamiento sin procesar con Scikit Learn» del cuaderno de muestra [Amazon SageMaker Multi-Model Endpoints con Linear Learner](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/advanced_functionality/multi_model_linear_learner_home_value). Para obtener información sobre las transformaciones por lotes de Amazon SageMaker AI, consulte[Transformación por lotes para inferencias con Amazon AI SageMaker](batch-transform.md). 

**nota**  
Para usar imágenes de Docker personalizadas en una canalización que incluye los [algoritmos integrados de Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html), necesita una política de [Amazon Elastic Container Registry (ECR).](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) Su repositorio de Amazon ECR debe conceder permiso a la SageMaker IA para extraer la imagen. Para obtener más información, consulte [Solución de problemas de permisos de Amazon ECR para canalizaciones de inferencia](inference-pipeline-troubleshoot.md#inference-pipeline-troubleshoot-permissions).

El siguiente ejemplo muestra cómo ejecutar un trabajo de transformación con el [SDK de Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable). En este ejemplo, `model_name` es la canalización de inferencia que combina SparkML XGBoost y modelos (creados en ejemplos anteriores). La ubicación de Amazon S3 especificada por `input_data_path` contiene los datos de entrada, en formato CSV, que se van a descargar y envíar al modelo de Spark ML. Una vez finalizado el trabajo de transformación, la ubicación de Amazon S3 especificada por `output_data_path` contiene los datos de salida devueltos por el XGBoost modelo en formato CSV.

```
import sagemaker
input_data_path = 's3://{}/{}/{}'.format(default_bucket, 'key', 'file_name')
output_data_path = 's3://{}/{}'.format(default_bucket, 'key')
transform_job = sagemaker.transformer.Transformer(
    model_name = model_name,
    instance_count = 1,
    instance_type = 'ml.m4.xlarge',
    strategy = 'SingleRecord',
    assemble_with = 'Line',
    output_path = output_data_path,
    base_transform_job_name='inference-pipelines-batch',
    sagemaker_session=sagemaker.Session(),
    accept = CONTENT_TYPE_CSV)
transform_job.transform(data = input_data_path, 
                        content_type = CONTENT_TYPE_CSV, 
                        split_type = 'Line')
```

# Registros y métricas de canalización de inferencias
<a name="inference-pipeline-logs-metrics"></a>

La supervisión es importante para mantener la fiabilidad, la disponibilidad y el rendimiento de los recursos de SageMaker IA de Amazon. Para supervisar y solucionar problemas de rendimiento de la canalización de inferencias, utiliza CloudWatch los registros y mensajes de error de Amazon. Para obtener información sobre las herramientas de monitoreo que proporciona la SageMaker IA, consulte. [Supervisión de AWS los recursos en Amazon SageMaker AI](monitoring-overview.md)

## Uso de métricas para monitorizar modelos de varios contenedores
<a name="inference-pipeline-metrics"></a>

Para supervisar los modelos de varios contenedores en Inference Pipelines, utilice Amazon. CloudWatch CloudWatchrecopila datos sin procesar y los procesa para convertirlos en métricas legibles y prácticamente en tiempo real. SageMaker Los puntos finales y los trabajos de formación en IA escriben CloudWatch métricas y registros en el `AWS/SageMaker` espacio de nombres. 

Las siguientes tablas muestran las métricas y dimensiones de los siguientes:
+ Invocaciones de punto de conexión
+ Trabajos de entrenamiento, trabajos de transformación por lotes e instancias de punto de conexión

Una *dimensión* es un name/value par que identifica de forma única una métrica. Puede asignar hasta 10 dimensiones a una métrica. Para obtener más información sobre la supervisión con CloudWatch, consulte[Métricas de Amazon SageMaker AI en Amazon CloudWatch](monitoring-cloudwatch.md). 

**Métricas de invocación de puntos de conexión**

El espacio de nombres `AWS/SageMaker` incluye las siguientes métricas de respuesta desde llamadas en [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InvokeEndpoint.html) .

Las métricas se notifican a intervalos de 1 minuto.


| Métrica | Description (Descripción) | 
| --- | --- | 
| Invocation4XXErrors |  El número de solicitudes `InvokeEndpoint` para el que el modelo devolvió un código de respuesta HTTP `4xx`. Para cada `4xx` respuesta, la SageMaker IA envía un`1`. Unidades: ninguna Estadísticas válidas: `Average`, `Sum`  | 
| Invocation5XXErrors |  El número de solicitudes `InvokeEndpoint` para el que el modelo devolvió un código de respuesta HTTP `5xx`. Para cada `5xx` respuesta, la SageMaker IA envía un`1`. Unidades: ninguna Estadísticas válidas: `Average`, `Sum`  | 
| Invocations |  Las solicitudes de `number of InvokeEndpoint` enviadas a un punto de conexión del modelo.  Para obtener el número total de solicitudes enviadas a un punto de conexión del modelo, utilice la estadística `Sum`. Unidades: ninguna Estadísticas válidas: `Sum`, `Sample Count`  | 
| InvocationsPerInstance |  El número de invocaciones de puntos finales enviadas a un modelo, normalizado `InstanceCount` en cada una. `ProductionVariant` SageMaker La IA envía 1/ `numberOfInstances` como valor para cada solicitud, que `numberOfInstances` es el número de instancias activas ProductionVariant en el punto final en el momento de la solicitud. Unidades: ninguna Estadísticas válidas: `Sum`  | 
| ModelLatency | El tiempo que el modelo o modelos tardan en responder. Esto incluye el tiempo necesario para enviar la solicitud, para obtener la respuesta del contenedor de modelos y para completar la inferencia en el contenedor. ModelLatency es el tiempo total que tardan todos los contenedores en una canalización de inferencia.Unidades: microsegundosEstadísticas válidas: `Average`, `Sum`, `Min`, `Max`, Sample Count | 
| OverheadLatency |  El tiempo que se suma al tiempo necesario para responder a una solicitud de un cliente por parte de SageMaker AI en concepto de gastos generales. `OverheadLatency`se mide desde el momento en que SageMaker AI recibe la solicitud hasta que devuelve una respuesta al cliente, menos el`ModelLatency`. La latencia de sobrecargas puede variar en función de los tamaños de carga de solicitud y respuesta, la frecuencia de solicitud y la autenticación o la autorización de la solicitud, entre otros factores. Unidades: microsegundos Estadísticas válidas: `Average`, `Sum`, `Min`, `Max`, `Sample Count`  | 
| ContainerLatency | El tiempo que tardó un contenedor de Inference Pipelines en responder, visto desde SageMaker AI. ContainerLatencyincluye el tiempo que se tardó en enviar la solicitud, obtener la respuesta del contenedor del modelo y completar la inferencia en el contenedor.Unidades: microsegundosEstadísticas válidas: `Average`, `Sum`, `Min`, `Max`, `Sample Count` | 

**Dimensiones de las métricas de invocación de puntos de conexión**


| Dimensión | Description (Descripción) | 
| --- | --- | 
| EndpointName, VariantName, ContainerName |  Filtra las métricas de invocación de punto de conexión para `ProductionVariant` en el punto de conexión especificado y para la variante especificada.  | 

En el caso de un punto final de proceso de inferencia, CloudWatch enumera las métricas de latencia por contenedor de su cuenta como métricas de **contenedores de terminales y métricas** **de variantes** de puntos finales en el espacio de nombres de **SageMaker AI, de la siguiente manera**. La métrica `ContainerLatency` solo aparece para canalizaciones de inferencias.

![\[El CloudWatch panel de control de una canalización de inferencias.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/pipeline-endpoint-metrics.png)


Para cada punto de conexión y cada contenedor, las métricas de latencia muestran los nombres del contenedor, punto de conexión, variante y métrica.

![\[Las métricas de latencia de un punto de conexión.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/pipeline-endpoint-metrics-details.png)


**Métricas de instancias de punto de conexión, trabajo de transformación por lotes y trabajo de entrenamiento**

Los espacios de nombres `/aws/sagemaker/TrainingJobs`, `/aws/sagemaker/TransformJobs` y `/aws/sagemaker/Endpoints` incluyen las siguientes métricas para los trabajos de entrenamiento y las instancias de punto de conexión.

Las métricas se notifican a intervalos de 1 minuto.


| Métrica | Description (Descripción) | 
| --- | --- | 
| CPUUtilization |  El porcentaje de unidades de CPU usadas por los contenedores que se ejecutan en una instancia. El valor oscila entre el 0% y el 100% y se multiplica por el número de CPUs. Por ejemplo, si hay cuatro CPUs, `CPUUtilization` puede oscilar entre el 0% y el 400%. Para los trabajos de entrenamiento, `CPUUtilization` es la utilización de la CPU del contenedor de algoritmos que se ejecutan en la instancia. Para los trabajos de transformación por lotes, `CPUUtilization` es la utilización de la CPU del contenedor de transformación que se ejecuta en la instancia. Para modelos de varios contenedores, `CPUUtilization` es la suma de la utilización de CPU por parte de todos los contenedores que se ejecutan en la instancia. Para variantes de punto de conexión, `CPUUtilization` es la suma de la utilización de CPU por parte de todos los contenedores que se ejecutan en la instancia. Unidad: porcentaje  | 
| MemoryUtilization | El porcentaje de memoria que utilizan los contenedores que se ejecutan en una instancia. Este valor oscila entre 0 % y 100 %.Para trabajos de entrenamiento, `MemoryUtilization` es la memoria utilizada por el contenedor de algoritmos que se ejecuta en la instancia.Para trabajos de transformación por lotes, `MemoryUtilization` es la memoria utilizada por el contenedor de transformación que se ejecuta en la instancia.Para modelos de varios contenedores, MemoryUtilization es la suma de memoria utilizada por todos los contenedores que se ejecutan en la instancia.Para variantes de punto de conexión, `MemoryUtilization` es la suma de memoria utilizada por todos los contenedores que se ejecutan en la instancia.Unidad: porcentaje | 
| GPUUtilization |  El porcentaje de unidades de GPU que utilizan los contenedores que se ejecutan en una instancia. `GPUUtilization`oscila entre el 0% y el 100% y se multiplica por el número de GPUs. Por ejemplo, si hay cuatro GPUs, `GPUUtilization` puede oscilar entre el 0% y el 400%. Para trabajos de entrenamiento, `GPUUtilization` es la GPU que utiliza el contenedor de algoritmo que se ejecuta en la instancia. Para trabajos de transformación por lotes, `GPUUtilization` es la GPU utilizada por el contenedor de transformación que se ejecuta en la instancia. Para modelos de varios contenedores, `GPUUtilization` es la suma de GPU utilizada por todos los contenedores que se ejecutan en la instancia. Para variantes de punto de conexión, `GPUUtilization` es la suma de GPU utilizada por todos los contenedores que se ejecutan en la instancia. Unidad: porcentaje  | 
| GPUMemoryUtilization |  El porcentaje de memoria de la GPU que utilizan los contenedores que se ejecutan en una instancia. GPUMemoryEl uso oscila entre el 0% y el 100% y se multiplica por el número de GPUs. Por ejemplo, si hay cuatro GPUs, `GPUMemoryUtilization` puede oscilar entre el 0% y el 400%. Para trabajos de entrenamiento, `GPUMemoryUtilization` es la memoria de GPU utilizada por el contenedor de algoritmos que se ejecuta en la instancia. Para trabajos de transformación por lotes, `GPUMemoryUtilization` es la memoria de GPU utilizada por el contenedor de transformación que se ejecuta en la instancia. Para modelos de varios contenedores, `GPUMemoryUtilization` es la suma de GPU utilizados por todos los contenedores que se ejecutan en la instancia. Para variantes de punto de conexión, `GPUMemoryUtilization` es la suma de la memoria de GPU utilizada por todos los contenedores que se ejecutan en la instancia. Unidad: porcentaje  | 
| DiskUtilization |  El porcentaje de espacio en disco que utilizan los contenedores que se ejecutan en una instancia. DiskUtilization oscila entre el 0% y el 100%. Esta métrica no es compatible con los trabajos de transformación por lotes. Para trabajos de entrenamiento, `DiskUtilization` es el espacio en disco utilizado por el contenedor de algoritmos que se ejecuta en la instancia. Para variantes de punto de conexión, `DiskUtilization` es la suma de espacio en disco utilizado por todos los contenedores proporcionados que se ejecutan en la instancia. Unidad: porcentaje  | 

**Dimensiones de métricas de instancias de punto de conexión, trabajo de transformación por lotes y trabajo de entrenamiento**


| Dimensión | Description (Descripción) | 
| --- | --- | 
| Host |  Para trabajos de entrenamiento, `Host` tiene el formato `[training-job-name]/algo-[instance-number-in-cluster]`. Utilice esta dimensión para filtrar métricas de instancias para la instancia y el trabajo de entrenamiento especificados. Este formato de dimensión está solo presente en el espacio de nombres `/aws/sagemaker/TrainingJobs`. Para trabajos de transformación por lotes, `Host` tiene el formato `[transform-job-name]/[instance-id]`. Utilice esta dimensión para filtrar métricas de instancias para la instancia y el trabajo de transformación por lotes especificados. Este formato de dimensión está solo presente en el espacio de nombres `/aws/sagemaker/TransformJobs`. Para los puntos de conexión, `Host` tiene el formato `[endpoint-name]/[ production-variant-name ]/[instance-id]`. Utilice esta dimensión para filtrar métricas de instancias para la instancia, la variante y el punto de conexión especificados. Este formato de dimensión está solo presente en el espacio de nombres `/aws/sagemaker/Endpoints`.  | 

Para ayudarte a depurar tus tareas de formación, los puntos finales y las configuraciones del ciclo de vida de las instancias de cuadernos, la SageMaker IA también envía todo lo que un contenedor de algoritmos, un contenedor de modelos o una configuración del ciclo de vida de una instancia de cuaderno envíe a Amazon Logs `stdout` o a `stderr` Amazon CloudWatch Logs. Puede utilizar esta información para depuración y para analizar el progreso.

## Uso de registros para monitorizar una canalización de inferencia
<a name="inference-pipeline-logs"></a>

En la siguiente tabla se enumeran los grupos de registros y los flujos de registros que la SageMaker IA envía a Amazon. CloudWatch 

Un *flujo de registro* es una secuencia de eventos de registro que comparten la misma fuente. Cada fuente independiente de registros forma CloudWatch un flujo de registro independiente. Un *grupo de registro* es un grupo de flujos de registro que comparten la misma configuración de retención, monitorización y control de acceso.

**Registros**

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/inference-pipeline-logs-metrics.html)

**nota**  
SageMaker La IA crea el grupo de `/aws/sagemaker/NotebookInstances` registros al crear una instancia de bloc de notas con una configuración de ciclo de vida. Para obtener más información, consulte [Personalización de una instancia de SageMaker bloc de notas mediante un script LCC](notebook-lifecycle-config.md).

Para obtener más información sobre el registro de SageMaker IA, consulte[CloudWatch Registros para Amazon SageMaker AI](logging-cloudwatch.md). 

# Solución de problemas de canalizaciones de inferencia
<a name="inference-pipeline-troubleshoot"></a>

Para solucionar los problemas de la canalización de inferencias, utilice los CloudWatch registros y los mensajes de error. Si utilizas imágenes de Docker personalizadas en una canalización que incluye los algoritmos integrados de Amazon SageMaker AI, es posible que también tengas problemas con los permisos. Para conceder los permisos necesarios, cree una política de Amazon Elastic Container Registry (Amazon ECR).

**Topics**
+ [Solución de problemas de permisos de Amazon ECR para canalizaciones de inferencia](#inference-pipeline-troubleshoot-permissions)
+ [Utilice CloudWatch los registros para solucionar problemas de los canales de inferencia de SageMaker IA](#inference-pipeline-troubleshoot-logs)
+ [Utilizar mensajes de error para solucionar problemas de canalizaciones de inferencia](#inference-pipeline-troubleshoot-errors)

## Solución de problemas de permisos de Amazon ECR para canalizaciones de inferencia
<a name="inference-pipeline-troubleshoot-permissions"></a>

Cuando utilizas imágenes de Docker personalizadas en una canalización que incluye [algoritmos integrados de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html), necesitas una política de [Amazon ECR.](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) La política permite que tu repositorio de Amazon ECR conceda permiso para que SageMaker AI extraiga la imagen. La política debe agregar los permisos siguientes:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "allowSageMakerToPull",
            "Effect": "Allow",
            "Principal": {
                "Service": "sagemaker.amazonaws.com"
            },
            "Action": [
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## Utilice CloudWatch los registros para solucionar problemas de los canales de inferencia de SageMaker IA
<a name="inference-pipeline-troubleshoot-logs"></a>

SageMaker La IA publica los registros de los contenedores para los puntos finales que despliegan una canalización de inferencias hacia Amazon CloudWatch en la siguiente ruta para cada contenedor.

```
/aws/sagemaker/Endpoints/{EndpointName}/{Variant}/{InstanceId}/{ContainerHostname}
```

Por ejemplo, los registros para este punto de conexión se publican en los siguientes grupos de registros y secuencias:

```
EndpointName: MyInferencePipelinesEndpoint
Variant: MyInferencePipelinesVariant
InstanceId: i-0179208609ff7e488
ContainerHostname: MyContainerName1 and MyContainerName2
```

```
logGroup: /aws/sagemaker/Endpoints/MyInferencePipelinesEndpoint
logStream: MyInferencePipelinesVariant/i-0179208609ff7e488/MyContainerName1
logStream: MyInferencePipelinesVariant/i-0179208609ff7e488/MyContainerName2
```

Un *flujo de registro* es una secuencia de eventos de registro que comparten la misma fuente. Cada fuente independiente de registros forma un CloudWatch flujo de registros independiente. Un *grupo de registro* es un grupo de flujos de registro que comparten la misma configuración de retención, monitorización y control de acceso.

**Para ver los grupos de registro y secuencias**

1. Abra la CloudWatch consola en [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. En el panel de navegación, elija **Registros**.

1. En **Grupos de registro**, filtre en **MyInferencePipelinesEndpoint**:   
![\[Los grupos de CloudWatch registros filtrados para el punto final de la canalización de inferencia.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/pipeline-log-group-filter.png)

1. Para ver los flujos de registros, en la página **Grupos de CloudWatch registros**, elija y**MyInferencePipelinesEndpoint**, a continuación, **Buscar grupo de registros**.  
![\[El flujo de CloudWatch registro de la canalización de inferencias.\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/pipeline-log-streams-2.png)

Para obtener una lista de los registros que publica SageMaker AI, consulte[Registros y métricas de canalización de inferencias](inference-pipeline-logs-metrics.md).

## Utilizar mensajes de error para solucionar problemas de canalizaciones de inferencia
<a name="inference-pipeline-troubleshoot-errors"></a>

Los mensajes de error de canalización de inferencia indican que los contenedores presentan errores. 

Si se produce un error mientras la SageMaker IA invoca un punto final, el servicio devuelve un `ModelError` (código de error 424), que indica qué contenedor ha fallado. Si la carga útil de la solicitud (la respuesta del contenedor anterior) supera el límite de 5 MB, SageMaker AI proporciona un mensaje de error detallado, como: 

Recibió una respuesta de MyContainerName 1 con el código de estado 200. Sin embargo, la carga útil de la solicitud de MyContainerName 1 a MyContainerName 2 es de 6000000 bytes, lo que ha superado el límite máximo de 5 MB.

``

Si un contenedor no supera la comprobación de estado del ping mientras la SageMaker IA está creando un punto final, devuelve un valor `ClientError` e indica todos los contenedores que no pasaron la comprobación de ping en la última comprobación de estado.

# Eliminar puntos de conexión y recursos
<a name="realtime-endpoints-delete-resources"></a>

Elimine puntos de conexión para dejar de incurrir en gastos.

## Eliminar punto de conexión
<a name="realtime-endpoints-delete-endpoint"></a>

Elimine su punto final mediante programación mediante AWS SDK para Python (Boto3), con o de forma interactiva mediante la AWS CLI SageMaker consola de IA.

SageMaker La IA libera todos los recursos que se desplegaron cuando se creó el punto final. Al eliminar un punto final, no se eliminará la configuración del punto final ni el modelo de SageMaker IA. Consulte [Eliminar configuración de punto de conexión](#realtime-endpoints-delete-endpoint-config) y [Eliminar modelo](#realtime-endpoints-delete-model) para obtener información sobre cómo eliminar la configuración de su punto final y su modelo de SageMaker IA.

------
#### [ AWS SDK para Python (Boto3) ]

Utilice la API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpoint.html) para eliminar el punto de conexión. Especifique el nombre del punto de conexión para el campo `EndpointName`.

```
import boto3

# Specify your AWS Region
aws_region='<aws_region>'

# Specify the name of your endpoint
endpoint_name='<endpoint_name>'

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=aws_region)

# Delete endpoint
sagemaker_client.delete_endpoint(EndpointName=endpoint_name)
```

------
#### [ AWS CLI ]

Para eliminar el punto de conexión, utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-endpoint.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-endpoint.html). Especifique el nombre del punto de conexión para la marca `endpoint-name`.

```
aws sagemaker delete-endpoint --endpoint-name <endpoint-name>
```

------
#### [ SageMaker AI Console ]

Elimine su punto final de forma interactiva con la consola de SageMaker IA.

1. En la consola de SageMaker IA, en el menú [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)de navegación, selecciona **Inferencia**.

1. Elija **Puntos de conexión** en el menú desplegable. Aparecerá una lista de los puntos de enlace creados en AWS su cuenta por nombre, nombre del recurso de Amazon (ARN), hora de creación, estado y una marca de tiempo que indica cuándo se actualizó el punto de enlace por última vez.

1. Seleccione el punto de conexión que desea eliminar.

1. Seleccione el botón desplegable **Acciones** en la esquina superior derecha.

1. Elija **Eliminar**.

------

## Eliminar configuración de punto de conexión
<a name="realtime-endpoints-delete-endpoint-config"></a>

Elimine la configuración de su punto de conexión mediante programación mediante AWS SDK para Python (Boto3), con o de forma interactiva mediante la AWS CLI consola de IA. SageMaker Al eliminar una configuración de punto de conexión, no se eliminan los puntos de conexión creados con esta configuración. Consulte [Eliminar punto de conexión](#realtime-endpoints-delete-endpoint) para obtener información sobre cómo eliminar un punto de conexión.

No elimine una configuración de punto de conexión que esté utilizando un punto de conexión activo o mientras el punto de conexión se está actualizando o creando. Es posible que pierda visibilidad sobre el tipo de instancia que utiliza el punto de conexión si elimina la configuración de un punto de conexión que está activo o que se está creando o actualizando.

------
#### [ AWS SDK para Python (Boto3) ]

Utilice la API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteEndpointConfig.html) para eliminar el punto de conexión. Especifique el nombre de la configuración del punto de conexión para el campo `EndpointConfigName`.

```
import boto3

# Specify your AWS Region
aws_region='<aws_region>'

# Specify the name of your endpoint configuration
endpoint_config_name='<endpoint_name>'

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=aws_region)

# Delete endpoint configuration
sagemaker_client.delete_endpoint_config(EndpointConfigName=endpoint_config_name)
```

Si lo desea, puede utilizar la API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html) para devolver información sobre el nombre de los modelos implementados (variantes de producción), como el nombre del modelo y el nombre de la configuración del punto de conexión asociada a ese modelo implementado. Proporcione el nombre del punto de conexión en el campo `EndpointConfigName`. 

```
# Specify the name of your endpoint
endpoint_name='<endpoint_name>'

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=aws_region)

# Store DescribeEndpointConfig response into a variable that we can index in the next step.
response = sagemaker_client.describe_endpoint_config(EndpointConfigName=endpoint_name)

# Delete endpoint
endpoint_config_name = response['ProductionVariants'][0]['EndpointConfigName']
                        
# Delete endpoint configuration
sagemaker_client.delete_endpoint_config(EndpointConfigName=endpoint_config_name)
```

[Para obtener más información sobre otros elementos de respuesta devueltos por`DescribeEndpointConfig`, consulte la guía de referencia de [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html)la SageMaker API.](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Operations_Amazon_SageMaker_Service.html)

------
#### [ AWS CLI ]

Utilice el comando [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-endpoint-config.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-endpoint-config.html) para eliminar la configuración del punto de conexión. Especifique el nombre de la configuración del punto de conexión para la marca `endpoint-config-name`.

```
aws sagemaker delete-endpoint-config \
                        --endpoint-config-name <endpoint-config-name>
```

Si lo desea, puede utilizar el comando [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-endpoint-config.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-endpoint-config.html) para devolver información sobre el nombre de los modelos implementados (variantes de producción), como el nombre del modelo y el nombre de la configuración del punto de conexión asociado a ese modelo implementado. Proporcione el nombre del punto de conexión para la marca `endpoint-config-name`.

```
aws sagemaker describe-endpoint-config --endpoint-config-name <endpoint-config-name>
```

Se devolverá una respuesta JSON. Puede copiar y pegar o utilizar un analizador de JSON o una herramienta diseñada para análisis de JSON para obtener el nombre de la configuración del punto de conexión asociado a ese punto de conexión.

------
#### [ SageMaker AI Console ]

Elimine la configuración de sus terminales de forma interactiva con la consola de SageMaker IA.

1. En la consola de SageMaker IA, en el menú [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)de navegación, selecciona **Inferencia**.

1. Elija **Configuraciones de puntos de conexión** en el menú desplegable. Aparecerá una lista de las configuraciones de puntos de conexión creadas en su cuenta de AWS por nombre, Nombre de recurso de Amazon (ARN) y hora de creación.

1. Seleccione la configuración del punto de conexión que desea eliminar.

1. Seleccione el botón desplegable **Acciones** en la esquina superior derecha.

1. Elija **Eliminar**.

------

## Eliminar modelo
<a name="realtime-endpoints-delete-model"></a>

Elimine su modelo de SageMaker IA mediante programación mediante AWS SDK para Python (Boto3), con la consola de IA o de forma interactiva mediante la AWS CLI consola de IA. SageMaker Al eliminar un modelo de SageMaker IA, solo se elimina la entrada del modelo que se creó en la IA. SageMaker La eliminación del modelo no elimina los artefactos del modelo, el código de inferencia ni el rol de IAM que especificó al crear el modelo.

------
#### [ AWS SDK para Python (Boto3) ]

Usa la [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteModel.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DeleteModel.html)API para eliminar tu modelo de SageMaker IA. Especifique el nombre del modelo para el campo `ModelName`.

```
import boto3

# Specify your AWS Region
aws_region='<aws_region>'

# Specify the name of your endpoint configuration
model_name='<model_name>'

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=aws_region)

# Delete model
sagemaker_client.delete_model(ModelName=model_name)
```

Si lo desea, puede utilizar la API [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html) para devolver información sobre el nombre de los modelos implementados (variantes de producción), como el nombre del modelo y el nombre de la configuración del punto de conexión asociada a ese modelo implementado. Proporcione el nombre del punto de conexión en el campo `EndpointConfigName`. 

```
# Specify the name of your endpoint
endpoint_name='<endpoint_name>'

# Create a low-level SageMaker service client.
sagemaker_client = boto3.client('sagemaker', region_name=aws_region)

# Store DescribeEndpointConfig response into a variable that we can index in the next step.
response = sagemaker_client.describe_endpoint_config(EndpointConfigName=endpoint_name)

# Delete endpoint
model_name = response['ProductionVariants'][0]['ModelName']
sagemaker_client.delete_model(ModelName=model_name)
```

Para obtener más información sobre otros elementos de respuesta devueltos por`DescribeEndpointConfig`, consulta [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpointConfig.html)la [guía de referencia de la SageMaker API](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Operations_Amazon_SageMaker_Service.html).

------
#### [ AWS CLI ]

Usa el [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-model.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/delete-model.html)comando para eliminar tu modelo de SageMaker IA. Especifique el nombre del modelo para el campo `model-name`.

```
aws sagemaker delete-model \
                        --model-name <model-name>
```

Si lo desea, puede utilizar el comando [https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-endpoint-config.html](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/describe-endpoint-config.html) para devolver información sobre el nombre de los modelos implementados (variantes de producción), como el nombre del modelo y el nombre de la configuración del punto de conexión asociado a ese modelo implementado. Proporcione el nombre del punto de conexión para la marca `endpoint-config-name`.

```
aws sagemaker describe-endpoint-config --endpoint-config-name <endpoint-config-name>
```

Se devolverá una respuesta JSON. Puede copiar y pegar o utilizar un analizador de JSON o una herramienta diseñada para análisis de JSON para obtener el nombre del modelo asociado a ese punto de conexión.

------
#### [ SageMaker AI Console ]

Elimine su modelo de SageMaker IA de forma interactiva con la consola de SageMaker IA.

1. En la consola de SageMaker IA, en el menú [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/)de navegación, selecciona **Inferencia**.

1. En el menú desplegable, seleccione **Modelos**. Aparecerá una lista de los modelos creados en AWS su cuenta por nombre, nombre de recurso de Amazon (ARN) y hora de creación.

1. Seleccione el modelo que desea eliminar.

1. Seleccione el botón desplegable **Acciones** en la esquina superior derecha.

1. Elija **Eliminar**.

------