Bereitstellen eines Containers für die Schlüsselbegriffserkennung in Azure Kubernetes Service

Erfahren Sie, wie Sie einen Docker-Container für die Schlüsselbegriffserkennung in Azure Kubernetes Service (AKS) bereitstellen. In diesem Verfahren wird gezeigt, wie Sie eine Language-Ressource erstellen, ein Containerimage zuordnen und die Orchestrierung der beiden über einen Browser durchführen. Die Verwendung von Containern kann Ihre Aufmerksamkeit von der Verwaltung der Infrastruktur auf die Anwendungsentwicklung lenken. In diesem Artikel wird der Prozess zwar beispielhaft für einen Container für die Schlüsselbegriffserkennung dargestellt, Sie können ihn jedoch auch für andere Container verwenden, die von Azure KI Language angeboten werden.

Voraussetzungen

Für dieses Verfahren müssen mehrere Tools lokal installiert und ausgeführt werden. Verwenden Sie nicht Azure Cloud Shell. Sie benötigen Folgendes:

  • Ein Azure-Abonnement. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
  • Einen Text-Editor, z.B. Visual Studio Code.
  • Die Azure CLI muss installiert sein.
  • Die Kubernetes CLI muss installiert sein.
  • Eine Azure-Ressource mit dem korrekten Tarif. Nicht alle Tarife können mit diesem Container verwendet werden:
    • Azure KI Language-Ressource nur mit F0- oder Standard-Tarif
    • Azure KI Services-Ressource mit dem S0-Tarif.

Erstellen einer Azure KI Language-Ressource

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie Ressource erstellen aus, und navigieren Sie dann zu KI + Machine Learning>Sprache. Oder navigieren Sie zu Create a Language resource (Sprachressource erstellen).

  3. Geben Sie alle erforderlichen Einstellungen ein:

    Einstellung Wert
    Name Geben Sie einen Namen ein (2–64 Zeichen).
    Subscription Wählen Sie das entsprechende Abonnement aus.
    Standort Wählen Sie einen nahe gelegenen Speicherort aus.
    Tarif Geben Sie S als Standardtarif ein.
    Resource group Wählen Sie eine verfügbare Ressourcengruppe aus.
  4. Klicken Sie auf Erstellen, und warten Sie, bis die Ressource erstellt wurde. Ihr Browser leitet Sie automatisch zur neu erstellten Ressourcenseite weiter.

  5. Rufen Sie den konfigurierten endpoint und einen API-Schlüssel ab:

    Registerkarte „Ressource“ im Portal Einstellung Wert
    Übersicht Endpunkt Kopieren Sie den Endpunkt. Dieser sieht etwa so aus: https://my-resource.cognitiveservices.azure.com/text/analytics/v3.0.
    Schlüssel API-Schlüssel Kopieren Sie einen der beiden Schlüssel. Es handelt sich um eine aus 32 alphanumerischen Zeichen bestehende Zeichenfolge ohne Leerzeichen oder Bindestriche: <xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>.

Erstellen einer Azure Kubernetes Service-Clusterressource

  1. Wechseln Sie zu Azure Kubernetes Service, und klicken Sie auf Erstellen.

  2. Geben Sie folgende Informationen auf der Registerkarte Grundeinstellungen an:

    Einstellung Wert
    Subscription Wählen Sie ein entsprechendes Abonnement aus.
    Resource group Wählen Sie eine verfügbare Ressourcengruppe aus.
    Kubernetes-Clustername Geben Sie einen Namen ein (Kleinbuchstaben).
    Region Wählen Sie einen nahe gelegenen Speicherort aus.
    Kubernetes-Version Jeder Wert, der als (Standard) markiert ist.
    DNS-Namenspräfix Wird automatisch erstellt, kann jedoch überschrieben werden.
    Knotengröße Standard DS2 v2:
    2 vCPUs, 7 GB
    Knotenanzahl Lassen Sie den Schieberegler auf dem Standardwert.
  3. Behalten Sie auf der Registerkarte Knotenpools die Standardwerte für virtuelle Knoten und VM-Skalierungsgruppen bei.

  4. Behalten Sie Registerkarte Authentifizierung die Standardwerte für Dienstprinzipal und RBAC aktivieren bei.

  5. Geben Sie auf der Registerkarte Netzwerk die folgende Auswahl ein:

    Einstellung Wert
    HTTP-Anwendungsrouting Nein
    Netzwerkkonfiguration Basic
  6. Stellen Sie auf der Registerkarte Integrationen sicher, dass Containerüberwachung auf Aktiviert festgelegt ist, und behalten Sie den Standardwert für den Log Analytics-Arbeitsbereich bei.

  7. Lassen Sie auf der Registerkarte Tags die Name/Wert-Paare vorerst leer.

  8. Klicken Sie auf Überprüfen und erstellen.

  9. Wenn die Überprüfung erfolgreich war, wählen Sie Erstellen aus.

Hinweis

Wenn bei der Überprüfung ein Fehler auftritt, ist der Grund dafür möglicherweise ein Fehler beim „Dienstprinzipal“. Navigieren Sie zurück zur Registerkarte Authentifizierung und dann zurück zu Überprüfen und erstellen, wo die Überprüfung ausgeführt und bestanden werden sollte.

Bereitstellen des Containers für die Schlüsselbegriffserkennung für einen AKS-Cluster

  1. Öffnen Sie die Azure CLI, und melden Sie sich bei Azure an.

    az login
    
  2. Melden Sie sich bei dem AKS-Cluster an. Ersetzen Sie your-cluster-name und your-resource-group durch die entsprechenden Werte.

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

    Nachdem dieser Befehl ausgeführt wurde, wird eine Meldung ähnlich der folgenden ausgegeben:

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

    Warnung

    Wenn Sie über mehrere Abonnements in Ihrem Azure-Konto verfügen und der az aks get-credentials-Befehl mit einem Fehler zurückgegeben wird, ist ein häufiges Problem, dass Sie das falsche Abonnement verwenden. Stellen Sie den Kontext Ihrer Azure CLI-Sitzung so ein, dass Sie das gleiche Abonnement verwenden, mit dem Sie die Ressourcen erstellt haben, und versuchen Sie es erneut.

     az account set -s subscription-id
    
  3. Öffnen Sie den Text-Editor Ihrer Wahl. In diesem Beispiel wird Visual Studio Code verwendet.

    code .
    
  4. Erstellen Sie im Text-Editor eine neue Datei namens keyphrase.yaml, und fügen Sie die folgende YAML darin ein. Achten Sie darauf, dass Sie billing/value und apikey/value durch Ihre eigenen Werte ersetzen.

    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
    

Wichtig

Denken Sie daran, den Schlüssel aus Ihrem Code zu entfernen, wenn Sie fertig sind, und ihn niemals zu veröffentlichen. Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen finden Sie im Artikel zur Azure KI Services-Sicherheit.

  1. Speichern Sie die Datei, und schließen Sie den Text-Editor.

  2. Führen Sie den Kubernetes-Befehl apply mit der Datei keyphrase.yaml als Ziel aus:

    kubectl apply -f keyphrase.yaml
    

    Nachdem der Befehl die Bereitstellungskonfiguration erfolgreich angewendet hat, wird eine Meldung ähnlich der folgenden Ausgabe angezeigt:

    deployment.apps "keyphrase" created
    service "keyphrase" created
    
  3. Überprüfen Sie, ob der Pod bereitgestellt wurde:

    kubectl get pods
    

    Die Ausgabe für den Ausführungsstatus des Pods:

    NAME                         READY     STATUS    RESTARTS   AGE
    keyphrase-5c9ccdf575-mf6k5   1/1       Running   0          1m
    
  4. Überprüfen Sie, ob der Dienst verfügbar ist, und rufen Sie die IP-Adresse ab.

    kubectl get services
    

    Die Ausgabe für den Ausführungsstatus des keyphrase-Diensts im 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
    

Überprüfen der Containerinstanz für die Schlüsselbegriffserkennung

  1. Wählen Sie die Registerkarte Übersicht aus, und kopieren Sie die IP-Adresse.

  2. Öffnen Sie eine neue Registerkarte im Browser, und geben Sie die IP-Adresse ein. Geben Sie zum Beispiel http://<IP-address>:5000 (http://55.55.55.55:5000) ein. Die Homepage des Containers wird angezeigt, in der Sie erkennen, dass der Container ausgeführt wird.

    Anzeigen der Homepage des Containers, um sicherzustellen, dass er ausgeführt wird

  3. Klicken Sie auf den Link Dienst-API-Beschreibung, um die Swagger-Seite des Containers aufzurufen.

  4. Wählen Sie eine der POST-APIs und dann Jetzt ausprobieren aus. Die Parameter werden angezeigt, einschließlich der folgenden Beispieleingabe:

    {
      "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. Ersetzen Sie die Eingabe durch folgenden JSON-Code:

    {
      "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. Legen Sie showStats auf true fest.

  7. Wählen Sie Ausführen aus, um die Stimmung des Texts zu bestimmen.

    Das im Container enthaltene Modell erzeugt einen Bewertungsbereich von 0 bis 1, wobei 0 negativ und 1 positiv ist.

    Die zurückgegebene JSON-Antwort enthält die Stimmung für die aktualisierte Texteingabe:

    {
      "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
      }
    }
    

Das Dokument id der in der Antwort enthaltenen JSON-Daten kann nun mit dem ursprünglichen Dokument id in Korrelation gebracht werden. Das resultierende Dokument weist ein keyPhrases-Array auf, das die Liste der Schlüsselbegriffe enthält, die aus dem entsprechenden Eingabedokument extrahiert wurden. Zusätzlich gibt es verschiedene Statistiken wie characterCount und transactionCount für jedes resultierende Dokument.

Nächste Schritte