Aangepaste vaardigheid voor machine learning

Voltooid

Het gebruik van een aangepaste machine learning-vaardigheid werkt hetzelfde als het toevoegen van andere aangepaste vaardigheden aan een zoekindex.

Hier ziet u hoe het gebruik van de AmlSkill aangepaste vaardigheid verschilt en bekijkt u de overwegingen over hoe u deze effectief kunt gebruiken.

Aangepast azure Machine Learning-vaardigheidsschema

Wanneer u een zoekindex verrijkt met een aangepaste AML-vaardigheid (Azure Machine Learning), vindt de verrijking plaats op documentniveau. De vaardighedenset die door uw documentindexeerfunctie wordt gebruikt, moet een AmlSkill. Het schema voor deze vaardigheid is:

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

Belangrijk

De URI moet een HTTPS-eindpunt gebruiken. Dit kan een beheerd aangepast URL-adres zijn dat wordt verstrekt door Microsoft of uw eigen domeinnaam en certificaat.

Houd er rekening mee dat de aangepaste vaardigheid geen instellingen bevat voor batchSize omdat het AML-model één document tegelijk verwerkt. De overige instellingen die de prestaties van de vaardigheid bepalen, zijn timeout en degreeOfParallelism. Het bovenstaande schema heeft 30 seconden ingesteld als time-outwaarde. De mate van parallelle uitvoering moet beginnen bij één. Afhankelijk van uw infrastructuur kunt u dit aantal mogelijk verhogen.

De beste manier om de efficiëntie van een AML-vaardigheid te beheren, is door het Kubernetes-deductiecluster op de juiste manier op te schalen om uw workload te beheren.

De index voor het document heeft een veld nodig om de resultaten van het AML-model op te slaan. Vervolgens voegt u een toewijzing van een uitvoerveld toe om de resultaten van de aangepaste vaardighedenset op te slaan in het veld in het document in de index.

De JSON om deze uitvoerveldtoewijzing uit te voeren is:

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

U maakt uw Azure Machine Learning-model met behulp van ontwikkelhulpprogramma's zoals de Python SDK, REST API's of Azure CLI. Een andere optie is om te profiteren van azure AI Machine Learning Studio, een grafische gebruikersinterface waarmee u modellen kunt maken, trainen en implementeren zonder code te schrijven.

Diagram met de stappen voor het verrijken van een zoekindex met een Azure AI Machine Learning Studio-model.

Wanneer u een model hebt gemaakt, wijzigt u de manier waarop de scorecode het model aanroept, zodat het kan worden gebruikt door uw vaardigheid voor aangepaste zoekopdrachten.

De laatste stappen zijn het maken van een Kubernetes-cluster om een eindpunt voor uw model te hosten.

Een AML-werkruimte maken

Wanneer u de AML-werkruimte maakt, maakt Azure ook opslagaccounts, een sleutelarchief en Application Insights-resources. In het deelvenster Overzicht van de AML-werkruimte krijgt u een koppeling om Azure AI Machine Learning Studio te starten.

Een model maken en trainen in Azure Machine Learning-studio

Met Azure AI Machine Learning Studio kunt u een ontwerper gebruiken om slepen en neerzetten te gebruiken om pijplijnen te maken waarmee modellen worden gemaakt en getraind. Er is een nog eenvoudigere manier om modellen te maken met behulp van vooraf gemaakte sjablonen.

Schermopname van alle vooraf gedefinieerde onderdelen in Azure AI Machine Learning Studio.

U kiest er echter voor om uw modellen te maken. Ze moeten worden geregistreerd in Azure AI Machine Learning Studio, zodat u het model kunt implementeren in een webservice.

Wijzigen hoe het model werkt zodat het kan worden aangeroepen door de aangepaste AML-vaardigheid

De modellen die u traint, gebruiken normaal gesproken veel voorbeelden van de gegevens. De gegevenssets hebben veel rijen en worden gesplitst en gebruikt om het model te trainen en te testen. De code die deze gegevens verwerkt en doorgeeft aan het model, moet worden gewijzigd om enkele rijen te verwerken.

Het JSON-antwoord van het model mag ook alleen de uitvoervoorspelling bevatten.

Als uw gegevens bijvoorbeeld een matrix van JSON-objecten zijn:

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

De python-scorecode moet de gegevens tegelijk verwerken:

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

De invoergegevensset wijzigen in één record:

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

De Python-code moet worden gewijzigd in:

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

Voor het antwoord van de scorecode retourneert de standaardcode het hele JSON-document:

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

De aangepaste vaardigheid moet één antwoord van het model kunnen toewijzen. De code moet dus JSON retourneren die alleen het laatste kenmerk is.

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

Een eindpunt maken voor uw model dat u wilt gebruiken

Het model wordt geïmplementeerd op een eindpunt. Azure AI Machine Learning Studio biedt ondersteuning voor het implementeren van een model naar een realtime-eindpunt, een batch-eindpunt of een webservice. Op dit moment biedt de aangepaste AmlSkill vaardigheid in Azure AI Search alleen ondersteuning voor webservice-eindpunten.

De andere beperking is dat het eindpunt een AKS-cluster (Azure Kubernetes Service) moet zijn. Containerinstanties worden niet ondersteund.

Als u ervaring hebt met het maken en beheren van AKS-clusters, kunt u de clusters handmatig maken in Azure Portal en ernaar verwijzen wanneer u uw eindpunt maakt. Een eenvoudigere optie is echter om Azure AI Machine Learning Studio het cluster voor u te laten maken en beheren.

Als u naar de rekensectie van de studio navigeert, kunt u deductieclusters maken. AML Studio begeleidt u vervolgens bij het kiezen van de grootte van het cluster en zelfs https inschakelen en een domeinnaam voor u maken. Deze heeft de indeling location.cloudapp.azure.com:443.

De aangepaste AML-vaardigheid verbinden met het eindpunt

Nu alles hierboven is ingesteld, moet u uw Azure AI-Search-service bijwerken. De stappen hiervoor zijn vergelijkbaar met voorbeelden die in deze module worden weergegeven, dus we beschrijven hier niet de details, maar vermelden de stappen die u moet volgen.

  1. Als u eerst uw zoekindex wilt verrijken, voegt u een nieuw veld toe aan uw index om de uitvoer voor het model op te nemen.
  2. Vervolgens werkt u uw vaardighedenset voor indexen bij en voegt u de #Microsoft.Skills.Custom.AmlSkill aangepaste vaardigheid toe.
  3. Vervolgens wijzigt u de indexeerfunctie om de uitvoer van de aangepaste vaardigheid toe te wijzen aan het veld dat u in de index hebt gemaakt.
  4. De laatste stap is het opnieuw uitvoeren van de indexeerfunctie om uw index te verrijken met het AML-model.