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:

  1. 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.
  2. 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.
  3. Kiértékeli a modelleket a scikit-learn, xgboost, LightGBM, Prophet és ARIMA csomagok algoritmusai alapján.
  4. 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és DoubleType)
  • 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ás spark.task.cpus=1 feldolgozónként 4 próbaverziót futtat, mindegyik próbaverzió 16 GB RAM-ra korlátozódik. Ha beállítja spark.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 sampleBymetó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 samplemetó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:

  1. Nyissa meg az AutoML által létrehozott próbajegyzetfüzet Szolgáltatás fontossági szakaszát.
  2. Beállítás shap_enabled = True.
  3. 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_lookupsAutoML-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_pathnotebook_urlTrialInfo 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_notebookPython 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.

AutoML-kísérlet a Funkciótár példajegyzetfüzetével

Jegyzetfüzet beszerzése