Implemente una solución MLOps que aloje los puntos finales de su modelo en AWS Lambda PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Implemente una solución MLOps que aloje los puntos de enlace de su modelo en AWS Lambda

En 2019, Amazon cofundó la compromiso climático. El objetivo del compromiso es lograr cero emisiones netas de carbono para 2040. Esto es 10 años antes de lo que establece el acuerdo de París. Las empresas que se inscriben se comprometen a generar informes regulares, eliminación de carbono y compensaciones creíbles. Al momento de escribir este artículo, 377 empresas han firmado el compromiso climático y el número sigue creciendo.

Debido a que AWS se compromete a ayudarlo a lograr su objetivo de cero emisiones netas a través de soluciones en la nube y aprendizaje automático (ML), ya se han desarrollado e implementado muchos proyectos que reducen las emisiones de carbono. La fabricación es una de las industrias que puede beneficiarse enormemente de este tipo de proyectos. A través de la gestión energética optimizada de las máquinas en las fábricas de fabricación, como compresores o enfriadores, las empresas pueden reducir su huella de carbono con ML.

La transición efectiva de una fase de experimentación de ML a producción es un desafío. Automatizar el entrenamiento y el reentrenamiento de modelos, tener un registro de modelos y realizar un seguimiento de los experimentos y la implementación son algunos de los desafíos clave. Para las empresas de fabricación, existe otra capa de complejidad, a saber, cómo estos modelos implementados pueden ejecutarse en el perímetro.

En esta publicación, abordamos estos desafíos al proporcionar una plantilla de operaciones de aprendizaje automático (MLOps) que alberga una solución de gestión de energía sostenible. La solución es independiente de los casos de uso, lo que significa que puede adaptarla a sus casos de uso cambiando el modelo y los datos. Le mostramos cómo integrar modelos en Canalizaciones de Amazon SageMaker, una herramienta nativa de orquestación de flujos de trabajo para crear canalizaciones de aprendizaje automático, que ejecuta un trabajo de entrenamiento y, opcionalmente, un trabajo de procesamiento con una simulación de Monte Carlo. Los experimentos se rastrean en Experimentos de Amazon SageMaker. Los modelos son rastreados y registrados en el Registro de modelo de Amazon SageMaker. Finalmente, proporcionamos el código para la implementación de su modelo final en un AWS Lambda función.

Lambda es un servicio informático que le permite ejecutar código sin administrar ni aprovisionar servidores. El escalado automático, la facturación de pago por solicitud y la facilidad de uso de Lambda lo convierten en una opción de implementación común para los equipos de ciencia de datos. Con esta publicación, los científicos de datos pueden convertir su modelo en una función Lambda rentable y escalable. Además, Lambda permite la integración con AWS IoT Greengrass, que lo ayuda a crear software que permite que sus dispositivos actúen en el perímetro sobre los datos que generan, como sería el caso de una solución de administración de energía sostenible.

Resumen de la solución

La arquitectura que implementamos (consulte la siguiente figura) es un enfoque totalmente basado en CI/CD para el aprendizaje automático. Los elementos están desacoplados para evitar tener una solución monolítica.

Comencemos con la parte superior izquierda del diagrama. los Procesamiento: creación de imágenes componente es un CI/CD-driven Compromiso de código de AWS repositorio que ayuda a construir e impulsar un Docker contenedor a Registro de contenedores elásticos de Amazon (Amazon ECR). Este contenedor de procesamiento sirve como el primer paso en nuestra canalización de ML, pero también se reutiliza para los pasos de posprocesamiento. En nuestro caso, aplicamos una simulación de Monte Carlo como posprocesamiento. los Capacitación: creación de imágenes repositorio descrito en la parte inferior izquierda tiene el mismo mecanismo que el Procesamiento bloque encima de él. La principal diferencia es que construye el contenedor para el entrenamiento del modelo.

La tubería principal, Construcción de modelos (Pipeline), es otro repositorio de CodeCommit que automatiza la ejecución de las canalizaciones de SageMaker. Esta canalización automatiza y conecta el preprocesamiento de datos, el entrenamiento de modelos, el seguimiento de métricas de modelos en SageMaker Experiments, el posprocesamiento de datos y la catalogación de modelos en el registro de modelos de SageMaker.

El componente final está en la parte inferior derecha: Despliegue del modelo. Si sigues los ejemplos de Proyectos de Amazon SageMaker, obtiene una plantilla que aloja su modelo mediante un punto final de SageMaker. En cambio, nuestro repositorio de implementación aloja el modelo en una función Lambda. Mostramos un enfoque para implementar la función Lambda que puede ejecutar predicciones en tiempo real.

Requisitos previos

Para implementar nuestra solución con éxito, necesita lo siguiente:

Descargar el repositorio de GitHub

Como primer paso, clone el Repositorio GitHub a su máquina local. Contiene la siguiente estructura de carpetas:

  • despliegue – Contiene código relevante para la implementación
  • mllib — Contiene código ML para preprocesamiento, entrenamiento, servicio y simulación
  • pruebas — Contiene pruebas unitarias y de integración.

El archivo clave para la implementación es el script de shell deployment/deploy.sh. Utilice este archivo para implementar los recursos en su cuenta. Antes de que podamos ejecutar el script de shell, complete los siguientes pasos:

  1. Abra la deployment/app.py y cambie el bucket_name debajo SageMakerPipelineSourceCodeStack. bucket_name debe ser globalmente único (por ejemplo, agregue su nombre completo).
  2. In deployment/pipeline/assets/modelbuild/pipelines/energy_management/pipeline.py, cambiar el default_bucket bajo get_pipeline con el mismo nombre que se especifica en el paso 1.

Implemente la solución con AWS CDK

En primer lugar, configurar su CLI de AWS con la cuenta y la región en la que desea implementar. Luego, ejecute los siguientes comandos para cambiar al directorio de implementación, cree un entorno virtual, actívelo, instale los paquetes pip requeridos especificados en setup.pyy ejecuta el deploy.sh:

cd deployment
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pre-commit install
chmod u+x deploy.sh
./deploy.sh

deploy.sh realiza las siguientes acciones:

  1. Crea un entorno virtual en Python.
  2. Fuentes del script de activación del entorno virtual.
  3. Instala el CDK de AWS y los requisitos descritos en setup.py.
  4. Bootstraps el entorno.
  5. Comprime y copia los archivos necesarios que hayas desarrollado, como tu mllib archivos, en las carpetas correspondientes donde se necesitan estos activos.
  6. Ron cdk deploy —require-approval never.
  7. Crea un Formación en la nube de AWS pila a través de AWS CDK.

La etapa inicial de la implementación debería tomar menos de 5 minutos. Ahora debería tener cuatro repositorios en CodeCommit en la región que especificó a través de la AWS CLI, como se describe en el diagrama de arquitectura. los AWS CodePipeline Las tuberías se ejecutan simultáneamente. los modelbuild y modeldeploy Las canalizaciones dependen de una ejecución exitosa de la creación de la imagen de procesamiento y entrenamiento. los modeldeploy tubería depende de una construcción de modelo exitosa. La implementación del modelo debe completarse en menos de 1.5 horas.

Clonar los repositorios de modelos en Studio

Para personalizar las canalizaciones de SageMaker creadas a través de la implementación de AWS CDK en la interfaz de usuario de Studio, primero debe clonar los repositorios en Studio. Inicie la terminal del sistema en Studio y ejecute los siguientes comandos después de proporcionar el nombre y la ID del proyecto:

git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modelbuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-modeldeploy
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-processing-imagebuild
git clone https://git-codecommit.REGION.amazonaws.com/v1/repos/sagemaker-PROJECT_NAME-PROJECT_ID-training-imagebuild

Después de clonar los repositorios, puede enviar una confirmación a los repositorios. Estas confirmaciones desencadenan una ejecución de CodePipeline para las canalizaciones relacionadas.

También puede adaptar la solución en su máquina local y trabajar en su IDE preferido.

Navegar por la interfaz de usuario de SageMaker Pipelines y SageMaker Experiments

Una canalización de SageMaker es una serie de pasos interconectados que se definen mediante el SDK de Amazon SageMaker Python. Esta definición de canalización codifica una canalización mediante un gráfico acíclico dirigido (DAG) que se puede exportar como una definición JSON. Para obtener más información sobre la estructura de dichas tuberías, consulte Descripción general de canalizaciones de SageMaker.

Navegue hasta Recursos de SageMaker panel y elija el recurso Pipelines para ver. Por debajo Nombre, debería ver PROJECT_NAME-PROJECT_ID. En la interfaz de usuario de ejecución, debe haber una ejecución exitosa que se espera que demore un poco más de 1 hora. La canalización debe tener el aspecto que se muestra en la siguiente captura de pantalla.

Canalización de Amazon SageMaker

La ejecución se activó automáticamente después de implementar la pila de CDK de AWS. Puede invocar manualmente una ejecución eligiendo Crear ejecución. Desde allí, puede elegir sus propios parámetros de canalización, como el tipo de instancia y la cantidad de instancias para los pasos de procesamiento y capacitación. Además, puede dar a la ejecución un nombre y una descripción. La canalización es altamente configurable a través de parámetros de canalización a los que puede hacer referencia y definir a lo largo de su definición de canalización.

Siéntase libre de iniciar otra ejecución de canalización con sus parámetros según lo desee. Posteriormente, navegue a la Recursos de SageMaker panel de nuevo y elija Experimentos y ensayos. Allí debería volver a ver una línea con un nombre como PROJECT_NAME-PROJECT_ID. Navegue hasta el experimento y elija la única ejecución con una ID aleatoria. Desde allí, elija el trabajo de capacitación de SageMaker para explorar las métricas relacionadas con el trabajo de capacitación.

El objetivo de SageMaker Experiments es simplificar al máximo la creación de experimentos, completarlos con pruebas y ejecutar análisis en pruebas y experimentos. SageMaker Pipelines está estrechamente integrado con SageMaker Experiments y, de forma predeterminada, para cada ejecución, cree un experimento, una prueba y componentes de prueba en caso de que no existan.

Aprobar la implementación de Lambda en el registro modelo

Como siguiente paso, navegue hasta el registro del modelo en Recursos de SageMaker. Aquí puede encontrar de nuevo una línea con un nombre como PROJECT_NAME-PROJECT_ID. Navegue hasta el único modelo que existe y apruébelo. Esto implementa automáticamente el artefacto del modelo en un contenedor en Lambda.

Después de aprobar su modelo en el registro de modelos, un Puente de eventos de Amazon se activa la regla de evento. Esta regla ejecuta la canalización de CodePipeline con el final *-modeldeploy. En esta sección, analizamos cómo esta solución utiliza el modelo aprobado y lo aloja en una función de Lambda. CodePipeline toma el repositorio de CodeCommit existente y también termina con *-modeldeploy y usa ese código para ejecutarse en CodeBuild. La entrada principal para CodeBuild es el buildspec.yml expediente. Veamos esto primero:

version: 0.2

env:
  shell: bash

phases:
  install:
    runtime_versions:
      python: 3.8
    commands:
      - python3 -m ensurepip --upgrade
      - python3 -m pip install --upgrade pip
      - python3 -m pip install --upgrade virtualenv
      - python3 -m venv .venv
      - source .venv/bin/activate
      - npm install -g aws-cdk@2.26.0
      - pip install -r requirements.txt
      - cdk bootstrap
  build:
    commands:
      - python build.py --model-package-group-name "$SOURCE_MODEL_PACKAGE_GROUP_NAME"
      - tar -xf model.tar.gz
      - cp model.joblib lambda/digital_twin
      - rm model.tar.gz
      - rm model.joblib
      - cdk deploy --require-approval never

Durante la fase de instalación, nos aseguramos de que las bibliotecas de Python estén actualizadas, creamos un entorno virtual, instalamos AWS CDK v2.26.0 e instalamos el aws-cdk Biblioteca de Python junto con otros que usan el archivo de requisitos. Nosotros también arrancar la cuenta de AWS. En la fase de construcción, ejecutamos build.py, que comentamos a continuación. Ese archivo descarga el artefacto de modelo de SageMaker aprobado más reciente de Servicio de almacenamiento simple de Amazon (Amazon S3) a su instancia local de CodeBuild. Este .tar.gz El archivo se descomprime y su contenido se copia en la carpeta que también contiene nuestro código Lambda principal. La función Lambda se implementa con AWS CDK y el código se ejecuta desde un contenedor Docker de Amazon ECR. Esto lo hace automáticamente AWS CDK.

El build.py El archivo es un archivo de Python que utiliza principalmente el AWS SDK para Python (Boto3) para listar los paquetes modelo disponibles.

La función get_approved_package devuelve el URI de Amazon S3 del artefacto que luego se descarga, como se describió anteriormente.

Después de implementar con éxito su modelo, puede test directamente en la consola de Lambda en la región en la que eligió implementar. El nombre de la función debe contener DigitalTwinStack-DigitalTwin*. Abra la función y navegue hasta la Probar pestaña. Puede usar el siguiente evento para ejecutar una llamada de prueba:

{
  "flow": "[280, 300]",
  "pressure": "[69, 70]",
  "simulations": "10",
  "no_of_trials": "10",
  "train_error_weight": "1.0"
}

Después de ejecutar el evento de prueba, obtiene una respuesta similar a la que se muestra en la siguiente captura de pantalla.

Probar la función AWS Lambda

Si desea ejecutar más simulaciones o pruebas, puede aumentar el límite de tiempo de espera de Lambda y experimentar con el código. O tal vez quiera recoger los datos generados y visualizarlos en Amazon QuickSight. A continuación se muestra un ejemplo. ¡Te toca!

Amazon QuickSight

Limpiar

Para evitar cargos adicionales, complete los siguientes pasos:

  • En la consola de AWS CloudFormation, elimine el EnergyOptimization asociación.
    Esto elimina toda la solución.
  • Eliminar la pila DigitalTwinStack, que implementó su función Lambda.

Conclusión

En esta publicación, le mostramos una canalización de MLOps impulsada por CI/CD de una solución de administración de energía en la que mantenemos cada paso desacoplado. Puede realizar un seguimiento de sus canalizaciones y experimentos de aprendizaje automático en la interfaz de usuario de Studio. También demostramos un enfoque de implementación diferente: tras la aprobación de un modelo en el registro de modelos, una función de Lambda que aloja el modelo aprobado se crea automáticamente a través de CodePipeline.

Si está interesado en explorar la canalización de MLOps en AWS o la solución de administración de energía sostenible, consulte la Repositorio GitHub ¡e implemente la pila en su propio entorno de AWS!


Acerca de los autores

Implemente una solución MLOps que aloje los puntos finales de su modelo en AWS Lambda PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Laurens van der Maas es científico de datos en AWS Professional Services. Trabaja en estrecha colaboración con los clientes que crean sus soluciones de aprendizaje automático en AWS y le apasiona cómo el aprendizaje automático está cambiando el mundo tal como lo conocemos.

Implemente una solución MLOps que aloje los puntos finales de su modelo en AWS Lambda PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Kang Kang Wang es un consultor de AI/ML con AWS Professional Services. Tiene una amplia experiencia en la implementación de soluciones de IA/ML en la vertical de salud y ciencias de la vida. También disfruta ayudar a los clientes empresariales a crear plataformas escalables de IA/ML para acelerar el viaje a la nube de sus científicos de datos.

Implemente una solución MLOps que aloje los puntos finales de su modelo en AWS Lambda PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.selena tabara es científico de datos en AWS Professional Services. Trabaja todos los días con sus clientes para lograr sus resultados comerciales mediante la innovación en las plataformas de AWS. En su tiempo libre, a Selena le gusta tocar el piano, caminar y ver baloncesto.

miguel wallner miguel wallner es consultor sénior especializado en inteligencia artificial y aprendizaje automático con los servicios profesionales de AWS. Michael es un apasionado de permitir que los clientes en su viaje a la nube se conviertan en AWSome. Está entusiasmado con la fabricación y disfruta ayudando a transformar el espacio de fabricación a través de los datos.

Sello de tiempo:

Mas de Aprendizaje automático de AWS