Funkciótáblák megosztása munkaterületeken (örökölt)
Fontos
- Ez a dokumentáció ki lett állítva, és lehet, hogy nem frissül.
- A Databricks a Szolgáltatásfejlesztés használatát javasolja a Unity Catalogban a funkciótáblák munkaterületek közötti megosztásához. A cikkben szereplő megközelítés elavult.
Az Azure Databricks támogatja a funkciótáblák megosztását több munkaterületen. A saját munkaterületéről például létrehozhat, írhat vagy olvashat egy központi szolgáltatástár szolgáltatástáblájából. Ez akkor hasznos, ha több csapat is hozzáfér a funkciótáblákhoz, vagy ha a szervezet több munkaterülettel rendelkezik a fejlesztés különböző szakaszainak kezeléséhez.
Egy központosított szolgáltatástároló esetében a Databricks azt javasolja, hogy egyetlen munkaterületet jelöljön ki az összes szolgáltatástár metaadatainak tárolására, és hozzon létre fiókokat minden olyan felhasználó számára, akinek hozzá kell férnie a funkciótárolóhoz.
Ha a csapatok a munkaterületek között is osztanak meg modelleket, dönthet úgy, hogy ugyanazt a központosított munkaterületet a funkciótáblákhoz és a modellekhez is dedikálja, vagy mindegyikhez különböző központosított munkaterületeket adhat meg.
A központosított szolgáltatástárolóhoz való hozzáférést jogkivonatok vezérlik. Minden hozzáférésre szoruló felhasználó vagy szkript létrehoz egy személyes hozzáférési jogkivonatot a központosított szolgáltatástárolóban, és ezt a jogkivonatot a helyi munkaterület titkos kezelőjének másolja. A központosított szolgáltatástároló munkaterületére küldött összes API-kérésnek tartalmaznia kell a hozzáférési jogkivonatot; a Feature Store-ügyfél egy egyszerű mechanizmust biztosít a munkaterületek közötti műveletek végrehajtásához használandó titkos kódok megadásához.
Feljegyzés
Ajánlott biztonsági eljárásként, ha automatizált eszközökkel, rendszerekkel, szkriptekkel és alkalmazásokkal hitelesít, a Databricks azt javasolja, hogy munkaterület-felhasználók helyett a szolgáltatásnevekhez tartozó személyes hozzáférési jogkivonatokat használja. A szolgáltatásnevek jogkivonatainak létrehozásáról a szolgáltatásnév jogkivonatainak kezelése című témakörben olvashat.
Követelmények
A munkaterületek közötti szolgáltatástároló használatához a következőre van szükség:
- A Feature Store-ügyfél 0.3.6-os vagy újabb verziója.
- Mindkét munkaterületnek hozzá kell férnie a nyers szolgáltatásadatokhoz. Ugyanazzal a külső Hive-metaadattárzal kell rendelkezniük, és hozzáféréssel kell rendelkezniük ugyanahhoz a DBFS-tárolóhoz.
- Ha engedélyezve vannak az IP-hozzáférési listák , a munkaterület IP-címeinek hozzáférési listákon kell lenniük.
Az API-jogkivonat beállítása távoli beállításjegyzékhez
Ebben a szakaszban a "B munkaterület" a központosított vagy távoli funkciótár-munkaterületre vonatkozik.
- A B munkaterületen hozzon létre egy hozzáférési jogkivonatot.
- A helyi munkaterületen hozzon létre titkos kulcsokat a hozzáférési jogkivonat és a B munkaterület adatainak tárolásához:
- Titkos kulcs hatókörének létrehozása:
databricks secrets create-scope --scope <scope>
. - Válasszon egy egyedi azonosítót a B munkaterülethez, amely itt látható.
<prefix>
Ezután hozzon létre három titkos kulcsot a megadott kulcsnevekkel:databricks secrets put --scope <scope> --key <prefix>-host
: Adja meg a B munkaterület állomásnevét. A munkaterület állomásnevének lekéréséhez használja a következő Python-parancsokat:import mlflow host_url = mlflow.utils.databricks_utils.get_webapp_url() host_url
databricks secrets put --scope <scope> --key <prefix>-token
: Adja meg a hozzáférési jogkivonatot a B munkaterületről.databricks secrets put --scope <scope> --key <prefix>-workspace-id
: Adja meg a B munkaterület azonosítóját, amely bármely oldal URL-címében megtalálható.
- Titkos kulcs hatókörének létrehozása:
Feljegyzés
Előfordulhat, hogy meg szeretné osztani a titkos kulcs hatókörét más felhasználókkal, mivel a munkaterületenkénti titkos hatókörök száma korlátozott.
Távoli funkciótároló megadása
A távoli szolgáltatástár-munkaterülethez létrehozott titkos kulcs hatóköre és névelőtagja alapján létrehozhatja az űrlap szolgáltatástárolójának URI-ját:
feature_store_uri = f'databricks://<scope>:<prefix>'
Ezután explicit módon adja meg az URI-t, amikor a következő példányt FeatureStoreClient
hozza létre:
fs = FeatureStoreClient(feature_store_uri=feature_store_uri)
Adatbázis létrehozása funkciótáblákhoz a megosztott DBFS-helyen
Mielőtt szolgáltatástáblákat hoz létre a távoli szolgáltatástárolóban, létre kell hoznia egy adatbázist, amely tárolja őket. Az adatbázisnak a megosztott DBFS-helyen kell lennie.
Ha például egy adatbázist recommender
szeretne létrehozni a megosztott helyen /mnt/shared
, használja a következő parancsot:
%sql CREATE DATABASE IF NOT EXISTS recommender LOCATION '/mnt/shared'
Szolgáltatástábla létrehozása a távoli szolgáltatástárolóban
A távoli funkciótárolókban szolgáltatástáblát létrehozó API a használt Databricks-futtatókörnyezet verziójától függ.
V0.3.6 és újabb verziók
Használja az API-t FeatureStoreClient.create_table
:
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
fs.create_table(
name='recommender.customer_features',
primary_keys='customer_id',
schema=customer_features_df.schema,
description='Customer-keyed features'
)
V0.3.5 és újabb
Használja az API-t FeatureStoreClient.create_feature_table
:
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
fs.create_feature_table(
name='recommender.customer_features',
keys='customer_id',
schema=customer_features_df.schema,
description='Customer-keyed features'
)
Más funkciótár-metódusok példáiért lásd a jegyzetfüzet példáját: Funkciótáblák megosztása munkaterületeken.
Funkciótábla használata a távoli szolgáltatástárolóból
A távoli szolgáltatástárolóban a következő beállítás első beállításával olvashatja el a funkciótáblát feature_store_uri
a FeatureStoreClient.read_table
módszerrel:
fs = FeatureStoreClient(feature_store_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.read_table(
name='recommender.customer_features',
)
A funkciótáblához való hozzáférés egyéb segédmeterei is támogatottak:
fs.read_table()
fs.get_feature_table() # in v0.3.5 and below
fs.get_table() # in v0.3.6 and above
fs.write_table()
fs.publish_table()
fs.create_training_set()
Távoli modellregisztrációs adatbázis használata
A távoli szolgáltatástároló URI-ja mellett egy távoli modellregisztrációs adatbázis URI-ját is megadhatja a modellek munkaterületek közötti megosztásához.
Ha távoli modellregisztrációs adatbázist szeretne megadni a modell naplózásához vagy pontozásához, a modellregisztrációs adatbázis URI-jával példányosíthat egy FeatureStoreClientet.
fs = FeatureStoreClient(model_registry_uri=f'databricks://<scope>:<prefix>')
customer_features_df = fs.log_model(
model,
"recommendation_model",
flavor=mlflow.sklearn,
training_set=training_set,
registered_model_name="recommendation_model"
)
A és model_registry_uri
a használatával feature_store_uri
betanítheti a modellt bármely helyi vagy távoli funkciótáblával, majd regisztrálhatja a modellt bármely helyi vagy távoli modellregisztrációs adatbázisban.
fs = FeatureStoreClient(
feature_store_uri=f'databricks://<scope>:<prefix>',
model_registry_uri=f'databricks://<scope>:<prefix>'
)
Példa jegyzetfüzetre: Funkciótáblák megosztása munkaterületeken
Az alábbi jegyzetfüzet bemutatja, hogyan használható egy központosított szolgáltatástároló.