API Inférence de modèle Azure AI | Azure Machine Learning
L’inférence de modèle Azure AI est une API qui expose un ensemble commun de fonctionnalités pour les modèles fondamentaux et qui peut être utilisée par les développeurs pour consommer des prédictions d’un ensemble diversifié de modèles, de manière uniforme et cohérente. Les développeurs peuvent communiquer avec différents modèles déployés dans Azure AI Studio sans modifier le code sous-jacent qu’ils utilisent.
Avantages
Les modèles fondamentaux, tels que les modèles de langage, ont fait des progrès remarquables ces dernières années. Ces progrès ont révolutionné différents domaines, notamment le traitement du langage naturel et la vision par ordinateur, et ont donné naissance à des applications telles que les chatbots, les assistants virtuels et les services de traduction de langue.
Bien que les modèles fondamentaux excellent dans des domaines spécifiques, ils ne disposent pas d’un ensemble de fonctionnalités uniforme. Certains modèles sont meilleurs dans une tâche donnée et même dans une même tâche, certains modèles pouvant aborder le problème d’une manière et d’autres modèles d’une manière différente. Les développeurs peuvent tirer parti de cette diversité en utilisant le bon modèle pour la bonne tâche, ce qui leur permet de :
- Améliorer les performances dans une tâche en aval spécifique.
- Utiliser des modèles plus efficaces pour des tâches plus simples.
- Utiliser des modèles plus petits qui peuvent s’exécuter plus rapidement sur des tâches spécifiques.
- Composer plusieurs modèles pour développer des expériences intelligentes.
Le fait de disposer d'un moyen uniforme de consommer les modèles fondamentaux permet aux développeurs de bénéficier de tous ces avantages sans sacrifier la portabilité ou modifier le code sous-jacent.
Disponibilité
L’API Inférence de modèle Azure AI est disponible dans les modèles suivants :
Modèles déployés sur les points de terminaison d’API serverless :
- Famille de modèles Cohere Embed V3
- Famille de modèles Cohere Command R
- Famille de modèles Meta Llama 2 chat
- Famille de modèles Meta Llama 3 instruct
- Mistral-Small
- Mistral-Large
- Famille de modèles Jais
- Famille de modèles Jamba
- Famille de modèles Phi-3
Modèles déployés sur l’inférence managée :
- Famille de modèles Meta Llama 3 instruct
- Famille de modèles Phi-3
- Famille de modèles Mixtral
L’API est compatible avec les modèles de déploiement Azure OpenAI.
Remarque
L’API d’inférence de modèle Azure AI est disponible dans l’inférence gérée (Managed Online Endpoints) pour les modèles déployés après le 24 juin 2024. Pour bénéficier de l’API, redéployez votre point de terminaison si le modèle a été déployé avant cette date.
Fonctionnalités
La section suivante décrit certaines des fonctionnalités que l’API expose. Pour obtenir une spécification complète de l’API, consultez la section de référence.
Modalités
L’API indique comment les développeurs peuvent consommer des prévisions pour les modalités suivantes :
- Obtenir des informations: retourne les informations à propos du modèle déployé sous le point de terminaison.
- Incorporations de texte : crée un vecteur d’incorporation qui représente le texte d’entrée.
- Complétions de texte : crée une complétion pour le prompt et les paramètres fournis.
- Complétions de conversation : crée une réponse de modèle pour la conversation instantanée donnée.
- Incorporations d’image : crée un vecteur d’incorporation qui représente le texte et l’image d’entrée.
Prise en charge du kit SDK d’inférence
Vous pouvez utiliser des clients d’inférence simplifiés dans le langage de votre choix pour consommer les prédictions des modèles exécutant l’API d’inférence de modèle Azure AI.
Installez le package azure-ai-inference
à l’aide de votre gestionnaire de package, par exemple pip :
pip install azure-ai-inference
Vous pouvez ensuite utiliser le package pour consommer le modèle. L’exemple suivant montre comment créer un client pour consommer les complétions de conversation :
import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential
client = ChatCompletionsClient(
endpoint=os.environ["AZUREAI_ENDPOINT_URL"],
credential=AzureKeyCredential(os.environ["AZUREAI_ENDPOINT_KEY"]),
)
Si vous utilisez un point de terminaison avec prise en charge de Entra ID, vous pouvez créer votre client comme suit :
import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import AzureDefaultCredential
client = ChatCompletionsClient(
endpoint=os.environ["AZUREAI_ENDPOINT_URL"],
credential=AzureDefaultCredential(),
)
Découvrez nos exemples, et lisez la documentation de référence API pour vous lancer.
Extensibilité
L’API Inférence de modèle Azure AI spécifie un ensemble de modalités et de paramètres auxquels les modèles peuvent souscrire. Toutefois, certains modèles peuvent avoir des fonctionnalités autres que celles indiquées par l’API. Dans ce cas, l’API permet au développeur de les transmettre en tant que paramètres supplémentaires dans la charge utile.
En définissant un en-tête extra-parameters: pass-through
, l’API tente de transmettre directement un paramètre inconnu au modèle sous-jacent. Si le modèle peut gérer ce paramètre, la requête s’effectue.
L’exemple suivant montre une requête qui transmet le paramètre safe_prompt
pris en charge par Mistral-Large, qui n’est pas spécifié dans l’API Inférence de modèle Azure AI :
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="How many languages are in the world?"),
],
model_extras={
"safe_mode": True
}
)
print(response.choices[0].message.content)
Conseil
Lorsque vous utilisez le Kit de développement logiciel (SDK) d’inférence Azure AI, l’utilisation de model_extras
configure pour vous la requête avec extra-parameters: pass-through
automatiquement.
Remarque
La valeur par défaut de extra-parameters
est error
, qui retourne une erreur si un paramètre supplémentaire est indiqué dans la charge utile. Vous pouvez également définir extra-parameters: drop
pour abandonner n’importe quel paramètre inconnu dans la requête. Utilisez cette fonctionnalité si vous envoyez des requêtes avec des paramètres supplémentaires que vous savez non pris en charge par le modèle, mais que vous voulez quand même que la requête s’effectue. L’indication du paramètre seed
en est un exemple typique.
Modèles avec un ensemble hétéroclite de fonctionnalités
L’API Inférence de modèle Azure AI indique un ensemble général de fonctionnalités, mais chacun des modèles peut décider de les implémenter ou non. Une erreur spécifique est retournée dans les cas où le modèle ne peut pas prendre en charge un paramètre spécifique.
L’exemple suivant montre la réponse d’une requête de complétion de conversation indiquant le paramètre reponse_format
et demandant une réponse au format JSON
. Dans l’exemple, étant donné que le modèle ne prend pas en charge cette fonctionnalité, une erreur 422 est retournée à l’utilisateur.
import json
from azure.ai.inference.models import SystemMessage, UserMessage, ChatCompletionsResponseFormatJSON
from azure.core.exceptions import HttpResponseError
try:
response = client.complete(
messages=[
SystemMessage(content="You are a helpful assistant."),
UserMessage(content="How many languages are in the world?"),
],
response_format=ChatCompletionsResponseFormatJSON()
)
except HttpResponseError as ex:
if ex.status_code == 422:
response = json.loads(ex.response._content.decode('utf-8'))
if isinstance(response, dict) and "detail" in response:
for offending in response["detail"]:
param = ".".join(offending["loc"])
value = offending["input"]
print(
f"Looks like the model doesn't support the parameter '{param}' with value '{value}'"
)
else:
raise ex
Conseil
Vous pouvez inspecter la propriété detail.loc
pour comprendre l’emplacement du paramètre incriminé et detail.input
pour voir la valeur qui a été transmise dans la requête.
Sécurité du contenu
L’API d’inférence du modèle Azure AI prend en charge Azure AI Sécurité du Contenu. Lorsque vous utilisez des déploiements avec Azure AI Sécurité du Contenu activé, les entrées et les sorties passent par un ensemble de modèles de classification visant à détecter et à empêcher la sortie de contenu dangereux. Le système de filtrage de contenu (préversion) détecte des catégories spécifiques de contenu potentiellement nuisible dans les requêtes d’entrée et les saisies semi-automatiques de sortie, et prend les mesures correspondantes.
L’exemple suivant montre la réponse d’une demande de saisie semi-automatique de conversation qui a déclenché la sécurité du contenu.
from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError
try:
response = client.complete(
messages=[
SystemMessage(content="You are an AI assistant that helps people find information."),
UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
]
)
print(response.choices[0].message.content)
except HttpResponseError as ex:
if ex.status_code == 400:
response = json.loads(ex.response._content.decode('utf-8'))
if isinstance(response, dict) and "error" in response:
print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
else:
raise ex
else:
raise ex
Mise en route
L’API d’inférence de modèle Azure AI est prise en charge dans certains modèles déployés en tant que points de terminaison d’API serverless et points de terminaison en ligne gérés. Déployez l’un des modèles pris en charge, puis utilisez exactement le même code pour consommer ses prédictions.
La bibliothèque de client azure-ai-inference
effectue l’inférence ainsi que les complétions de conversation, pour les modèles IA déployés par Azure AI Studio et Azure Machine Learning studio. Elle prend en charge les points de terminaison d’API serverless et les points de terminaison de calcul gérés (anciennement appelés points de terminaison en ligne gérés).
Découvrez nos exemples, et lisez la documentation de référence API pour vous lancer.