[ad_1]
Los científicos de datos a menudo entrenan sus modelos localmente y buscan un servicio de alojamiento adecuado para implementar sus modelos. Desafortunadamente, no existe un mecanismo establecido o una guía para implementar modelos previamente entrenados en la nube. En esta publicación, analizamos la implementación de modelos capacitados en el alojamiento de Amazon SageMaker para acelerar el tiempo de implementación.
SageMaker es un servicio de aprendizaje automático (ML) completamente administrado. Con SageMaker, puede crear y entrenar rápidamente modelos de ML e implementarlos directamente en un entorno alojado listo para producción. Además, no tienes que administrar servidores. Obtiene un entorno de notebook Jupyter integrado con fácil acceso a sus fuentes de datos. Puede realizar análisis de datos, entrenar sus modelos y probarlos con sus propios algoritmos o usar algoritmos de ML proporcionados por SageMaker que están optimizados para ejecutar de manera eficiente grandes conjuntos de datos distribuidos en varias máquinas. La capacitación y el hospedaje se facturan por minuto, sin tarifas mínimas ni pagos por adelantado.
descripción general de la solución
Los científicos de datos a veces entrenan modelos localmente con su IDE y envían esos modelos al equipo de ingeniería de ML para su implementación o simplemente ejecutan predicciones localmente en máquinas potentes. En esta publicación, presentamos una biblioteca de Python que simplifica el proceso de implementación de modelos en SageMaker para alojar en puntos finales en tiempo real o sin servidor.
Esta biblioteca de Python proporciona a los científicos de datos una interfaz simple para comenzar rápidamente con SageMaker sin necesidad de conocer la funcionalidad de bajo nivel de SageMaker.
Si ha entrenado modelos localmente con su IDE favorito y quiere aprovechar la escalabilidad de la nube, puede usar esta biblioteca para implementar su modelo en SageMaker. Con SageMaker, además de todos los beneficios de escalabilidad de una plataforma de aprendizaje automático basada en la nube, tiene acceso a herramientas de capacitación especialmente diseñadas (capacitación distribuida, ajuste de hiperparámetros), administración de experimentos, administración de modelos, detección de sesgos, explicabilidad de modelos y muchas otras. las funciones que lo ayudan en todos los aspectos de ML -Life Cycle pueden ayudar. Puede elegir entre los tres marcos más populares para ML: Scikit-learn, PyTorch y TensorFlow, y puede elegir el tipo de cálculo que desea. Se proporcionan valores predeterminados para que los usuarios de esta biblioteca puedan implementar sus modelos sin tener que tomar decisiones complejas o aprender nuevos conceptos. En esta publicación, le mostraremos cómo comenzar con esta biblioteca y optimizar la implementación de sus modelos ML en el alojamiento de SageMaker.
La biblioteca está en el repositorio de GitHub.
El kit de herramientas de migración de SageMaker
Que SageMakerMigration
La clase está disponible a través de una biblioteca de Python publicada en GitHub. Las instrucciones para instalar esta biblioteca están en el repositorio; Asegúrese de seguir el archivo LÉAME para configurar su entorno correctamente. Una vez que haya instalado esta biblioteca, el resto de esta publicación explica cómo usarla.
Que SageMakerMigration
La clase consta de abstracciones de alto nivel sobre las API de SageMaker que reducen en gran medida los pasos necesarios para implementar su modelo en SageMaker, como se muestra en la imagen a continuación. Esto es para experimentación, de modo que los desarrolladores puedan comenzar rápidamente y probar SageMaker. No está diseñado para migraciones de producción.
Para los modelos scikit-learn, PyTorch y TensorFlow, esta biblioteca admite la implementación de modelos entrenados en un punto final de SageMaker en tiempo real o sin servidor. Para obtener más información sobre las opciones de inferencia en SageMaker, consulte Exponer modelos a la inferencia.
Endpoints en tiempo real frente a sin servidor
La inferencia en tiempo real es ideal para cargas de trabajo de inferencia en las que tiene requisitos interactivos en tiempo real y de baja latencia. Puede implementar su modelo en los servicios de alojamiento de SageMaker y obtener un punto final que se puede usar para la inferencia. Estos puntos finales están completamente administrados y admiten el escalado automático.
SageMaker Serverless Inference es una opción de inferencia especialmente diseñada que le permite implementar y escalar fácilmente modelos ML. La inferencia sin servidor es ideal 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 sin servidor lanzan automáticamente recursos informáticos y los escalan hacia adentro y hacia afuera en función del tráfico, lo que elimina la necesidad de elegir tipos de instancias o administrar políticas de escalamiento. Esto elimina el trabajo pesado indiferenciado de seleccionar y administrar servidores.
Según su caso de uso, es posible que desee alojar rápidamente su modelo en SageMaker sin tener una instancia siempre en ejecución y sin incurrir en costos. En este caso, un punto final sin servidor es una gran solución.
Prepare su modelo entrenado y su script de inferencia
Una vez que haya identificado el modelo que desea implementar en SageMaker, debe asegurarse de que el modelo se presente a SageMaker en el formato correcto. Los puntos finales de SageMaker generalmente constan de dos componentes: el artefacto del modelo entrenado (.pth, .pkl, etc.) y un script de inferencia. El script de inferencia no siempre es obligatorio, pero si no se proporciona, se aplicarán los controladores predeterminados para el contenedor de servicio que está utilizando. Es importante proporcionar este script si necesita personalizar su funcionalidad de entrada/salida para la inferencia.
El artefacto del modelo entrenado es simplemente un modelo almacenado de scikit-learn, PyTorch o TensorFlow. Suele ser un archivo pickle para Scikit-learn, un archivo .pt o .pth para PyTorch y una carpeta que contiene recursos, archivos .pb y otras variables para TensorFlow.
En general, debe poder controlar cómo su modelo procesa la entrada y realiza la inferencia, y controlar el formato de salida para su respuesta. SageMaker le permite proporcionar un script de inferencia para agregar esta personalización. Cualquier secuencia de comandos de inferencia utilizada por SageMaker debe tener una o más de las siguientes cuatro funciones de controlador: model_fn
, input_fn
, predict_fn
y output_fn
.
Tenga en cuenta que estas cuatro funciones son específicas de los contenedores PyTorch y Scikit-learn. TensorFlow tiene controladores ligeramente diferentes ya que está integrado con TensorFlow Serving. Para una secuencia de comandos de inferencia que usa TensorFlow, tiene dos controladores de modelo: controlador_de_entrada y controlador_de_salida. Nuevamente, estos tienen el mismo propósito de procesamiento previo y posterior para trabajar, pero están configurados de manera ligeramente diferente para integrarse con TensorFlow Serving. Para los modelos de PyTorch, model_fn es una función obligatoria que debe incluirse en el script de inferencia.
modelo_fn
Esta es la función que se llama primero cuando llama a su terminal de SageMaker. Aquí es donde escribe su código para cargar el modelo. Por ejemplo:
Según el marco y el tipo de modelo, este código puede cambiar, pero la función debe devolver un modelo inicializado.
entrada_fn
Esta es la segunda función llamada cuando se llama a su punto final. Esta función toma los datos enviados al punto final para la inferencia y los analiza en el formato requerido por el modelo para generar una predicción. Por ejemplo:
Que request_body
contiene los datos utilizados para generar inferencias a partir del modelo y se analizan en esta función para que estén en el formato requerido.
predicción_fn
Esta es la tercera función llamada cuando se llama a su modelo. Esta función toma los datos de entrada preprocesados devueltos por input_fn
y utiliza el modelo devuelto por model_fn
para hacer la predicción. Por ejemplo:
Opcionalmente puedes agregar output_fn
para analizar la salida de predict_fn
antes de devolverlo al cliente. La firma de la función es def output_fn(prediction, content_type)
.
Mueva su modelo previamente entrenado a SageMaker
Una vez que tenga su archivo de modelo entrenado y su secuencia de comandos de inferencia, debe colocar estos archivos en una carpeta como esta:
Una vez que su modelo y secuencia de comandos de inferencia se hayan preparado y guardado en esta estructura de carpetas, su modelo estará listo para implementarse en SageMaker. Ver el siguiente código:
Después de implementar su punto final, asegúrese de limpiar cualquier recurso que no esté utilizando a través de la consola de SageMaker o mediante la llamada a la API de Boto3 delete_endpoint.
Conclusión
El objetivo del proyecto del kit de herramientas de migración de SageMaker es facilitar que los científicos de datos incorporen sus modelos a SageMaker para aprovechar la inferencia basada en la nube. El repositorio seguirá evolucionando y admitirá más opciones para migrar cargas de trabajo a SageMaker. El código es de código abierto y agradecemos las contribuciones de la comunidad a través de solicitudes de extracción y problemas.
Consulte el repositorio de GitHub para obtener más información sobre el uso del kit de herramientas de migración de SageMaker y no dude en contribuir con muestras o solicitudes de funciones para agregar al proyecto también.
Sobre los autores
kirit thadaka es un arquitecto de soluciones de aprendizaje automático que trabaja en el equipo de Amazon SageMaker Service SA. Antes de unirse a AWS, Kirit pasó algún tiempo trabajando en startups de IA en etapa inicial, seguido de una temporada como consultor en varios roles en investigación de IA, MLOps y liderazgo técnico.
Aries Vegiraju es arquitecto de ML en el equipo de servicio de SageMaker. Se centra en ayudar a los clientes a crear y optimizar sus soluciones de IA/ML en Amazon SageMaker. En su tiempo libre le encanta viajar y escribir.
[ad_2]