Distribuera en container för extrahering av nyckelfraser till Azure Kubernetes Service
Lär dig hur du distribuerar en dockercontaineravbildning för nyckelfrasextrahering till Azure Kubernetes Service (AKS). Den här proceduren visar hur du skapar en språkresurs, hur du associerar en containeravbildning och hur du använder orkestreringen av de två från en webbläsare. Att använda containrar kan flytta uppmärksamheten från att hantera infrastrukturen till att i stället fokusera på programutveckling. Den här artikeln använder containern för extrahering av nyckelfraser som exempel, men du kan använda den här processen för andra containrar som erbjuds av Azure AI Language
Förutsättningar
Den här proceduren kräver flera verktyg som måste installeras och köras lokalt. Använd inte Azure Cloud Shell. Du behöver följande:
- En Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
- En textredigerare, till exempel Visual Studio Code.
- Azure CLI installerat.
- Kubernetes CLI installerat.
- En Azure-resurs med rätt prisnivå. Alla prisnivåer fungerar inte med den här containern:
- Azure AI Language-resurs med endast F0- eller standardprisnivåer.
- Azure AI-tjänstresurs med prisnivån S0.
Skapa en Azure AI Language-resurs
Logga in på Azure-portalen.
Välj Skapa en resurs och gå sedan till AI + Machine Learning>Language. Eller gå till Skapa en språkresurs.
Ange alla nödvändiga inställningar:
Inställning Värde Namn Ange ett namn (2–64 tecken). Prenumeration Välj lämplig prenumeration. Plats Välj en närliggande plats. Prisnivå Ange S, standardprisnivån. Resursgrupp Välj en tillgänglig resursgrupp. Klicka på Skapa och vänta tills resursen har skapats. Webbläsaren omdirigeras automatiskt till den nyligen skapade resurssidan.
Samla in den konfigurerade
endpoint
och en API-nyckel:Fliken Resurs i portalen Inställningen Värde Översikt Slutpunkt Kopiera slutpunkten. Det verkar likna https://my-resource.cognitiveservices.azure.com/text/analytics/v3.0
.Nycklar API-nyckel Kopiera en av de två nycklarna. Det är en alfanumerisk sträng på 32 tecken utan blanksteg eller bindestreck: < xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
>.
Skapa en Azure Kubernetes Service klusterresurs
Gå till Azure Kubernetes Service och välj Skapa.
På fliken Grundläggande anger du följande information:
Inställningen Värde Prenumeration Välj en lämplig prenumeration. Resursgrupp Välj en tillgänglig resursgrupp. Kubernetes-klusternamn Ange ett namn (gemener). Region Välj en närliggande plats. Kubernetes-version Det värde som har markerats som (standard). DNS-namnprefix Skapas automatiskt, men du kan åsidosätta. Nodstorlek Standard DS2 v2: 2 vCPUs
,7 GB
Nodantal Låt skjutreglaget vara kvar på standardvärdet. På fliken Nodpooler låter du Virtuella noder och VM-skalningsuppsättningar vara inställda på standardvärdena.
På fliken Autentisering lämnar du tjänstens huvudnamn och Aktivera RBAC inställt på standardvärdena.
På fliken Nätverk anger du följande val:
Inställningen Värde Routning av HTTP-program No Nätverkskonfiguration Basic På fliken Integreringar kontrollerar du att Containerövervakning är inställt på Aktiverad och lämnar Log Analytics-arbetsytan som standardvärde.
Lämna namn/värde-paren tomma tills vidare på fliken Taggar .
Välj Granska och skapa.
När verifieringen har godkänts väljer du Skapa.
Anteckning
Om verifieringen misslyckas kan det bero på felet "Tjänstens huvudnamn". Gå tillbaka till fliken Autentisering och gå sedan tillbaka till Granska + skapa, där valideringen ska köras och sedan skickas.
Distribuera containern extrahering av nyckelfraser till ett AKS-kluster
Öppna Azure CLI och logga in på Azure.
az login
Logga in på AKS-klustret. Ersätt
your-cluster-name
ochyour-resource-group
med lämpliga värden.az aks get-credentials -n your-cluster-name -g -your-resource-group
När det här kommandot har körts rapporterar det ett meddelande som liknar följande:
Merged "your-cluster-name" as current context in /home/username/.kube/config
Varning
Om du har flera prenumerationer tillgängliga för dig på ditt Azure-konto och
az aks get-credentials
kommandot returneras med ett fel är ett vanligt problem att du använder fel prenumeration. Ange kontexten för Azure CLI-sessionen så att den använder samma prenumeration som du skapade resurserna med och försök igen.az account set -s subscription-id
Öppna valfri textredigerare. I det här exemplet används Visual Studio Code.
code .
I textredigeraren skapar du en ny fil med namnet keyphrase.yaml och klistrar in följande YAML i den. Se till att ersätta
billing/value
ochapikey/value
med din egen information.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
Viktigt
Kom ihåg att ta bort nyckeln från koden när du är klar och publicera den aldrig offentligt. För produktion använder du ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter som Azure Key Vault. Mer information finns i säkerhetsartikeln om Azure AI-tjänster.
Spara filen och stäng textredigeraren.
Kör Kubernetes-kommandot
apply
med filen keyphrase.yaml som mål:kubectl apply -f keyphrase.yaml
När kommandot har tillämpat distributionskonfigurationen visas ett meddelande som liknar följande utdata:
deployment.apps "keyphrase" created service "keyphrase" created
Kontrollera att podden har distribuerats:
kubectl get pods
Utdata för poddens körningsstatus:
NAME READY STATUS RESTARTS AGE keyphrase-5c9ccdf575-mf6k5 1/1 Running 0 1m
Kontrollera att tjänsten är tillgänglig och hämta IP-adressen.
kubectl get services
Utdata för körningsstatusen för keyphrase-tjänsten i podden:
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
Verifiera containerinstansen extrahering av nyckelfraser
Välj fliken Översikt och kopiera IP-adressen.
Öppna en ny webbläsarflik och ange IP-adressen. Ange
http://<IP-address>:5000 (http://55.55.55.55:5000
till exempel ). Containerns startsida visas, vilket gör att du vet att containern körs.Välj länken Beskrivning av tjänst-API för att gå till containerns Swagger-sida.
Välj något av POST-API :erna och välj Prova. Parametrarna visas, som innehåller följande exempelindata:
{ "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" } ] }
Ersätt indata med följande JSON-innehåll:
{ "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!" } ] }
Ange showStats till
true
.Välj Kör för att fastställa attityden i texten.
Modellen som paketeras i containern genererar en poäng som sträcker sig från 0 till 1, där 0 är negativ och 1 är positiv.
JSON-svaret som returneras innehåller sentiment för den uppdaterade textinmatningen:
{ "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 } }
Nu kan vi korrelera dokumentet id
för svarsnyttolastens JSON-data med det ursprungliga nyttolastdokumentet id
för begäran. Det resulterande dokumentet har en keyPhrases
matris som innehåller listan över nyckelfraser som har extraherats från motsvarande indatadokument. Dessutom finns det olika statistik, till exempel characterCount
och transactionCount
för varje resulterande dokument.