A medida que el aprendizaje automático (ML) se generaliza y obtiene una adopción más amplia, las aplicaciones de inferencia basadas en ML se vuelven cada vez más comunes para resolver una variedad de problemas comerciales complejos. La solución a estos complejos problemas comerciales a menudo requiere el uso de múltiples modelos y pasos de ML. Esta publicación le muestra cómo crear y alojar una aplicación de aprendizaje automático con contenedores personalizados en Amazon SageMaker.
Ofertas de Amazon SageMaker algoritmos incorporados y SageMaker prediseñado Imágenes de Docker para la implementación del modelo. Pero, si estos no se ajustan a sus necesidades, puede traer sus propios contenedores (BYOC) para alojarlos en Amazon SageMaker.
Hay varios casos de uso en los que los usuarios pueden necesitar BYOC para alojar en Amazon SageMaker.
- Bibliotecas o marcos de aprendizaje automático personalizados: si planea utilizar un marco de aprendizaje automático o bibliotecas que no sean compatibles con los algoritmos integrados o los contenedores prediseñados de Amazon SageMaker, deberá crear un contenedor personalizado.
- Modelos especializados: para ciertos dominios o industrias, es posible que necesite arquitecturas de modelo específicas o pasos de preprocesamiento personalizados que no están disponibles en las ofertas integradas de Amazon SageMaker.
- Algoritmos patentados: si ha desarrollado sus propios algoritmos patentados internamente, necesitará un contenedor personalizado para implementarlos en Amazon SageMaker.
- Canalizaciones de inferencia complejas: si su flujo de trabajo de inferencia de ML implica una lógica de negocios personalizada (una serie de pasos complejos que deben ejecutarse en un orden particular), entonces BYOC puede ayudarlo a administrar y orquestar estos pasos de manera más eficiente.
Resumen de la solución
En esta solución, mostramos cómo alojar una aplicación de inferencia en serie de ML en Amazon SageMaker con puntos finales en tiempo real utilizando dos contenedores de inferencia personalizados con las últimas versiones. scikit-learn
y xgboost
paquetes
El primer contenedor utiliza un scikit-learn
modelo para transformar datos sin procesar en columnas destacadas. Aplica Escalador estándar para columnas numéricas y OneHotEncoder a los categóricos.
El segundo contenedor alberga un preentrenado. XGboost
modelo (es decir, predictor). El modelo predictor acepta las predicciones de entrada y salida caracterizadas.
Por último, implementamos el destacador y vaticinador en una canalización de inferencia en serie hasta un punto final en tiempo real de Amazon SageMaker.
A continuación se presentan algunas consideraciones diferentes sobre por qué es posible que desee tener contenedores separados dentro de su aplicación de inferencia.
- El desacoplamiento – Varios pasos de la tubería tienen un propósito claramente definido y deben ejecutarse en contenedores separados debido a las dependencias subyacentes involucradas. Esto también ayuda a mantener la canalización bien estructurada.
- Marcos – Varios pasos de la canalización utilizan marcos de trabajo específicos (como scikit o Spark ML) y, por lo tanto, deben ejecutarse en contenedores separados.
- Aislamiento de recursos – Varios pasos de la tubería tienen diferentes requisitos de consumo de recursos y, por lo tanto, deben ejecutarse en contenedores separados para una mayor flexibilidad y control.
- Mantenimiento y actualizaciones – Desde un punto de vista operativo, esto promueve el aislamiento funcional y puede continuar actualizando o modificando pasos individuales mucho más fácilmente, sin afectar a otros modelos.
Además, la construcción local de los contenedores individuales ayuda en el proceso iterativo de desarrollo y prueba con las herramientas favoritas y los entornos de desarrollo integrados (IDE). Una vez que los contenedores estén listos, puede implementarlos en la nube de AWS para realizar inferencias mediante los puntos finales de Amazon SageMaker.
La implementación completa, incluidos fragmentos de código, está disponible en este repositorio de Github esta página.
Requisitos previos
Como primero probamos estos contenedores personalizados localmente, necesitaremos que Docker Desktop esté instalado en su computadora local. Deberías estar familiarizado con la construcción de contenedores Docker.
También necesitará una cuenta de AWS con acceso a Amazon SageMaker, Amazon ECR y Amazon S3 para probar esta aplicación de un extremo a otro.
Asegúrese de tener la última versión de Boto3
y los paquetes de Amazon SageMaker Python instalados:
Tutorial de la solución
Construir un contenedor de características personalizado
Para construir el primer contenedor, el contenedor de características, entrenamos a un scikit-learn
modelo para procesar características sin procesar en el oreja de mar conjunto de datos. El script de preprocesamiento utiliza Computadora simple para manejar valores faltantes, Escalador estándar para normalizar columnas numéricas, y OneHotEncoder para transformar columnas categóricas. Después de montar el transformador guardamos el modelo en libreta de trabajo formato. Luego comprimimos y cargamos este artefacto de modelo guardado en un servicio de almacenamiento simple de Amazon (Amazon S3) balde.
Aquí hay un fragmento de código de muestra que demuestra esto. Referirse a característica.ipynb para una implementación completa:
A continuación, para crear un contenedor de inferencia personalizado para el modelo de características, creamos una imagen de Docker con paquetes nginx, gunicorn y flask, junto con otras dependencias necesarias para el modelo de características.
Nginx, gunicorn y la aplicación Flask servirán como pila de servicio modelo en puntos finales en tiempo real de Amazon SageMaker.
Al incorporar contenedores personalizados para alojar en Amazon SageMaker, debemos asegurarnos de que el script de inferencia realice las siguientes tareas después de iniciarse dentro del contenedor:
- Carga del modelo: Guión de inferencia (
preprocessing.py
) debe referirse a/opt/ml/model
directorio para cargar el modelo en el contenedor. Los artefactos del modelo en Amazon S3 se descargarán y montarán en el contenedor en la ruta/opt/ml/model
. - Variables de entorno: Para pasar variables de entorno personalizadas al contenedor, debe especificarlas durante el proceso. Modelo paso de creación o durante Punto final creación a partir de un trabajo de formación.
- Requisitos API: El script de inferencia debe implementar ambos
/ping
y/invocations
rutas como una aplicación Flask. El/ping
La API se utiliza para controles de estado, mientras que la/invocations
API maneja solicitudes de inferencia. - Inicio sesión: Los registros de salida en el script de inferencia se deben escribir en la salida estándar (stdout) y error estándar (stderr) corrientes. Estos registros luego se transmiten a Reloj en la nube de Amazon por Amazon SageMaker.
Aquí hay un fragmento de preprocessing.py
que muestran la implementación de /ping
y /invocations
.
Consulte preprocesamiento.py en la carpeta de características para una implementación completa.
Cree una imagen de Docker con características y pila de servicio de modelos
Ahora creemos un Dockerfile usando una imagen base personalizada e instalemos las dependencias necesarias.
Para esto utilizamos python:3.9-slim-buster
como imagen base. Puede cambiar esta cualquier otra imagen base relevante para su caso de uso.
Luego copiamos la configuración de nginx, el archivo de puerta de enlace del servidor web de gunicorn y el script de inferencia al contenedor. También creamos un script de Python llamado server que inicia procesos nginx y gunicorn en segundo plano y establece el script de inferencia (es decir, la aplicación preprocessing.py Flask) como el punto de entrada para el contenedor.
Aquí hay un fragmento del Dockerfile para alojar el modelo de características. Para una implementación completa consulte Dockerfile bajo destacador carpeta.
Pruebe la imagen de inferencia personalizada con el destacador localmente
Ahora, cree y pruebe el contenedor de inferencia personalizado con el caracterizador localmente, usando Amazon Modo local de SageMaker. El modo local es perfecto para probar sus scripts de procesamiento, capacitación e inferencia sin iniciar ningún trabajo en Amazon SageMaker. Después de confirmar los resultados de sus pruebas locales, puede adaptar fácilmente los scripts de capacitación e inferencia para su implementación en Amazon SageMaker con cambios mínimos.
Para probar la imagen personalizada del destacador localmente, primero cree la imagen utilizando el formato previamente definido. Dockerfile. Luego, inicie un contenedor montando el directorio que contiene el modelo destacado (preprocess.joblib
) al /opt/ml/model
directorio dentro del contenedor. Además, asigne el puerto 8080 desde el contenedor al host.
Una vez iniciado, puede enviar solicitudes de inferencia a http://localhost:8080/invocations.
Para construir e iniciar el contenedor, abra una terminal y ejecute los siguientes comandos.
Tenga en cuenta que debe reemplazar el <IMAGE_NAME>
, como se muestra en el siguiente código, con el nombre de la imagen de su contenedor.
El siguiente comando también supone que el usuario entrenado scikit-learn
modelopreprocess.joblib
) está presente en un directorio llamado models
.
Una vez que el contenedor esté en funcionamiento, podemos probar tanto el /silbido y /invocaciones rutas usando comandos curl.
Ejecute los siguientes comandos desde una terminal
Cuando se envían datos sin procesar (sin transformar) a http://localhost:8080/invocations, el punto final responde con datos transformados.
Debería ver una respuesta similar a la siguiente:
Ahora finalizamos el contenedor en ejecución y luego etiquetamos y enviamos la imagen personalizada local a un Amazon Elastic Container Registry privado (ECR de Amazon) repositorio.
Consulte los siguientes comandos para iniciar sesión en Amazon ECR, que etiqueta la imagen local con la ruta completa de la imagen de Amazon ECR y luego envía la imagen a Amazon ECR. Asegúrese de reemplazar region
y account
variables que se ajusten a su entorno.
Consulte crear un repositorio y enviar una imagen a Amazon ECR Interfaz de línea de comandos de AWS (CLI de AWS) comandos para obtener más información.
Paso opcional
Opcionalmente, puede realizar una prueba en vivo implementando el modelo de características en un punto final en tiempo real con la imagen de la ventana acoplable personalizada en Amazon ECR. Referirse a característica.ipynb notebook para la implementación completa de la creación, prueba y envío de la imagen personalizada a Amazon ECR.
Amazon SageMaker inicializa el punto final de inferencia y copia los artefactos del modelo en el /opt/ml/model
directorio dentro del contenedor. Ver Cómo carga SageMaker los artefactos de su modelo.
Cree un contenedor predictor XGBoost personalizado
Para crear el contenedor de inferencia XGBoost, seguimos pasos similares a los que hicimos al crear la imagen para el contenedor de características:
- Descargar entrenamiento previo
XGBoost
modelo de Amazon S3. - Crea el
inference.py
script que carga el preentrenadoXGBoost
modelo, convierte los datos de entrada transformados recibidos del caracterizador y los convierte aXGBoost.DMatrix
formato, ejecucionespredict
en el refuerzo y devuelve predicciones en formato json. - Scripts y archivos de configuración que forman la pila de servicio del modelo (es decir,
nginx.conf
,wsgi.py
yserve
sigue siendo el mismo y no necesita modificaciones. - Utilizamos
Ubuntu:18.04
como imagen base para el Dockerfile. Este no es un requisito previo. Usamos la imagen base de ubuntu para demostrar que los contenedores se pueden construir con cualquier imagen base. - Los pasos para crear la imagen de la ventana acoplable del cliente, probar la imagen localmente y enviar la imagen probada a Amazon ECR siguen siendo los mismos que antes.
Por brevedad, ya que los pasos son similares a los mostrados anteriormente; sin embargo, a continuación solo mostramos la codificación modificada.
En primer lugar, la inference.py
guion. Aquí hay un fragmento que muestra la implementación de /ping
y /invocations
. Referirse a inferencia.py bajo el vaticinador carpeta para la implementación completa de este archivo.
Aquí hay un fragmento del Dockerfile para alojar el modelo predictor. Para una implementación completa consulte Dockerfile en la carpeta predictor.
Luego continuamos creando, probando y enviando esta imagen de predictor personalizada a un repositorio privado en Amazon ECR. Referirse a predictor.ipynb notebook para la implementación completa de la creación, prueba y envío de la imagen personalizada a Amazon ECR.
Implementar canalización de inferencia en serie
Después de haber probado las imágenes del predictor y del caracterizador y haberlas enviado a Amazon ECR, ahora cargamos los artefactos de nuestro modelo en un depósito de Amazon S3.
Luego, creamos dos objetos modelo: uno para el featurizer
(Es decir, preprocess.joblib
) y otros para el predictor
(Es decir, xgboost-model
) especificando el uri de imagen personalizado que creamos anteriormente.
Aquí hay un fragmento que lo muestra. Referirse a canalización-inferencia-serie.ipynb para su plena implementación.
Ahora, para implementar estos contenedores en serie, primero creamos un Modelo de tubería objeto y pasar el featurizer
modelo y el predictor
modelo a un objeto de lista de Python en el mismo orden.
Entonces, llamamos al .deploy()
método en el Modelo de tubería especificando el tipo de instancia y el recuento de instancias.
En esta etapa, Amazon SageMaker implementa la canalización de inferencia en serie en un punto final en tiempo real. Esperamos que el punto final sea InService
.
Ahora podemos probar el punto final enviando algunas solicitudes de inferencia a este punto final en vivo.
Consulte canalización-inferencia-serie.ipynb para su plena implementación.
Limpiar
Una vez que haya terminado las pruebas, siga las instrucciones en la sección de limpieza del cuaderno para eliminar los recursos proporcionados en esta publicación y evitar cargos innecesarios. Referirse a Precios de Amazon SageMaker para obtener detalles sobre el costo de las instancias de inferencia.
Conclusión
En esta publicación, mostré cómo podemos crear e implementar una aplicación de inferencia de aprendizaje automático en serie utilizando contenedores de inferencia personalizados en puntos finales en tiempo real en Amazon SageMaker.
Esta solución demuestra cómo los clientes pueden traer sus propios contenedores personalizados para alojarlos en Amazon SageMaker de una manera rentable. Con la opción BYOC, los clientes pueden crear y adaptar rápidamente sus aplicaciones de aprendizaje automático para implementarlas en Amazon SageMaker.
Le recomendamos que pruebe esta solución con un conjunto de datos relevantes para los indicadores clave de rendimiento (KPI) de su empresa. Puede consultar la solución completa en este Repositorio GitHub.
Referencias
Sobre la autora
Praveen chamarthi es un especialista sénior en inteligencia artificial y aprendizaje automático de Amazon Web Services. Le apasiona la IA/ML y todo lo relacionado con AWS. Ayuda a los clientes de América a escalar, innovar y operar cargas de trabajo de ML de manera eficiente en AWS. En su tiempo libre, a Praveen le encanta leer y disfruta de las películas de ciencia ficción.
- 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. Carbón, tecnología limpia, Energía, Ambiente, Solar, Gestión de residuos. Accede Aquí.
- PlatoSalud. Inteligencia en Biotecnología y Ensayos Clínicos. Accede Aquí.
- Fuente: https://aws.amazon.com/blogs/machine-learning/build-and-deploy-ml-inference-applications-from-scratch-using-amazon-sagemaker/
- :posee
- :es
- :no
- :dónde
- $ UP
- 08
- 09
- 1
- 10
- 100
- 11
- 13
- 14
- 150
- 16
- 17
- 20
- 200
- 2023
- 25
- 28
- 30
- 500
- 7
- 8
- 87
- 9
- a
- Nuestra Empresa
- Aceptar
- Acepta
- de la máquina
- en consecuencia
- Mi Cuenta
- a través de
- adaptar
- Adicionalmente
- Adopción
- afectando
- Después
- AI / ML
- algoritmos
- Todos
- a lo largo de
- también
- Amazon
- Amazon SageMaker
- Amazon Web Services
- América
- an
- y
- cualquier
- abejas
- applicación
- Aplicación
- aplicaciones
- se aplica
- abr
- somos
- Formación
- AS
- asume
- At
- Hoy Disponibles
- evitar
- AWS
- fondo
- bases
- basado
- BE
- cada vez
- antes
- "Ser"
- a continuación
- cuerpo
- aumentador de presión
- ambas
- llevar
- Trayendo
- build
- Construir la
- construido
- incorporado
- Packs ahorro
- pero
- by
- llamar al
- , que son
- PUEDEN
- case
- cases
- CAT
- a ciertos
- el cambio
- cambiado
- Cambios
- cargos
- comprobar
- Cheques
- con claridad.
- Soluciones
- código
- Codificación
- Columna
- Columnas
- COM
- Algunos
- integraciones
- computadora
- Configuración
- conectado
- conexión
- consideraciones
- constante
- construir
- consumo
- Envase
- Contenedores
- contenido
- contenido
- continue
- control
- convertir
- Cost
- podría
- Para crear
- Creamos
- creación
- Referencias
- personalizado
- cliente
- Clientes
- datos
- Fecha
- definir
- se define
- demostrar
- demuestra
- dependencias
- desplegar
- desplegado
- Desplegando
- despliegue
- despliega
- computadora de escritorio
- detalles
- determina
- desarrollado
- Desarrollo
- DICT
- HIZO
- una experiencia diferente
- Docker
- dominios
- hecho
- No
- dos
- durante
- e
- Más temprano
- pasan fácilmente
- eficiente.
- más
- fomentar
- de extremo a extremo
- Punto final
- garantizar
- Todo
- entrada
- Entorno
- ambientes
- error
- etc.
- ejemplo
- Excepto
- excepción
- ejecutado
- familiar
- Moda
- Favoritos
- Caracteristicas
- pocos
- Archive
- archivos
- Nombre
- cómodo
- adecuado
- Flexibilidad
- seguir
- siguiendo
- formulario
- formato
- encontrado
- Marco conceptual
- marcos
- Desde
- ser completados
- función
- funcional
- Ganancias
- puerta
- obtener
- GitHub
- GMT
- Va
- encargarse de
- Manijas
- Manejo
- Tienen
- he
- Salud
- altura
- ayuda
- ayuda
- su
- fortaleza
- hosting
- anfitriones
- Cómo
- Como Hacer
- Sin embargo
- HTML
- http
- HTTPS
- i
- if
- imagen
- imágenes
- implementar
- implementación
- importar
- in
- incluye
- Incluye
- cada vez más
- indicadores
- INSTRUMENTO individual
- industrias
- información
- inhouse
- innovar
- Las opciones de entrada
- dentro
- instalar
- instalado
- ejemplo
- Instrucciones
- COMPLETAMENTE
- Interfaz
- dentro
- involucra
- solo
- IT
- Trabajos
- Empleo
- jpg
- json
- Guardar
- Clave
- Label
- más reciente
- lanzamiento
- lanzado
- pone en marcha
- lanzamiento
- aprendizaje
- izquierda
- Longitud Mínima
- bibliotecas
- línea
- Lista
- Listado
- para vivir
- carga
- carga
- cargas
- local
- localmente
- lógica
- Inicie sesión
- ama
- máquina
- máquina de aprendizaje
- Corriente principal
- HACE
- Realizar
- gestionan
- manera
- mapa
- marca
- Match
- Puede..
- Método
- podría
- mínimo
- que falta
- ML
- Moda
- modelo
- modelos
- modificar
- más,
- Películas
- mucho más
- múltiples
- debe
- nombre
- nombres
- ¿ Necesita ayuda
- no
- Ninguna
- cuaderno
- ahora
- número
- numpy
- objeto
- objetos
- of
- Lista de ofrendas
- Ofertas
- a menudo
- on
- una vez
- ONE
- las
- , solamente
- sobre
- habiertos
- funcionar
- operativos.
- Optión
- or
- solicite
- OS
- Otro
- "nuestr
- salida
- EL DESARROLLADOR
- paquetes
- Los pandas
- parámetros
- particular
- pass
- apasionado
- camino
- perfecto
- Realizar
- actuación
- realiza
- industrial
- plan
- Platón
- Inteligencia de datos de Platón
- PlatónDatos
- Por favor
- punto
- Publicación
- predicción
- Predicciones
- Predictor
- presente
- previamente
- privada
- problemas
- en costes
- tratamiento
- Procesador
- promueve
- propietario
- propósito
- Push
- empujó
- Emprendedor
- Python
- con rapidez
- aumento
- distancia
- Crudo
- Leer
- ready
- en tiempo real
- recibido
- remitir
- registro
- permanecer
- reemplazar
- repositorio
- solicita
- solicitudes
- exigir
- Requisitos
- Requisitos
- requiere
- Recurso
- Recursos
- respuesta
- resultado
- Resultados
- volvemos
- volver
- devoluciones
- Anillos
- Ruta
- rutas
- FILA
- Ejecutar
- correr
- corre
- sabio
- mismo
- Guardar
- salvado
- Escala
- de ciencia ficción
- rayar
- guión
- guiones
- Segundo
- Sección
- ver
- envío
- enviando
- mayor
- expedido
- separado
- de serie
- Serie
- ayudar
- servidor
- de coches
- Servicios
- servicio
- Sesión
- set
- Sets
- Varios
- Sexo
- tienes
- Mostrar
- mostró
- mostrado
- Shows
- similares
- sencillos
- retazo
- So
- a medida
- RESOLVER
- algo
- algo
- Spark
- especialista
- soluciones y
- montón
- Etapa
- estándar
- punto de vista
- Estado
- paso
- pasos
- STORAGE
- streaming
- corrientes
- Cordón
- estructurado
- Con éxito
- tal
- Dom
- Soportado
- Apoyar
- soportes
- ETIQUETA
- adaptado
- toma
- tareas
- terminal
- test
- probado
- Pruebas
- pruebas
- esa
- La
- su
- Les
- luego
- Ahí.
- por lo tanto
- Estas
- cosas
- así
- equipo
- a
- Entrenar
- entrenado
- Formación
- Transformar
- transformado
- transformador
- transformers
- transformadora
- try
- tratando de
- dos
- tipo
- Ubuntu
- bajo
- subyacente
- innecesario
- actualizar
- usable
- utilizan el
- caso de uso
- usado
- usuarios
- usos
- usando
- Valores
- diversos
- variar
- verificando
- versión
- esperar
- quieres
- fue
- we
- web
- servidor web
- servicios web
- WELL
- que
- mientras
- porque
- más ancho
- seguirá
- dentro de
- sin
- flujo de trabajo
- trabajando
- escrito
- X
- XGBoost
- Usted
- tú
- zephyrnet