Vlastní dovednost strojového učení

Dokončeno

Použití vlastní dovednosti strojového učení funguje stejně jako přidání jakékoli jiné vlastní dovednosti do indexu vyhledávání.

Tady se dozvíte, jak se použití AmlSkill vlastní dovednosti liší, a prozkoumáte aspekty, jak ji efektivně používat.

Vlastní schéma dovedností služby Azure Machine Learning

Když rozšiřujete index vyhledávání vlastní dovedností služby Azure Machine Learning (AML), rozšiřování probíhá na úrovni dokumentu. Sada dovedností používaná indexerem dokumentů musí obsahovat .AmlSkill Schéma pro tuto dovednost je:

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

Důležité

Identifikátor URI musí používat koncový bod HTTPS. Může se jednat o spravovanou vlastní adresu URL, kterou poskytuje Microsoft, nebo vlastní název domény a certifikát.

Mějte na paměti, že vlastní dovednost neobsahuje nastavení, protože batchSize model AML zpracuje najednou jeden dokument. Zbývající nastavení, která řídí výkon dovednosti, jsou timeout a degreeOfParallelism. Výše uvedené schéma má nastaveno 30 sekund jako hodnotu časového limitu. Stupeň paralelismu by měl začínat na jednom. V závislosti na vaší infrastruktuře můžete toto číslo zvýšit.

Nejlepším způsobem, jak spravovat efektivitu dovednosti AML, je vertikálně navýšit kapacitu clusteru odvozování Kubernetes odpovídajícím způsobem pro správu úloh.

Index dokumentu potřebuje pole pro uložení výsledků z modelu AML. Pak přidáte mapování výstupního pole pro uložení výsledků z vlastní dovednosti nastavené na pole v dokumentu v indexu.

Toto mapování výstupních polí ve formátu JSON je následující:

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

Model Azure Machine Learning vytvoříte pomocí vývojářských nástrojů, jako jsou Python SDK, rozhraní REST API nebo Azure CLI. Další možností je využít sadu Azure AI Machine Learning Studio, grafické uživatelské rozhraní, které umožňuje vytvářet, trénovat a nasazovat modely bez psaní kódu.

Diagram znázorňující kroky pro obohacení indexu vyhledávání pomocí modelu nástroje Azure AI Machine Learning Studio

Když vytvoříte model, změníte způsob, jakým kód bodování volá model, aby ho mohl používat vlastní dovednost vyhledávání.

Posledním postupem je vytvoření clusteru Kubernetes pro hostování koncového bodu pro váš model.

Vytvoření pracovního prostoru AML

Při vytváření pracovního prostoru AML vytvoří Azure také účty úložiště, úložiště klíčů a prostředky Application Insights. Podokno Přehled pracovního prostoru AML poskytuje odkaz na spuštění nástroje Azure AI Machine Learning Studio.

Vytvoření a trénování modelu v studio Azure Machine Learning

Azure AI Machine Learning Studio umožňuje pomocí návrháře vytvářet kanály, které vytvářejí a trénují modely, pomocí přetažení. Existuje ještě jednodušší způsob, jak vytvářet modely pomocí předem připravených šablon.

Snímek obrazovky se všemi předem připravenými komponentami v nástroji Azure AI Machine Learning Studio

Rozhodnete se ale modely vytvořit, musí být zaregistrované v nástroji Azure AI Machine Learning Studio, abyste mohli model nasadit do webové služby.

Změna způsobu, jakým model funguje, aby ho mohl volat vlastní dovednost AML

Modely, které trénujete, obvykle používají mnoho příkladů dat. Datové sady budou mít mnoho řádků a budou rozděleny a použity k trénování a testování modelu. Kód, který zpracovává tato data a předává je do modelu, musí být změněn tak, aby zpracovával jednotlivé řádky.

Odpověď JSON z modelu by také měla obsahovat pouze výstupní predikci.

Pokud jsou například data polem objektů JSON:

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

Kód bodování Pythonu bude muset zpracovat data najednou:

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

Změna vstupní datové sady na jeden záznam:

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

Kód Pythonu se bude muset změnit na:

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

Pro odpověď z kódu bodování vrátí výchozí kód celý dokument JSON:

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

Vlastní dovednost musí být schopná namapovat jednu odpověď z modelu. Kód by tedy měl vrátit JSON, který je pouze posledním atributem.

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

Vytvoření koncového bodu pro použití modelu

Model se nasadí do koncového bodu. Azure AI Machine Learning Studio podporuje nasazení modelu do koncového bodu v reálném čase, dávkového koncového bodu nebo webové služby. V tuto chvíli vlastní AmlSkill dovednost ve službě Azure AI Search podporuje pouze koncové body webové služby.

Dalším omezením je, že koncový bod musí být clusterem Azure Kubernetes Service (AKS). Instance kontejnerů se nepodporují.

Pokud máte zkušenosti s vytvářením a správou clusterů AKS, můžete clustery vytvářet ručně na webu Azure Portal a odkazovat na ně při vytváření koncového bodu. Jednodušší možností je ale nechat Azure AI Machine Learning Studio vytvářet a spravovat cluster za vás.

Pokud přejdete do výpočetní části studia, můžete vytvořit clustery pro odvozování. AML Studio vás pak provede výběrem velikosti clusteru a dokonce povolením HTTPS a vytvořením názvu domény za vás. Bude ve formátu location.cloudapp.azure.com:443.

Připojení vlastní dovednosti AML ke koncovému bodu

Se vším výše uvedeným potřebujete aktualizovat Search Azure AI. Postup je podobný příkladům, které jsou uvedené v tomto modulu, a proto zde nebudeme podrobně popisovat, ale vypíšeme postup, který chcete provést.

  1. Nejprve pro obohacení indexu vyhledávání přidáte do indexu nové pole, které bude obsahovat výstup modelu.
  2. Pak aktualizujete sadu dovedností indexu a přidáte vlastní #Microsoft.Skills.Custom.AmlSkill dovednost.
  3. Dále změníte indexer tak, aby mapovat výstup z vlastní dovednosti na pole, které jste vytvořili v indexu.
  4. Posledním krokem je opětovné spuštění indexeru za účelem rozšíření indexu pomocí modelu AML.