Enrichir un index de recherche à l’aide d’un modèle Azure Machine Learning

Effectué

Vous créez votre modèle Azure Machine Learning à l’aide d’outils de développement tels que le kit de développement logiciel (SDK) Python, les API REST ou l’interface de ligne de commande Azure. Une autre option consiste à tirer parti d’Azure AI Machine Learning studio, une interface utilisateur graphique avec laquelle vous pouvez créer, effectuer l’apprentissage et déployer des modèles sans écrire de code.

A diagram showing the steps to enrich a search index with an Azure AI Machine Learning Studio model.

Avec un modèle créé, vous changez la façon dont le code de scoring appelle le modèle pour permettre son utilisation par votre compétence de recherche personnalisée.

Les dernières étapes consistent à créer un cluster Kubernetes pour héberger un point de terminaison de votre modèle.

Créer un espace de travail AML

Lorsque vous créez l’espace de travail AML, Azure crée en parallèle des comptes de stockage, un magasin de clés et des ressources Application Insights. Le volet Vue d’ensemble de l’espace de travail AML un lien à utiliser pour lancer Azure AI Machine Learning Studio.

Créer et entraîner un modèle dans Azure Machine Learning studio

Avec Azure AI Machine Learning Studio, vous pouvez utiliser un concepteur comportant une fonctionnalité de glisser-déposer pour créer des pipelines qui créent et effectuent l’apprentissage des modèles. Il existe un moyen encore plus simple de créer des modèles : les modèles prédéfinis.

A screenshot of all the prebuilt components in the Azure AI Machine Learning Studio.

Si vous choisissez de créer vos propres modèles, vous devez les inscrire dans Azure AI Machine Learning Studio avant de pouvoir les déployer sur un service web.

Changer le mode de fonctionnement d’un modèle pour permettre l’appel du modèle par la compétence personnalisée AML

Les modèles que vous entraînez utiliseront généralement de nombreux exemples de données. Les jeux de données comporteront eux-mêmes beaucoup de lignes. Ils seront divisés et utilisés pour entraîner et tester le modèle. Le code qui traite ces données et les passe au modèle doit être modifié pour traiter des lignes individuelles.

La réponse JSON reçue du modèle doit aussi contenir uniquement la prédiction de sortie.

Par exemple, si vos données sont un tableau d’objets JSON :

[ 
    {
        "attribute-1": null,
        "attribute-2": null
    },
    {
        "attribute-1": null,
        "attribute-2": null
    },
    {
        "attribute-1": null,
        "attribute-2": null
    }
]

Le code de scoring Python doit traiter les données ligne par ligne :

data = json.loads(data)
for row in data:
    for key, val in row.items():
        input_entry[key].append(decode_nan(val))

Pour remplacer le jeu de données d’entrée par un seul enregistrement :

{
    "attribute-1": null,
    "attribute-2": null
}

Le code Python doit être remplacé par :

data = json.loads(data)
for key, val in data.items():
    input_entry[key].append(decode_nan(val))

En réponse du code de scoring, le code par défaut retourne l’ensemble du document JSON :

return json.dumps({"result": result.data_frame.values.tolist()})

La compétence personnalisée doit être en mesure de mapper une seule réponse à partir du modèle. Par conséquent, le code doit retourner JSON qui est uniquement le dernier attribut.

output = result.data_frame.values.tolist()
# return the last column of the the first row of the dataframe
return {
    "predicted_outcome": output[0][-1]
}

Créer un point de terminaison à utiliser pour votre modèle

Le modèle est déployé sur un point de terminaison. Azure AI Machine Learning Studio prend en charge le déploiement d’un modèle sur un point de terminaison en temps réel, un point de terminaison de lot ou un service web. Pour le moment, la compétence AmlSkillpersonnalisée dans Recherche Azure AI prend uniquement en charge les points de terminaison de service web.

L’autre restriction est que le point de terminaison doit être une instance Azure Kubernetes Service (AKS), les instances de conteneur n’étant pas prises en charge.

Si vous savez comment créer et gérer des clusters AKS, vous pouvez créer manuellement les clusters dans le portail Azure et les référencer lorsque vous créez votre point de terminaison. Toutefois, il est plus facile de laisser Azure AI Machine Learning Studio créer et gérer le cluster pour vous.

Si vous accédez à la section de calcul du studio, vous pouvez créer des clusters d’inférence. AML studio vous guidera ensuite dans le choix de la taille du cluster. De plus, il active HTTPS et crée un nom de domaine pour vous. Elle se présente au format suivant : location.cloudapp.azure.com:443

Connecter la compétence personnalisée AML au point de terminaison

Une fois que vous avez tout configuré comme expliqué ci-dessus, vous devez mettre à jour votre service Recherche Azure AI. Tout d’abord, pour enrichir votre index de recherche, vous ajoutez un nouveau champ à l’index afin d’inclure la sortie du modèle.

Ensuite, vous mettez à jour votre ensemble de compétences d’index et vous ajoutez la compétence personnalisée #Microsoft.Skills.Custom.AmlSkill.

Après cela, vous modifiez votre indexeur pour mapper la sortie de la compétence personnalisée au champ que vous avez créé dans l’index.

Dernière étape, vous réexécutez l’indexeur pour enrichir votre index avec le modèle AML.