Partager via


Guide pratique pour déployer de grands modèles de langage avec Azure AI Studio

Important

Certaines des fonctionnalités décrites dans cet article peuvent uniquement être disponibles en préversion. Cette préversion est fournie sans contrat de niveau de service, nous la déconseillons dans des charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

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 allez apprendre à déployer des modèles de langage volumineux dans Azure AI Studio. Vous pouvez déployer des modèles à partir du catalogue de modèles ou à partir de votre projet. Vous pouvez également déployer des modèles à l’aide du Kit de développement logiciel (SDK) Azure Machine Learning. L’article explique également comment effectuer l’inférence sur le modèle déployé.

Déployer et inférence un modèle d'API sans serveur avec du code

Déploiement d’un modèle

Les modèles d'API sans serveur sont les modèles que vous pouvez déployer avec une facturation à l'utilisation. Les exemples incluent Phi-3, Llama-2, Command R, Mistral Large, etc. Pour les modèles d'API sans serveur, vous n'êtes facturé que pour l'inférence, sauf si vous choisissez d'affiner le modèle.

Obtenir l’ID de modèle

Vous pouvez déployer des modèles d'API sans serveur à 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.

  1. Connectez-vous à AI Studio et accédez à la page Accueil .

  2. Sélectionnez catalogue de modèles dans la barre latérale gauche.

  3. Dans le filtre Options de déploiement, sélectionnez API sans serveur.

    Une capture d'écran montrant comment filtrer par modèles d'API sans serveur dans le catalogue.

  4. Sélectionnez un modèle.

  5. 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-cohere/models/Cohere-command-r-plus/versions/3

Installer le Kit de développement logiciel (SDK) Azure Machine Learning

Ensuite, vous devez installer le Kit de développement logiciel (SDK) Azure Machine Learning. Exécutez les commandes suivantes dans votre terminal :

pip install azure-ai-ml
pip install azure-identity

Déployer le modèle d'API sans serveur

Tout d’abord, vous devez vous authentifier dans Azure AI.

from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import MarketplaceSubscription, ServerlessEndpoint

# You can find your credential information in project settings.
client = MLClient(
    credential=DefaultAzureCredential(),
    subscription_id="your subscription name goes here",
    resource_group_name="your resource group name goes here",
    workspace_name="your project name goes here",
)

Deuxièmement, référençons l'ID de modèle que vous avez trouvé plus tôt.

# You can find the model ID on the model catalog.
model_id="azureml://registries/azureml-meta/models/Llama-2-70b-chat/versions/18" 

Les modèles d'API sans serveur de fournisseurs de modèles tiers nécessitent un abonnement Place de marché Microsoft Azure pour pouvoir utiliser le modèle. Nous allons créer un abonnement place de marché.

Remarque

Vous pouvez ignorer cette partie si vous déployez un modèle d'API sans serveur de Microsoft, tel que Phi-3.

# You can customize the subscription name.
subscription_name="Meta-Llama-2-70b-chat" 

marketplace_subscription = MarketplaceSubscription(
    model_id=model_id,
    name=subscription_name,
)

marketplace_subscription = client.marketplace_subscriptions.begin_create_or_update(
    marketplace_subscription
).result()

Enfin, créons un point de terminaison sans serveur.


endpoint_name="Meta-Llama-2-70b-chat-qwerty" # Your endpoint name must be unique

serverless_endpoint = ServerlessEndpoint(
    name=endpoint_name,
    model_id=model_id
)

created_endpoint = client.serverless_endpoints.begin_create_or_update(
    serverless_endpoint
).result()

Obtenez le point de terminaison et les clés de l'API sans serveur

endpoint_keys = client.serverless_endpoints.get_keys(endpoint_name)
print(endpoint_keys.primary_key)
print(endpoint_keys.secondary_key)

Inférence du déploiement

Pour en déduire, vous souhaitez utiliser le code spécifiquement adapté aux différents types de modèles et SDK que vous utilisez. Vous pouvez trouver des exemples de code dans le référentiel d’exemples Azure/azureml-examples.

Déployer et inférer un déploiement de calcul géré avec du code

Déploiement d’un modèle

Le catalogue de modèles AI Studio propose plus de 1 600 modèles, et le moyen le plus courant de déployer ces modèles consiste à utiliser l'option de déploiement de calcul géré, qui est également parfois appelée déploiement en ligne géré.

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.

  1. Connectez-vous à AI Studio et accédez à la page Accueil .

  2. Sélectionnez catalogue de modèles dans la barre latérale gauche.

  3. Dans le filtre Options de déploiement, sélectionnez Calcul géré.

    Capture d’écran montrant comment filtrer par modèles de calcul managés dans le catalogue.

  4. Sélectionnez un modèle.

  5. 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

Installer le Kit de développement logiciel (SDK) Azure Machine Learning

Pour cette étape, vous devez installer le Kit de développement logiciel (SDK) Azure Machine Learning.

pip install azure-ai-ml
pip install azure-identity

Déployer le modèle

Tout d’abord, vous devez vous authentifier dans Azure AI.

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",
)

Déployons le modèle.

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 AI Studio, sélectionnez le bouton Supprimer dans le volet supérieur de la page 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 à AI Studio, 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