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.
A KÖVETKEZŐRE VONATKOZIK:
Azure CLI ml-bővítmény v2 (aktuális)
Ebben a cikkben megismerheti az MLflow-modellek Azure Machine Learningben való üzembe helyezését valós idejű és kötegelt következtetés céljából, valamint az üzemelő példányok kezeléséhez használható különböző eszközöket.
Kód nélküli üzembe helyezés
Ha MLflow-modelleket helyez üzembe az Azure Machine Learningben, az egyéni modell üzembe helyezésével ellentétben nem kell pontozószkriptet vagy környezetet megadnia. Az Azure Machine Learning automatikusan létrehozza a pontozási szkriptet és a környezetet. Ezt a funkciót kód nélküli üzembe helyezésnek nevezzük.
Kód nélküli üzembe helyezés esetén az Azure Machine Learning:
- Biztosítja, hogy az MLflow modellben jelzett összes csomagfüggőség teljesüljön.
- Egy MLflow alaprendszerképet vagy válogatott környezetet biztosít, amely a következő elemeket tartalmazza:
- Az Azure Machine Learning következtetés végrehajtásához szükséges csomagok, beleértve a
mlflow-skinny. - A következtetés végrehajtásához használandó pontozó szkript.
- Az Azure Machine Learning következtetés végrehajtásához szükséges csomagok, beleértve a
Csomagok és függőségek
Az Azure Machine Learning automatikusan létrehoz környezeteket, hogy következtetést futtasson az MLflow-modelleken. A környezetek létrehozásához az Azure Machine Learning beolvassa az MLflow-modellben megadott Conda-függőségeket, és hozzáadja a következtetési kiszolgáló futtatásához szükséges csomagokat. Ezek az extra csomagok az üzembe helyezés típusától függően változnak.
Az alábbi conda.yaml fájl egy MLflow-modellben megadott Conda-függőségeket mutatja be.
channels:
- conda-forge
dependencies:
- python=3.12.3
- pip<=23.1.2
- pip:
- mlflow
- scikit-learn==1.6.1
- psutil==5.9.4
name: mlflow-env
Important
Az MLflow automatikusan észleli a csomagokat, amikor naplóz egy modellt, és rögzíti a csomagverziókat a modell Conda-függőségeiben. Előfordulhat, hogy ez az automatikus csomagészlelés nem felel meg a szándékainak vagy követelményeinek. Másik lehetőségként naplózhatja azokat a modelleket, amelyek egyéni aláírást, környezetet vagy mintákat használnak.
Aláírásokat tartalmazó modellek
Az MLflow-modellek tartalmazhatnak olyan aláírást, amely a várt bemeneteket és azok típusait jelzi. Az ilyen modellek online vagy kötegelt végpontokon való üzembe helyezésekor az Azure Machine Learning biztosítja, hogy az adatbemenetek száma és típusai megfeleljenek az aláírásnak. Ha a bemeneti adatok nem elemezhetők a várt módon, a modell meghívása meghiúsul.
Az MLflow-modell aláírását az MLmodel-fájl megnyitásával vizsgálhatja meg. Az aláírások MLflow-ban való működéséről további információt az Aláírások az MLflow-ban című témakörben talál.
Az alábbi példa MLmodel-fájl kiemeli a signature.
artifact_path: model
flavors:
python_function:
env:
conda: conda.yaml
virtualenv: python_env.yaml
loader_module: mlflow.sklearn
model_path: model.pkl
predict_fn: predict
python_version: 3.12.3
sklearn:
code: null
pickled_model: model.pkl
serialization_format: cloudpickle
sklearn_version: 1.1.2
mlflow_version: 2.7.1
model_uuid: 3f725f3264314c02808dd99d5e5b2781
run_id: 70f15bab-cf98-48f1-a2ea-9ad2108c28cd
signature:
inputs: '[{"name": "age", "type": "double"}, {"name": "sex", "type": "double"},
{"name": "bmi", "type": "double"}, {"name": "bp", "type": "double"}, {"name":
"s1", "type": "double"}, {"name": "s2", "type": "double"}, {"name": "s3", "type":
"double"}, {"name": "s4", "type": "double"}, {"name": "s5", "type": "double"},
{"name": "s6", "type": "double"}]'
outputs: '[{"type": "double"}]'
Tip
Az MLflow-modellek aláírásai azért ajánlottak, mert kényelmes módot biztosítanak az adatkompatibilitási problémák észlelésére. Az aláírásokkal rendelkező modellek naplózásáról további információt az egyéni aláírást, környezetet vagy mintákat használó naplómodellek című témakörben talál.
Üzembe helyezés a beépített MLflow-kiszolgálón és az Azure Machine Learning-következtetési kiszolgálón történő üzembe helyezéssel szemben
A modellfejlesztők az MLflow beépített üzembehelyezési eszközeit használhatják a modellek helyi teszteléséhez. Futtathat például egy olyan modell helyi példányát, amely az MLflow-kiszolgáló beállításjegyzékében van regisztrálva az mlflow models serve vagy az MLflow parancssori felület használatával. Az MLflow beépített üzembehelyezési eszközeiről további információt az MLflow dokumentációjának beépített üzembehelyezési eszközeiben talál.
Az Azure Machine Learning emellett támogatja a modellek online és kötegelt végpontokon való üzembe helyezését is. Ezek a végpontok különböző következtetési technológiákat futtatnak, amelyek különböző funkciókkal rendelkezhetnek.
Az Azure Machine Learning online végpontjai, hasonlóan az MLflow beépített kiszolgálójához, skálázható, szinkron és egyszerűsített módot biztosítanak a modellek következtetéshez való futtatásához.
Az Azure Machine Learning kötegvégpontjai aszinkron következtetést futtathatnak a hosszú ideig futó következtetési folyamatokon, amelyek nagy mennyiségű adatra méretezhetők. Az MLflow-kiszolgáló nem rendelkezik ezzel a képességgel, bár hasonló képességet a Spark-feladatok használatával érhet el. A kötegvégpontokról és az MLflow-modellekről további információt az MLflow-modellek használata kötegelt üzembe helyezésekben című témakörben talál.
Bemeneti formátumok
Az alábbi táblázat a beépített MLflow-kiszolgáló és az Azure Machine Learning online végpontjai által támogatott bemeneti típusokat mutatja be.
| Bemeneti típus | Beépített MLflow-kiszolgáló | Azure Machine Learning online végpont |
|---|---|---|
| JSON-szerializált pandas DataFrames osztott tájolásban | ✓ | ✓ |
| JSON-szerializált pandas DataFrame-ek rekord tájolású formában | Deprecated | |
| CSV-formátumba szerializált pandas adatkeretek | ✓ | Használjon kötegelt inferenciát. További információ: MLflow-modellek üzembe helyezése kötegelt végpontokon. |
| TensorFlow bemenet JSON-szerializált listákként (tensorok) és listák szótáraként (tensorok néven) | ✓ | ✓ |
| TensorFlow-bemenet a TensorFlow-kiszolgáló API használatával | ✓ |
A következő szakaszok az Azure Machine Learning online végpontjaiban üzembe helyezett MLflow-modellekre összpontosítanak.
Bemeneti struktúra
Bármi legyen is a bemeneti típus, az Azure Machine Learning megköveteli, hogy a bemeneteket JSON-ként, a szótári kulcsban input_data adja meg. Ez a kulcs nem szükséges, ha a mlflow models serve parancsot modellek kiszolgálására használja, ezért a terhelések nem használhatók fel átjárhatóan az Azure Machine Learning online végpontjaihoz és az MLflow beépített kiszolgálójával.
Important
A payload szerkezet megváltozott az MLflow 2.0-ban.
Az alábbi terhelési példák szemléltetik a különbségeket az MLflow beépített kiszolgálójára telepített modell és az Azure Machine Learning inferenciai kiszolgáló között.
JSON-szerializált pandas DataFrame osztott tájolásban
{
"input_data": {
"columns": [
"age", "sex", "trestbps", "chol", "fbs", "restecg", "thalach", "exang", "oldpeak", "slope", "ca", "thal"
],
"index": [1],
"data": [
[1, 1, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
]
}
}
Tensor bemenet
{
"input_data": [
[1, 1, 0, 233, 1, 2, 150, 0, 2.3, 3, 0, 2],
[1, 1, 0, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
[1, 1, 0, 233, 1, 2, 150, 0, 2.3, 3, 0, 2],
[1, 1, 145, 233, 1, 2, 150, 0, 2.3, 3, 0, 2]
]
}
Elnevezett-tenzor bemenet
{
"input_data": {
"tokens": [
[0, 655, 85, 5, 23, 84, 23, 52, 856, 5, 23, 1]
],
"mask": [
[0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0]
]
}
}
Előrejelzés testreszabása MLflow-modellekhez
A pontozási szkriptek testre szabják az egyéni modellek következtetésének futtatását. Az MLflow-modell üzembe helyezése esetén azonban a következtetés futtatásáról a modellkészítő dönt, nem pedig az üzembe helyezési mérnök. Minden modell-keretrendszer automatikusan alkalmazhat bizonyos következtetési rutinokat.
Ha módosítania kell az MLflow-modellek következtetési módját, hajtsa végre az alábbi műveletek egyikét:
- A modell betanítási rutinba való naplózásának módosítása.
- A következtetés testreszabása pontozószkript használatával az üzembe helyezéskor.
A modell naplózási módjának módosítása a betanítás során
Ha egy modellt a mlflow.autolog vagy mlflow.<flavor>.log_model használatával naplóz, a modellhez használt verzió határozza meg, hogyan történik a következtetés futtatása és milyen eredmények kerülnek visszaadásra. Az MLflow nem kényszerít semmilyen konkrét viselkedést a predict() függvény eredményeinek létrehozásához.
Bizonyos esetekben érdemes lehet előfeldolgozást vagy utófeldolgozást végezni a modell futtatása előtt és után. Vagy módosíthatja a visszaadott értékeket, például a valószínűségeket az osztályok helyett. Az egyik megoldás olyan gépi tanulási folyamatok implementálása, amelyek közvetlenül a bemenetekről a kimenetekre kerülnek át.
Például a sklearn.pipeline.Pipelinepyspark.ml.Pipeline folyamatok implementálásának népszerű módjai, és néha a teljesítmény javítása érdekében ajánlottak. Az egyéni modellek naplózásával testre szabhatja, hogyan következtet a modell.
Következtetés testreszabása pontozószkript használatával
Bár az MLflow-modellekhez nincs szükség pontozószkriptre, szükség esetén továbbra is megadhat egyet az MLflow-modellek következtetési végrehajtásának testreszabásához. A következtetés testreszabásával kapcsolatos további információkért tekintse meg az MLflow-modell online végpontokhoz való üzembe helyezésének testreszabását vagy a modell üzembe helyezésének testreszabását a kötegelt végpontok pontozási szkriptjével .
Important
Ha pontozószkriptet ad meg egy MLflow-modell üzembe helyezéséhez, akkor egy környezetet is meg kell adnia az üzembe helyezéshez.
Üzembehelyezési eszközök
Az Azure Machine Learning az alábbi eszközöket biztosítja az MLflow-modellek online és kötegelt végpontokon való üzembe helyezéséhez:
- MLflow SDK
- Azure Machine Learning CLI v2
- Azure Machine Learning SDK for Python
- Azure Machine Learning Studio
Minden eszköz különböző képességekkel rendelkezik, különösen arra, hogy milyen típusú számításokat célozhat meg. Az alábbi táblázat a különböző MLflow-telepítési forgatókönyvek támogatását mutatja be.
| Scenario | MLflow SDK | Azure Machine Learning CLI/SDK vagy studio |
|---|---|---|
| Üzembe helyezés felügyelt online végpontokon. 1 | Supported. Lásd : Az MLflow-modellek fokozatos bevezetése online végpontokra. | Supported. Lásd: MLflow-modellek üzembe helyezése online végpontokon. |
| Üzembe helyezés felügyelt online végpontoknál értékelő szkripttel. | Nem támogatott. 3 | Supported. Lásd az MLflow-modell üzembe helyezésének testreszabását. |
| Üzembe helyezés kötegelt végpontokon. | Nem támogatott. 3 | Supported. Lásd: MLflow-modellek használata kötegtelepítésekben. |
| Üzembe helyezés kötegelt végpontokon pontozószkripttel. | Nem támogatott. 3 | Supported. Lásd: Modelltelepítés testreszabása pontozószkripttel. |
| Üzembe helyezés olyan webszolgáltatásokban, mint az Azure Container Instances vagy az Azure Kubernetes Service (AKS). | Régi rendszer támogatás. 2 | Nem támogatott. 2 |
| Üzembe helyezés olyan webszolgáltatásokban, mint a Container Instances vagy az AKS pontozószkripttel. | Nem támogatott. 3 | Régi rendszer támogatás. 2 |
1 Váltás felügyelt online végpontokra , ha lehetséges.
2 A nyílt forráskódú MLflow nem támogatja az értékelő szkripteket vagy a tételenkénti végrehajtást.
Üzembehelyezési eszköz kiválasztása
Használja az MLflow SDK-t, ha az alábbiak mindegyike igaz:
- Ismeri az MLflow-t, és továbbra is ugyanazokat a metódusokat szeretné használni.
- Olyan platformot használ, mint az Azure Databricks, amely natív módon támogatja az MLflow-t.
Ha az alábbiak bármelyike igaz, használja az Azure Machine Learning CLI v2-t vagy a Pythonhoz készült SDK-t:
- Ismeri az eszközt.
- Az üzembe helyezést pipeline-okkal szeretné automatizálni.
- Az üzembehelyezési konfigurációt egy Git-adattárban szeretné tárolni.
Használja az Azure Machine Learning Studio felhasználói felületét, ha az MLflow-ban betanított modelleket szeretne gyorsan üzembe helyezni és tesztelni.