Para los científicos de datos, mover los modelos de aprendizaje automático (ML) de la prueba de concepto a la producción a menudo presenta un desafío importante. Uno de los principales desafíos puede ser implementar un modelo capacitado localmente y de buen rendimiento en la nube para la inferencia y el uso en otras aplicaciones. Puede ser engorroso administrar el proceso, pero con la herramienta adecuada, puede reducir significativamente el esfuerzo requerido.
Inferencia de Amazon SageMaker, que estuvo disponible para el público en general en abril de 2022, le facilita la implementación de modelos de ML en producción para hacer predicciones a escala, proporcionando una amplia selección de infraestructura de ML y opciones de implementación de modelos para ayudar a satisfacer todo tipo de necesidades de inferencia de ML. Puedes usar Puntos finales de inferencia sin servidor de SageMaker para cargas de trabajo que tienen períodos de inactividad entre picos de tráfico y pueden tolerar arranques en frío. Los puntos finales se escalan automáticamente en función del tráfico y eliminan el trabajo pesado indiferenciado de seleccionar y administrar servidores. Además, puede utilizar AWS Lambda directamente para exponer sus modelos e implementar sus aplicaciones ML utilizando su marco de código abierto preferido, que puede resultar más flexible y rentable.
FastAPI es un marco web moderno y de alto rendimiento para crear API con Python. Se destaca cuando se trata de desarrollar aplicaciones sin servidor con microservicios RESTful y casos de uso que requieren inferencia ML a escala en múltiples industrias. Su facilidad y funcionalidades integradas, como la documentación API automática, lo convierten en una opción popular entre los ingenieros de ML para implementar API de inferencia de alto rendimiento. Puede definir y organizar sus rutas utilizando funcionalidades listas para usar de FastAPI para escalar y manejar la lógica empresarial en crecimiento según sea necesario, probar localmente y alojarlo en Lambda, luego exponerlo a través de una única puerta de enlace API, lo que le permite incorpore un marco web de código abierto a Lambda sin ningún trabajo pesado ni refactorización de sus códigos.
Esta publicación le muestra cómo implementar y ejecutar fácilmente la inferencia de ML sin servidor al exponer su modelo de ML como un punto final usando FastAPI, Docker, Lambda y Puerta de enlace API de Amazon. También le mostramos cómo automatizar la implementación utilizando el Kit de desarrollo en la nube de AWS (CDK de AWS).
Resumen de la solución
El siguiente diagrama muestra la arquitectura de la solución que implementamos en esta publicación.
Requisitos previos
Debes tener los siguientes requisitos previos:
- Python3 instalado, junto con
virtualenv
para crear y gestionar entornos virtuales en Python - aws-cdk v2 instalado en su sistema para poder utilizar la CLI de AWS CDK
- Docker instalado y ejecutándose en su máquina local
Pruebe si todo el software necesario está instalado:
- La Interfaz de línea de comandos de AWS (AWS CLI) es necesario. Inicie sesión en su cuenta y elija la región en la que desea implementar la solución.
- Use el siguiente código para verificar su versión de Python:
- Comprobar si
virtualenv
está instalado para crear y administrar entornos virtuales en Python. Estrictamente hablando, este no es un requisito difícil, pero te hará la vida más fácil y te ayudará a seguir esta publicación más fácilmente. Usa el siguiente código: - Compruebe si cdk está instalado. Esto se utilizará para implementar nuestra solución.
- Compruebe si Docker está instalado. Nuestra solución hará que su modelo sea accesible a través de una imagen de Docker para Lambda. Para construir esta imagen localmente, necesitamos Docker.
- Asegúrese de que Docker esté funcionando con el siguiente código:
Cómo estructurar su proyecto FastAPI usando AWS CDK
Usamos la siguiente estructura de directorios para nuestro proyecto (ignorando algunos códigos estándar de AWS CDK que son irrelevantes en el contexto de esta publicación):
El directorio sigue el estructura recomendada de los proyectos de AWS CDK para Python.
La parte más importante de este repositorio es el fastapi_model_serving
directorio. Contiene el código que definirá la pila de CDK de AWS y los recursos que se utilizarán para el servicio de modelos.
La fastapi_model_serving
directorio contiene el model_endpoint
subdirectorio, que contiene todos los activos necesarios que conforman nuestro punto de enlace sin servidor, a saber, el Dockerfile para crear la imagen de Docker que usará Lambda, el código de función de Lambda que usa FastAPI para manejar las solicitudes de inferencia y enrutarlas al punto de enlace correcto, y el modelo artefactos del modelo que queremos desplegar. model_endpoint
también contiene lo siguiente:
Docker
– Este subdirectorio contiene lo siguiente:Dockerfile
– Esto se usa para construir la imagen para la función Lambda con todos los artefactos (código de función Lambda, artefactos de modelo, etc.) en el lugar correcto para que puedan usarse sin problemas.serving.api.tar.gz
– Este es un tarball que contiene todos los activos de la carpeta de tiempo de ejecución que son necesarios para construir la imagen de Docker. Discutimos cómo crear el.tar.gz
archivo más adelante en esta publicación.runtime
– Este subdirectorio contiene lo siguiente:serving_api
– El código para la función de Lambda y sus dependencias especificadas en el archivo requirements.txt.custom_lambda_utils
– Esto incluye un script de inferencia que carga los artefactos del modelo necesarios para que el modelo se pueda pasar alserving_api
que luego lo expondrá como un punto final.
Además, tenemos el directorio de plantillas, que proporciona una plantilla de estructuras de carpetas y archivos donde puede definir sus códigos y API personalizados siguiendo el ejemplo que analizamos anteriormente. El directorio de plantillas contiene código ficticio que puede usar para crear nuevas funciones de Lambda:
dummy
– Contiene el código que implementa la estructura de una función Lambda normal mediante el tiempo de ejecución de Pythonapi
– Contiene el código que implementa una función de Lambda que envuelve un punto final FastAPI alrededor de una puerta de enlace API existente
Implementar la solución
De forma predeterminada, el código se implementa dentro de la región eu-west-1. Si desea cambiar la Región, puede cambiar la variable de contexto DEPLOYMENT_REGION en el cdk.json
archivo.
Sin embargo, tenga en cuenta que la solución intenta implementar una función Lambda sobre la arquitectura arm64 y que esta característica podría no estar disponible en todas las regiones. En este caso, debe cambiar el parámetro de arquitectura en el fastapi_model_serving_stack.py
archivo, así como la primera línea del Dockerfile dentro del directorio Docker, para alojar esta solución en la arquitectura x86.
Para implementar la solución, complete los siguientes pasos:
- Ejecute el siguiente comando para clonar el repositorio de GitHub:
git clone https://github.com/aws-samples/lambda-serverless-inference-fastapi
Como queremos demostrar que la solución puede funcionar con artefactos de modelo que entrena localmente, incluimos un artefacto de modelo de muestra de un DestilarBERT modelo en el centro de modelos Hugging Face para una tarea de respuesta a preguntas en elserving_api.tar.gz
archivo. El tiempo de descarga puede tardar entre 3 y 5 minutos. Ahora, configuremos el entorno. - Descargue el modelo preentrenado que se implementará desde el centro del modelo Hugging Face en el
./model_endpoint/runtime/serving_api/custom_lambda_utils/model_artifacts
directorio. También crea un entorno virtual e instala todas las dependencias que se necesitan. Solo necesita ejecutar este comando una vez:make prep
. Este comando puede demorar alrededor de 5 minutos (dependiendo de su ancho de banda de Internet) porque necesita descargar los artefactos del modelo. - Empaquete los artefactos del modelo dentro de un
.tar.gz
archivo que se usará dentro de la imagen de Docker que se crea en la pila de CDK de AWS. Debe ejecutar este código cada vez que realice cambios en los artefactos del modelo o en la propia API para tener siempre empaquetada la versión más actualizada de su punto final de servicio:make package_model
. Los artefactos están todos en su lugar. Ahora podemos implementar la pila de CDK de AWS en su cuenta de AWS. - Ejecute cdk bootstrap si es la primera vez que implementa una aplicación de AWS CDK en un entorno (combinación de cuenta + región):
Esta pila incluye los recursos necesarios para el funcionamiento del kit de herramientas. Por ejemplo, la pila incluye un depósito de Amazon Simple Storage Service (Amazon S3) que se usa para almacenar plantillas y activos durante el proceso de implementación.
Debido a que estamos creando imágenes de Docker localmente en esta implementación de AWS CDK, debemos asegurarnos de que el demonio de Docker se esté ejecutando antes de que podamos implementar esta pila a través de la CLI de AWS CDK.
- Para verificar si el demonio Docker se está ejecutando o no en su sistema, use el siguiente comando:
Si no recibe un mensaje de error, debería estar listo para implementar la solución.
- Implemente la solución con el siguiente comando:
Este paso puede demorar entre 5 y 10 minutos debido a la creación y envío de la imagen de Docker.
Solucionando Problemas
Si es usuario de Mac, es posible que encuentre un error al iniciar sesión Registro de contenedores elásticos de Amazon (Amazon ECR) con el inicio de sesión de Docker, como Error saving credentials ... not implemented
. Por ejemplo:
Antes de que pueda usar Lambda encima de los contenedores de Docker dentro del CDK de AWS, es posible que deba cambiar el ~/docker/config.json
archivo. Más específicamente, es posible que deba cambiar el parámetro credsStore en ~/.docker/config.json
a osxllavero. Eso resuelve los problemas de inicio de sesión de Amazon ECR en una Mac.
Ejecutar inferencia en tiempo real
Despues de ti Formación en la nube de AWS la pila se implementa con éxito, vaya a la Salidas pestaña para su pila en la consola de AWS CloudFormation y abra la URL del punto de enlace. Ahora se puede acceder a nuestro modelo a través de la URL del punto final y estamos listos para ejecutar la inferencia en tiempo real.
Navegue a la URL para ver si puede ver el mensaje "hola mundo" y agregue /docs
a la dirección para ver si puede ver la página de interfaz de usuario interactiva de Swagger correctamente. Puede haber un tiempo de inicio en frío, por lo que es posible que deba esperar o actualizar varias veces.
Después de iniciar sesión en la página de inicio de la página de interfaz de usuario de FastAPI swagger, puede ejecutar a través de la raíz /
o a través /question
.
Desde /
, puede ejecutar la API y obtener el mensaje "hola mundo".
Desde /question
, podría ejecutar la API y ejecutar la inferencia de ML en el modelo que implementamos para un caso de respuesta a preguntas. Por ejemplo, usamos la pregunta ¿Cuál es el color de mi auto ahora? y el contexto es Mi auto solía ser azul pero lo pinté de rojo.
Cuando tu elijas Implementación, según el contexto dado, el modelo responderá la pregunta con una respuesta, como se muestra en la siguiente captura de pantalla.
En el cuerpo de la respuesta, puede ver la respuesta con la puntuación de confianza del modelo. También puede experimentar con otros ejemplos o integrar la API en su aplicación existente.
Alternativamente, puede ejecutar la inferencia a través del código. Aquí hay un ejemplo escrito en Python, usando el requests
biblioteca:
El código genera una cadena similar a la siguiente:
Si está interesado en obtener más información sobre la implementación de IA generativa y modelos de lenguaje grande en AWS, consulte aquí:
- Implemente IA generativa sin servidor en AWS Lambda con OpenLLaMa
- Implemente modelos de lenguaje grandes en AWS Inferentia2 utilizando contenedores de inferencia de modelos grandes
Limpiar
Dentro del directorio raíz de su repositorio, ejecute el siguiente código para limpiar sus recursos:
Conclusión
En esta publicación, presentamos cómo puede usar Lambda para implementar su modelo de ML entrenado usando su marco de aplicación web preferido, como FastAPI. Proporcionamos un repositorio de código detallado que puede implementar y conserva la flexibilidad de cambiar a cualquier artefacto de modelo entrenado que procese. El rendimiento puede depender de cómo implemente e implemente el modelo.
¡Le invitamos a probarlo usted mismo, y nos complace escuchar sus comentarios!
Acerca de los autores
tingyi li es un arquitecto de soluciones empresariales de AWS con sede en Estocolmo, Suecia, que brinda soporte a los clientes de los países nórdicos. Le gusta ayudar a los clientes con la arquitectura, el diseño y el desarrollo de soluciones de infraestructura optimizadas para la nube. Está especializada en inteligencia artificial y aprendizaje automático y está interesada en empoderar a los clientes con inteligencia en sus aplicaciones de inteligencia artificial/aprendizaje automático. En su tiempo libre, también es ilustradora a tiempo parcial, escribe novelas y toca el piano.
Demir Catovic es un ingeniero de aprendizaje automático de AWS con sede en Zúrich, Suiza. Se relaciona con los clientes y los ayuda a implementar aplicaciones de aprendizaje automático escalables y completamente funcionales. Le apasiona crear y producir aplicaciones de aprendizaje automático para los clientes y siempre está interesado en explorar nuevas tendencias y tecnologías de vanguardia en el mundo de AI/ML.
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- PlatoData.Network Vertical Generativo Ai. Empodérate. Accede Aquí.
- PlatoAiStream. Inteligencia Web3. Conocimiento amplificado. Accede Aquí.
- PlatoESG. Automoción / vehículos eléctricos, Carbón, tecnología limpia, Energía, Ambiente, Solar, Gestión de residuos. Accede Aquí.
- Desplazamientos de bloque. Modernización de la propiedad de compensaciones ambientales. Accede Aquí.
- Fuente: https://aws.amazon.com/blogs/machine-learning/deploy-a-serverless-ml-inference-endpoint-of-large-language-models-using-fastapi-aws-lambda-and-aws-cdk/
- :es
- :no
- :dónde
- $ UP
- 1
- 10
- 100
- 13
- 2022
- 7
- 9
- a
- Poder
- Nuestra Empresa
- accesible
- Mi Cuenta
- a través de
- add
- Adicionalmente
- dirección
- AI
- AI / ML
- Todos
- permite
- a lo largo de
- también
- hacerlo
- Amazon
- Amazon Web Services
- entre
- an
- y
- https://www.youtube.com/watch?v=xB-eutXNUMXJtA&feature=youtu.be
- cualquier
- abejas
- API
- applicación
- Aplicación
- aplicaciones
- Abril
- arquitectura
- Archive
- somos
- en torno a
- AS
- Activos
- At
- automatizado
- Automático
- automáticamente
- Hoy Disponibles
- lejos
- AWS
- Formación en la nube de AWS
- AWS Lambda
- Backend
- Ancho de banda
- basado
- BE
- porque
- antes
- entre
- Azul
- cuerpo
- Bootstrap
- llevar
- general
- build
- Construir la
- construido
- incorporado
- pero
- by
- PUEDEN
- de
- case
- cases
- Reto
- retos
- el cambio
- Cambios
- comprobar
- manera?
- Elige
- Soluciones
- código
- los códigos de
- frío
- Color
- combinación
- proviene
- completar
- concepto
- confianza
- Contacto
- conexión
- Consola
- que no contengo
- Envase
- Contenedores
- contiene
- contexto
- correcta
- rentable
- podría
- Para crear
- crea
- Creamos
- Referencias
- Clientes
- se adaptan
- innovador
- datos
- Predeterminado
- Dependiente
- desplegar
- desplegado
- Desplegando
- despliegue
- Diseño
- detallado
- el desarrollo
- Desarrollo
- directamente
- discutir
- Docker
- documentación
- No
- descargar
- dos
- durante
- Más temprano
- facilidad
- más fácil
- pasan fácilmente
- de forma sencilla
- esfuerzo
- incrustar
- empoderamiento
- final
- Punto final
- participa
- ingeniero
- certificados
- garantizar
- Empresa
- Entorno
- ambientes
- error
- ejemplo
- ejemplos
- excitado
- ejecutar
- existente
- Exit
- experimento
- explorar
- Cara
- Feature
- pocos
- Archive
- archivos
- Nombre
- primer vez
- Flexibilidad
- flexible
- seguir
- siguiendo
- siguiente
- Marco conceptual
- Desde
- función
- funcionalidades
- funciones
- puerta
- en general
- generativo
- IA generativa
- obtener
- GitHub
- dado
- Go
- va
- Creciendo
- encargarse de
- Difícil
- Tienen
- he
- oír
- pesado
- levantar objetos pesados
- ayuda
- ayudando
- ayuda
- aquí
- esta página
- Alto rendimiento
- fortaleza
- Cómo
- Como Hacer
- Sin embargo
- HTML
- http
- HTTPS
- Bujes
- i
- Idle
- if
- imagen
- imágenes
- implementar
- implementos
- importante
- in
- En otra
- incluye
- industrias
- EN LA MINA
- dentro
- instalado
- Intelligence
- interactivo
- interesado
- Internet
- dentro
- Introducido
- cuestiones
- IT
- SUS
- sí mismo
- json
- Keen
- Conocer
- aterrizaje
- idioma
- large
- luego
- aprendizaje
- Biblioteca
- Vida
- cirugía estética
- como
- línea
- cargas
- local
- localmente
- log
- registro
- lógica
- Inicie sesión
- Mac
- máquina
- máquina de aprendizaje
- hecho
- Inicio
- para lograr
- HACE
- gestionan
- administrar
- Puede..
- Conoce a
- mensaje
- microservicios
- podría
- mente
- Min
- ML
- modelo
- modelos
- Moderno
- más,
- MEJOR DE TU
- emocionante
- múltiples
- debe
- my
- a saber
- necesario
- ¿ Necesita ayuda
- Nuevo
- ahora
- of
- a menudo
- on
- una vez
- ONE
- , solamente
- habiertos
- de código abierto
- Inteligente
- Opciones
- or
- solicite
- ordinario
- Otro
- nuestros
- salir
- empaquetado
- página
- parámetro
- parte
- pasado
- apasionado
- actuación
- períodos
- Colocar
- Platón
- Inteligencia de datos de Platón
- PlatónDatos
- juega
- Popular
- Publicación
- Predicciones
- preferido
- requisitos previos
- regalos
- Producción
- proyecto
- proyecta
- prueba
- prueba de concepto
- Demostrar.
- previsto
- proporciona un
- proporcionando
- Emprendedor
- Python
- pregunta
- ready
- en tiempo real
- Rojo
- reducir
- región
- regiones
- repositorio
- solicitudes
- Requisitos
- requisito
- Requisitos
- Recursos
- respuesta
- resultado
- conservar
- Derecho
- raíz
- Ruta
- rutas
- Ejecutar
- correr
- sabio
- ahorro
- escalable
- Escala
- los científicos
- alcance
- Puntuación
- ver
- seleccionar
- selección
- Sin servidor
- Servidores
- de coches
- Servicios
- servicio
- set
- ella
- tienes
- Mostrar
- mostrar
- mostrado
- Shows
- importante
- significativamente
- similares
- sencillos
- soltero
- So
- Software
- a medida
- Soluciones
- Resuelve
- algo
- hablar
- especializado
- específicamente
- especificado
- montón
- es la
- comienzo
- comienza
- Estado
- paso
- pasos
- STORAGE
- tienda
- almacenamiento
- Cordón
- estructura
- Con éxito
- tal
- Apoyar
- Suecia
- Suiza
- te
- ¡Prepárate!
- Tarea
- Tecnologías
- plantilla
- plantillas
- test
- esa
- La
- su
- Les
- luego
- Ahí.
- ellos
- así
- A través de esta formación, el personal docente y administrativo de escuelas y universidades estará preparado para manejar los recursos disponibles que derivan de la diversidad cultural de sus estudiantes. Además, un mejor y mayor entendimiento sobre estas diferencias y similitudes culturales permitirá alcanzar los objetivos de inclusión previstos.
- equipo
- veces
- a
- del IRS
- parte superior
- tráfico
- Entrenar
- entrenado
- Tendencias
- try
- ui
- UNIX
- hasta a la fecha
- Enlance
- utilizan el
- usado
- Usuario
- usos
- usando
- versión
- vía
- Virtual
- esperar
- quieres
- fue
- we
- web
- Aplicación web
- servicios web
- bienvenido
- WELL
- fuimos
- ¿
- Que es
- cuando
- cuando
- sean
- que
- QUIENES
- seguirá
- sin
- Actividades:
- mundo
- escrito
- Usted
- tú
- a ti mismo
- zephyrnet
- Zúrich