Logotipo de Zephyrnet

Configure la asignación de costos a nivel empresarial para cargas de trabajo y entornos de aprendizaje automático mediante el etiquetado de recursos en Amazon SageMaker

Fecha:

A medida que las empresas y los líderes de TI buscan acelerar la adopción del aprendizaje automático (ML), existe una necesidad creciente de comprender la asignación de gastos y costos para su entorno de ML para cumplir con los requisitos empresariales. Sin una gestión y un gobierno de costos adecuados, su gasto en aprendizaje automático puede generar sorpresas en su factura mensual de AWS. Amazon SageMaker es una plataforma de ML completamente administrada en la nube que equipa a nuestros clientes empresariales con herramientas y recursos para establecer medidas de asignación de costos y mejorar la visibilidad detallada de los costos y el uso por parte de sus equipos, unidades comerciales, productos y más.

En esta publicación, compartimos consejos y mejores prácticas con respecto a la asignación de costos para su entorno y cargas de trabajo de SageMaker. En casi todos los servicios de AWS, incluido SageMaker, la aplicación de etiquetas a los recursos es una forma estándar de realizar un seguimiento de los costos. Estas etiquetas pueden ayudarlo a rastrear, informar y monitorear su gasto de ML a través de soluciones listas para usar como Explorador de costos de AWS y Presupuestos de AWS, así como soluciones personalizadas basadas en los datos de Informes de uso y costo de AWS (CUR).

Etiquetado de asignación de costos

La asignación de costos en AWS es un proceso de tres pasos:

  1. Adjuntar etiquetas de asignación de costos a sus recursos.
  2. Activa tus etiquetas en el Etiquetas de asignación de costos sección de la consola de facturación de AWS.
  3. Use las etiquetas para rastrear y filtrar los informes de asignación de costos.

Después de crear y adjuntar etiquetas a los recursos, aparecen en la consola de facturación de AWS. Etiquetas de asignación de costos sección bajo Etiquetas de asignación de costos definidas por el usuario. Las etiquetas pueden tardar hasta 24 horas en aparecer después de que se crean. Luego, debe activar estas etiquetas para que AWS comience a rastrearlas para sus recursos. Por lo general, después de activar una etiqueta, las etiquetas tardan entre 24 y 48 horas en aparecer en Cost Explorer. La forma más fácil de verificar si sus etiquetas funcionan es buscar su nueva etiqueta en el filtro de etiquetas en Cost Explorer. Si está allí, entonces está listo para usar las etiquetas para sus informes de asignación de costos. Luego puede optar por agrupar sus resultados por claves de etiqueta o filtrar por valores de etiqueta, como se muestra en la siguiente captura de pantalla.

Una cosa a tener en cuenta: si usa Organizaciones de AWS y tiene cuentas de AWS vinculadas, las etiquetas solo se pueden activar en la cuenta del pagador principal. Opcionalmente, también puede activar CUR para las cuentas de AWS que habilitan los informes de asignación de costos como un archivo CSV con su uso y costos agrupados por sus etiquetas activas. Esto le brinda un seguimiento más detallado de sus costos y facilita la configuración de sus propias soluciones de informes personalizados.

Etiquetado en SageMaker

En un nivel alto, los recursos de etiquetado de SageMaker se pueden agrupar en dos categorías:

  • Etiquetar el entorno del bloc de notas de SageMaker, ya sea Estudio Amazon SageMaker dominios y usuarios de dominio, o instancias de cuadernos de SageMaker
  • Etiquetado de trabajos administrados por SageMaker (etiquetado, procesamiento, capacitación, ajuste de hiperparámetros, transformación por lotes y más) y recursos (como modelos, equipos de trabajo, configuraciones de puntos finales y puntos finales)

Los cubrimos con más detalle en esta publicación y brindamos algunas soluciones sobre cómo aplicar el control de gobierno para garantizar una buena higiene de etiquetado.

Etiquetado de dominios y usuarios de SageMaker Studio

Studio es un entorno de desarrollo integrado (IDE) basado en la web para ML que le permite crear, entrenar, depurar, implementar y monitorear sus modelos de ML. Puede iniciar los portátiles de Studio rápidamente y aumentar o disminuir dinámicamente los recursos informáticos subyacentes sin interrumpir su trabajo.

Para etiquetar automáticamente estos recursos dinámicos, debe asignar etiquetas al dominio de SageMaker y a los usuarios del dominio a los que se les ha proporcionado acceso a esos recursos. Puede especificar estas etiquetas en el parámetro de etiquetas de crear-dominio or crear-perfil-de-usuario durante la creación del perfil o dominio, o puede agregarlos más tarde usando el agregar etiquetas API. Studio copia y asigna automáticamente estas etiquetas a los cuadernos de Studio creados en el dominio o por usuarios específicos. También puede agregar etiquetas a los dominios de SageMaker editando la configuración del dominio en el Panel de control de Studio.

El siguiente es un ejemplo de asignación de etiquetas al perfil durante la creación.

aws sagemaker create-user-profile --domain-id  --user-profile-name data-scientist-full --tags Key=studiouserid,Value= --user-settings ExecutionRole=arn:aws:iam:::role/SageMakerStudioExecutionRole_datascientist-full

Para etiquetar dominios y usuarios existentes, utilice el add-tags API. Luego, las etiquetas se aplican a todos los cuadernos nuevos. Para aplicar estas etiquetas a sus notebooks existentes, debe reiniciar la aplicación Studio (Kernel Gateway y Jupyter Server) que pertenece a ese perfil de usuario. Esto no causará ninguna pérdida en los datos del portátil. Consulte esto Cierre y actualice SageMaker Studio y las aplicaciones Studio para obtener información sobre cómo eliminar y reiniciar sus aplicaciones de Studio.

Etiquetado de instancias de cuadernos de SageMaker

En el caso de una instancia de notebook de SageMaker, el etiquetado se aplica a la propia instancia. Las etiquetas se asignan a todos los recursos que se ejecutan en la misma instancia. Puede especificar etiquetas mediante programación usando el parámetro de etiquetas en el crear-instancia-de-cuaderno API o agréguelos a través de la consola de SageMaker durante la creación de la instancia. También puede agregar o actualizar etiquetas en cualquier momento usando el agregar etiquetas API o a través de la consola de SageMaker.

Tenga en cuenta que esto excluye los trabajos y recursos administrados de SageMaker, como los trabajos de capacitación y procesamiento, porque se encuentran en el entorno de servicio y no en la instancia. En la siguiente sección, veremos cómo aplicar el etiquetado a estos recursos con mayor detalle.

Etiquetado de trabajos y recursos administrados por SageMaker

Para trabajos y recursos administrados por SageMaker, se debe aplicar el etiquetado al tags atributo como parte de cada solicitud de API. Un SKLearnProcessor ejemplo se ilustra en el código siguiente. Puede encontrar más ejemplos de cómo asignar etiquetas a otros trabajos y recursos administrados de SageMaker en la Repositorio GitHub.

from sagemaker import get_execution_role
from sagemaker.sklearn.processing import SKLearnProcessor

processing_tags = [{' Key':"cost-center','Value':'TF2WorkflowProcessing'}]
sklearn_processorl = SKLearnProcessor(framework_version='0.23-1' ,
									 role=get_execution_role(),
									 instance_type='ml.m5.xlarge',
									 instance_count=2,
									 tags=processing_tags)

Etiquetado de canalizaciones de SageMaker

En el caso de las canalizaciones de SageMaker, puede etiquetar la canalización completa como un todo en lugar de cada paso individual. La canalización de SageMaker propaga automáticamente las etiquetas a cada paso de la canalización. Todavía tiene la opción de agregar etiquetas separadas adicionales a pasos individuales si es necesario. En la interfaz de usuario de Studio, las etiquetas de canalización aparecen en la sección de metadatos.

Para aplicar etiquetas a una canalización, utilice el SDK de Python de SageMaker:

pipeline_tags = [ {'Key': 'pipeline-type', 'Value': 'TF2WorkflowPipeline'}]
pipeline.upsert(role_arn=role, tags=pipeline_tags)
execution = pipeline.start()

Hacer cumplir el etiquetado mediante políticas de IAM

Si bien el etiquetado es un mecanismo eficaz para implementar estrategias de gobierno y administración de la nube, hacer cumplir el comportamiento de etiquetado correcto puede ser un desafío si solo se lo deja a los usuarios finales. ¿Cómo evita la creación de recursos de ML si falta una etiqueta específica, cómo se asegura de que se apliquen las etiquetas correctas y cómo evita que los usuarios eliminen las etiquetas existentes?

Puedes lograr esto usando Gestión de identidades y accesos de AWS (IAM) políticas. El siguiente código es un ejemplo de una política que evita acciones de SageMaker como CreateDomain or CreateNotebookInstance si la solicitud no contiene la clave de entorno y uno de los valores de la lista. los ForAllValues modificador con el aws:TagKeys clave de condición indica que sólo la clave environment está permitido en la solicitud. Esto evita que los usuarios incluyan otras claves, como usar accidentalmente Environment en lugar de environment.

"sagemaker:CreateTrainingJob"
      ],
      "{
      "Sid": "SageMakerEnforceEnvtOnCreate",
      "Action": [
        "sagemaker:CreateDomain",
        "sagemaker:CreateEndpoint",
        "sagemaker:CreateNotebookInstance",
        Effect": "Allow",
      "Resource": "*",
  "Condition": {
            "StringEquals": {
                "aws:RequestTag/environment": [
                    "dev","staging","production"
                ]
            },
            "ForAllValues:StringEquals": {"aws:TagKeys": "environment"}
        }
      }

Políticas de etiquetas y políticas de control de servicios (SCP) también puede ser una buena manera de estandarizar la creación y el etiquetado de sus recursos de ML. Para obtener más información sobre cómo implementar una estrategia de etiquetado que aplique y valide el etiquetado a nivel de organización, consulte Serie de blogs de asignación de costos n.º 3: Aplicación y validación de etiquetas de recursos de AWS.

Informes de asignación de costos

Puede ver las etiquetas filtrando las vistas en Cost Explorer, viendo un informe mensual de asignación de costos, o examinando el CUR.

Visualización de etiquetas en Cost Explorer

Cost Explorer es una herramienta que le permite ver y analizar sus costos y uso. Puede explorar su uso y costos usando el gráfico principal: los informes de costos y uso de Cost Explorer. Para ver un video rápido sobre cómo usar Cost Explorer, consulte ¿Cómo puedo usar Cost Explorer para analizar mis gastos y uso?

Con Cost Explorer, puede filtrar cómo ve sus costos de AWS por etiquetas. Agrupar por nos permite filtrar los resultados por claves de etiquetas como Environment, Deploymento Cost Center. El filtro de etiquetas nos ayuda a seleccionar el valor que deseamos independientemente de la clave. Ejemplos incluyen Production y Staging. Tenga en cuenta que debe ejecutar los recursos después de agregar y activar etiquetas; de lo contrario, Cost Explorer no tendrá ningún dato de uso y el valor de la etiqueta no se mostrará como una opción de filtro o grupo.

La siguiente captura de pantalla es un ejemplo de filtrado por todos los valores de la BusinessUnit etiqueta.

Examinando etiquetas en el CUR

El Informe de uso y costo contiene el conjunto de datos de uso y costo más completo disponible. El informe contiene elementos de línea para cada combinación única de producto de AWS, tipo de uso y operación que utiliza su cuenta de AWS. Puede personalizar el CUR para agregar la información por hora o por día. Un informe de asignación de costos mensual es una forma de configurar los informes de asignación de costos. Puedes configurar un informe mensual de asignación de costos que enumera el uso de AWS para su cuenta por categoría de producto y usuario de cuenta vinculado. El informe contiene los mismos elementos de línea que el informe de facturación detallado y columnas adicionales para sus claves de etiquetas. Puede configurarlo y descargar su informe siguiendo los pasos en Informe de asignación de costos mensual.

La siguiente captura de pantalla muestra cómo se muestran las claves de etiquetas definidas por el usuario en el CUR. Las claves de etiquetas definidas por el usuario tienen el prefijo user, Tales como user:Department y user:CostCenter. Las claves de etiqueta generadas por AWS tienen el prefijo aws.

Visualice el CUR con Amazon Athena y Amazon QuickSight

Atenea amazónica es un servicio de consulta interactivo que facilita el análisis de datos en Amazon S3 mediante SQL estándar. Athena no tiene servidor, por lo que no hay infraestructura que administrar y solo paga por las consultas que ejecuta. Para integrar Athena con CUR, consulte Consulta de informes de costos y uso con Amazon Athena. A continuación, puede crear consultas personalizadas para consultar datos CUR utilizando SQL estándar. La siguiente captura de pantalla es un ejemplo de una consulta para filtrar todos los recursos que tienen el valor TF2WorkflowTraining para el cost-center etiqueta.

select * from {$table_name} where resource_tags_user_cost-center= 'TF2WorkflowTraining'

En el siguiente ejemplo, estamos tratando de averiguar a qué recursos les faltan valores en el cost-center etiqueta.

SELECT
 bill_payer_account_id, line_item_usage_account_id, DATE_FORMAT((line_item_usage_start_date), '%Y-%m-%d') AS day_line_item_usage_start_date, line_item_resource_id, line_item_usage_type, resource_tags_user_cost-center
FROM
{$table_name} 
WHERE
 resource_tags_user_cost-center IS NULL
AND line_item_product_code = 'AmazonSageMaker'

Puede encontrar más información y consultas de ejemplo en el Biblioteca de consultas de AWS CUR.

También puede introducir datos CUR en Amazon QuickSight, donde puede cortarlo y trocearlo de la forma que desee para fines de informes o visualización. Para obtener instrucciones sobre la ingesta de datos CUR en QuickSight, consulte ¿Cómo ingiero y visualizo el informe de uso y costo de AWS (CUR) en Amazon QuickSight?.

Seguimiento del presupuesto mediante etiquetas

AWS Budgets es una excelente manera de proporcionar una alerta temprana si el gasto aumenta inesperadamente. Puede crear presupuestos personalizados que le avisen cuando los costos y el uso de ML superen (o se pronostique que superen) los umbrales definidos por el usuario. Con AWS Budgets, puede monitorear sus costos mensuales totales de ML o filtrar sus presupuestos para realizar un seguimiento de los costos asociados con dimensiones de uso específicas. Por ejemplo, puede configurar el alcance del presupuesto para incluir los costos de los recursos de SageMaker etiquetados como cost-center: ML-Marketing, como se muestra en la siguiente captura de pantalla. Para dimensiones adicionales e instrucciones detalladas sobre cómo configurar Presupuestos de AWS, consulte esta página.

Con alertas de presupuesto, puede enviar notificaciones cuando se excedan (o estén a punto de excederse) los límites de su presupuesto. Estas alertas también se pueden publicar en un Servicio de notificación simple de Amazon (Amazon SNS) tema. Un AWS Lambda A continuación, se invoca la función que se suscribe al tema de SNS y se puede realizar cualquier acción que se pueda implementar mediante programación.

AWS Budgets también le permite configurar acciones presupuestarias, que son los pasos que puede realizar cuando se supera un umbral de presupuesto (importes reales o previstos). Este nivel de control le permite reducir los gastos excesivos no intencionales en su cuenta. Puede configurar respuestas específicas al costo y el uso en su cuenta que se aplicarán automáticamente o a través de un proceso de aprobación de flujo de trabajo cuando se exceda un objetivo de presupuesto. Esta es una solución realmente poderosa para garantizar que su gasto de ML sea consistente con los objetivos del negocio. Puede seleccionar qué tipo de acción tomar. Por ejemplo, cuando se cruza un límite de presupuesto, puede mover usuarios específicos de IAM de permisos de administrador a solo lectura. Para los clientes que usan Organizaciones, puede aplicar acciones a una unidad organizativa completa moviéndolas de administrador a solo lectura. Para obtener más detalles sobre cómo administrar los costos mediante acciones presupuestarias, consulte Cómo administrar los sobrecostos en su entorno de varias cuentas de AWS: parte 1.

También puede configurar un informe para monitorear el rendimiento de sus presupuestos existentes en una cadencia diaria, semanal o mensual y enviar ese informe a hasta 50 direcciones de correo electrónico. Con Informes de presupuestos de AWS, puede combinar todos los presupuestos relacionados con SageMaker en un solo informe. Esta característica le permite realizar un seguimiento de su huella de SageMaker desde una sola ubicación, como se muestra en la siguiente captura de pantalla. Puede optar por recibir estos informes en una cadencia diaria, semanal o mensual (he elegido Semanal para este ejemplo), y elige el día de la semana en que quieres recibirlos.

Esta característica es útil para mantener a las partes interesadas al día con los costos y el uso de SageMaker, y ayudarlos a ver cuándo el gasto no tiene la tendencia esperada.

Después de establecer esta configuración, debería recibir un correo electrónico similar al siguiente.

Conclusión

En esta publicación, mostramos cómo puede configurar el etiquetado de asignación de costos para SageMaker y compartimos consejos sobre las mejores prácticas de etiquetado para su entorno y cargas de trabajo de SageMaker. Luego discutimos diferentes opciones de informes como Cost Explorer y CUR para ayudarlo a mejorar la visibilidad de su gasto de ML. Por último, demostramos los presupuestos de AWS y el informe de resumen de presupuesto para ayudarlo a monitorear el gasto de ML de su organización.

Para obtener más información sobre cómo aplicar y activar etiquetas de asignación de costos, consulte Etiquetas de asignación de costos definidas por el usuario.


Sobre los autores

Sean MorganSean Morgan es arquitecto de soluciones de IA/ML en AWS. Tiene experiencia en los campos de investigación académica y de semiconductores, y utiliza su experiencia para ayudar a los clientes a alcanzar sus objetivos en AWS. En su tiempo libre, Sean es un colaborador y mantenedor activo de código abierto, y es el líder del grupo de interés especial para los complementos de TensorFlow.

Brent Rabowsky se enfoca en la ciencia de datos en AWS y aprovecha su experiencia para ayudar a los clientes de AWS con sus propios proyectos de ciencia de datos.

nilesh shetty se desempeña como gerente técnico sénior de cuentas en AWS, donde ayuda a los clientes de soporte empresarial a optimizar sus operaciones en la nube en AWS. Le apasiona el aprendizaje automático y tiene experiencia trabajando como consultor, arquitecto y desarrollador. Fuera del trabajo, le gusta escuchar música y ver deportes.

James Wu es un arquitecto de soluciones especialista en inteligencia artificial/aprendizaje automático sénior en AWS. ayudar a los clientes a diseñar y crear soluciones de IA/ML. El trabajo de James cubre una amplia gama de casos de uso de ML, con un interés principal en la visión artificial, el aprendizaje profundo y la ampliación de ML en toda la empresa. Antes de unirse a AWS, James fue arquitecto, desarrollador y líder tecnológico durante más de 10 años, incluidos 6 años en ingeniería y 4 años en las industrias de marketing y publicidad.

punto_img

Información más reciente

punto_img

Habla con nosotros!

¡Hola! ¿Le puedo ayudar en algo?