Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 :
- Disposez d’un jeton lu ou affiné face.
- Demandez l’accès par le biais de la page du modèle sur Hugging Face.
- Créez une connexion de clé personnalisée nommée
HuggingFaceTokenConnectionavec la cléHF_TOKENet la valeur étant votre jeton Hugging Face défini comme secret. - Créez un point de terminaison avec
enforce_access_to_default_secret_storesla valeur définie surenabled. - 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
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 ,DiffuserssoitSentence-Transformerssur Hugging Face Hub. - Le modèle a une tâche prise en charge telle que
chat-completion,image-to-textouembeddings. - 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.