Az Azure Databricks AutoML működése
Ez a cikk az Azure Databricks AutoML működését és olyan fogalmak implementálását ismerteti, mint a hiányzó értékszámítás és a nagy adatmintavétel.
A Databricks AutoML a következőket hajtja végre:
- Előkészíti az adathalmazt a modell betanítására. Az AutoML például kiegyensúlyozatlan adatészlelést végez a besorolási problémák esetén a modell betanítása előtt.
- Több modell betanítása és finomhangolása, ahol az egyes modellek nyílt forráskód összetevőkből épülnek fel, és könnyen szerkeszthetők és integrálhatók a gépi tanulási folyamatokba.
- Az AutoML automatikusan elosztja a hiperparaméter finomhangolási próbaverzióit a fürt feldolgozó csomópontjai között.
- A Databricks Runtime 9.1 LTS ML vagy újabb verziójával az AutoML automatikusan mintát vesz az adatkészletből, ha túl nagy ahhoz, hogy egyetlen feldolgozó csomópont memóriájába férhessen. Lásd: Nagy adathalmazok mintavételezése.
- Kiértékeli a modelleket a scikit-learn, xgboost, LightGBM, Prophet és ARIMA csomagok algoritmusai alapján.
- Megjeleníti az eredményeket, és egy Python-jegyzetfüzetet biztosít az egyes próbaidőszakok forráskódjával, így áttekintheti, reprodukálhatja és módosíthatja a kódot. Az AutoML emellett kiszámítja az adathalmaz összesítő statisztikáit, és menti ezeket az adatokat egy jegyzetfüzetbe, amelyet később áttekinthet.
AutoML-algoritmusok
A Databricks AutoML az alábbi táblázatban szereplő algoritmusok alapján képez ki és értékel ki modelleket.
Feljegyzés
A besorolási és regressziós modellek esetében a döntési fa, a véletlenszerű erdők, a logisztikai regresszió és a lineáris regresszió sztochasztikus gradiens süllyedési algoritmusokkal a scikit-learn függvényen alapulnak.
Besorolási modellek | Regressziós modellek | Előrejelzési modellek |
---|---|---|
Döntési fák | Döntési fák | Próféta |
Véletlenszerű erdők | Véletlenszerű erdők | Auto-ARIMA (a Databricks Runtime 10.3 ML-ben és újabb verziókban érhető el.) |
Logisztikai regresszió | Lineáris regresszió sztochasztikus gradiens süllyedéssel | |
XGBoost | XGBoost | |
LightGBM | LightGBM |
Támogatott adatfunkció-típusok
Az alább nem felsorolt funkciótípusok nem támogatottak. A képek például nem támogatottak.
A következő szolgáltatástípusok támogatottak:
- Numerikus (
ByteType
,ShortType
,IntegerType
,LongType
,FloatType
ésDoubleType
) - Logikai
- Sztring (kategorikus vagy angol szöveg)
- Időbélyegek (
TimestampType
,DateType
) - ArrayType[Numerikus] (Databricks Runtime 10.4 LTS ML és újabb)
- DecimalType (Databricks Runtime 11.3 LTS ML és újabb)
Adatok felosztása betanítási/érvényesítési/tesztelési csoportokra
A Databricks Runtime 10.4 LTS ML és újabb verziókban megadhat egy időoszlopot, amelyet a betanítási/ellenőrzési/tesztelési adatok felosztásához használhat besorolási és regressziós problémák esetén. Ha ezt az oszlopot adja meg, az adathalmaz idő szerint betanítási, érvényesítési és tesztelési csoportokra lesz felosztva. A rendszer a legkorábbi pontokat használja a betanításhoz, a következőt az ellenőrzéshez, a legújabb pontokat pedig tesztkészletként. Az időoszlopnak időbélyegnek, sztringnek vagy egész számnak kell lennie.
Nagy adathalmazok mintavételezése
Feljegyzés
A mintavételezés nem vonatkozik az előrejelzési problémákra.
Bár az AutoML elosztja a hiperparaméter-finomhangolási kísérleteket a fürt feldolgozó csomópontjai között, minden modell be van tanítva egyetlen feldolgozó csomóponton.
Az AutoML automatikusan megbecsüli az adathalmaz betöltéséhez és betanásához szükséges memóriát, és szükség esetén mintát vesz az adatkészletből.
A Databricks Runtime 9.1 LTS ML-ben a Databricks Runtime 10.4 LTS ML-n keresztül a mintavételezési tört nem függ a fürt csomóponttípusától vagy az egyes csomópontok memóriájának mennyiségétől.
A Databricks Runtime 11.x ML-ben:
- A mintavételezési tört növekszik azon feldolgozó csomópontok esetében, amelyek magonként több memóriával rendelkeznek. A mintaméretet a memóriaoptimalizált példánytípus kiválasztásával növelheti.
- A minta méretét tovább növelheti, ha nagyobb értéket
spark.task.cpus
választ a fürt Spark-konfigurációjában. Az alapértelmezett beállítás 1; a maximális érték a feldolgozó csomópont processzorainak száma. Ha növeli ezt az értéket, a minta mérete nagyobb, de kevesebb próba fut párhuzamosan. Például egy 4 magos és 64 GB-os teljes RAM-mal rendelkező gépeken az alapértelmezett beállításspark.task.cpus=1
feldolgozónként 4 próbaverziót futtat, mindegyik próbaverzió 16 GB RAM-ra korlátozódik. Ha beállítjaspark.task.cpus=4
, minden feldolgozó csak egy próbaverziót futtat, de a próbaverzió 64 GB RAM-ot használhat.
A Databricks Runtime 12.2 LTS ML-ben és újabb verziókban az AutoML betaníthat nagyobb adathalmazokat úgy, hogy betanítási feladatonként több processzormagot ad ki. A mintaméret növeléséhez válasszon nagyobb teljes memóriát tartalmazó példányméretet.
A Databricks Runtime 11.3 LTS ML és újabb verziókban, ha az AutoML mintát vett az adathalmazból, a mintavételezési tört a felhasználói felület Áttekintés lapján jelenik meg.
Besorolási problémák esetén az AutoML a PySpark sampleBy
metódust használja a rétegzett mintavételezéshez a célcímke eloszlásának megőrzése érdekében.
Regressziós problémák esetén az AutoML a PySpark sample
metódust használja.
Kiegyensúlyozatlan adathalmazok támogatása besorolási problémák esetén
A Databricks Runtime 11.3 LTS ML és újabb verzióiban, ha az AutoML azt észleli, hogy egy adathalmaz kiegyensúlyozatlan, a főosztály(ok) leskálázásával és az osztálysúlyok hozzáadásával próbálja csökkenteni a betanítási adathalmaz egyensúlyhiányát. Az AutoML csak a betanítási adatkészletet egyensúlyozza, és nem egyensúlyozza ki a tesztelési és érvényesítési adatkészleteket. Ezzel biztosítja, hogy a modell teljesítménye mindig a nem bővített adathalmazon legyen kiértékelve a valódi bemeneti osztályeloszlással.
A kiegyensúlyozatlan betanítási adatkészletek egyensúlyba hozásához az AutoML olyan osztálysúlyokat használ, amelyek inverz módon kapcsolódnak ahhoz a mértékhez, amellyel egy adott osztály le van skálázva. Ha például egy 100 mintával rendelkező betanítási adatkészlet 95 mintával rendelkezik az A osztályhoz tartozó és 5 B osztályhoz tartozó mintával, az AutoML ezt az egyensúlyhiányt az A osztály 70 mintára való leskálázásával csökkenti, azaz 70/95 vagy 0,736 arányban csökkenti az A osztályt, miközben a B osztályban lévő minták számát 5-nél tartja. Annak érdekében, hogy a végső modell megfelelően legyen kalibrálva, és a modell kimenetének valószínűségeloszlása megegyezik a bemenetéval, az AutoML az A osztály súlyát 1/0,736 vagy 1,358 arányban skálázza fel, miközben a B osztály súlyát 1-nek tartja. Az AutoML ezután ezeket az osztálysúlyokat használja a modell betanítása során paraméterként, hogy az egyes osztályokból származó minták megfelelően legyenek súlyozással a modell betanítása során.
Szemantikai típusészlelés
Feljegyzés
- A szemantikai típusészlelés nem alkalmazható az előrejelzési problémákra.
- Az AutoML nem végez szemantikai típusészlelést az egyéni számítási módszerekkel rendelkező oszlopok esetében.
A Databricks Runtime 9.1 LTS ML és újabb verziók esetén az AutoML megpróbálja észlelni, hogy az oszlopok szemantikai típusa eltér-e a Táblaséma Spark- vagy Pandas-adattípusától. Az AutoML ezeket az oszlopokat észlelt szemantikai típusként kezeli. Ezek az észlelések a legjobb erőfeszítések, és bizonyos esetekben kihagyhatják a szemantikai típusok meglétét. Manuálisan is beállíthatja az oszlopok szemantikai típusát, vagy megadhatja az AutoML-nek, hogy ne alkalmazza a szemantikai típusészlelést egy oszlopra széljegyzetekkel.
Az AutoML a következő módosításokat hajtja végre:
- A dátum- vagy időbélyegadatokat ábrázoló sztring- és egész számoszlopok időbélyeg-típusként vannak kezelve.
- A numerikus adatokat ábrázoló sztringoszlopokat numerikus típusként kezeli a rendszer.
A Databricks Runtime 10.1 ML-es és újabb verziója esetén az AutoML a következő módosításokat is végrehajtja:
- A kategorikus azonosítókat tartalmazó numerikus oszlopok kategorikus funkcióként vannak kezelve.
- Az angol szöveget tartalmazó sztringoszlopok szövegfunkcióként lesznek kezelve.
Szemantikai típusú széljegyzetek
A Databricks Runtime 10.1 ML-es és újabb verziója esetén manuálisan szabályozhatja a hozzárendelt szemantikai típust úgy, hogy egy szemantikai típusú széljegyzetet helyez egy oszlopra. Az oszlop <column-name>
<semantic-type>
szemantikai típusának manuális megjegyzéséhez használja az alábbi szintaxist:
metadata_dict = df.schema["<column-name>"].metadata
metadata_dict["spark.contentAnnotation.semanticType"] = "<semantic-type>"
df = df.withMetadata("<column-name>", metadata_dict)
<semantic-type>
az alábbiak egyike lehet:
categorical
: Az oszlop kategorikus értékeket tartalmaz (például numerikus értékeket, amelyeket azonosítóként kell kezelni).numeric
: Az oszlop numerikus értékeket (például számba elemezhető sztringértékeket) tartalmaz.datetime
: Az oszlop időbélyegértékeket tartalmaz (sztring, numerikus vagy dátumértékek, amelyek időbélyegekké alakíthatók).text
: A sztringoszlop angol szöveget tartalmaz.
Ha le szeretné tiltani a szemantikai típusészlelést egy oszlopon, használja a speciális kulcsszójegyzetet native
.
Shapley értékek (SHAP) a modell magyarázatához
Feljegyzés
Az MLR 11.1-es és újabb verzió esetén az SHAP-diagramok nem jönnek létre, ha az adathalmaz tartalmaz egy oszlopot datetime
.
Az AutoML-regresszió és a besorolási futtatások által létrehozott jegyzetfüzetek tartalmazzák a Shapley-értékek kiszámítására szolgáló kódot. A shapley értékek a játékelméletben alapulnak, és megbecsülik az egyes funkciók fontosságát a modell előrejelzéseiben.
Az AutoML-jegyzetfüzetek az SHAP-csomag használatával számítják ki a Shapley-értékeket. Mivel ezek a számítások nagyon memóriaigényesek, a számítások alapértelmezés szerint nem lesznek végrehajtva.
Shapley-értékek kiszámítása és megjelenítése:
- Nyissa meg az AutoML által létrehozott próbajegyzetfüzet Szolgáltatás fontossági szakaszát.
- Beállítás
shap_enabled = True
. - Futtassa újra a jegyzetfüzetet.
Idősorok összesítése
Az előrejelzési problémák esetén, ha egy idősorban több érték is szerepel az időbélyegben, az AutoML az értékek átlagát használja.
Az összeg használatához szerkessze a forráskód-jegyzetfüzetet. Az Adatok összesítése ... cellával az alábbi módon váltson a .agg(y=(target_col, "avg"))
következőre.agg(y=(target_col, "sum"))
:
group_cols = [time_col] + id_cols
df_aggregation = df_loaded \
.groupby(group_cols) \
.agg(y=(target_col, "sum")) \
.reset_index() \
.rename(columns={ time_col : "ds" })
Funkciótár-integráció
A Databricks Runtime 11.3 LTS ML és újabb verziók használatával a Funkciótár meglévő funkciótábláival bővítheti az eredeti bemeneti adatkészletet a besorolási és regressziós problémákhoz.
A Databricks Runtime 12.2 LTS ML és újabb verzióival a Funkciótár meglévő funkciótábláival bővítheti az eredeti bemeneti adatkészletet az Összes AutoML-problémához: besoroláshoz, regresszióhoz és előrejelzéshez.
Szolgáltatástábla létrehozásához tekintse meg a Mi az a szolgáltatástároló? című témakört.
Meglévő funkciótáblák használatához kiválaszthatja az AutoML felhasználói felülettel rendelkező funkciótáblákat, vagy beállíthatja a paramétert az feature_store_lookups
AutoML-futtatási specifikációban.
feature_store_lookups = [
{
"table_name": "example.trip_pickup_features",
"lookup_key": ["pickup_zip", "rounded_pickup_datetime"],
},
{
"table_name": "example.trip_dropoff_features",
"lookup_key": ["dropoff_zip", "rounded_dropoff_datetime"],
}
]
Próbaverziós jegyzetfüzet létrehozása
A kísérletek előrejelzéséhez a rendszer automatikusan importálja az AutoML által létrehozott jegyzetfüzeteket a munkaterületre a kísérlet összes próbaidőszakához.
Besorolási és regressziós kísérletek esetén az AutoML által létrehozott jegyzetfüzetek az adatfeltáráshoz és a kísérlet legjobb próbaverziójához automatikusan importálódnak a munkaterületre. Az egyéb kísérletkísérletekhez létrehozott jegyzetfüzetek MLflow-összetevőkként vannak mentve a DBFS-en ahelyett, hogy automatikusan importálták volna a munkaterületre. A legjobb próbaverzión notebook_path
notebook_url
TrialInfo
kívül az összes próba esetében a Python API nincs beállítva. Ha ezeket a jegyzetfüzeteket szeretné használni, manuálisan importálhatja őket a munkaterületre az AutoML-kísérlet felhasználói felületével vagy a databricks.automl.import_notebook
Python API-val.
Ha csak az AutoML által létrehozott adatfeltáró jegyzetfüzetet vagy a legjobb próbaverziós jegyzetfüzetet használja, az AutoML-kísérlet felhasználói felületén található Forrás oszlop tartalmazza a létrehozott jegyzetfüzetre mutató hivatkozást a legjobb próbaverzióhoz.
Ha más létrehozott jegyzetfüzeteket használ az AutoML-kísérlet felhasználói felületén, a rendszer nem importálja őket automatikusan a munkaterületre. A jegyzetfüzeteket az egyes MLflow-futtatásokra kattintva találja meg. Az IPython-jegyzetfüzet a futtatási lap Összetevők szakaszában lesz mentve. Letöltheti ezt a jegyzetfüzetet, és importálhatja a munkaterületre, ha a munkaterület rendszergazdái engedélyezik az összetevők letöltését.
Példa jegyzetfüzetre: AutoML-kísérlet a Funkciótár használatával
Az alábbi jegyzetfüzet bemutatja, hogyan taníthat be ml-modellt autoML- és funkciótár-funkciótáblákkal.