Comment déployer et inférer un déploiement de calcul géré avec du code
Le catalogue de modèles du portail Azure AI Foundry propose plus de 1 600 modèles. Le moyen le plus courant de déployer ces modèles consiste à utiliser l’option de déploiement de calcul managé, qui est également parfois appelée déploiement en ligne managé.
Le déploiement d’un modèle de langage volumineux (LLM) le rend disponible pour une utilisation dans un site web, une application ou un autre environnement de production. Le déploiement implique généralement l’hébergement du modèle sur un serveur ou dans le cloud et la création d’une API ou d’une autre interface pour permettre aux utilisateurs d’interagir avec le modèle. Vous pouvez appeler le déploiement pour l’inférence en temps réel d’applications IA génératives telles que la conversation et le copilote.
Dans cet article, vous apprenez à déployer des modèles à l’aide du SDK Azure Machine Learning. L’article explique également comment effectuer l’inférence sur le modèle déployé.
Obtenir l’ID de modèle
Vous pouvez déployer des modèles de calcul gérés à l’aide du SDK Azure Machine Learning, mais commençons par parcourir le catalogue de modèles et obtenons l’ID de modèle dont vous avez besoin pour le déploiement.
Connectez-vous à Azure AI Foundry, puis accédez à la page Accueil.
Sélectionnez catalogue de modèles dans la barre latérale gauche.
Dans le filtre Options de déploiement, sélectionnez Calcul géré.
Sélectionnez un modèle.
Copiez l'ID du modèle à partir de la page de détails du modèle que vous avez sélectionné. Elle ressemble à ceci :
azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16
Déployer le modèle
Déployons le modèle.
Ensuite, vous devez installer le SDK Azure Machine Learning.
pip install azure-ai-ml
pip install azure-identity
Utilisez ce code pour vous authentifier auprès d’Azure Machine Learning et créer un objet client. Remplacez les espaces réservés par votre ID d’abonnement, le nom du groupe de ressources et le nom du projet Azure AI Foundry.
from azure.ai.ml import MLClient
from azure.identity import InteractiveBrowserCredential
client = MLClient(
credential=InteractiveBrowserCredential,
subscription_id="your subscription name goes here",
resource_group_name="your resource group name goes here",
workspace_name="your project name goes here",
)
Pour l’option de déploiement de calcul géré, vous devez créer un point de terminaison avant un modèle de déploiement. Considérez le point de terminaison comme un conteneur pouvant héberger plusieurs modèles de déploiement. Les noms de points de terminaison doivent être uniques dans une région. Dans cet exemple, nous utilisons l’horodatage pour créer un nom de point de terminaison unique.
import time, sys
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
ProbeSettings,
)
# Make the endpoint name unique
timestamp = int(time.time())
online_endpoint_name = "customize your endpoint name here" + str(timestamp)
# Create an online endpoint
endpoint = ManagedOnlineEndpoint(
name=online_endpoint_name,
auth_mode="key",
)
workspace_ml_client.begin_create_or_update(endpoint).wait()
Créez un déploiement. Vous pouvez trouver l'ID du modèle dans le catalogue des modèles.
model_name = "azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16"
demo_deployment = ManagedOnlineDeployment(
name="demo",
endpoint_name=online_endpoint_name,
model=model_name,
instance_type="Standard_DS3_v2",
instance_count=2,
liveness_probe=ProbeSettings(
failure_threshold=30,
success_threshold=1,
timeout=2,
period=10,
initial_delay=1000,
),
readiness_probe=ProbeSettings(
failure_threshold=10,
success_threshold=1,
timeout=10,
period=10,
initial_delay=1000,
),
)
workspace_ml_client.online_deployments.begin_create_or_update(demo_deployment).wait()
endpoint.traffic = {"demo": 100}
workspace_ml_client.begin_create_or_update(endpoint).result()
Inférence du déploiement
Vous avez besoin d'un exemple de données JSON pour tester l'inférence. Créez sample_score.json
avec l’exemple suivant.
{
"inputs": {
"question": [
"Where do I live?",
"Where do I live?",
"What's my name?",
"Which name is also used to describe the Amazon rainforest in English?"
],
"context": [
"My name is Wolfgang and I live in Berlin",
"My name is Sarah and I live in London",
"My name is Clara and I live in Berkeley.",
"The Amazon rainforest (Portuguese: Floresta Amaz\u00f4nica or Amaz\u00f4nia; Spanish: Selva Amaz\u00f3nica, Amazon\u00eda or usually Amazonia; French: For\u00eat amazonienne; Dutch: Amazoneregenwoud), also known in English as Amazonia or the Amazon Jungle, is a moist broadleaf forest that covers most of the Amazon basin of South America. This basin encompasses 7,000,000 square kilometres (2,700,000 sq mi), of which 5,500,000 square kilometres (2,100,000 sq mi) are covered by the rainforest. This region includes territory belonging to nine nations. The majority of the forest is contained within Brazil, with 60% of the rainforest, followed by Peru with 13%, Colombia with 10%, and with minor amounts in Venezuela, Ecuador, Bolivia, Guyana, Suriname and French Guiana. States or departments in four nations contain \"Amazonas\" in their names. The Amazon represents over half of the planet's remaining rainforests, and comprises the largest and most biodiverse tract of tropical rainforest in the world, with an estimated 390 billion individual trees divided into 16,000 species."
]
}
}
Nous allons inférence avec sample_score.json
. Modifiez l'emplacement en fonction de l'endroit où vous avez enregistré votre exemple de fichier json.
scoring_file = "./sample_score.json"
response = workspace_ml_client.online_endpoints.invoke(
endpoint_name=online_endpoint_name,
deployment_name="demo",
request_file=scoring_file,
)
response_json = json.loads(response)
print(json.dumps(response_json, indent=2))
Supprimer le point de terminaison de déploiement
Pour supprimer des déploiements dans le portail Azure AI Foundry, sélectionnez le bouton Supprimer dans le panneau supérieur de la page des détails du déploiement.
Considérations relatives au quota
Pour déployer et effectuer une inférence avec des points de terminaison en temps réel, vous utilisez le quota de cœurs de machine virtuelle (VM) attribué à votre abonnement par région. Lorsque vous vous inscrivez à Azure AI Foundry, vous recevez un quota de VM par défaut pour plusieurs familles de VM disponibles dans la région. Vous pouvez continuer à créer des déploiements jusqu’à atteindre votre limite de quota. Une fois que cela se produit, vous pouvez demander une augmentation de quota.
Étapes suivantes
- En savoir plus sur ce que vous pouvez faire dans Azure AI Foundry
- Obtenez des réponses aux questions fréquentes dans l’article sur le FAQ Azure AI