Megosztás a következőn keresztül:


Példa: Egyéni képesség létrehozása és üzembe helyezése az Azure Machine Learning Designerrel (archiválva)

Ez a példa archiválva van, és nem támogatott. Elmagyarázta, hogyan használható az Azure Machine Learning Designer egy könnyen használható interaktív vászon, amellyel gépi tanulási modelleket hozhat létre olyan feladatokhoz, mint a regresszió és a besorolás. A tervező által a Cognitive Search bővítési folyamatában létrehozott modell meghívásához további lépésekre van szükség. Ebben a példában egy egyszerű regressziós modellt hoz létre egy autó árának előrejelzéséhez, és AML-képességként meghívja a következtetési végpontot.

Kövesse a Regresszió – Autóár-előrejelzés (Speciális) oktatóanyagot a példafolyamatok & adathalmazok dokumentációs oldalán egy olyan modell létrehozásához, amely előrejelzi egy autó árát a különböző funkciók alapján.

Fontos

A modell valós idejű következtetési folyamatot követő üzembe helyezése érvényes végpontot eredményez, de nem olyant, amelyet a Cognitive Search AML-képességével használhat.

Modell regisztrálása és eszközök letöltése

Miután betanított egy modellt, regisztrálja a betanított modellt, és kövesse a lépéseket a mappában lévő trained_model_outputs összes fájl letöltéséhez, vagy csak a és conda_env.yml a score.py fájl letöltéséhez a modellösszetevők oldaláról. A pontozási szkriptet a modell valós idejű következtetési végpontként való üzembe helyezése előtt fogja szerkeszteni.

A Cognitive Search bővítési folyamatai egyetlen dokumentumban működnek, és létrehoznak egy kérést, amely egyetlen előrejelzés bemeneteit tartalmazza. A letöltött score.py fájl elfogadja a rekordok listáját, és szerializált JSON-sztringként adja vissza az előrejelzések listáját. Két módosítást fog végrehajtani a score.py

  • Szerkessze a szkriptet úgy, hogy egyetlen bemeneti rekorddal működjön, nem egy listával
  • Szerkessze a szkriptet egy egyetlen tulajdonsággal rendelkező JSON-objektum visszaadásához, amely az előrejelzett ár.

Nyissa meg a letöltött score.py függvényt, és szerkessze a függvényt run(data) . A függvény jelenleg úgy van beállítva, hogy a következő bemenetre számítson a modell fájljában _samples.json leírtak szerint.

[
  {
    "symboling": 2,
    "make": "mitsubishi",
    "fuel-type": "gas",
    "aspiration": "std",
    "num-of-doors": "two",
    "body-style": "hatchback",
    "drive-wheels": "fwd",
    "engine-location": "front",
    "wheel-base": 93.7,
    "length": 157.3,
    "width": 64.4,
    "height": 50.8,
    "curb-weight": 1944,
    "engine-type": "ohc",
    "num-of-cylinders": "four",
    "engine-size": 92,
    "fuel-system": "2bbl",
    "bore": 2.97,
    "stroke": 3.23,
    "compression-ratio": 9.4,
    "horsepower": 68.0,
    "peak-rpm": 5500.0,
    "city-mpg": 31,
    "highway-mpg": 38,
    "price": 6189.0
  },
  {
    "symboling": 0,
    "make": "toyota",
    "fuel-type": "gas",
    "aspiration": "std",
    "num-of-doors": "four",
    "body-style": "wagon",
    "drive-wheels": "fwd",
    "engine-location": "front",
    "wheel-base": 95.7,
    "length": 169.7,
    "width": 63.6,
    "height": 59.1,
    "curb-weight": 2280,
    "engine-type": "ohc",
    "num-of-cylinders": "four",
    "engine-size": 92,
    "fuel-system": "2bbl",
    "bore": 3.05,
    "stroke": 3.03,
    "compression-ratio": 9.0,
    "horsepower": 62.0,
    "peak-rpm": 4800.0,
    "city-mpg": 31,
    "highway-mpg": 37,
    "price": 6918.0
  },
  {
    "symboling": 1,
    "make": "honda",
    "fuel-type": "gas",
    "aspiration": "std",
    "num-of-doors": "two",
    "body-style": "sedan",
    "drive-wheels": "fwd",
    "engine-location": "front",
    "wheel-base": 96.5,
    "length": 169.1,
    "width": 66.0,
    "height": 51.0,
    "curb-weight": 2293,
    "engine-type": "ohc",
    "num-of-cylinders": "four",
    "engine-size": 110,
    "fuel-system": "2bbl",
    "bore": 3.15,
    "stroke": 3.58,
    "compression-ratio": 9.1,
    "horsepower": 100.0,
    "peak-rpm": 5500.0,
    "city-mpg": 25,
    "highway-mpg": 31,
    "price": 10345.0
  }
]

A módosítások biztosítják, hogy a modell elfogadja a Cognitive Search által az indexelés során létrehozott bemenetet, amely egyetlen rekord.

{
    "symboling": 2,
    "make": "mitsubishi",
    "fuel-type": "gas",
    "aspiration": "std",
    "num-of-doors": "two",
    "body-style": "hatchback",
    "drive-wheels": "fwd",
    "engine-location": "front",
    "wheel-base": 93.7,
    "length": 157.3,
    "width": 64.4,
    "height": 50.8,
    "curb-weight": 1944,
    "engine-type": "ohc",
    "num-of-cylinders": "four",
    "engine-size": 92,
    "fuel-system": "2bbl",
    "bore": 2.97,
    "stroke": 3.23,
    "compression-ratio": 9.4,
    "horsepower": 68.0,
    "peak-rpm": 5500.0,
    "city-mpg": 31,
    "highway-mpg": 38,
    "price": 6189.0
}

Cserélje le a 27–30. sorokat a


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

Emellett szerkesztenie kell azt a kimenetet is, amelyet a szkript egy sztringből egy JSON-objektumba hoz létre. Szerkessze a return utasítást (37. sor) az eredeti fájlban a következő módon:

    output = result.data_frame.values.tolist()
    return {
        "predicted_price": output[0][-1]
    }

Itt látható a frissített run függvény a bemeneti formátum változásaival és az előrejelzett kimenettel, amely bemenetként egyetlen rekordot fogad el, és egy JSON-objektumot ad vissza az előrejelzett áron.

def run(data):
    data = json.loads(data)
    input_entry = defaultdict(list)
    # data is now a JSON object not a list of JSON objects
    for key, val in data.items():
        input_entry[key].append(decode_nan(val))

    data_frame_directory = create_dfd_from_dict(input_entry, schema_data)
    score_module = ScoreModelModule()
    result, = score_module.run(
        learner=model,
        test_data=DataTable.from_dfd(data_frame_directory),
        append_or_result_only=True)
    #return json.dumps({"result": result.data_frame.values.tolist()})
    output = result.data_frame.values.tolist()
    # return the last column of the the first row of the dataframe
    return  {
        "predicted_price": output[0][-1]
    }

A modell regisztrálása és üzembe helyezése

A módosítások mentése után már regisztrálhatja a modellt a portálon. Válassza a Regisztrációs modell lehetőséget, és adjon meg egy érvényes nevet. Válassza Other a Modell-keretrendszer, Custom a Keretrendszer neve és 1.0 a Keretrendszer verziója lehetőséget. Válassza ki a Upload folder lehetőséget, és válassza ki a frissített score.py és conda_env.yamla mappát.

Válassza ki a modellt, és válassza ki a Deploy műveletet. Az üzembe helyezési lépés feltételezi, hogy ki van építve egy AKS-következtetési fürt. A tárolópéldányok jelenleg nem támogatottak a Cognitive Searchben.

  1. Adjon meg érvényes végpontnevet
  2. Válassza ki a számítási típust Azure Kubernetes Service
  3. Válassza ki a következtetési fürt számítási nevét
  4. Kapcsoló be enable authentication állásba
  5. Válassza ki Key-based authentication a típust
  6. Válassza ki a frissített score.pyentry script file
  7. conda_env.yaml Válassza aconda dependencies file
  8. Válassza az üzembe helyezés gombot az új végpont üzembe helyezéséhez.

Az újonnan létrehozott végpont integrálása a Cognitive Search szolgáltatással

  1. Egyetlen autórekordot tartalmazó JSON-fájl hozzáadása blobtárolóhoz
  2. Konfiguráljon egy AI-bővítési folyamatot az Adatok importálása varázslóval. Ügyeljen arra, hogy a JSONparsing mode
  3. Add Enrichments A lapon jelöljön ki egyetlen képességet Extract people names helyőrzőként.
  4. Adjon hozzá egy új mezőt a típusú Edm.Doubleindexhezpredicted_price, állítsa a Retrieveable tulajdonságot true (igaz) értékre.
  5. Az adatimportálási folyamat befejezése

Az AML-képesség hozzáadása a képességcsoporthoz

A képességcsoportok listájából válassza ki a létrehozott képességcsoportot. Most szerkessze a képességcsoportot, hogy lecserélje a személyazonosítási készséget az AML-képességre az árak előrejelzéséhez. A Képességcsoport-definíció (JSON) lapon válasszon Azure Machine Learning (AML) a képességek legördülő listából. Válassza ki a munkaterületet, hogy az AML-képesség felderítse a végpontot, a munkaterületnek és a keresési szolgáltatásnak ugyanabban az Azure-előfizetésben kell lennie. Válassza ki az oktatóanyag korábbi részében létrehozott végpontot. Ellenőrizze, hogy a képesség a végpont üzembe helyezésekor konfigurált URI- és hitelesítési adatokkal van-e feltöltve. Másolja ki a képességsablont, és cserélje le a képességcsoportban lévő képességet. Szerkessze a képességet a következőre:

  1. A név beállítása érvényes névre
  2. Leírás hozzáadása
  3. Állítsa a DegreesOfParallelism értékét 1-re
  4. A környezet beállítása a következőre: /document
  5. Állítsa be a bemeneteket az összes szükséges bemenetre, lásd az alábbi minta készségdefiníciót
  6. Állítsa be a kimeneteket a visszaadott előrejelzett ár rögzítéséhez.
{
      "@odata.type": "#Microsoft.Skills.Custom.AmlSkill",
      "name": "AMLdemo",
      "description": "AML Designer demo",
      "context": "/document",
      "uri": "Your AML endpoint",
      "key": "Your AML endpoint key",
      "resourceId": null,
      "region": null,
      "timeout": "PT30S",
      "degreeOfParallelism": 1,
      "inputs": [
        {
          "name": "symboling",
          "source": "/document/symboling"
        },
        {
          "name": "make",
          "source": "/document/make"
        },
        {
          "name": "fuel-type",
          "source": "/document/fuel-type"
        },
        {
          "name": "aspiration",
          "source": "/document/aspiration"
        },
        {
          "name": "num-of-doors",
          "source": "/document/num-of-doors"
        },
        {
          "name": "body-style",
          "source": "/document/body-style"
        },
        {
          "name": "drive-wheels",
          "source": "/document/drive-wheels"
        },
        {
          "name": "engine-location",
          "source": "/document/engine-location"
        },
        {
          "name": "wheel-base",
          "source": "/document/wheel-base"
        },
        {
          "name": "length",
          "source": "/document/length"
        },
        {
          "name": "width",
          "source": "/document/width"
        },
        {
          "name": "height",
          "source": "/document/height"
        },
        {
          "name": "curb-weight",
          "source": "/document/curb-weight"
        },
        {
          "name": "engine-type",
          "source": "/document/engine-type"
        },
        {
          "name": "num-of-cylinders",
          "source": "/document/num-of-cylinders"
        },
        {
          "name": "engine-size",
          "source": "/document/engine-size"
        },
        {
          "name": "fuel-system",
          "source": "/document/fuel-system"
        },
        {
          "name": "bore",
          "source": "/document/bore"
        },
        {
          "name": "stroke",
          "source": "/document/stroke"
        },
        {
          "name": "compression-ratio",
          "source": "/document/compression-ratio"
        },
        {
          "name": "horsepower",
          "source": "/document/horsepower"
        },
        {
          "name": "peak-rpm",
          "source": "/document/peak-rpm"
        },
        {
          "name": "city-mpg",
          "source": "/document/city-mpg"
        },
        {
          "name": "highway-mpg",
          "source": "/document/highway-mpg"
        },
        {
          "name": "price",
          "source": "/document/price"
        }
      ],
      "outputs": [
        {
          "name": "predicted_price",
          "targetName": "predicted_price"
        }
      ]
    }

Az indexelő kimeneti mezőleképezéseinek frissítése

Az indexelő kimeneti mezőleképezései határozzák meg, hogy a rendszer milyen bővítéseket ment az indexbe. Cserélje le az indexelő kimeneti mezőleképezések szakaszát az alábbi kódrészletre:

"outputFieldMappings": [
    {
      "sourceFieldName": "/document/predicted_price",
      "targetFieldName": "predicted_price"
    }
  ]

Most már futtathatja az indexelőt, és ellenőrizheti, hogy a predicted_price tulajdonság az AML-képesség kimenetének eredményével van-e feltöltve az indexben.