Déployer des modèles à partir de Hugging Face Hub sur Azure Machine Learning points de terminaison en ligne pour l’inférence en temps réel

Microsoft associé à Hugging Face pour apporter des modèles open source de Hugging Face Hub à Azure Machine Learning. Hugging Face est le créateur de Transformers, une bibliothèque très populaire permettant de créer de grands modèles de langage. La plateforme de modèles Hugging Face compte des milliers de modèles en open source. En intégrant Azure Machine Learning, vous pouvez déployer des modèles open source de votre choix pour sécuriser et scalabler l’infrastructure d’inférence sur Azure. Vous pouvez rechercher parmi des milliers de modèles de transformateurs figurant dans le catalogue de modèles Azure Machine Learning et déployer des modèles vers des points de terminaison en ligne gérés en toute simplicité grâce à l'assistant guidé. Lorsque vous déployez le point de terminaison en ligne managé, il vous donne une API REST sécurisée pour noter votre modèle en temps réel.

Note

Les modèles de Hugging Face sont soumis aux termes du contrat de licence tiers disponibles sur sa page de détails. Il est de votre responsabilité de se conformer aux termes du contrat de licence du modèle.

Avantages de l’utilisation de points de terminaison en ligne pour l’inférence en temps réel

Les points de terminaison en ligne managés dans Azure Machine Learning vous aident à déployer des modèles sur de performantes machines CPU et GPU dans Azure de manière clé en main. Les points de terminaison en ligne gérés s’occupent du service, de la mise à l’échelle, de la sécurisation et de la surveillance de vos modèles. Vous n’avez donc pas besoin de configurer et de gérer l’infrastructure sous-jacente. Les machines virtuelles sont approvisionnées pour vous lorsque vous déployez des modèles. Vous pouvez avoir plusieurs déploiements et répartir le trafic ou le dupliquer vers ces déploiements. Le trafic miroir vous permet de tester de nouvelles versions de modèles sur le trafic de production sans les libérer dans des environnements de production. Le fractionnement du trafic vous permet d’augmenter progressivement le trafic de production vers de nouvelles versions de modèle pendant que vous observez les performances. La mise à l’échelle automatique vous permet d’augmenter ou de descendre dynamiquement les ressources en fonction des charges de travail. Vous pouvez configurer la mise à l’échelle en fonction des métriques d’utilisation, d’une planification spécifique ou d’une combinaison des deux. Un exemple de mise à l’échelle basée sur les métriques d’utilisation consiste à ajouter des nœuds si l’utilisation du processeur dépasse 70 %. Un exemple de mise à l’échelle basée sur la planification consiste à ajouter des nœuds en fonction des heures de pointe.

Déployer des modèles Hub Visages avec Hugging à l’aide de Studio

Pour trouver un modèle à déployer, ouvrez le catalogue de modèles dans Azure Machine Learning studio. Sélectionnez Tous les filtres, puis sélectionnez HuggingFace dans la section Filtrer par collections . Sélectionnez la vignette du modèle pour ouvrir la page du modèle.

Déployer le modèle

Choisissez l’option de déploiement en temps réel pour ouvrir la boîte de dialogue déploiement rapide. Spécifiez les options suivantes :

  • Sélectionnez le modèle pour GPU ou CPU. Les types d’instances de processeur sont adaptés aux tests et les types d’instances GPU offrent de meilleures performances en production. Les grands modèles ne tiennent pas dans un type d’instance de processeur.
  • Sélectionnez le type d’instance. Cette liste d’instances est filtrée pour afficher uniquement celles qui peuvent déployer le modèle sans manquer de mémoire.
  • Sélectionnez le nombre d’instances. Une instance est suffisante pour les tests, mais envisagez deux instances ou plus pour la production.
  • Spécifiez éventuellement un point de terminaison avec un nom de déploiement.
  • Sélectionnez Déployer. Vous accédez ensuite à la page de point de terminaison, ce qui peut prendre quelques secondes. Le déploiement prend plusieurs minutes en fonction de la taille du modèle et du type d’instance.

Remarque : si vous souhaitez déployer sur un point de terminaison existant, sélectionnez More options depuis la boîte de dialogue Déploiement rapide et utilisez l’Assistant Déploiement complet.

Modèles protégés

Les modèles avec contrôle sont des modèles qui nécessitent l’approbation de l’auteur du modèle avant l’utilisation. Pour utiliser ces modèles :

  1. Disposez d’un jeton lu ou affiné face.
  2. Demandez l’accès par le biais de la page du modèle sur Hugging Face.
  3. Créez une connexion de clé personnalisée nommée HuggingFaceTokenConnection avec la clé HF_TOKEN et la valeur étant votre jeton Hugging Face défini comme secret.
  4. Créez un point de terminaison avec enforce_access_to_default_secret_stores la valeur définie sur enabled.
  5. Déployez le modèle à l’aide du point de terminaison nouvellement créé.

Tester le modèle déployé

Une fois le déploiement terminé, vous pouvez trouver le point de terminaison REST du modèle dans la page points de terminaison . Utilisez ce point de terminaison pour noter le modèle. Vous trouverez des options pour ajouter d’autres déploiements, gérer le trafic et mettre à l’échelle le hub Points de terminaison . Utilisez l’onglet Test sur la page de point de terminaison pour tester le modèle avec des exemples d’entrées. Des échantillons d’entrée sont disponibles sur la page du modèle. Vous pouvez trouver le format d’entrée, les paramètres et des exemples d’entrées sur la documentation de l’API d’inférence de Hugging Face hub.

Déployer des modèles Hub HuggingFace à l’aide de Python SDK

Configurez le Kit de développement logiciel (SDK) Python.

Recherchez le modèle à déployer

Parcourez le catalogue de modèles dans Azure Machine Learning studio et recherchez le modèle à déployer. Copiez le nom du modèle que vous souhaitez déployer. Importez les bibliothèques nécessaires. Les modèles affichés dans le catalogue sont répertoriés dans le Registre HuggingFace. Créez le model_id à l’aide du nom du modèle copié à partir du catalogue de modèles et du HuggingFace Registre. Vous déployez le modèle bert-base-uncased avec la dernière version figurant dans cet exemple.

from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
    ManagedOnlineEndpoint,
    ManagedOnlineDeployment,
)
from azure.identity import DefaultAzureCredential

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_id = f"azureml://registries/{registry_name}/models/{model_name}/labels/latest"

Déployer le modèle

Créez un point de terminaison en ligne. Créez ensuite le déploiement. Enfin, définissez tout le trafic pour utiliser ce déploiement. Pour trouver le CPU ou le GPU instance_type optimal d’un modèle, ouvrez la boîte de dialogue de déploiement rapide à partir de la page du modèle dans le catalogue de modèles. Veillez à utiliser un instance_type pour lequel vous disposez d’un quota.

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()

Tester le modèle déployé

Créez un fichier avec des entrées que vous pouvez soumettre au point de terminaison en ligne pour le scoring. L’exemple de code de cette section permet une entrée pour le type depuis que fill-mask vous avez déployé le bert-base-uncased modèle. Vous pouvez trouver le format d’entrée, les paramètres et des exemples d’entrées sur la documentation de l’API d’inférence 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 = 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))

Déployez des modèles Hub HuggingFace à l’aide de CLI

Configurez l’interface CLI.

Recherchez le modèle à déployer

Parcourez le catalogue de modèles dans Azure Machine Learning studio et recherchez le modèle à déployer. Copiez le nom du modèle que vous souhaitez déployer. Les modèles affichés dans le catalogue sont répertoriés dans le Registre HuggingFace. Vous déployez le modèle bert-base-uncased avec la dernière version figurant dans cet exemple.

Déployer le modèle

Vous avez besoin des valeurs et model des instance_type valeurs pour déployer le modèle. Pour trouver le CPU ou le GPU instance_type optimal d’un modèle, ouvrez la boîte de dialogue de déploiement rapide à partir de la page du modèle dans le catalogue de modèles. Veillez à utiliser un instance_type pour lequel vous disposez d’un quota.

Les modèles affichés dans le catalogue sont répertoriés dans le Registre HuggingFace. Vous déployez le modèle bert-base-uncased avec la dernière version figurant dans cet exemple. L’ID de ressource model complet basé sur le nom du modèle et le registre est azureml://registries/HuggingFace/models/bert-base-uncased/labels/latest. Vous créez le deploy.yml fichier utilisé pour la ligne de az ml online-deployment create commande.

Créez un point de terminaison en ligne. Créez ensuite le déploiement.

# 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

Tester le modèle déployé

Créez un fichier avec des entrées que vous pouvez soumettre au point de terminaison en ligne pour le scoring. Face de mise en attente fournit un exemple de code d’entrée pour le fill-mask type du modèle déployé bert-base-uncased . Vous trouverez le format d’entrée, les paramètres et les exemples d’entrées dans la documentation de l’API d’inférence du hub visage de mise en page.

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

Exemple de code de modèle Hugging Face

Suivez ce lien pour trouver un exemple de code de modèle Hugging Face pour différents scénarios, notamment la classification des jetons, la traduction, la réponse aux questions et la classification Zero-Shot.

Résolution des problèmes : erreurs de déploiement et modèles non pris en charge

Le hub HuggingFace comporte des milliers de modèles avec des centaines de mises à jour chaque jour. Seuls les modèles les plus populaires de la collection sont testés, et d’autres peuvent échouer avec l’une des erreurs suivantes.

Modèles protégés

Les modèles contrôlé exigent que les utilisateurs acceptent de partager leurs coordonnées et d’accepter les conditions générales des propriétaires de modèles pour accéder au modèle. La tentative de déploiement de ces modèles sans suivre correctement les étapes précédentes échoue avec un KeyError.

Modèles nécessitant l’exécution du code à distance

Les modèles utilisent généralement du code provenant du SDK des transformateurs, mais certains modèles utilisent du code provenant de la base de données des modèles. Ces modèles doivent fixer le paramètre trust_remote_code à True. Suivez ce lien pour en savoir plus sur l’utilisation du code distant. Pour des raisons de sécurité, ces modèles ne sont pas pris en charge. La tentative de déploiement de ces modèles échoue avec l’erreur suivante : ValueError: Loading <model> requires you to execute the configuration file in that repo on your local machine. Make sure you read the code to avoid malicious use, then set the option trust_remote_code=True to remove this error.

Modèles avec des générateurs de jetons incorrects

Le générateur de jetons incorrect ou manquant dans le package de modèle peut entraîner une erreur OSError: Can't load tokenizer for <model>.

Des bibliothèques manquantes

Certains modèles ont besoin de bibliothèques de Python supplémentaires. Vous pouvez installer des bibliothèques manquantes lors de l’exécution de modèles localement. Les modèles qui ont besoin de bibliothèques spéciales au-delà des bibliothèques de transformateurs standard échouent ou ModuleNotFoundError échouentImportError.

Mémoire insuffisante

Si vous voyez l’erreur OutOfQuota: Container terminated due to insufficient memory , essayez d’utiliser une instance_type mémoire supplémentaire.

Forum aux questions

Où les pondérations du modèle sont-elles stockées ?

Les modèles Visage en train de s’afficher dans le catalogue de modèles Azure Machine Learning via le HuggingFace Registre. Hugging Face crée et gère ce registre et le rend disponible pour Azure Machine Learning en tant que registre communautaire. Les pondérations du modèle ne sont pas hébergées sur Azure. Lorsque vous déployez ces modèles, les points de terminaison en ligne de votre espace de travail téléchargent les pondérations directement à partir du hub Visage de mise en forme. Le HuggingFace Registre dans Azure Machine Learning fonctionne en tant que catalogue pour vous aider à découvrir et déployer des modèles Hub Visage en Azure Machine Learning.

Quels sont les modèles pris en charge ?

Azure prend en charge les modèles Visage hugging qui répondent aux critères suivants :

  • Le modèle a soit les Transformersbalises , Diffuserssoit Sentence-Transformers sur Hugging Face Hub.
  • Le modèle a une tâche prise en charge telle que chat-completion, image-to-textou embeddings.
  • Les pondérations du modèle sont au format Safetensors et le modèle ne nécessite trust_remote_codepas .

Comment déployer les modèles pour l’inférence par lots ? Actuellement, vous ne pouvez pas déployer ces modèles sur des points de terminaison de traitement par lots pour l’inférence par lots.

Puis-je utiliser des modèles du HuggingFace Registre comme entrée vers des travaux afin que je puisse affiner ces modèles à l’aide du Kit de développement logiciel (SDK) transformers ? Étant donné que les pondérations de modèle ne sont pas stockées dans le HuggingFace Registre, vous ne pouvez pas accéder aux pondérations de modèle en utilisant ces modèles comme entrées pour les travaux.

Comment obtenir de l'aide si mes déploiements échouent ou si l'inférence ne fonctionne pas comme prévu ?HuggingFace est un registre communautaire et Microsoft support ne le couvre pas. Passez en revue les journaux de déploiement pour savoir si le problème est lié à Azure Machine Learning plateforme ou spécifique aux transformateurs de visages en forme de hugging. Contactez le support Microsoft pour tout problème de plateforme tel que l’impossibilité de créer un point de terminaison en ligne ou l’authentification auprès de l’API REST de point de terminaison ne fonctionne pas. Pour les problèmes spécifiques aux transformateurs, créez un problème sur GitHub, utilisez le forum HuggingFace ou utilisez la prise en charge de HuggingFace.

Qu’est-ce qu’un registre de communauté ? Les partenaires Azure Machine Learning approuvés créent des registres de communauté en tant que registres Azure Machine Learning. Tous les utilisateurs Azure Machine Learning peuvent y accéder.

Où les utilisateurs peuvent-ils soumettre des questions et des préoccupations concernant Hugging Face dans Azure Machine Learning ? Envoyez vos questions dans le forum de discussion Azure Machine Learning ou ouvrez un Ticket GitHub.

Disponibilité régionale

La Collection Hugging Face est actuellement disponible dans toutes les régions du cloud public uniquement.