Implementa modelos de Hugging Face fácilmente con Amazon SageMaker

Implement Hugging Face models easily with Amazon SageMaker.

A principios de este año anunciamos una colaboración estratégica con Amazon para facilitar a las empresas el uso de Hugging Face en Amazon SageMaker y enviar características de aprendizaje automático de vanguardia más rápido. Introdujimos nuevos Contenedores de Aprendizaje Profundo (DLCs) de Hugging Face para entrenar modelos de transformadores de Hugging Face en Amazon SageMaker.

Hoy, nos emociona compartir una nueva solución de inferencia que facilita más que nunca implementar Transformadores de Hugging Face con Amazon SageMaker. Con los nuevos DLCs de Inferencia de Hugging Face, puedes implementar tus modelos entrenados para inferencia con solo una línea más de código, o seleccionar cualquiera de los más de 10,000 modelos disponibles públicamente en el Model Hub y implementarlos con Amazon SageMaker.

Implementar modelos en SageMaker te proporciona endpoints listos para producción que se escalan fácilmente dentro de tu entorno de AWS, con monitoreo incorporado y una gran cantidad de características empresariales. Ha sido una colaboración increíble y esperamos que puedas aprovecharla.

A continuación, te mostramos cómo usar el nuevo Kit de Herramientas de Inferencia de SageMaker de Hugging Face para implementar modelos basados en Transformadores:

from sagemaker.huggingface import HuggingFaceModel

# crear la clase de modelo de Hugging Face y desplegarla como un endpoint de SageMaker
huggingface_model = HuggingFaceModel(...).deploy()

¡Eso es todo! 🚀

Para obtener más información sobre cómo acceder y usar los nuevos DLCs de Hugging Face con la SDK de Python de Amazon SageMaker, consulta las guías y recursos a continuación.


A continuación, puedes encontrar todos los recursos importantes para implementar tus modelos en Amazon SageMaker.

Blog/Video

  • Video: Implementar un modelo de Transformadores de Hugging Face desde S3 a Amazon SageMaker
  • Video: Implementar un modelo de Transformadores de Hugging Face desde el Model Hub a Amazon SageMaker

Muestras/Documentación

  • Documentación de Hugging Face para Amazon SageMaker
  • Implementar modelos en Amazon SageMaker
  • Documentación de Amazon SageMaker para Hugging Face
  • Documentación de la SDK de Python de SageMaker para Hugging Face
  • Contenedor de Aprendizaje Profundo
  • Notebook: Implementar uno de los más de 10,000 Transformadores de Hugging Face en Amazon SageMaker para Inferencia
  • Notebook: Implementar un modelo de Transformador de Hugging Face desde S3 a SageMaker para inferencia

Además de los Contenedores de Aprendizaje Profundo optimizados para inferencia de Transformadores de Hugging Face, hemos creado un nuevo Kit de Herramientas de Inferencia para Amazon SageMaker. Este nuevo Kit de Herramientas de Inferencia aprovecha los pipelines de la biblioteca transformers para permitir implementaciones sin código de modelos sin escribir código para el preprocesamiento o el postprocesamiento. En la sección “Empezar” a continuación, encontrarás dos ejemplos de cómo implementar tus modelos en Amazon SageMaker.

Además de la implementación sin código, el Kit de Herramientas de Inferencia admite métodos de “traer tu propio código”, donde puedes anular los métodos predeterminados. Puedes obtener más información sobre “traer tu propio código” en la documentación aquí o puedes consultar el notebook de ejemplo “implementar código de inferencia personalizado en Amazon SageMaker”.

API – Descripción del Kit de Herramientas de Inferencia

Utilizando los pipelines de transformers, diseñamos una API que facilita el aprovechamiento de todas las características de los pipelines. La API tiene una interfaz similar a la API de Inferencia Acelerada de 🤗, lo que significa que tus entradas deben definirse en la clave “inputs” y, si deseas agregar parámetros adicionales compatibles con los pipelines, puedes agregarlos en la clave “parameters”. A continuación, puedes encontrar ejemplos de solicitudes.

# cuerpo de la solicitud de clasificación de texto
{
    "inputs": "Cámara: ¡Te han otorgado una cámara digital SiPix! Llama al 09061221066 desde un teléfono fijo. Entrega en 28 días."
}
# cuerpo de la solicitud de preguntas y respuestas
{
    "inputs": {
        "question": "¿Para qué se utiliza la inferencia?",
        "context": "Mi nombre es Philipp y vivo en Nuremberg. Este modelo se utiliza con sagemaker para inferencia."
    }
}
# cuerpo de la solicitud de clasificación sin etiquetas
{
    "inputs": "Hola, recientemente compré un dispositivo de tu empresa, pero no funciona como se anuncia y me gustaría obtener un reembolso.",
    "parameters": {
        "candidate_labels": [
            "reembolso",
            "legal",
            "faq"
        ]
    }
}

En esta guía utilizaremos las nuevas DLC de Inferencia de Hugging Face y el SDK de Python de Amazon SageMaker para implementar dos modelos de transformadores para inferencia.

En el primer ejemplo, implementamos para inferencia un modelo de transformador de Hugging Face entrenado en Amazon SageMaker.

En el segundo ejemplo, implementamos directamente uno de los más de 10,000 modelos de Transformadores de Hugging Face disponibles públicamente en el Model Hub de Amazon SageMaker para inferencia.

Configuración del entorno

Utilizaremos una instancia de cuaderno de Amazon SageMaker para el ejemplo. Puedes aprender aquí cómo configurar una instancia de cuaderno. Para comenzar, ingresa a tu cuaderno Jupyter o JupyterLab y crea un nuevo cuaderno con el kernel conda_pytorch_p36.

Nota: El uso de Jupyter es opcional: También podríamos realizar llamadas de API de SageMaker desde cualquier lugar donde tengamos instalado un SDK, conectividad a la nube y permisos adecuados, como una laptop, otro IDE o un programador de tareas como Airflow o AWS Step Functions.

Luego de eso, podemos instalar las dependencias requeridas.

pip install "sagemaker>=2.48.0" --upgrade

Para implementar un modelo en SageMaker, necesitamos crear una sesión de sagemaker y proporcionar un rol IAM con los permisos adecuados. El método get_execution_role es proporcionado por el SDK de SageMaker como una conveniencia opcional. También puedes especificar el rol escribiendo el ARN del rol específico que deseas que use tu punto de conexión. Este rol IAM se adjuntará posteriormente al punto de enlace, por ejemplo, para descargar el modelo desde Amazon S3.

import sagemaker

sess = sagemaker.Session()
role = sagemaker.get_execution_role()

Implementar un modelo de transformador de Hugging Face entrenado en SageMaker para inferencia

Hay dos formas de implementar tu modelo de Hugging Face entrenado en SageMaker. Puedes implementarlo después de que finalice tu entrenamiento, o puedes implementarlo más tarde, utilizando el model_data que apunta a tu modelo guardado en Amazon S3. Además de las dos opciones mencionadas a continuación, también puedes instanciar puntos de enlace de Hugging Face con SDK de nivel inferior como boto3 y AWS CLI, Terraform y con plantillas de CloudFormation.

Implementar el modelo directamente después del entrenamiento con la clase Estimator

Si implementas tu modelo directamente después del entrenamiento, debes asegurarte de que todos los artefactos del modelo necesarios se guarden en tu script de entrenamiento, incluyendo el tokenizador y el modelo. Un beneficio de implementar directamente después del entrenamiento es que los metadatos del contenedor de modelos de SageMaker contendrán el trabajo de entrenamiento de origen, proporcionando una línea de tiempo desde el trabajo de entrenamiento hasta el modelo implementado.

from sagemaker.huggingface import HuggingFace

############ código pseudo comienza ############

# crear estimador de HuggingFace para ejecutar el entrenamiento
estimador_huggingface = HuggingFace(....)

# iniciar el trabajo de entrenamiento con nuestros conjuntos de datos cargados como entrada
estimador_huggingface.fit(...)

############ código pseudo termina ############

# implementar modelo en SageMaker para inferencia
predictor = hf_estimator.deploy(initial_instance_count=1, instance_type="ml.m5.xlarge")

# solicitud de ejemplo, siempre debes definir "inputs"
data = {
   "inputs": "Cámara - ¡Se te ha otorgado una cámara digital SiPix! Llama al 09061221066 desde una línea fija. Entrega en 28 días."
}
# solicitud
predictor.predict(data)

Después de ejecutar nuestra solicitud, podemos eliminar el punto de enlace nuevamente con:

# eliminar punto de enlace
predictor.delete_endpoint()

Implementar el modelo desde puntos de control pre-entrenados utilizando la clase HuggingFaceModel

Si ya has entrenado tu modelo y deseas implementarlo en algún momento posterior, puedes usar el argumento model_data para especificar la ubicación de tu tokenizador y los pesos del modelo.

from sagemaker.huggingface.model import HuggingFaceModel

# crear clase de modelo de Hugging Face
modelo_huggingface = HuggingFaceModel(
   model_data="s3://models/my-bert-model/model.tar.gz",  # ruta a tu modelo de SageMaker entrenado
   role=role, # rol IAM con permisos para crear un punto de enlace
   transformers_version="4.6", # versión de transformers utilizada
   pytorch_version="1.7", # versión de pytorch utilizada
)
# implementar modelo en SageMaker para inferencia
predictor = modelo_huggingface.deploy(
   initial_instance_count=1, 
   instance_type="ml.m5.xlarge"
)

# solicitud de ejemplo, siempre debes definir "inputs"
data = {
   "inputs": "Cámara - ¡Se te ha otorgado una cámara digital SiPix! Llama al 09061221066 desde una línea fija. Entrega en 28 días."
}

# solicitud
predictor.predict(data)

Después de ejecutar nuestra solicitud, podemos eliminar el punto final nuevamente con:

# eliminar punto final
predictor.delete_endpoint()

Implementar uno de los más de 10,000 Transformers de Hugging Face en Amazon SageMaker para inferencia

Para implementar un modelo directamente desde el Hugging Face Model Hub a Amazon SageMaker, necesitamos definir dos variables de entorno al crear el HuggingFaceModel. Necesitamos definir:

  • HF_MODEL_ID: define el ID del modelo, que se cargará automáticamente desde huggingface.co/models al crear o SageMaker Endpoint. El 🤗 Hub proporciona más de 10,000 modelos disponibles a través de esta variable de entorno.
  • HF_TASK: define la tarea para la tubería de 🤗 Transformers utilizada. Se puede encontrar una lista completa de tareas aquí .
from sagemaker.huggingface.model import HuggingFaceModel

# Configuración del modelo del Hub. <https://huggingface.co/models>
hub = {
  'HF_MODEL_ID':'distilbert-base-uncased-distilled-squad', # model_id de hf.co/models
  'HF_TASK':'question-answering' # Tarea de NLP que deseas utilizar para las predicciones
}

# Crear clase del modelo de Hugging Face
huggingface_model = HuggingFaceModel(
   env=hub, # configuración para cargar el modelo desde el Hub
   role=role, # rol IAM con permisos para crear un Endpoint
   transformers_version="4.6", # versión de transformers utilizada
   pytorch_version="1.7", # versión de pytorch utilizada
)

# Implementar el modelo en SageMaker Inference
predictor = huggingface_model.deploy(
   initial_instance_count=1,
   instance_type="ml.m5.xlarge"
)

# Ejemplo de solicitud, siempre es necesario definir "inputs"
data = {
"inputs": {
    "question": "¿Para qué se utiliza la inferencia?",
    "context": "Mi nombre es Philipp y vivo en Núremberg. Este modelo se utiliza con Sagemaker para inferencia."
    }
}

# Solicitud
predictor.predict(data)

Después de ejecutar nuestra solicitud, podemos eliminar el punto final nuevamente con.

# eliminar punto final
predictor.delete_endpoint()

Puedes encontrar las Preguntas Frecuentes completas en la documentación .

P: ¿Qué modelos puedo implementar para inferencia?

R: Puedes implementar:

  • cualquier modelo 🤗 Transformers entrenado en Amazon SageMaker u otras plataformas compatibles que puedan adaptarse al diseño de Alojamiento de SageMaker
  • cualquiera de los más de 10,000 modelos de Transformer disponibles públicamente en el Hugging Face Model Hub , o
  • tus propios modelos privados alojados en tu cuenta premium de Hugging Face.

P: ¿Qué tuberías y tareas son compatibles con el Inference Toolkit?

R: El Inference Toolkit y DLC admiten cualquier tubería de transformers pipelines . Puedes encontrar la lista completa aquí

P: ¿Es necesario utilizar las tuberías de transformers al alojar puntos finales de SageMaker?

R: No, también puedes escribir tu propio código de inferencia personalizado para servir tus propios modelos y lógica, documentado aquí .

P: ¿Es necesario utilizar el SDK de Python de SageMaker para usar los Contenedores de Aprendizaje Profundo (DLC) de Hugging Face?

R: Puedes utilizar el DLC de Hugging Face sin el SDK de Python de SageMaker e implementar tus modelos en SageMaker con otros SDK, como AWS CLI , boto3 o CloudFormation . Los DLC también están disponibles a través de Amazon ECR y se pueden obtener y utilizar en cualquier entorno de elección.

P: ¿Por qué debería usar los Contenedores de Aprendizaje Profundo de Hugging Face?

R: Los DLC son entornos de aprendizaje profundo completamente probados, mantenidos y optimizados que no requieren instalación, configuración ni mantenimiento. En particular, nuestro DLC de inferencia viene con una pila de servidores preescrita, lo que reduce drásticamente la barrera técnica del alojamiento de DL.

P: ¿Cómo se aseguran mis datos y mi código con Amazon SageMaker?

R: Amazon SageMaker proporciona numerosos mecanismos de seguridad, incluyendo encriptación en reposo y en tránsito , conectividad de Virtual Private Cloud (VPC) , y Identity and Access Management (IAM) . Para obtener más información sobre la seguridad en la nube de AWS y con Amazon SageMaker, puedes visitar Seguridad en Amazon SageMaker y Seguridad en la Nube de AWS .

P: ¿Está disponible en mi región?

R: Para obtener una lista de las regiones admitidas, visite la tabla de regiones de AWS para toda la infraestructura global de AWS.

P: ¿Ofrecen soporte premium o SLAs de soporte para esta solución?

R: Los niveles de soporte técnico de AWS están disponibles desde AWS y cubren problemas de desarrollo y producción para productos y servicios de AWS. Consulte AWS Support para obtener detalles y alcance.

Si tiene preguntas a las que la comunidad de Hugging Face pueda responder y/o beneficiarse, por favor publíquelas en el foro de Hugging Face.


Si necesita soporte premium del equipo de Hugging Face para acelerar su hoja de ruta de NLP, nuestro Programa de Aceleración de Expertos ofrece orientación directa de nuestros equipos de código abierto, ciencia e ingeniería de ML.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Aprendizaje Automático

Redes Neuronales con Paso de Mensajes Retrasado y Reconfiguración Dinámica

Esta publicación fue coescrita con Francesco Di Giovanni y Ben Gutteridge y se basa en el artículo de B. Gutteridge e...

Inteligencia Artificial

6 Mitos sobre la Inteligencia Artificial Desacreditados Separando la Realidad de la Ficción

Descubre la verdad detrás de los mitos populares de la IA y sumérgete en las auténticas capacidades e impacto de la I...

Aprendizaje Automático

Los ejércitos de robots luchan en las épicas batallas en pantalla de Battlecode.

La competencia de programación de larga duración fomenta habilidades y amistades que duran toda la vida.

Inteligencia Artificial

Como se utilizan los modelos de fundación en los videojuegos?

Las tecnologías de inteligencia artificial están teniendo un impacto masivo en diversas industrias, incluyendo los me...

Inteligencia Artificial

Investigación de AI de SalesForce ha desarrollado ProGen Un gran avance en la ingeniería de proteínas mediante el uso de inteligencia artificial.

El desarrollo de proteínas funcionales ha sido durante mucho tiempo una búsqueda crítica en diversos campos científic...

Inteligencia Artificial

Esta semana en IA, 31 de julio de 2023

Esta semana en IA en VoAGI proporciona un resumen semanal de los últimos acontecimientos en el mundo de la Inteligenc...