什麼是 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"
請參閱本章節的其他文章。