共用方式為


什麼是 Azure Databricks 中的 Ray?

Ray 是調整 Python 應用程式的開放原始碼架構。 它包含 AI 工作負載專屬的媒體櫃,使其特別適合用於開發 AI 應用程式。 Azure Databricks 上的 Ray 可讓您執行 Ray 應用程式,同時取得 Azure Databricks 的所有平台優點和功能。

使用 Ray 2.3.0 及更新版本,您可以使用 Azure Databricks 在 Apache Spark 叢集上建立 Ray 叢集並執行 Ray 應用程式。

如需有關 Ray 機器學習使用者入門資訊 (包括教學課程和範例),請參閱 Ray 文件。 如需 Ray 和 Apache Spark 整合的詳細資訊,請參閱 Spark API 上的 Ray 文件

什麼是 Ray?

Ray 藉由提供基本的 Python 基本類型,從頭開始建立分散式應用程式,以簡化分散式系統。 對於分散式系統的新 Python 開發人員而言,它提供與標準 Python 相同的使用便利性,同時管理協調流程、排程和容錯。

Ray 和 Apache Spark 是互補架構。 Ray 擅長邏輯平行處理原則、處理動態、計算密集型工作,例如機器學習和增強式學習。 Apache Spark 專門處理數據平行處理原則,有效率地處理 ETL 和資料分析等大型資料集工作。 它們一起為數據處理和複雜的計算提供強大的組合。

為什麼要在 Azure Databricks 上執行 Ray?

在 Azure Databricks 上執行 Ray 可讓您利用 Azure Databricks 生態系統的廣度,透過開放原始碼 Ray 中無法使用的服務與整合,強化資料處理和機器學習工作流程。 在 Azure Databricks 中執行 Ray 的優點包括:

  • 整合平台:Azure Databricks 提供統一的平台,您可以在其中與 Apache Spark 一起執行 Ray 應用程式。 此整合支援順暢的資料 ETL 作業、有效率的資料傳輸,以及相同計算環境中的強大平行運算。
  • 治理和控制:使用 Unity Catalog 為所有資料資產、檔案、模型等,取得譜系追蹤、資料版本控制及存取控制的優點,確保合規性和安全性。
  • 基礎結構管理:使用 Azure Databricks Terraform 供應商和 Azure Databricks 資產組合等基礎結構工具來管理叢集和工作,確保簡化的操作和可擴縮性。
  • 受管理的 Ray 叢集:Ray 叢集是管理於與執行中的 Apache Spark 叢集相同的執行環境中。 這可確保可擴縮性、可靠性和易於使用,而不需要複雜的基礎結構設定。
  • 模型服務與監視:將使用 Ray Train 定型的模型連線到 Mosaic AI 模型服務,以進行高可用性、低延遲的部署。 此外,使用 Lakehouse 監視來追蹤模型預測品質和漂移,以確保一致的效能。
  • 增強式 ML 開發:與完全受控的 Azure Databricks MLflow 服務整合,以追蹤您的模型開發,促進整體 Ray 應用程式的實驗管理和重現性。
  • 自動化工作流程:使用 Databricks 工作將流程自動化,建立可簡化操作並減少手動介入的生產就緒管線。
  • 代碼管理和共同作業:使用 Azure Databricks Git 資料夾有效率地管理您的代碼,為您的 Ray 應用程式代碼啟用版本控制和共同作業開發的無縫 Git 整合。
  • 有效率的資料存取:將 Ray 應用程式連線到 Delta Lake,利用 Azure Databricks 廣泛的資料整合生態系統,將 Ray 的功能延伸到更廣泛的應用程式和輸出。

藉由在 Azure Databricks 上執行 Ray,您可以存取整合式生態系統,以增強資料處理、機器學習和作業流程。

使用案例 - 機器學習以及更多可能性

Ray 是一種多功能工具,可擴充 Python 的功能不受 DataFrame 作業的限制,因此非常適合高度自訂和指定的分散式演算法。

機器學習和深度學習

利用 Ray 的機器學習媒體櫃來增強 ML 工作流程:

  • 超參數微調:使用 Ray Tune 最佳化模型效能,以進行高效能且可調整的超參數搜尋。
  • 分散式深度學習定型:跨多個節點調整深度學習模型,並支援 PyTorch、TensorFlow、HuggingFace 和 Keras 等熱門架構。 適用於電腦視覺或大型語言模型 (LLMs) 的定型模型。
  • 傳統機器學習:使用 Ray 散發定型、評估和批次推斷,以 scikit-learn 或 XGBoost 等熱門媒體櫃建置的傳統 ML 模型。

高效能運算 (HPC)

Ray 擅長散發 HPC 工作負載,使其適合:

  • 數學計算:使用 Ray Core 在物理、基因體學或財經等領域中執行複雜的計算,以有效率地平行處理。
  • 時間序列預測:調整預測模型,同時以預測套件執行估算,例如 Prophet 或 ARIMA。

特徵工程和資料處理

Ray 也可以處理各種資料處理工作:

  • 計算特徵:複雜的計算密集型特徵工程工作可以受益於 Ray 的分散式運算結構。
  • 音訊、影像和視訊處理:散發和加速多媒體資料的處理,使其適用於語音辨識、影像分類和影片分析中的應用程式。

限制

  • Apache Spark 上的 Ray 支援單一使用者 (已指派) 存取模式、無隔離共用存取模式,以及僅工作叢集。 無法使用無伺服器型執行階段在叢集上起始 Ray 叢集。
  • 避免在執行中的 Ray 叢集上執行 %pip 來安裝套件,因為它會關閉叢集。 相反地,請先安裝媒體櫃,再初始化叢集。
  • 使用從 ray.util.spark.setup_ray_cluster 覆寫設定的整合可能會導致 Ray 叢集變得不穩定。 避免在第三方應用程式中過度訂閱 Ray 叢集資源。
  • 如果您遇到類似 ncclInternalError: Internal check failed 的錯誤,這表示叢集中 GPU 之間的網路通訊發生問題。 若要解決此錯誤,請在定型代碼中新增下列片段,以使用主要網路介面。
import os
os.environ["NCCL_SOCKET_IFNAME"] = "eth0"

請參閱本章節的其他文章。