Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
Note
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 y dividir el tráfico o reflejar el tráfico 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.
Modelos controlados
Los modelos cerrados son modelos que deberá solicitar la aprobación del autor del modelo antes de su uso. Utilizar:
- Tener un token específico o detallado de Hugging Face
- Solicitar acceso a través de la página del modelo en Hugging Face
- Cree una conexión de clave personalizada denominada
HuggingFaceTokenConnectioncon la claveHF_TOKENy el valor es el token de Hugging Face marcado como un secreto. - Cree un punto de conexión configurado con
enforce_access_to_default_secret_storesestablecido enenabled - Implementación del modelo mediante el punto de conexión recién creado
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 de Hugging Face Hub.
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,
)
ml_client = MLClient(
credential=DefaultAzureCredential(),
subscription_id="<your-subscription-id>",
resource_group_name="<your-resource-group>",
workspace_name="<your-workspace-name>"
)
registry_name = "HuggingFace"
model_name = "bert_base_uncased"
model_version = "25"
model_id = f"azureml://registries/{registry_name}/models/{model_name}/versions/{model_version}"
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 de Hugging Face Hub.
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
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 ID del activo completamente calificado model 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"
model_version="25"
az ml online-endpoint create --name $endpoint_name
# create deployment file.
cat <<EOF > ./deploy.yml
name: demo
model: azureml://registries/HuggingFace/models/$model_name/versions/$model_version
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 de Hugging Face Hub.
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 sin seguir correctamente los pasos anteriores, ocurrirá un error 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 debido a consideraciones de seguridad. Se produce un error al intentar implementar estos modelos con 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 producen errores de ModuleNotFoundError o ImportError error.
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.
HuggingFace El registro de Azure Machine Learning funciona como catálogo para ayudar a detectar e implementar modelos de HuggingFace Hub en Azure Machine Learning.
¿Qué modelos se admiten?
Se admiten los modelos de Hugging Face que cumplen los siguientes criterios en Azure:
- Debe tener las etiquetas
Transformers,DiffusersoSentence-Transformersen el centro de Hugging Face - Tiene una tarea admitida, como
chat-completion,image-to-taskoembeddings - Los pesos del modelo están en el formato Safetensors y el modelo no requiere
trust_remote_code
¿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 HuggingFace Registro 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 tener acceso a los pesos del modelo mediante estos modelos como entradas para los trabajos.
¿Cómo obtengo soporte técnico si se produce un error en las implementaciones o 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 cualquier problema de plataforma, como no poder crear un punto de conexión en línea o la autenticación en la API REST del punto de conexión no funciona. En el caso de los problemas específicos de los transformadores, cree un problema en GitHub, use el foro huggingFace o use la compatibilidad con 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 o abra un problema de GitHub.
Disponibilidad regional
La colección Hugging Face únicamente está disponible actualmente en todas las regiones de la nube pública.