火車模型使用磚特性存儲
本文描述了如何訓練模型使用從磚特性的存儲功能。您必須首先創建一個訓練數據集,它定義了功能使用以及如何加入他們的行列。然後,當你訓練一個模型,該模型保留了引用特性。
當您使用推理的模型時,您可以選擇從功能存儲檢索特征值。你也可以與服務模型Serverless實時推理或經典MLflow模型在磚和它會自動查找功能發布到網上商店。
請注意
這時,磚特性的商店不支持統一目錄metastore寫作。團結Catalog-enabled工作空間,您可以編寫功能表默認蜂巢metastore。
在本節中:
創建一個訓練數據集
從功能表模型來選擇特定的功能訓練,您將創建一個訓練數據集使用FeatureStoreClient.create_training_set
API和稱為一個對象FeatureLookup
。一個FeatureLookup
指定每個特性使用訓練集,包括功能表的名稱,名稱(s)的特性,和關鍵(s)使用時加入DataFrame傳遞到功能表FeatureStoreClient.create_training_set
。
使用feature_names
當你創建一個參數FeatureLookup
。feature_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=fs。create_training_set(df=training_df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”,“product_id”])training_df=training_set。load_df()
創建一個TrainingSet當主鍵查找密鑰不匹配
使用參數lookup_key
在FeatureLookup
在訓練集列的名字。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_features
和training_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_df。cid= =customer_features_df。customer_id,training_df。transaction_dt= =customer_features_df。dt),如何=“左”)。加入(product_features_df,在=“product_id”,如何=“左”)
創建一個TrainingSet包含兩個名稱相同的特性從不同特性表
使用可選參數output_name
在FeatureLookup
。的名稱是用於提供在返回的DataFrame特點的名字TrainingSet.load_df
。例如,下麵的代碼,返回的DataFrametraining_set.load_df
包括列customer_height
和product_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()與mlflow。start_run():training_set=fs。create_training_set(df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”])training_df=training_set。load_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()與mlflow。start_run():training_set=fs。create_training_set(df,feature_lookups=feature_lookups,標簽=沒有一個,exclude_columns=(“customer_id”])training_df=training_set。load_df()
火車模型和執行批處理推理與功能表
當你訓練一個模型使用特性存儲功能,保留引用特性模型。當您使用推理的模型時,您可以選擇從功能存儲檢索特征值。必須提供的主鍵(s)在模型中使用的特性。模型檢索功能需要從特征存儲在工作區中。然後根據需要加入特征值在得分。
在推理時支持特性查找:
你必須記錄模型使用
FeatureStoreClient.log_model
。您必須使用返回的DataFrame
TrainingSet.load_df
訓練模型。如果你在使用前以任何方式修改這個DataFrame訓練模型,修改不應用當您使用推理的模型。這降低了模型的性能。必須有一個相應的模型類型
python_flavor
在MLflow。MLflow支持大多數Python模型培訓框架,包括:scikit-learn
keras
PyTorch
SparkML
LightGBM
XGBoost
TensorFlow Keras(使用
python_flavor
mlflow.keras
)
自定義MLflow pyfunc模型
#火車模型進口mlflow從sklearn進口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()與mlflow。start_run():# df已列(“customer_id”、“product_id”,“評級”)training_set=fs。create_training_set(df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”,“product_id”])training_df=training_set。load_df()。toPandas()#“training_df”列(“total_purchases_30d”、“類別”,“評級”)X_train=training_df。下降([“評級”),軸=1)y_train=training_df。評級模型=linear_model。LinearRegression()。適合(X_train,y_train)fs。log_model(模型,“recommendation_model”,味道=mlflow。sklearn,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”預測=fs。score_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_batch
DataFrame,包含一個列命名account_creation_date
。在這種情況下,API隻查找num_lifetime_purchases
從功能存儲和使用提供的自定義特性account_creation_date
列值評分模型。
# batch_df已列(“customer_id”、“account_creation_date”)預測=fs。score_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=fs。create_training_set(df,feature_lookups=feature_lookups,標簽=“評級”,exclude_columns=(“customer_id”]#“瀏覽器”並不排除在外)
在推理,DataFrame中使用FeatureStoreClient.score_batch
必須包括瀏覽器
列。
#在推理,必須提供“瀏覽器”# batch_df已列(“customer_id”、“瀏覽器”)預測=fs。score_batch(model_uri,batch_df)