Anpassad färdighet för maskininlärning

Slutförd

Att använda en anpassad maskininlärningsfärdighet fungerar på samma sätt som att lägga till andra anpassade kunskaper i ett sökindex.

Här får du se hur användningen av den anpassade färdigheten AmlSkill skiljer sig åt och utforskar övervägandena för hur du effektivt använder den.

Anpassat Kunskapsschema för Azure Machine Learning

När du berikar ett sökindex med en anpassad kunskap för Azure Machine Learning (AML) sker berikningen på dokumentnivå. Den kompetensuppsättning som används av dokumentindexeraren måste innehålla en AmlSkill. Schemat för den här färdigheten är:

{
      "@odata.type": "#Microsoft.Skills.Custom.AmlSkill",
      "name": "AML name",
      "description": "AML description",
      "context": "/document",
      "uri": "https://[Your AML endpoint]",
      "key": "Your AML endpoint key",
      "resourceId": null,
      "region": null,
      "timeout": "PT30S",
      "degreeOfParallelism": 1,
      "inputs": [
        {
          "name": "field name in the AML model",
          "source": "field from the document in the index"
        },
        {
          "name": "field name in the AML model",
          "source": "field from the document in the index"
        },

      ],
      "outputs": [
        {
          "name": "result field from the AML model",
          "targetName": "result field in the document"
        }
      ]
    }

Viktigt!

URI:n måste använda en HTTPS-slutpunkt. Detta kan antingen vara en hanterad anpassad URL-adress som tillhandahålls av Microsoft eller ditt eget domännamn och certifikat.

Observera att den anpassade färdigheten inte innehåller inställningar för batchSize eftersom AML-modellen bearbetar ett enda dokument i taget. De återstående inställningarna som styr kompetensens prestanda är timeout och degreeOfParallelism. Schemat ovan har angett 30 sekunder som timeout-värde. Graden av parallellitet bör börja vid ett. Beroende på din infrastruktur kanske du kan öka det här antalet.

Det bästa sättet att hantera effektiviteten hos en AML-färdighet är att skala upp Kubernetes-slutsatsdragningsklustret på lämpligt sätt för att hantera din arbetsbelastning.

Indexet för dokumentet behöver ett fält för att lagra resultatet från AML-modellen. Sedan lägger du till en mappning av utdatafält för att lagra resultaten från den anpassade kunskapsuppsättningen i fältet i dokumentet i indexet.

JSON för att göra den här utdatafältmappningen är:

"outputFieldMappings": [
    {
      "sourceFieldName": "/result field in the document",
      "targetFieldName": "result field from the AML model"
    }
  ]

Du skapar din Azure Machine Learning-modell med hjälp av utvecklarverktyg som Python SDK, REST API:er eller Azure CLI. Ett annat alternativ är att dra nytta av Azure AI Machine Learning Studio, ett grafiskt användargränssnitt som gör att du kan skapa, träna och distribuera modeller utan att skriva någon kod.

Diagram som visar stegen för att utöka ett sökindex med en Azure AI Machine Learning Studio-modell.

När en modell har skapats ändrar du hur bedömningskoden anropar modellen så att den kan användas av din anpassade sökfärdighet.

De sista stegen är att skapa ett Kubernetes-kluster som är värd för en slutpunkt för din modell.

Skapa en AML-arbetsyta

När du skapar AML-arbetsytan skapar Azure även lagringskonton, ett nyckellager och application insights-resurser. Fönstret Översikt över AML-arbetsyta ger dig en länk för att starta Azure AI Machine Learning Studio.

Skapa och träna en modell i Azure Machine Learning-studio

Med Azure AI Machine Learning Studio kan du använda en designer för att använda dra och släpp för att skapa pipelines som skapar och tränar modeller. Det finns ett ännu enklare sätt att skapa modeller med hjälp av fördefinierade mallar.

Skärmbild av alla fördefinierade komponenter i Azure AI Machine Learning Studio.

Men du väljer att skapa dina modeller, de måste registreras i Azure AI Machine Learning Studio så att du kan distribuera modellen till en webbtjänst.

Ändra hur modellen fungerar så att den kan anropas av den anpassade AML-färdigheten

De modeller som du tränar använder normalt många exempel på data. Datauppsättningarna har många rader och delas upp och används för att träna och testa modellen. Koden som hanterar dessa data och skickar dem till modellen måste ändras för att hantera enskilda rader.

JSON-svaret från modellen bör också endast innehålla utdataförutsägelse.

Om dina data till exempel är en matris med JSON-objekt:

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

Python-poängkoden måste bearbeta data en rad i taget:

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

Så här ändrar du indatauppsättningen till en enda post:

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

Python-koden måste ändras till:

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

För svaret från bedömningskoden returnerar standardkoden hela JSON-dokumentet:

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

Den anpassade färdigheten måste kunna mappa ett enda svar från modellen. Koden bör därför returnera JSON som bara är det sista attributet.

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

Skapa en slutpunkt för din modell att använda

Modellen distribueras till en slutpunkt. Azure AI Machine Learning Studio stöder distribution av en modell till en realtidsslutpunkt, en batchslutpunkt eller en webbtjänst. För närvarande stöder den anpassade AmlSkill färdigheten i Azure AI Search endast webbtjänstslutpunkter.

Den andra begränsningen är att slutpunkten måste vara ett AKS-kluster (Azure Kubernetes Service). Containerinstanser stöds inte.

Om du har erfarenhet av att skapa och hantera AKS-kluster kan du manuellt skapa klustren i Azure Portal och referera till dem när du skapar slutpunkten. Ett enklare alternativ är dock att låta Azure AI Machine Learning Studio skapa och hantera klustret åt dig.

Om du navigerar till beräkningsavsnittet i studion kan du skapa slutsatsdragningskluster. AML Studio vägleder dig sedan genom att välja storleken på klustret och till och med aktivera HTTPS och skapa ett domännamn åt dig. Den är i formatet location.cloudapp.azure.com:443.

Ansluta den anpassade AML-färdigheten till slutpunkten

Med allt ovanstående på plats måste du uppdatera din Azure AI-tjänsten Search. Stegen för att göra det liknar de exempel som visas i den här modulen, så vi kommer inte att beskriva detaljerna här, men kommer att lista ut de steg som ska följas.

  1. För att utöka sökindexet lägger du först till ett nytt fält i indexet för att inkludera utdata för modellen.
  2. Sedan uppdaterar du dina indexkunskaper och lägger till den anpassade färdigheten #Microsoft.Skills.Custom.AmlSkill .
  3. Därefter ändrar du indexeraren för att mappa utdata från den anpassade färdigheten till det fält som du skapade i indexet.
  4. Det sista steget är att köra indexeraren igen för att utöka ditt index med AML-modellen.