Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 egy Cognitive Search-bővítési folyamatban 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 fog létrehozni, amely előrejelzi az autó árát, és AML-képességként meghívja a következtetési végpontot.
Kövesse a Regresszió – Automobile Price Prediction (Advanced) oktatóanyagot a példák folyamatainak és adatkészleteinek dokumentációs oldalán egy olyan modell létrehozásához, amely előrejelzi az 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 a Cognitive Search AML-képességével nem 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 a lépéseket követve töltse le a trained_model_outputs mappában lévő összes fájlt, vagy töltse le csak a score.pyconda_env.yml modellek összetevőlapjáról származó fájlokat. 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 használatával használható pontozószkript szerkesztése
A Cognitive Search bővítési folyamatai egyetlen dokumentumon működnek, és létrehoznak egy kérést, amely egyetlen előrejelzés bemeneteit tartalmazza. A letöltött score.py 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 listával
- Szerkessze a szkriptet egy JSON-objektum visszaadásához egyetlen tulajdonsággal, az előrejelzett ármal.
Nyissa meg a letöltött score.py, és szerkessze a run(data) függvényt. A függvény jelenleg a következő bemenetre számít a modell _samples.json fájljában 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 ki a 27–30. sorokat a
for key, val in data.items():
input_entry[key].append(decode_nan(val))
Emellett szerkesztenie kell a szkript által egy sztringből egy JSON-objektumba létrehozott kimenetet is. Szerkessze a visszatérési utasítást (37. sor) az eredeti fájlban a következőre:
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 egyetlen rekordot fogad bemenetként, és egy JSON-objektumot ad vissza az előre jelzett á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ésével mostantól regisztrálhatja a modellt a portálon. Válassza ki a regisztrációs modellt, és adjon meg egy érvényes nevet. Válassza a Other lehetőséget a Modellkeretrendszerhez, a Custom lehetőséget a Keretrendszer nevéhez, és a 1.0 lehetőséget a Keretrendszer verziójához. Válassza a Upload folder lehetőséget, és válassza ki a frissített score.py és conda_env.yamlmappát.
Válassza ki a modellt, és válassza ki a Deploy műveletet. Az üzembe helyezési lépés feltételezi, hogy rendelkezésre áll egy AKS-következtetési fürt. A tárolópéldányokat jelenleg nem támogatja a Cognitive Search szolgáltatás.
- Adjon meg érvényes végpontnevet
- Válassza ki a
Azure Kubernetes Serviceszámítási típusát - Válassza ki a következtetési fürt számítási nevét
- Kapcsolja be a
enable authentication-t - Válassza ki a
Key-based authenticationtípust - Válassza ki a frissített
score.pyaentry script fileszámára. - Válassza ki a
conda_env.yamlconda dependencies fileszámára - Válassza az üzembe helyezés gombot az új végpont üzembe helyezéséhez.
Integráció a Cognitive Search szolgáltatással
Az újonnan létrehozott végpont integrálása a Cognitive Search szolgáltatással
- Egyetlen autórekordot tartalmazó JSON-fájl hozzáadása blobtárolóhoz
- Konfiguráljon egy AI-bővítési folyamatot az Adatok importálása varázslóval. Győződjön meg róla, hogy
JSONvan kiválasztvaparsing mode-ként. - A
Add Enrichmentslapon jelöljön ki egyetlen készségetExtract people nameshelyőrzőnek. - Adjon hozzá egy új mezőt a
predicted_pricetípusúEdm.Doublenevű indexhez, állítsa a Beolvasható tulajdonság értékét igaz értékre. - Az adatimportálási folyamat befejezése
Az AML-képesség hozzáadása a készségkészlethez
A készségkészletek listájában válassza ki a létrehozott készségkészletet. Most szerkessze a készségkészletet, hogy lecserélje a személyazonosítási készséget az AML-képességre az árak előrejelzéséhez.
A Skillset Definition (JSON) lapon válassza ki a Azure Machine Learning (AML) a készsé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óanyagban korábban létrehozott végpontot.
Ellenőrizze, hogy a képesség ki van-e töltve a végpont üzembe helyezésekor konfigurált URI- és hitelesítési adatokkal. Másolja ki a képességsablont, és cserélje le a képességcsoportban lévő képességet.
Szerkeszd a képességet erre:
- Állítsa be a nevet érvényesre.
- Leírás hozzáadása
- Állítsa a degreesOfParallelism értékét 1-re
- A kontextus beállítása
/document - Állítsa be a bemeneteket az összes szükséges bemenetre, lásd az alábbi minta készségdefiníciót
- Á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 gazdagításokat 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éből származó eredménnyel van-e feltöltve az indexben.