Compartir a través de


Implementación de modelos desde HuggingFace Hub en puntos de conexión en línea de Azure Machine Learning para la inferencia en tiempo real

Microsoft se ha asociado con Hugging Face para traer modelos de código abierto del centro de Hugging Face a Azure Machine Learning. Hugging Face es el creador de Transformers, una biblioteca muy popular para crear modelos de lenguaje grandes. El centro de modelos de Hugging Face que tiene miles de modelos de código abierto. La integración con Azure Machine Learning le permite implementar modelos de código abierto de su elección para proteger y escalar la infraestructura de inferencia en Azure. Puede buscar desde miles de modelos de transformadores en el catálogo de modelos de Azure Machine Learning e implementar modelos en un punto de conexión en línea administrado con facilidad a través del asistente guiado. Una vez implementado, el punto de conexión en línea administrado proporciona una API de REST segura para puntuar el modelo en tiempo real.

Nota:

Los modelos de Hugging Face están sujetos a los términos de licencia de terceros disponibles en la página de detalles del modelo de Hugging Face. Es su responsabilidad cumplir los términos de licencia del modelo.

Ventajas de usar puntos de conexión en línea para la inferencia en tiempo real

Los puntos de conexión en línea administrados de Azure Machine Learning le ayudan a implementar modelos en máquinas eficaces de CPU y GPU en Azure de forma inmediata. Los puntos de conexión en línea administrados se encargan de atender, escalar, proteger y supervisar los modelos, lo que le libera de la sobrecarga de configurar y administrar la infraestructura subyacente. Las máquinas virtuales se aprovisionan en su nombre al implementar modelos. Puede tener varias implementaciones detrás y dividir el tráfico o el tráfico reflejado en esas implementaciones. El tráfico reflejado le ayuda a probar nuevas versiones de modelos en el tráfico de producción sin liberarlos en entornos de producción. La división del tráfico permite aumentar gradualmente el tráfico de producción a las nuevas versiones del modelo mientras observa el rendimiento. El Escalado automático permite aumentar o reducir dinámicamente los recursos en función de las cargas de trabajo. Puede configurar el escalado en función de las métricas de uso, una programación específica o una combinación de ambos. Un ejemplo de escalado basado en métricas de uso es agregar nodos si el uso de CPU supera el 70 %. Un ejemplo de escalado basado en programación es agregar nodos en función de las horas pico.

Implementación de modelos del centro de HuggingFace mediante Studio

Para buscar un modelo que se va a implementar, abra el catálogo de modelos en Estudio de Azure Machine Learning. Seleccione "Todos los filtros" y después "HuggingFace" en la sección Filtrar por colecciones. Seleccione el icono del modelo para abrir la página del modelo.

Implementación del modelo

Elija la opción de implementación en tiempo real para abrir el cuadro de diálogo de implementación rápida. Especifique las opciones siguientes:

  • Seleccione la plantilla para GPU o CPU. Los tipos de instancia de CPU son adecuados para las pruebas y los tipos de instancia de GPU ofrecen un mejor rendimiento en producción. Los modelos grandes no caben en un tipo de instancia de CPU.
  • Seleccione el tipo de instancia. Esta lista de instancias se filtra hasta llegar a las que se espera que el modelo se implemente sin quedarse sin memoria.
  • Seleccione el número de instancias. Una instancia es suficiente para las pruebas, pero se recomienda considerar dos o más instancias de producción.
  • Opcionalmente, especifique un punto de conexión y un nombre de implementación.
  • Seleccione implementar. A continuación, se le dirigirá a la página del punto de conexión, que puede tardar unos segundos. La implementación tarda varios minutos en completarse en función del tamaño del modelo y el tipo de instancia.

Nota: Si desea implementar en un punto de conexión existente, seleccione More options en el cuadro de diálogo de implementación rápida y use el Asistente para implementación completa.

Prueba del modelo implementado

Una vez completada la implementación, puede encontrar el punto de conexión REST del modelo en la página de puntos de conexión, que se puede usar para puntuar el modelo. Encontrará opciones para agregar más implementaciones, administrar el tráfico y escalar el centro de puntos de conexión. También se usa la pestaña Prueba de la página del punto de conexión para probar el modelo con entradas de ejemplo. Las entradas de ejemplo están disponibles en la página del modelo. Puede encontrar el formato de entrada, los parámetros y las entradas de ejemplo en la Documentación de la API de inferencia del centro de Hugging Face.

Implementación de modelos del centro de HuggingFace mediante el SDK de Python

Configuración del SDK para Python.

Busque el modelo que se va a implementar

Examine el catálogo de modelos en Estudio de Azure Machine Learning y busque el modelo que desea implementar. Copie el nombre del modelo que quiere implementar. Importe las bibliotecas necesarias. Los modelos que se muestran en el catálogo se enumeran en el registro de HuggingFace. Cree model_id con el nombre del modelo que copió del catálogo de modelos y del registro de HuggingFace. El modelo bert_base_uncased se implementa con la versión más reciente de este ejemplo.

from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
    ManagedOnlineEndpoint,
    ManagedOnlineDeployment,
    Model,
    Environment,
    CodeConfiguration,
)
registry_name = "HuggingFace"
model_name = "bert_base_uncased"
model_id = f"azureml://registries/{registry_name}/models/{model_name}/labels/latest"

Implementación del modelo

Cree un punto de conexión en línea. A continuación, cree la implementación. Por último, establezca todo el tráfico para usar esta implementación. Para encontrar la CPU o GPU instance_type óptima para un modelo, abra el cuadro de diálogo de implementación rápida desde la página del modelo en el catálogo de modelos. Asegúrese de usar un instance_type para el que tiene cuota.

import time
endpoint_name="hf-ep-" + str(int(time.time())) # endpoint name must be unique per Azure region, hence appending timestamp 
ml_client.begin_create_or_update(ManagedOnlineEndpoint(name=endpoint_name) ).wait()
ml_client.online_deployments.begin_create_or_update(ManagedOnlineDeployment(
    name="demo",
    endpoint_name=endpoint_name,
    model=model_id,
    instance_type="Standard_DS2_v2",
    instance_count=1,
)).wait()
endpoint = ml_client.online_endpoints.get(endpoint_name)
endpoint.traffic = {"demo": 100}
ml_client.begin_create_or_update(endpoint).result()

Prueba del modelo implementado

Cree un archivo con entradas que se puedan enviar al punto de conexión en línea para la puntuación. El ejemplo de código de esta sección permite una entrada para el tipo de fill-mask, ya que hemos implementado el modelo de bert-base-uncased. Puede encontrar el formato de entrada, los parámetros y las entradas de ejemplo en la Documentación de la API de inferencia del centro de Hugging Face.

import json
scoring_file = "./sample_score.json"
with open(scoring_file, "w") as outfile:
    outfile.write('{"inputs": ["Paris is the [MASK] of France.", "The goal of life is [MASK]."]}')   
response = workspace_ml_client.online_endpoints.invoke(
    endpoint_name=endpoint_name,
    deployment_name="demo",
    request_file=scoring_file,
)
response_json = json.loads(response)
print(json.dumps(response_json, indent=2))

Implementación de modelos del centro de HuggingFace mediante la CLI

Configure la CLI.

Busque el modelo que se va a implementar

Examine el catálogo de modelos en Estudio de Azure Machine Learning y busque el modelo que desea implementar. Copie el nombre del modelo que quiere implementar. Los modelos que se muestran en el catálogo se enumeran en el registro de HuggingFace. El modelo bert_base_uncased se implementa con la versión más reciente de este ejemplo.

Implementación del modelo

Necesita el model y instance_type para implementar el modelo. Para encontrar la CPU o GPU instance_type óptima para un modelo, abra el cuadro de diálogo de implementación rápida desde la página del modelo en el catálogo de modelos. Asegúrese de usar un instance_type para el que tiene cuota.

Los modelos que se muestran en el catálogo se enumeran en el registro de HuggingFace. El modelo bert_base_uncased se implementa con la versión más reciente de este ejemplo. El identificador model de recurso completo basado en el nombre del modelo y el registro es azureml://registries/HuggingFace/models/bert-base-uncased/labels/latest. Creamos el archivo deploy.yml usado para el comando insertado az ml online-deployment create.

Cree un punto de conexión en línea. A continuación, cree la implementación.

# create endpoint
endpoint_name="hf-ep-"$(date +%s)
model_name="bert-base-uncased"
az ml online-endpoint create --name $endpoint_name 

# create deployment file. 
cat <<EOF > ./deploy.yml
name: demo
model: azureml://registries/HuggingFace/models/$model_name/labels/latest
endpoint_name: $endpoint_name
instance_type: Standard_DS3_v2
instance_count: 1
EOF
az ml online-deployment create --file ./deploy.yml --workspace-name $workspace_name --resource-group $resource_group_name

Prueba del modelo implementado

Cree un archivo con entradas que se puedan enviar al punto de conexión en línea para la puntuación. Hugging Face como una entrada de ejemplo de código para el tipo fill-mask de nuestro modelo bert-base-uncased implementado. Puede encontrar el formato de entrada, los parámetros y las entradas de ejemplo en la Documentación de la API de inferencia del centro de Hugging Face.

scoring_file="./sample_score.json"
cat <<EOF > $scoring_file
{
  "inputs": [
    "Paris is the [MASK] of France.",
    "The goal of life is [MASK]."
  ]
}
EOF
az ml online-endpoint invoke --name $endpoint_name --request-file $scoring_file

Código de ejemplo de modelo para Hugging Face

Siga este vínculo para buscar código de ejemplo de modelo para Hugging Face para varios escenarios, como la clasificación de tokens, la traducción, la respuesta a preguntas y la clasificación de captura cero.

Solución de problemas: Errores de implementación y modelos no admitidos

El centro de HuggingFace tiene miles de modelos con cientos de modelos que se actualizan cada día. Solo se prueban los modelos más populares de la colección y otros pueden producir uno de los errores siguientes.

Modelos controlados

Los modelos controlados requieren que los usuarios acepten compartir su información de contacto y acepten los términos y condiciones de los propietarios del modelo para acceder al modelo. Si intenta implementar estos modelos, se producirá un error con KeyError.

Modelos que necesitan ejecutar código remoto

Normalmente, los modelos usan código del SDK de transformadores, pero algunos modelos ejecutan código desde el repositorio de modelos. Para dichos modelos se debe establecer el parámetro trust_remote_code en True. Siga este vínculo para obtener más información sobre el uso de código remoto. Estos modelos no se admiten teniendo en cuenta la seguridad. Si intenta implementar estos modelos, se producirá el siguiente error: ValueError: Loading <model> requires you to execute the configuration file in that repo on your local machine. Make sure you have read the code there to avoid malicious use, then set the option trust_remote_code=True to remove this error.

Modelos con tokenizadores incorrectos

El tokenizador especificado incorrectamente o que falta en el paquete de modelo puede producir un error OSError: Can't load tokenizer for <model>.

Bibliotecas que faltan

Algunos modelos necesitan bibliotecas adicionales de Python. Puede instalar bibliotecas que faltan al ejecutar modelos localmente. Los modelos que necesitan bibliotecas especiales más allá de las bibliotecas de transformadores estándar producirán errores ModuleNotFoundError o ImportError.

Memoria suficiente

Si ve OutOfQuota: Container terminated due to insufficient memory, intente usar un instance_type con más memoria.

Preguntas más frecuentes

¿Dónde se almacenan los pesos del modelo?

En el catálogo de modelos de Azure Machine Learning se incluyen modelos de Hugging Face a través del registro HuggingFace. Hugging Face crea y administra este registro y está disponible para Azure Machine Learning como Registro de la comunidad. Los pesos del modelo no se hospedan en Azure. Los pesos se descargan directamente desde el centro de Hugging Face a los puntos de conexión en línea del área de trabajo cuando estos modelos se implementan. El registro HuggingFace de AzureML funciona como un catálogo para ayudar a detectar e implementar modelos del centro de HuggingFace en Azure Machine Learning.

¿Cómo implementar los modelos para la inferencia por lotes? Actualmente no se admite la implementación de estos modelos en puntos de conexión por lotes para la inferencia por lotes.

¿Puedo usar modelos del registro de HuggingFace como entrada para los trabajos para que pueda ajustar estos modelos mediante el SDK de transformadores? Dado que los pesos del modelo no se almacenan en el registro de HuggingFace, no se puede acceder a los pesos del modelo mediante estos modelos como entradas para los trabajos.

¿Cómo obtener soporte técnico si se produce un error en las implementaciones o si la inferencia no funciona según lo previsto?HuggingFace es un registro de la comunidad y no está cubierto por el soporte técnico de Microsoft. Revise los registros de implementación y averigüe si el problema está relacionado con la plataforma de Azure Machine Learning o es específico de los transformadores de HuggingFace. Póngase en contacto con el soporte técnico de Microsoft para conocer los problemas de la plataforma. Por ejemplo, no se puede crear un punto de conexión en línea ni una autenticación en la API de REST del punto de conexión. Para problemas específicos de los transformadores, use el Foro de HuggingFace o el Soporte técnico de HuggingFace.

¿Qué es un registro de la comunidad? Los registros de la comunidad son registros de Azure Machine Learning creados por asociados de Azure Machine Learning de confianza y disponibles para todos los usuarios de Azure Machine Learning.

¿Dónde pueden los usuarios enviar preguntas y preocupaciones relacionadas con Hugging Face en Azure Machine Learning? Envíe sus preguntas en el foro de discusión de Azure Machine Learning.

Disponibilidad regional

La colección Hugging Face únicamente está disponible actualmente en todas las regiones de la nube pública.