火車模型使用磚特性存儲

本文描述了如何訓練模型使用從磚特性的存儲功能。您必須首先創建一個訓練數據集,它定義了功能使用以及如何加入他們的行列。然後,當你訓練一個模型,該模型保留了引用特性。

當您使用推理的模型時,您可以選擇從功能存儲檢索特征值。你也可以與服務模型Serverless實時推理經典MLflow模型在磚和它會自動查找功能發布到網上商店

請注意

這時,磚特性的商店不支持統一目錄metastore寫作。團結Catalog-enabled工作空間,您可以編寫功能表默認蜂巢metastore。

創建一個訓練數據集

從功能表模型來選擇特定的功能訓練,您將創建一個訓練數據集使用FeatureStoreClient.create_training_setAPI和稱為一個對象FeatureLookup。一個FeatureLookup指定每個特性使用訓練集,包括功能表的名稱,名稱(s)的特性,和關鍵(s)使用時加入DataFrame傳遞到功能表FeatureStoreClient.create_training_set

使用feature_names當你創建一個參數FeatureLookupfeature_names單一特征的名字,名字的列表功能,或沒有查找所有功能(不含主鍵)功能表中的訓練集的時候被創建。

請注意

的類型和順序lookup_key列DataFrame必須匹配的類型和順序引用功能表的主鍵。

本文包含兩個版本的示例代碼的語法。

在本例中,返回的DataFrametrainingSet.load_df包含一個列的每個特性feature_lookups。它保留DataFrame提供給的所有列FeatureStoreClient.create_training_set除了那些排除使用exclude_columns

databricks.feature_store進口FeatureLookup#模型訓練使用兩個“customer_features”功能表和功能#一個單一的功能從“product_features”feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“total_purchases_30d”,“total_purchases_7d”),lookup_key=“customer_id”),FeatureLookup(table_name=“recommender_system.product_features”,feature_names=(“類別”),lookup_key=“product_id”)]fs=FeatureStoreClient()#使用培訓DataFrame創建一個訓練集和功能特性#培訓DataFrame必須包含所有查找鍵查找的功能,#在這種情況下“customer_id”和“product_id”。它還必須包含所有標簽使用#培訓,在這種情況下“評級”。training_set=fscreate_training_set(df=training_df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”,“product_id”])training_df=training_setload_df()

創建一個TrainingSet當主鍵查找密鑰不匹配

使用參數lookup_keyFeatureLookup在訓練集列的名字。FeatureStoreClient.create_training_set執行有序之間的連接的列中指定的訓練集lookup_key參數使用主鍵的順序表創建時指定的特性。

在這個例子中,recommender_system.customer_features有以下主鍵:customer_id,dt

recommender_system.product_features功能表主鍵product_id

如果training_df有以下列:

  • cid

  • transaction_dt

  • product_id

  • 評級

下麵的代碼將創建正確的查找功能TrainingSet:

feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“total_purchases_30d”,“total_purchases_7d”),lookup_key=(cid的,“transaction_dt”]),FeatureLookup(table_name=“recommender_system.product_features”,feature_names=(“類別”),lookup_key=“product_id”)]

FeatureStoreClient.create_training_set被調用時,它會創建一個訓練數據集通過執行一個左加入,加入表recommender_system.customer_featurestraining_df使用鍵(customer_id,dt)對應於(cid,transaction_dt),如以下代碼所示:

customer_features_df=火花sql(“從recommender_system.customer_features SELECT *”)product_features_df=火花sql(“從recommender_system.product_features SELECT *”)training_df加入(customer_features_df,=(training_dfcid= =customer_features_dfcustomer_id,training_dftransaction_dt= =customer_features_dfdt),如何=“左”)加入(product_features_df,=“product_id”,如何=“左”)

創建一個TrainingSet包含兩個名稱相同的特性從不同特性表

使用可選參數output_nameFeatureLookup。的名稱是用於提供在返回的DataFrame特點的名字TrainingSet.load_df。例如,下麵的代碼,返回的DataFrametraining_set.load_df包括列customer_heightproduct_height

feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“高度”),lookup_key=“customer_id”,output_name=“customer_height”,),FeatureLookup(table_name=“recommender_system.product_features”,feature_names=(“高度”),lookup_key=“product_id”,output_name=“product_height”),]fs=FeatureStoreClient()mlflowstart_run():training_set=fscreate_training_set(df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”])training_df=training_setload_df()

創建一個TrainingSet多次使用相同的功能

創建一個TrainingSet使用相同的功能加入到不同的查找鍵,使用多個FeatureLookups。使用一個獨特的output_name為每個FeatureLookup輸出。

feature_lookups=(FeatureLookup(table_name=“taxi_data.zip_features”,feature_names=(“溫度”),lookup_key=(“pickup_zip”),output_name=“pickup_temp”),FeatureLookup(table_name=“taxi_data.zip_features”,feature_names=(“溫度”),lookup_key=(“dropoff_zip”),output_name=“dropoff_temp”)]

創建一個TrainingSet無人監督的機器學習模型

標簽=沒有當創建一個TrainingSet無監督學習模型。例如,可以使用以下TrainingSet集群不同顧客群體根據他們的利益:beplay体育app下载地址

feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“利益”),lookup_key=“customer_id”,),]fs=FeatureStoreClient()mlflowstart_run():training_set=fscreate_training_set(df,feature_lookups=feature_lookups,標簽=沒有一個,exclude_columns=(“customer_id”])training_df=training_setload_df()

火車模型和執行批處理推理與功能表

當你訓練一個模型使用特性存儲功能,保留引用特性模型。當您使用推理的模型時,您可以選擇從功能存儲檢索特征值。必須提供的主鍵(s)在模型中使用的特性。模型檢索功能需要從特征存儲在工作區中。然後根據需要加入特征值在得分。

在推理時支持特性查找:

  • 你必須記錄模型使用FeatureStoreClient.log_model

  • 您必須使用返回的DataFrameTrainingSet.load_df訓練模型。如果你在使用前以任何方式修改這個DataFrame訓練模型,修改不應用當您使用推理的模型。這降低了模型的性能。

  • 必須有一個相應的模型類型python_flavor在MLflow。MLflow支持大多數Python模型培訓框架,包括:

    • scikit-learn

    • keras

    • PyTorch

    • SparkML

    • LightGBM

    • XGBoost

    • TensorFlow Keras(使用python_flavormlflow.keras)

  • 自定義MLflow pyfunc模型

    #火車模型進口mlflowsklearn進口linear_modelfeature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“total_purchases_30d”),lookup_key=“customer_id”,),FeatureLookup(table_name=“recommender_system.product_features”,feature_names=(“類別”),lookup_key=“product_id”)]fs=FeatureStoreClient()mlflowstart_run():# df已列(“customer_id”、“product_id”,“評級”)training_set=fscreate_training_set(df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”,“product_id”])training_df=training_setload_df()toPandas()#“training_df”列(“total_purchases_30d”、“類別”,“評級”)X_train=training_df下降([“評級”),=1)y_train=training_df評級模型=linear_modelLinearRegression()適合(X_train,y_train)fslog_model(模型,“recommendation_model”,味道=mlflowsklearn,training_set=training_set,registered_model_name=“recommendation_model”)#批推理#如果模型在model_uri打包功能,FeatureStoreClient.score_batch的()#調用之前自動從功能存儲檢索所需的功能評分模型。#返回的DataFrame score_batch () batch_df增加了#列包含特征值和一個列包含模型的預測。fs=FeatureStoreClient()# batch_df已列“customer_id”和“product_id”預測=fsscore_batch(model_uri,batch_df)#“預測”DataFrame這些列:#“customer_id”、“product_id”,“total_purchases_30d”、“類別”,“預測”

使用自定義特性值評分模型打包時特性的元數據

默認情況下,一個模型打包功能推理從功能存儲元數據查找功能。使用自定義特性值評分,包括他們在DataFrame傳遞給FeatureStoreClient.score_batch ()。

例如,假設你包一個模型與這兩個特點:

feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“account_creation_date”,“num_lifetime_purchases”),lookup_key=“customer_id”,),]

在推理,你可以提供自定義特性的值account_creation_date通過調用FeatureStoreClient.score_batchDataFrame,包含一個列命名account_creation_date。在這種情況下,API隻查找num_lifetime_purchases從功能存儲和使用提供的自定義特性account_creation_date列值評分模型。

# batch_df已列(“customer_id”、“account_creation_date”)預測=fsscore_batch(“模型:/ ban_prediction_model / 1”,batch_df)

火車和評分模型使用的組合特性存儲特性和外特性存儲的數據存儲

你可以訓練一個模型使用的組合功能以外的功能和數據存儲功能。當你包特性的元數據模型,該模型從特性存儲推理檢索特征值。

訓練模型,包括額外的數據列DataFrame傳遞給FeatureStoreClient.create_training_set。下麵的例子使用了功能total_purchases_30d從特色商店和外部列瀏覽器

feature_lookups=(FeatureLookup(table_name=“recommender_system.customer_features”,feature_names=(“total_purchases_30d”),lookup_key=“customer_id”,),]fs=FeatureStoreClient()# df已列(“customer_id”、“瀏覽器”,“評級”)training_set=fscreate_training_set(df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”]#“瀏覽器”並不排除在外)

在推理,DataFrame中使用FeatureStoreClient.score_batch必須包括瀏覽器列。

#在推理,必須提供“瀏覽器”# batch_df已列(“customer_id”、“瀏覽器”)預測=fsscore_batch(model_uri,batch_df)