Szolgáltatások közzététele online áruházban

Ez a cikk azt ismerteti, hogyan tehet közzé funkciókat egy online áruházban valós idejű kiszolgálás céljából.

A Databricks Feature Store az alábbi online áruházakat támogatja:

Online áruház szolgáltató Közzététel funkciófejlesztéssel a Unity Catalogban Közzététel munkaterületi funkciótárolóval Funkciókeresés az örökölt MLflow-modell kiszolgálásában Funkciókeresés a modellkiszolgálóban
Azure Cosmos DB [1] X X (Feature Store-ügyfél 0.5.0-s vagy újabb verzió) X X
Azure MySQL (egykiszolgálós) X X
Azure SQL Server-kiszolgáló X

Cosmos DB kompatibilitási megjegyzések

Ez a szakasz néhány fontos dolgot tartalmaz, amelyeket szem előtt kell tartani a Databricks Feature Store Cosmos DB-vel való használatakor.

Unity Catalog-kompatibilis munkaterületek

A Databricks Runtime 12.2 LTS ML-ben és az alábbi verziókban a Cosmos DB online áruház szolgáltatója nem kompatibilis a Unity catalog-kompatibilis munkaterületekkel. A Unity Catalog és a hivatalos Cosmos DB Spark-összekötő is módosítja a Spark-katalógusokat. Ha a 12.2 LTS ML-t futtató fürtön lévő Unity-katalógus-kompatibilis munkaterületről tesz közzé funkciókat a Cosmos DB-ben, írási ütközés okozhatja, hogy a Szolgáltatástár közzététele sikertelen lesz a Cosmos DB-ben.

Ha a Cosmos DB-t unitykatalógus-kompatibilis munkaterületen szeretné használni, a Databricks Runtime 13.0 ML vagy újabb verzióját futtató fürtöt, vagy a Databricks Runtime 11.3 LTS ML-t vagy annál újabb databricks runtime-t futtató fürtöt kell használnia a korlátlan vagy megosztott számítási fürtszabályzattal.

Spark-összekötő

Az Azure Cosmos DB használatához a fiókot a Core (SQL) API-val kell létrehozni, a hálózati kapcsolati módszert pedig minden hálózatra kell állítani. Az SQL API-hoz megfelelő Azure Cosmos DB Spark 3 OLTP Csatlakozás ort telepíteni kell a fürtre. A Databricks azt javasolja, hogy telepítse a Spark 3.2 legújabb összekötő-verzióját, amíg ki nem adják a Spark 3.3-hoz készült összekötőt.

Ne hozzon létre manuálisan adatbázist vagy tárolót – használja publish_table()

A Cosmos DB online áruház más sémát használ, mint az offline áruház. Az online áruházban az elsődleges kulcsok kombinált kulcsként vannak tárolva az oszlopban _feature_store_internal__primary_keys.

Ahhoz, hogy a Feature Store hozzáférhessen a Cosmos DB online áruházhoz, létre kell hoznia a táblát az online áruházban a használatával publish_table(). Ne hozzon létre manuálisan adatbázist vagy tárolót a Cosmos DB-ben. publish_table() automatikusan elvégzi.

Kötegelt számítású szolgáltatások közzététele online áruházban

Létrehozhat és ütemezhet Databricks-feladatokat a frissített funkciók rendszeres közzétételéhez. Ez a feladat tartalmazza a frissített funkciók kiszámításához szükséges kódot is, vagy létrehozhat és futtathat külön feladatokat a funkciófrissítések kiszámításához és közzétételéhez.

AZ SQL-tárolók esetében a következő kód feltételezi, hogy egy "recommender_system" nevű online adatbázis már létezik az online áruházban, és megegyezik az offline áruház nevével. Ha az adatbázisban nincs "customer_features" nevű tábla, ez a kód létrehoz egyet. Azt is feltételezi, hogy a szolgáltatások minden nap ki vannak számítva, és particionált oszlopként _dtvannak tárolva.

Az alábbi kód feltételezi, hogy titkos kulcsokat hozott létre az online áruház eléréséhez.

Cosmos DB

A Cosmos DB-támogatás a Szolgáltatásfejlesztés minden verziójában elérhető a Unity Catalog-ügyfélben, valamint a Feature Store-ügyfél 0.5.0-s és újabb verzióiban.

import datetime
from databricks.feature_engineering.online_store_spec import AzureCosmosDBSpec
# or databricks.feature_store.online_store_spec for Workspace Feature Store
online_store = AzureCosmosDBSpec(
  account_uri='<account-uri>',
  read_secret_prefix='<read-scope>/<prefix>',
  write_secret_prefix='<write-scope>/<prefix>'
)

fe.publish_table( # or fs.publish_table for Workspace Feature Store
  name='ml.recommender_system.customer_features',
  online_store=online_store,
  filter_condition=f"_dt = '{str(datetime.date.today())}'",
  mode='merge'
)

SQL-tárolók

import datetime
from databricks.feature_engineering.online_store_spec import AzureMySqlSpec
# or databricks.feature_store.online_store_spec for Workspace Feature Store
online_store = AzureMySqlSpec(
  hostname='<hostname>',
  port='<port>',
  read_secret_prefix='<read-scope>/<prefix>',
  write_secret_prefix='<write-scope>/<prefix>'
)

fs.publish_table(
  name='recommender_system.customer_features',
  online_store=online_store,
  filter_condition=f"_dt = '{str(datetime.date.today())}'",
  mode='merge'
)

Streamelési funkciók közzététele online áruházban

Ha folyamatosan szeretné streamelni a funkciókat az online áruházba, állítsa be a .streaming=True

fe.publish_table( # or fs.publish_table for Workspace Feature Store
  name='ml.recommender_system.customer_features',
  online_store=online_store,
  streaming=True
)

Kijelölt funkciók közzététele online áruházban

Ha csak a kijelölt szolgáltatásokat szeretné közzétenni az online áruházban, az features argumentum használatával adja meg a közzétenni kívánt szolgáltatás(ok) nevét. Az elsődleges kulcsok és az időbélyeg-kulcsok mindig közzé lesznek téve. Ha nem adja meg az features argumentumot, vagy ha az érték Nincs, a rendszer közzéteszi az offline funkciótáblában szereplő összes funkciót.

fe.publish_table( # or fs.publish_table for Workspace Feature Store
  name='ml.recommender_system.customer_features',
  online_store=online_store,
  features=["total_purchases_30d"]
)

Funkciótábla közzététele egy adott adatbázisban

Az online áruház specifikációjában adja meg az adatbázis nevét (database_name) és a tábla nevét (table_name). Ha nem adja meg ezeket a paramétereket, a rendszer az offline adatbázis nevét és a szolgáltatástábla nevét használja. database_name már léteznie kell az online áruházban.

online_store = AzureMySqlSpec(
  hostname='<hostname>',
  port='<port>',
  database_name='<database-name>',
  table_name='<table-name>',
  read_secret_prefix='<read-scope>/<prefix>',
  write_secret_prefix='<write-scope>/<prefix>'
)

Meglévő online szolgáltatástábla vagy adott sorok felülírása

Használja mode='overwrite' a hívásban publish_table . Az online táblázatot teljesen felülírják az offline tábla adatai.

Megjegyzés:

Az Azure Cosmos DB nem támogatja a felülírási módot.

fs.publish_table(
  name='recommender_system.customer_features',
  online_store=online_store,
  mode='overwrite'
)

Ha csak bizonyos sorokat szeretne felülírni, használja a következő argumentumot filter_condition :

fs.publish_table(
  name='recommender_system.customer_features',
  online_store=online_store,
  filter_condition=f"_dt = '{str(datetime.date.today())}'",
  mode='merge'
)

Közzétett tábla törlése egy online áruházból

A Feature Store 0.12.0-s vagy újabb drop_online_table verziójú ügyfélalkalmazásával törölheti a közzétett táblázatokat egy online áruházból. Amikor töröl egy közzétett táblát drop_online_table, a rendszer törli a táblát az online áruház szolgáltatójától, és az online áruház metaadatai el lesznek távolítva a Databricksből.

fe.drop_online_table( # or fs.drop_online_table for Workspace Feature Store
  name='recommender_system.customer_features',
  online_store = online_store
)

Megjegyzés:

  • drop_online_table törli a közzétett táblát az online áruházból. Nem törli a Databricks szolgáltatástábláját.
  • Mielőtt töröl egy közzétett táblát, győződjön meg arról, hogy a tábla nem használható a Modellkiszolgáló szolgáltatás kereséséhez, és nincs más alsóbb rétegbeli függősége. A törlés visszavonhatatlan, és a függőségek meghiúsulását okozhatja.
  • A függőségek ellenőrzéséhez érdemes lehet elforgatni a törölni kívánt közzétett tábla kulcsait egy nappal a végrehajtás drop_online_tableelőtt.