功能商店成本管理

本頁說明 Azure Databricks 功能商店如何對運算收費,以及如何監控與優化這些成本。 功能商店是按成本收費的:你支付底層的無伺服器運算、線上商店和服務基礎設施,且沒有額外額外費用。

  • 功能實體化 以無伺服器運算方式運行,並以產品下的 FEATURE_STORE 計費方式顯示,收費率與無伺服器工作及 Lakeflow 管線相同。
  • 功能服務端點 會依照模型服務 SKU 計費。
  • 線上商店 是以 Lakebase 運算計算計費,依據容量單位(CU)和副本數量計費。

功能商店的計費方式

功能具體化

當你實現功能檢視時,Azure Databricks 會運行無伺服器的管線,計算並寫入功能值到離線與線上目的地。 這包括批次實體化作業、串流處理管線,以及 Kafka 資料擷取。 這些管線在無伺服器運算上執行,按成本計費,乘數為 1 倍,且不會在底層無伺服器平台的費用之上加收溢價。 當你回 填功能視圖時,回填會運行在同一台無伺服器運算系統上,且計費方式相同。

在可計費用量系統資料表中,實體化用量會顯示為 billing_origin_product 設為 FEATURE_STORE,以及一個無伺服器運算 SKU(JOBS_SERVERLESS_COMPUTE,其前綴為您的工作區層級和區域)。 使用率是 is_serverless 和 is_photon,包含 usage_metadatadata_source (DELTA_TABLE_SOURCE或KAFKA_SOURCE)和operation(FEATURE_MATERIALIZATIONKAFKA_INGESTION或),所以你可以依批次和串流工作負載來分割成本。 回填用量與批次具體化的 data_source 和 operation 值相同。 要識別回填成本,請將 tags 傳遞給 backfill_features。

為了降低計算成本,將共享離線目的地、線上目的地及觸發的功能合併為單一 materialize_features 呼叫,使其在同一管線中運行。 請參見 Materialize 特徵視圖。 如需進一步了解無伺服器運算的計費方式,請參閱 使用無伺服器運算執行工作流程的 Lakeflow Jobs。

功能服務端點

功能服務端點為即時應用程式提供預先計算及按需處理的功能。 它們運行於模型服務(Model Serserving)上,並以模型服務 SKUSERVERLESS_REAL_TIME_INFERENCE()計費,與自訂模型服務端點相同。 費用會隨端點為處理請求流量而配置的運算資源多寡而變動。 請參閱 Serve 功能表 及 模型服務定價頁面。

線上商店

線上商店提供低延遲的功能以供線上推論。 Azure Databricks 線上存放區採用 Lakebase 作為後端,並根據其佈建的容量單位 (CU) 和讀取複本,按 Lakebase 計算資源計費。 每個容量單元會分配運算、記憶體和儲存空間給實例,你還可以新增讀取副本以提升可用性和讀取吞吐量。 請參閱 Databricks 線上功能商店 的規模調整指引、 管理計算以 了解容量單元與計算的映射,以及 Lakebase 定價頁面。

標籤與無伺服器使用政策的屬性成本

這很重要

這項功能處於個人預覽版狀態。 若要試用,請洽詢您的 Azure Databricks 連絡人。

當你建立實體化、啟動回填或建立 串流時,傳遞自訂標籤、無伺服器使用政策,或兩者兼具。 Azure Databricks 會將這些資料套用到它建立的工作或 Lakeflow 管線上,因此其支出會將你的歸因記錄在可計費使用系統的表格中。 要建立政策並取得其 ID,請參見 建立無伺服器使用政策。

這兩個值都會在建立作業或管線時套用。 若要對現有計算有不同歸屬,請建立一個新的實體化或串流。

屬性物質化計算

將 budget_policy_id、tags 或兩者皆可傳遞至 materialize_features:

materialized = fe.materialize_features(
    features=features,
    offline_config=offline_config,
    trigger=trigger,
    tags={"team": "ml-platform", "project": "churn"},
    budget_policy_id="555e8888-e999-4444-a777-446655440000",
)

完整簽名請參閱 實體化特徵檢視。

屬性回填計算

將 tags、budget_policy_id 或兩者傳遞給 backfill_features。 它們只適用於該 backfill,因此每個 backfill 都可以有其自己的署名資訊。

backfill = fe.backfill_features(
    features=features,
    backfill_ranges=backfill_ranges,
    tags={"team": "ml-platform", "project": "churn"},
    budget_policy_id="555e8888-e999-4444-a777-446655440000",
)

完整簽章請參見 回填特徵檢視。

屬性管理擷取運算

對於 Stream,請在傳遞給 create_stream 的 IngestionConfig 上設定 tags 和 budget_policy_id:

from databricks.feature_engineering.entities import IngestionConfig, IngestionDestination

ingestion_config = IngestionConfig(
    ingestion_destination=IngestionDestination(
        delta_table_name="my_catalog.my_schema.events_ingestion"
    ),
    tags={"team": "ml-platform", "project": "churn"},
    budget_policy_id="555e8888-e999-4444-a777-446655440000",
)

關於剩餘的擷取選項,請參見 設定串流。

計算歸因適用於

標籤與無伺服器使用政策適用於具體化特徵、回填特徵或匯入串流資料的運算:批次具體化作業、特徵回填作業、串流 Lakeflow 管線及協調它的作業,以及串流的匯入 Lakeflow 管線及其向前填補與回填作業。 當你實體化到新的線上資料表時,它們也會套用到保持該資料表同步的 Lakeflow 管線。

這些不適用於線上商店本身。 若要將線上商店本身的運算用量歸屬於該商店,請在該商店上設定無伺服器用量政策。 請參閱 Databricks Online 功能存放區。

Limitations

  • 將資料實體化到已存在的線上資料表時,既不會套用 budget_policy_id,也不會套用 tags,且不會回傳任何錯誤。 讓該資料表保持同步的 Lakeflow 管線會保留其建立時所附加的標籤。 要更改歸屬,請實體化到新的線上表格。
  • 你最多只能通過25個標籤。
  • 標籤鍵最多可達 127 個字元,標籤值最多可達 65,535 個字元。 兩者都不可能空洞。
  • 標籤鍵不能以 databricks:開頭。 該前綴已被保留,且此檢查會忽略大小寫。

監控使用量與成本

您可以使用可計費用量系統資料表 system.billing.usage 來監控 Feature Store 成本。 Materialization 的用法可由 billing_origin_product = 'FEATURE_STORE' 識別:

SELECT
  usage_date,
  usage_metadata.data_source,
  usage_metadata.operation,
  usage_metadata.job_id,
  usage_metadata.dlt_pipeline_id,
  identity_metadata.run_as,
  sum(usage_quantity) AS dbus,
  usage_unit
FROM system.billing.usage
WHERE billing_origin_product = 'FEATURE_STORE'
GROUP BY ALL;

用 usage_metadata.data_source 和 operation 來按批次和串流來拆解成本。 usage_metadata.job_id和usage_metadata.dlt_pipeline_id欄位會標示產生每個成本列的特定物質化工作或管線,這樣你可以依它們分組,方便逐條管線歸因。

custom_tags 欄包含你傳遞的標籤,以及無伺服器使用量原則所附帶的標籤,因此你可以依 custom_tags['<key>'] 分組或篩選,將支出歸因。 關於政策標籤如何傳送到帳單紀錄,請參見 「分析帳單紀錄中的無伺服器使用政策標籤」。

功能服務與線上商店費用會分別追蹤:

  • 功能服務端點會出現在模型服務 SKU 下。 請參見 監控模型服務成本。
  • 線上商店運算則出現在 Lakebase(資料庫)無伺服器 SKU 之下。

關於可計費使用表的詳細資訊及查詢方法,請參見 可計費使用系統資料表參考。

成本最佳化的最佳做法

  • 將功能群組成共享的實體化管線:共享離線目的地、線上目的地和觸發器的功能,可以同時在單一管線中實現,減少你付費的管線數量。
  • 重複使用線上商店:您可以將多個功能表發佈到單一線上商店。 在開發、測試和培訓方面,建議跨專案共用同一家線上商店,而非建立獨立商店。
  • 適量的線上商店容量:從小型容量單位開始測試,並根據效能與成本調整或縮小規模。
  • 刪除未被使用的資源:線上商店持續產生成本。 刪除不再需要的線上商店和實體化流程。
  • 選擇適當的具體化觸發條件:頻率較低的排程觸發成本低於持續或頻繁重新具體化的成本。 請根據功能所需的即時更新程度,選擇相應的觸發條件。

其他資源