Déployer un conteneur d’extraction d’expressions clés dans le service Azure Kubernetes

Découvrez comment déployer une image de conteneur d’extraction d’expressions clés dans Azure Kubernetes service (AKS). Cette procédure indique comment créer une ressource de langue, comment associer une image de conteneur et comment exercer cette orchestration des deux à partir d’un navigateur. L’utilisation de conteneurs peut détourner l’attention des développeurs de la gestion de l’infrastructure, pour les faire se concentrer sur le développement d’applications. Bien que cet article utilise le conteneur d’extraction d’expressions clés comme exemple, vous pouvez utiliser ce processus pour d’autres conteneurs proposés par Azure AI Language

Prérequis

Cette procédure nécessite plusieurs outils qui doivent être installés et exécutés localement. N’utilisez pas Azure Cloud Shell. Vous avez besoin des éléments suivants :

  • Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
  • Un éditeur de code, par exemple Visual Studio Code.
  • Azure CLI installé.
  • The Kubernetes CLI installé.
  • Une ressource Azure avec le niveau de tarification approprié. Certains niveaux tarifaires ne fonctionnent pas avec ce conteneur :
    • Ressource de Azure AI Language avec des niveaux tarifaires F0 ou standard uniquement.
    • La ressource Azure AI services avec le niveau tarifaire S0.

Créer une ressource Azure AI Language

  1. Connectez-vous au portail Azure.

  2. Sélectionnez Créer une ressource, puis accédez à IA + Machine Learning>Langue. Vous pouvez également accéder à Créer une ressource Langue.

  3. Entrez tous les paramètres obligatoires :

    Paramètre Valeur
    Nom Entrez un nom (2-64 caractères).
    Abonnement Sélectionnez l’abonnement approprié.
    Emplacement Sélectionnez un emplacement proche.
    Niveau tarifaire Entrez S, le niveau tarifaire standard.
    Resource group Sélectionnez un groupe de ressources disponible.
  4. Sélectionnez Créer et attendez que la ressource soit créée. Votre navigateur vous redirige automatiquement vers la page de la ressource créée.

  5. Collectez endpoint configuré et une clé d’API :

    Onglet Ressource dans le portail Paramètre Valeur
    Vue d'ensemble Point de terminaison Copiez le point de terminaison. Il ressemble à https://my-resource.cognitiveservices.azure.com/text/analytics/v3.0.
    Clés Clé de l’API Copiez l’une des deux clés. Il s’agit d’une chaîne de 32 caractères alphanumériques sans espaces ni tirets, <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>.

Créer une ressource de cluster Azure Kubernetes Service

  1. Accédez à Azure Kubernetes Service, puis sélectionnez Créer.

  2. Sous l’onglet De base, entrez les informations suivantes :

    Paramètre Valeur
    Abonnement Sélectionnez un abonnement approprié.
    Resource group Sélectionnez un groupe de ressources disponible.
    Nom du cluster Kubernetes Entrer un nom (en minuscules).
    Région Sélectionnez un emplacement proche.
    Version de Kubernetes Quelle que soit la valeur marquée (par défaut) .
    Préfixe du nom DNS Créé automatiquement, mais vous pouvez le remplacer.
    Taille du nœud Standard DS2 v2 :
    2 vCPUs, 7 GB
    Nombre de nœuds Conservez la valeur par défaut pour le curseur.
  3. Sous l’onglet Pools de nœuds, conservez les valeurs par défaut définies pour Nœuds virtuels et Groupes de machines virtuelles identiques.

  4. Sur l’onglet Authentification, conservez les valeurs par défaut définies pour Principal du service et Activer RBAC.

  5. Sur l’onglet Mise en réseau, entrez les informations suivantes :

    Paramètre Valeur
    Routage d’applications HTTP Non
    Configuration de la mise en réseau De base
  6. Sous l’onglet Intégrations, veillez à définir Supervision de conteneur sur Oui et laissez Espace de travail Log Analytics comme valeur par défaut.

  7. Sur l’onglet Balises, laissez les paires nom/valeur vide pour l’instant.

  8. Sélectionnez Examiner et créer.

  9. Une fois la validation réussie, sélectionnez Créer.

Notes

Si la validation échoue, cela peut être dû à une erreur du « principal du service ». Revenez à l’onglet Authentification, puis à Vérifier + créer, où la validation doit s’exécuter et réussir.

Déployer le conteneur Extraction de phrases clés vers un cluster AKS

  1. Ouvrir Azure CLI et se connecter à Azure.

    az login
    
  2. Connectez-vous au cluster AKS. Remplacez your-cluster-name et your-resource-group par les valeurs appropriées.

    az aks get-credentials -n your-cluster-name -g -your-resource-group
    

    Une fois cette commande exécutée, elle signale un message similaire au message suivant :

    Merged "your-cluster-name" as current context in /home/username/.kube/config
    

    Avertissement

    Si plusieurs abonnements sont disponibles sur votre compte Azure et que la commande az aks get-credentials renvoie une erreur, le problème peut être que vous n’utilisez pas l’abonnement approprié. Définissez le contexte de votre session Azure CLI pour utiliser le même abonnement avec lequel vous avez créé les ressources, puis réessayez.

     az account set -s subscription-id
    
  3. Ouvrez l’éditeur de texte de votre choix. L’exemple suivant utilise Visual Studio Code.

    code .
    
  4. Dans l’éditeur de texte, créez un nouveau fichier nommé keyphrase.yaml et collez-y le fichier YAML suivant. Assurez-vous de remplacer les valeurs billing/value et apikey/value par vos propres informations.

    apiVersion: apps/v1beta1
    kind: Deployment
    metadata:
      name: keyphrase
    spec:
      template:
        metadata:
          labels:
            app: keyphrase-app
        spec:
          containers:
          - name: keyphrase
            image: mcr.microsoft.com/azure-cognitive-services/keyphrase
            ports:
            - containerPort: 5000
            resources:
              requests:
                memory: 2Gi
                cpu: 1
              limits:
                memory: 4Gi
                cpu: 1
            env:
            - name: EULA
              value: "accept"
            - name: billing
              value: # {ENDPOINT_URI}
            - name: apikey
              value: # {API_KEY}
    
    --- 
    apiVersion: v1
    kind: Service
    metadata:
      name: keyphrase
    spec:
      type: LoadBalancer
      ports:
      - port: 5000
      selector:
        app: keyphrase-app
    

Important

N’oubliez pas de supprimer la clé de votre code une fois que vous avez terminé, et ne la postez jamais publiquement. Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations, consultez l’article sur la sécurité d’Azure AI services.

  1. Enregistrez le fichier et fermez l’éditeur de texte.

  2. Exécutez la commande Kubernetes apply avec le fichier keyphrase.yaml comme cible :

    kubectl apply -f keyphrase.yaml
    

    Une fois la configuration de déploiement correctement appliquée par la commande, un message similaire à la sortie suivante s’affiche :

    deployment.apps "keyphrase" created
    service "keyphrase" created
    
  3. Vérifiez que le pod a été déployé :

    kubectl get pods
    

    Vous obtiendrez ainsi l’état d’exécution du pod :

    NAME                         READY     STATUS    RESTARTS   AGE
    keyphrase-5c9ccdf575-mf6k5   1/1       Running   0          1m
    
  4. Vérifiez que le service est disponible et obtenez l’adresse IP.

    kubectl get services
    

    Sortie de l’état d’exécution du service KeyPhrase dans le pod :

    NAME         TYPE           CLUSTER-IP    EXTERNAL-IP      PORT(S)          AGE
    kubernetes   ClusterIP      10.0.0.1      <none>           443/TCP          2m
    keyphrase    LoadBalancer   10.0.100.64   168.61.156.180   5000:31234/TCP   2m
    

Vérifier l’instance de conteneur Extraction de phrases clés

  1. Sélectionnez l’onglet Vue d’ensemble et copiez l’adresse IP.

  2. Ouvrez un nouvel onglet de navigateur et entrez l’adresse IP. Par exemple, entrez http://<IP-address>:5000 (http://55.55.55.55:5000. La page d’accueil du conteneur s’affiche, vous informant que le conteneur est en cours d’exécution.

    Affichez la page d’accueil du conteneur pour vérifier qu’elle est en cours d’exécution

  3. Veuillez sélectionner le lien Description de l’API de service pour accéder à la page Swagger des conteneurs.

  4. Choisissez une des API POST et sélectionnez Essayer. Les paramètres sont affichés, y compris cet exemple d’entrée :

    {
      "documents": [
        {
          "id": "1",
          "text": "Hello world"
        },
        {
          "id": "2",
          "text": "Bonjour tout le monde"
        },
        {
          "id": "3",
          "text": "La carretera estaba atascada. Había mucho tráfico el día de ayer."
        },
        {
          "id": "4",
          "text": ":) :( :D"
        }
      ]
    }
    
  5. Remplacez l’entrée par le contenu JSON suivant :

    {
      "documents": [
        {
          "language": "en",
          "id": "7",
          "text": "I was fortunate to attend the KubeCon Conference in Barcelona, it is one of the best conferences I have ever attended. Great people, great sessions and I thoroughly enjoyed it!"
        }
      ]
    }
    
  6. Définissez showStats sur true.

  7. Sélectionnez Exécuter pour déterminer le sentiment du texte.

    Le modèle empaqueté dans le conteneur génère un score compris entre 0 et 1, où 0 est négatif et 1 est positif.

    La réponse JSON retournée inclut le sentiment pour l’entrée de texte mise à jour :

    {
      "documents": [
        {
          "id": "7",
          "keyPhrases": [
            "Great people",
            "great sessions",
            "KubeCon Conference",
            "Barcelona",
            "best conferences"
          ],
          "statistics": {
            "charactersCount": 176,
            "transactionsCount": 1
          }
        }
      ],
      "errors": [],
      "statistics": {
        "documentsCount": 1,
        "validDocumentsCount": 1,
        "erroneousDocumentsCount": 0,
        "transactionsCount": 1
      }
    }
    

Nous pouvons maintenant corréler le document id des données JSON de la charge utile de réponse avec le document id de la charge utile de la requête d’origine. Le document résultant possède un tableau keyPhrases qui contient la liste des phrases clés extraites du document d’entrée correspondant. De plus, il existe différentes statistiques, telles que characterCount et transactionCount, pour chaque document résultant.

Étapes suivantes