共用方式為


什麼是 Fabric 中 Apache Spark 設定的自動調整?

Autotune 會自動調整 Apache Spark 設定,以加速工作負載的執行並最佳化整體效能。 與需要大量投入、資源、時間和實驗的手動調整功能相較之下,自動調整功能可以節省時間和資源。 自動調整功能利用工作負載的歷史執行資料,反覆尋找並應用最適合特定工作負載的配置。

這很重要

這項功能目前處於預覽階段。

注意

Microsoft Fabric 中的自動調整查詢優化功能目前為預覽階段。 自動調諧功能可在所有生產區域使用,但預設為停用。 您可以在環境內或單一工作階段內透過 Spark 組態設定來啟用它,方法是在 Spark 筆記本或 Spark 工作定義程式碼中包括各自 Spark 設定。

查詢微調

Autotune 功能會為每個查詢單獨配置三個 Apache Spark 設定:

  • spark.sql.shuffle.partitions – 設定聯結或彙總期間資料隨機播放的分割區計數。 預設值為 200。
  • spark.sql.autoBroadcastJoinThreshold – 設定執行聯結作業時廣播到所有工作節點的資料表的最大大小(以位元組為單位)。 預設值是 10 MB。
  • spark.sql.files.maxPartitionBytes – 讀取檔案時,定義要封裝成單一分割區的位元組數目上限。 適用於 Parquet、JSON 和 ORC 檔案型來源。 預設值是 128 MB。

提示

自動調整查詢微調會檢查個別查詢,並為每個查詢建置不同的 ML 模型。 它專門針對:

  • 重複的查詢
  • 長時間執行的查詢(執行超過 15 秒)
  • Apache Spark SQL API 查詢(不包括以 RDD API 撰寫的查詢,這是罕見的),但我們優化所有查詢,而不論語言 (Scala、PySpark、R、Spark SQL) 此功能都與筆記本、Apache Spark 作業定義和管線相容。 優點會隨著查詢的複雜度、所使用的方法和結構而有所不同。 廣泛的測試顯示,透過與探索式資料分析相關的查詢即可實現有最大的優點,例如讀取資料、執行聯結、彙總和排序。

啟用自動調整功能後執行時間的螢幕截圖。

自動調整背後的 AI 型直覺

自動調校功能會利用迭代程序來優化查詢效能。 它會從預設組態開始,並採用機器學習模型來評估有效性。 使用者提交查詢時,系統會根據先前的互動來擷取儲存的模型。 它會以 centroid 的預設設定產生潛在組態。 由模型預測的最佳候選項目被套用。 查詢執行之後,效能資料會傳回系統以調整模型。

意見反應迴圈會逐漸將 centroid 朝最佳設定前去。 它會隨著時間調整效能,同時將迴歸的風險降到最低。 根據使用者查詢進行持續更新,則可調整效能基準。 此外,此程序會更新 centroid 設定,以確保模型逐漸朝向更有效率的設定邁進。 這可藉由評估過去的效能,並使用它們來引導未來的調整來達成。 它會使用所有資料點來降低異常狀況的風險。

從負責任的 AI 觀點來看,自動調整功能包含透明度機制,旨在讓您隨時了解數據使用量和優點。 安全性和隱私權符合 Microsoft 的標準。 持續監視可在啟動後維持效能和系統完整性。

啟用自動調整

自動調整可在所有生產區域使用,但 預設為停用。您可以透過環境中的 Spark 組態設定加以啟用。若要啟用自動調整,請建立新的環境,或為現有的環境設定 Spark 屬性 'spark.ms.autotune.enabled = true',如下列螢幕快照所示。 然後,此設定會由在該環境中執行的所有筆記本和作業繼承,並自動調整它們。

螢幕擷取畫面,其中顯示啟用自動調音。

自動調整功能包括監視效能和偵測效能迴歸的內建機制。 例如,如果查詢處理異常大量的數據,自動調整會自動停用。 一般需要 20 到 25 個反覆項目才能學習並識別最佳設定。

注意

Autotune 與 Fabric Runtime 1.1Runtime 1.2 兼容。 無法在高於 1.2 的執行階段版本上啟用。 當啟用高並行模式私人端點時,自動調整功能將無法運作。 不過,不論其設定為何,自動調音功能都能順暢地與自動調整規模功能整合。

您可以在單次會話中啟用自動調整功能,方法是在 Spark 筆記本或 Spark 工作定義程式碼中包括各自的 Spark 設定。

%%sql
SET spark.ms.autotune.enabled=TRUE

您可以透過個別 Spark 筆記本或 Spark 作業定義程式代碼的 Spark 設定來控制自動微調。 若要停用自動調整功能,請執行下列命令作為 Notebook 中的第一個單元格或 SJD 中的程式碼行。

%%sql 
SET spark.ms.autotune.enabled=FALSE 

案例研究

當您執行 Apache Spark 查詢時,autotune 會建立專用於優化查詢執行的自定義 ML 模型。 其會分析查詢模式和資源需求。 請考慮根據特定屬性 (例如國家/地區) 篩選資料集的初始查詢,。 雖然此範例使用地理篩選,但此原則通用於查詢內的任何屬性或作業:

%%pyspark
df.filter(df.country == "country-A")

自動調整功能會從此查詢學習,以最佳化後續的執行。 例如,當查詢變更時,修改篩選值或套用不同的資料轉換後,查詢的結構本質常會保持一致:

%%pyspark
df.filter(df.country == "country-B")

儘管有所修改,但自動調整功能仍會識別新查詢的基本結構,並實作先前學到的最佳化。 此功能可確保持續高效率,而無需對每個新的查詢反覆項目手動重新設定。

日誌

自動調整功能會對每個查詢判斷三個 Spark 組態的最佳設定。 您可以進入記錄檔,來查看建議的設定。 自動調整功能建議的設定位於驅動程式記錄中,特別是從 [Autotune] 開始的項目。

螢幕擷取畫面,其中顯示監視中樞內的自動調整記錄。

您可以在記錄中找到各種類型的項目。 以下包括關鍵的項目:

狀態 描述
自動調諧_停用 已略過。 自動調整功能已停用,阻止了遙測資料的擷取並影響查詢最佳化。 啟用自動調整功能以充分運用其功能,同時尊重客戶隱私」。
QUERY_TUNING_DISABLED 已略過。 已停用自動調整查詢微調。 啟用它以微調 Spark SQL 查詢的設定。
QUERY_PATTERN_NOT_MATCH(查詢模式不匹配) 已略過。 查詢模式不相符。 自動調整功能對唯讀查詢有效。
查詢持續時間太短 已略過。 您的查詢持續時間太短,無法最佳化。 自動調整功能需要較長的查詢,以有效微調。 查詢應該至少執行 15 秒。
查詢調整成功 成功。 查詢調整已完成。 已套用最佳 Spark 設定。

透明度注意事項

為了遵守負責任的人工智慧標準,本節旨在闡明自動調整功能的用途和驗證,從而促進透明度並支持明智的決策制定。

自動調整的目的

自動調整功能是專為增強 Apache Spark 工作負載效率而開發的,主要適用於資料專業人員。 其主要功能包括:

  • 自動化 Apache Spark 組態微調,以減少執行時間。
  • 將手動微調工作降至最低。
  • 利用歷史工作負載資料反覆調整設定。

自動調整功能的驗證

Autotune 經過廣泛的測試,以確保其有效性和安全性:

  • 使用各種 Spark 工作負載進行嚴格的測試,以驗證微調演算法的效用。
  • 針對標準 Spark 最佳化方法進行基準測試,以展示效能優勢。
  • 真實世界的案例研究突顯自動調音的實際價值。
  • 遵循嚴格的安全性和隱私權標準來保護使用者資料。

使用者資料專門用來增強工作負載的效能,透過強固保護防止誤用或暴露敏感性資訊。