Amazon SageMaker Canvas es un espacio de trabajo rico en aprendizaje automático (ML) e IA generativa sin código que ha permitido a clientes de todo el mundo adoptar más fácilmente tecnologías de aprendizaje automático para resolver desafíos antiguos y nuevos gracias a su interfaz visual sin código. Lo hace cubriendo el flujo de trabajo de ML de un extremo a otro: ya sea que esté buscando una preparación de datos potente y AutoML, una implementación de puntos finales administrada, capacidades MLOps simplificadas y modelos listos para usar impulsados por los servicios de IA de AWS y la IA generativa, SageMaker Canvas puede ayudarle a alcanzar sus objetivos.
A medida que empresas de todos los tamaños adoptan SageMaker Canvas, los clientes solicitaron formas de optimizar los costos. Como se define en el marco de buena arquitectura de AWS, una carga de trabajo con costos optimizados utiliza todos los recursos por completo, cumple con sus requisitos funcionales y logra un resultado al precio más bajo posible.
Hoy presentamos una nueva forma de optimizar aún más los costos de las aplicaciones SageMaker Canvas. SageMaker Canvas ahora recopila métricas de Amazon CloudWatch que brindan información sobre el uso y la inactividad de las aplicaciones. Los clientes pueden utilizar esta información para cerrar automáticamente las aplicaciones SageMaker Canvas inactivas y evitar incurrir en costos no deseados.
En esta publicación, le mostraremos cómo cerrar automáticamente las aplicaciones inactivas de SageMaker Canvas para controlar los costos mediante el uso de una arquitectura simple sin servidor. Las plantillas utilizadas en esta publicación están disponibles en GitHub.
Comprensión y seguimiento de los costos
La educación es siempre el primer paso para comprender y controlar los costos de cualquier carga de trabajo, ya sea local o en la nube. Comencemos revisando el modelo de precios de SageMaker Canvas. En pocas palabras, SageMaker Canvas tiene un modelo de precios de pago por uso, basado en dos dimensiones:
- Instancia de espacio de trabajo: anteriormente conocido como tiempo de sesión, es el costo asociado con la ejecución de la aplicación SageMaker Canvas.
- Cargos por servicio de AWS: costos asociados con el entrenamiento de los modelos, la implementación de los puntos finales y la generación de inferencias (recursos para poner en marcha SageMaker Canvas).
Los clientes siempre tienen control total sobre los recursos que lanza SageMaker Canvas y pueden realizar un seguimiento de los costos asociados con la aplicación SageMaker Canvas mediante el servicio AWS Billing and Cost Management. Para obtener más información, consulte Administrar facturación y costos en SageMaker Canvas.
Para limitar el costo asociado con las instancias del espacio de trabajo, como práctica recomendada, debe cerrar sesión y no cerrar la pestaña del navegador. Para cerrar sesión, elija el Cerrar sesión en el panel izquierdo de la aplicación SageMaker Canvas.
Cerrar automáticamente las aplicaciones de SageMaker Canvas
Para los administradores de TI que buscan proporcionar controles automatizados para cerrar las aplicaciones de SageMaker Canvas y mantener los costos bajo control, existen dos enfoques:
- Cerrar aplicaciones según un cronograma (todos los días a las 19:00 o todos los viernes a las 18:00)
- Apagar automáticamente las aplicaciones inactivas (cuando la aplicación no se ha utilizado durante dos horas)
Cerrar aplicaciones según un cronograma
El apagado programado de las aplicaciones SageMaker Canvas se puede lograr con muy poco esfuerzo mediante el uso de un cron expresión (con regla cron de Amazon EventBridge), un componente informático (una función AWS Lambda) que llama a la API de Amazon SageMaker DeleteApp
. Este enfoque se analizó en la publicación Aprovisionamiento y administración de entornos de aprendizaje automático con Amazon SageMaker Canvas mediante AWS CDK y AWS Service Catalog, y se implementó en la publicación asociada. repositorio de GitHub.
Una de las ventajas de la arquitectura anterior es que es muy sencillo duplicarla para lograr la creación programada de la aplicación SageMaker Canvas. Al utilizar una combinación de creación y eliminación programadas, un administrador de la nube puede asegurarse de que la aplicación SageMaker Canvas esté lista para usarse cada vez que los usuarios comiencen su día laboral (por ejemplo, a las 9 a. m. en un día laboral) y que la aplicación también se cierre automáticamente. al final del día laboral (por ejemplo, a las 7:00 p. m. en un día laboral, siempre cerrado durante los fines de semana). Todo lo que se necesita hacer es cambiar la línea de código que llama al DeleteApp
API en CreateApp
además de actualizar la expresión cron para reflejar el tiempo deseado de creación de la aplicación.
Si bien este enfoque es muy fácil de implementar y probar, un inconveniente de la arquitectura sugerida es que no tiene en cuenta si una aplicación se está utilizando actualmente o no, cerrándola independientemente de su estado de actividad actual. Según las diferentes situaciones, esto podría causar fricciones con los usuarios activos, que podrían ver terminada su sesión repentinamente.
Puede recuperar la plantilla asociada a esta arquitectura desde el siguiente repositorio de GitHub:
Apagar automáticamente las aplicaciones inactivas
A partir de hoy, Amazon SageMaker Canvas emite métricas de CloudWatch que brindan información sobre el uso y la inactividad de las aplicaciones. Esto permite a un administrador definir una solución que lea la métrica de inactividad, la compare con un umbral y defina una lógica específica para el apagado automático. En el siguiente párrafo se muestra una descripción más detallada de la métrica de inactividad emitida por SageMaker Canvas.
Para lograr el cierre automático de las aplicaciones SageMaker Canvas según las métricas de inactividad, proporcionamos una plantilla de AWS CloudFormation. Esta plantilla consta de tres componentes principales:
- Una alarma de Amazon CloudWatch, que ejecuta una consulta para comprobar el valor MAX de la
TimeSinceLastActive
métrico. Si este valor es mayor que un umbral proporcionado como entrada a la plantilla de CloudFormation, activa el resto de la automatización. Esta consulta se puede ejecutar en un único perfil de usuario, en un único dominio o en todos los dominios. Según el nivel de control que desees tener, puedes utilizar:- el
all-domains-all-users
plantilla, que verifica esto en todos los usuarios y todos los dominios en la región donde se implementa la plantilla - el
one-domain-all-users
plantilla, que comprueba esto en todos los usuarios de un dominio en la región donde se implementa la plantilla - el
one-domain-one-user
plantilla, que comprueba esto para un perfil de usuario, en un dominio, en la región donde se implementa la plantilla
- el
- El cambio de estado de alarma crea un evento en el bus de eventos predeterminado en Amazon EventBridge, que tiene una regla de Amazon EventBridge configurada para activar una función de AWS Lambda.
- La función AWS Lambda identifica qué aplicación SageMaker Canvas se ha estado ejecutando inactiva durante más del umbral especificado y la elimina con la API DeleteApp.
Puede recuperar las plantillas de AWS CloudFormation asociadas a esta arquitectura desde el siguiente repositorio de GitHub:
Cómo funciona la métrica de inactividad de SageMaker Canvas
SageMaker Canvas emite un TimeSinceLastActive
métrica en el /aws/sagemaker/Canvas/AppActivity
espacio de nombres, que muestra la cantidad de segundos que la aplicación ha estado inactiva sin actividad del usuario. Podemos usar esta nueva métrica para activar un apagado automático de la aplicación SageMaker Canvas cuando ha estado inactiva durante un período definido. SageMaker Canvas expone el TimeSinceLastActive
con el siguiente esquema:
{
"Namespace": "/aws/sagemaker/Canvas/AppActivity",
"Dimensions": (
(
"DomainId",
"UserProfileName"
)
),
"Metrics": (
{
"Name": "TimeSinceLastActive",
"Unit": "Seconds",
"Value": 12345
}
)
}
Los componentes clave de esta métrica son los siguientes:
Dimensions
En particularDomainID
yUserProfileName
que permiten a un administrador identificar qué aplicaciones están inactivas en todos los dominios y usuariosValue
de la métrica, que indica el número de segundos desde la última actividad en las aplicaciones de SageMaker Canvas. SageMaker Canvas considera como actividad lo siguiente:- Cualquier acción realizada en la aplicación SageMaker Canvas (hacer clic en un botón, transformar un conjunto de datos, generar una inferencia en la aplicación, implementar un modelo);
- Usar un modelo listo para usar o interactuar con los modelos de IA generativa mediante la interfaz de chat;
- Una inferencia por lotes programada para ejecutarse en un momento específico; para obtener más información, consulte Administrar automatizaciones.
Esta métrica se puede leer a través de la API de Amazon CloudWatch, como get_metric_data
. Por ejemplo, utilizando AWS SDK para Python (boto3
):
import boto3, datetime
cw = boto3.client('cloudwatch')
metric_data_results = cw.get_metric_data(
MetricDataQueries=(
{
"Id": "q1",
"Expression": 'SELECT MAX(TimeSinceLastActive) FROM "/aws/sagemaker/Canvas/AppActivity" GROUP BY DomainId, UserProfileName',
"Period": 900
}
),
StartTime=datetime.datetime(2023, 1, 1),
EndTime=datetime.datetime.now(),
ScanBy='TimestampAscending'
)
La consulta de Python extrae el MAX
valor de TimeSinceLastActive
del espacio de nombres asociado a SageMaker Canvas después de agrupar estos valores por DomainID
y UserProfileName
.
Implementación y prueba de la solución de apagado automático
Para implementar la pila de apagado automático, haga lo siguiente:
- Descargue la plantilla de AWS CloudFormation que hace referencia a la solución que desea implementar desde el repositorio de GitHub anterior. Elija si desea implementar una solución para todos los dominios de SageMaker, para un solo dominio de SageMaker o para un solo usuario;
- Actualizar parámetros de plantilla:
- El tiempo de inactividad – tiempo (en segundos) que la aplicación SageMaker Canvas puede permanecer inactiva antes de cerrarse; El valor predeterminado es 2 horas.
- El periodo de alarma – tiempo de agregación (en segundos) utilizado por CloudWatch Alarm para calcular el tiempo de espera de inactividad; El valor predeterminado es 20 minutos.
- (opcional) ID de dominio de SageMaker y nombre del perfil de usuario
- Implementar la pila de CloudFormation para crear los recursos.
Una vez implementada (debería tomar menos de dos minutos), la función AWS Lambda y la alarma de Amazon CloudWatch están configuradas para cerrar automáticamente la aplicación Canvas cuando está inactiva. Para probar el script de apagado automático, haga lo siguiente:
- Asegúrese de que la aplicación SageMaker Canvas se esté ejecutando en el dominio correcto y con el perfil de usuario correcto (si los ha configurado).
- Deje de usar la aplicación SageMaker Canvas y espere el período de tiempo de inactividad (predeterminado, 2 horas)
- Verifique que la aplicación se detenga después de estar inactiva durante el tiempo límite verificando que la alarma de CloudWatch se haya activado y, después de activar la automatización, haya vuelto al estado normal.
En nuestra prueba, establecimos el período de tiempo de inactividad en dos horas (7200 segundos). En el siguiente gráfico trazado por Amazon CloudWatch Metrics, puede ver que la aplicación SageMaker Canvas ha estado emitiendo el TimeSinceLastActive
métrica hasta que se alcanzó el umbral (1), lo que activó la alarma. Una vez que se activó la alarma, se ejecutó la función AWS Lambda, que eliminó la aplicación y volvió a llevar la métrica por debajo del umbral (2).
Conclusión
En esta publicación, implementamos una solución de apagado automatizado para aplicaciones inactivas de SageMaker Canvas utilizando AWS Lambda y CloudWatch Alarm y la métrica de inactividad recientemente emitida por SageMaker Canvas. Gracias a esta solución, los clientes no solo pueden optimizar los costos de sus cargas de trabajo de ML, sino que también pueden evitar cargos no deseados por aplicaciones que olvidaron que se estaban ejecutando en su dominio SageMaker.
Esperamos ver qué nuevos casos de uso y cargas de trabajo pueden resolver los clientes con la tranquilidad que brinda esta solución. Para obtener más ejemplos de cómo SageMaker Canvas puede ayudarlo a lograr sus objetivos comerciales, consulte las siguientes publicaciones:
Para saber cómo ejecutar cargas de trabajo a nivel de producción con Amazon SageMaker Canvas, consulte las siguientes publicaciones:
Sobre los autores
Davide Gallitelli es un arquitecto senior de soluciones especializado en IA/ML. Tiene su sede en Bruselas y trabaja en estrecha colaboración con clientes de todo el mundo que buscan adoptar tecnologías de aprendizaje automático Low-Code/No-Code e IA generativa. Ha sido desarrollador desde muy joven y comenzó a codificar a los 7 años. Comenzó a aprender ai/ML en la universidad y se ha enamorado de ello desde entonces.
Huong Nguyen es gerente sénior de productos en AWS. Lidera la integración del ecosistema de datos para SageMaker, con 14 años de experiencia en la creación de productos centrados en el cliente y basados en datos para espacios empresariales y de consumo.
Gunjan Garg es ingeniero principal en el equipo de Amazon SageMaker en AWS y brinda liderazgo técnico para el producto. Ha trabajado en varios puestos en la organización de IA/ML durante los últimos cinco años y actualmente se centra en Amazon SageMaker Canvas.
Huang Ziyao es ingeniero de desarrollo de software en Amazon SageMaker Data Wrangler. Le apasiona crear productos excelentes que faciliten el aprendizaje automático para los clientes. Fuera del trabajo, a Ziyao le gusta leer y salir con sus amigos.