Implementaciones continuas - Amazon SageMaker

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.

Implementaciones continuas

Cuando actualiza su punto de conexión, puede especificar una implementación continua para cambiar gradualmente el tráfico de su flota anterior a una flota nueva. Puede controlar el tamaño de los pasos del cambio de tráfico, así como especificar un período de evaluación para monitorizar las nuevas instancias en busca de problemas antes de cerrar las instancias de la flota anterior. Con las implementaciones sucesivas, las instancias de la flota anterior se limpian después de cada cambio de tráfico a la nueva flota, lo que reduce la cantidad de instancias adicionales necesarias para actualizar el punto de conexión. Esto resulta especialmente útil para las instancias aceleradas que tienen una gran demanda.

Las implementaciones sucesivas sustituyen gradualmente la implementación anterior de la versión del modelo por la nueva versión mediante la actualización del punto de conexión en tamaños de lote configurables. El comportamiento de cambio de tráfico de las implementaciones continuas es similar al modo de cambio de tráfico lineal de las implementaciones azul/verde, pero las implementaciones continuas ofrecen la ventaja de reducir los requisitos de capacidad en comparación con las implementaciones azul/verde. Con las implementaciones continuas, hay menos instancias activas a la vez y usted tiene un control más detallado sobre el número de instancias que desea actualizar en la nueva flota. Debería considerar utilizar una implementación continua en lugar de una implementación azul/verde si tiene modelos grandes o un punto de conexión grande con muchas instancias.

En la siguiente lista se describen las principales características de las implementaciones sucesivas en Amazon SageMaker:

  • Período de cocción.El período de cocción es un período de tiempo establecido para monitorizar la nueva flota antes de pasar a la siguiente fase de implementación. Si alguna de las alarmas preespecificadas se activa durante un período de inactividad, todo el tráfico de los puntos de conexión se transfiere a la flota anterior. El período de cocción le ayuda a aumentar la confianza en su actualización antes de hacer que el cambio de tráfico sea permanente.

  • Tamaño del lote continuo. Tiene control granular sobre el tamaño de cada lote para el cambio de tráfico o la cantidad de instancias que desea actualizar en cada lote. Este número puede oscilar entre el 5 y el 50 % del tamaño de su flota. Puede especificar el tamaño del lote como un número de instancias o como el porcentaje total de su flota.

  • Reversiones automáticas. Puedes especificar CloudWatch las alarmas de Amazon que SageMaker utilizará para monitorizar la nueva flota. Si un problema con el código actualizado activa alguna de las alarmas, SageMaker inicia una reversión automática a la flota anterior para mantener la disponibilidad y minimizar así el riesgo.

nota

Si su punto de conexión utiliza alguna de las características enumeradas en la página Exclusiones, no podrá utilizar implementaciones continuas.

Funcionamiento

Durante un despliegue continuo, SageMaker proporciona la infraestructura necesaria para transferir el tráfico de la flota antigua a la nueva sin tener que aprovisionar todas las instancias nuevas a la vez. SageMaker sigue los siguientes pasos para transferir el tráfico:

  1. SageMaker aprovisiona el primer lote de instancias de la nueva flota.

  2. Una parte del tráfico se desplaza de las instancias antiguas al primer lote de instancias nuevas.

  3. Después del período de cocción, si no se activa ninguna CloudWatch alarma de Amazon, SageMaker limpia un lote de instancias antiguas.

  4. SageMaker continúa aprovisionando, desplazando y limpiando las instancias en lotes hasta que se complete la implementación.

Si se activa una alarma durante uno de los períodos de espera, el tráfico vuelve a la flota anterior en lotes del tamaño que usted especifique. Como alternativa, puede especificar la implementación continua para que el 100 % del tráfico vuelva a la flota anterior en caso de que se active una alarma.

El siguiente diagrama muestra la progresión de una implementación continua correcta, tal y como se describe en los pasos anteriores.

Los pasos de un despliegue continuo hacen que el tráfico se traslade satisfactoriamente de la flota antigua a la nueva.

Para crear una implementación continua, solo tiene que especificar la configuración de la implementación que desee. Luego, se SageMaker encarga del aprovisionamiento de nuevas instancias, la cancelación de las antiguas y el traslado del tráfico por usted. Puede crear y administrar su implementación a través de los comandos UpdateEndpointand CreateEndpoint SageMaker APIy AWS Command Line Interface existentes.

Requisitos previos

Antes de configurar una implementación continua, debes crear CloudWatch alarmas de Amazon para ver las métricas desde tu punto de conexión. Si alguna de las alarmas se activa durante el período de cocción, el tráfico empezará a repercutir en su flota anterior. Para obtener información sobre cómo configurar CloudWatch las alarmas en un punto final, consulte la página de requisitos previos: configuración y supervisión de la reversión automática. Para obtener más información sobre CloudWatch las alarmas, consulta Uso de CloudWatch las alarmas de Amazon en la Guía del CloudWatch usuario de Amazon.

Además, consulte la página Exclusiones para asegurarse de que su punto de conexión cumple con los requisitos para una implementación continua.

Determine el tamaño del lote continuo

Antes de actualizar el punto de conexión, determine el tamaño del lote que quiera utilizar para transferir el tráfico de forma gradual a la nueva flota.

En las implementaciones continuas, puede especificar un tamaño de lote que represente entre el 5 y el 50 % de la capacidad de su flota. Si elige un tamaño de lote grande, la implementación se completa más rápidamente. Sin embargo, tenga en cuenta que el punto de conexión requiere más capacidad durante la actualización, aproximadamente la sobrecarga del tamaño del lote. Si elige un tamaño de lote más pequeño, la implementación tardará más, pero utilizará menos capacidad durante la implementación.

Configurar una implementación continua

Cuando esté listo para la implementación y haya configurado CloudWatch las alarmas para su terminal, puede utilizar el comando update-endpoint SageMaker UpdateEndpointAPIo el comando update-endpoint del dispositivo AWS Command Line Interface para iniciar la implementación.

¿Cómo actualizar un punto de conexión?

El siguiente ejemplo muestra cómo puede actualizar su terminal con un despliegue continuo mediante el método update_endpoint del cliente Boto3. SageMaker

Para configurar una implementación continua, utilice el ejemplo y los campos siguientes:

  • En EndpointName, utilice el nombre del punto de conexión existente que quiera actualizar.

  • En EndpointConfigName, utilice el nombre de la configuración de punto de conexión que quiera utilizar.

  • En el AutoRollbackConfiguration objeto, dentro del Alarms campo, puede añadir sus CloudWatch alarmas por nombre. Cree una entrada AlarmName: <your-cw-alarm> para cada alarma que quiera utilizar.

  • En DeploymentConfig, para el objeto RollingUpdatePolicy, especifique los siguientes campos:

    • MaximumExecutionTimeoutInSeconds: el límite de tiempo para la implementación total. Si se supera este límite, el tiempo de espera se agota. El valor máximo que puede especificar para este campo es de 28800 segundos u 8 horas.

    • WaitIntervalInSeconds— La duración del período de cocción, durante el cual se SageMaker monitorizan las alarmas de cada lote de la nueva flota.

    • MaximumBatchSize: especifique el Type del lote que quiera utilizar (el número de instancias o el porcentaje total de su flota) y el Value o tamaño de cada lote.

    • RollbackMaximumBatchSize: utilice este objeto para especificar la estrategia de reversión en caso de que se active una alarma. Especifique el Type del lote que quiera utilizar (número de instancias o porcentaje total de su flota) y el Value o tamaño de cada lote. Si no especificas estos campos o si estableces el valor en el 100% del punto final, SageMaker utiliza una estrategia de reducción azul/verde y devuelve todo el tráfico a la flota anterior cuando se activa una alarma.

import boto3 client = boto3.client("sagemaker") response = client.update_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-config-name>", DeploymentConfig={ "AutoRollbackConfiguration": { "Alarms": [ { "AlarmName": "<your-cw-alarm>" }, ] }, "RollingUpdatePolicy": { "MaximumExecutionTimeoutInSeconds": number, "WaitIntervalInSeconds": number, "MaximumBatchSize": { "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default), "Value": number }, "RollbackMaximumBatchSize": { "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default), "Value": number }, } } )

Tras actualizar el dispositivo, es posible que desee comprobar el estado de su implementación continua y comprobar el estado de su punto de conexión. Puede revisar el estado de su terminal en la SageMaker consola o puede revisar el estado de su punto final utilizando el. DescribeEndpointAPI

En el VariantStatus objeto devuelto por el DescribeEndpointAPI, el Status campo indica el estado actual de despliegue o funcionamiento de su punto final. Para obtener más información sobre los posibles estados y su significado, consulte ProductionVariantStatus.

Si ha intentado realizar una implementación continua y el estado de su punto de conexión es UpdateRollbackFailed, consulte la siguiente sección para obtener ayuda con la solución de problemas.

Administración de errores

Si las implementaciones continuas fallan y la reversión automática también falla, el punto de conexión puede quedarse con el estado de UpdateRollbackFailed. Este estado significa que se han implementado diferentes configuraciones de punto de conexión en las instancias situadas detrás de su punto de conexión y que este está en servicio con una combinación de configuraciones de punto de conexión antiguas y nuevas.

Puede realizar otra llamada al para que su terminal vuelva UpdateEndpointAPIa estar en buen estado. Especifique la configuración del punto de conexión y la configuración de implementación que quiera (ya sea una implementación continua, una implementación azul/verde o ninguna de las dos) para actualizar su punto de conexión.

Puede volver a llamar DescribeEndpointAPIal para comprobar el estado de su punto final, que se devuelve en el VariantStatus objeto como Status campo. Si la actualización se realiza correctamente, el Status del punto de conexión devolverá InService.