技術指南

Ray 用於分散式人工智慧

Ray 是一個開源框架,可以輕鬆地將 Python 和 AI 工作負載從筆記型電腦擴展到包含數千台機器的叢集。

閱讀時間約2分鐘最後更新

概述

It matters because it gives a simple, unified way to distribute training, tuning, data processing, and serving without rewriting your code for each.

深入探討

Ray 的核心思想是以最小的改變將普通的 Python 函數和類別轉變為分散式單元。標記為遠端「任務」的函數在叢集中的任何工作執行緒上非同步運行;標記為遠端「參與者」的類別成為依賴於工作人員的有狀態服務。 Ray 傳回輕量級 future(物件參考)並處理排程、透過共用物件儲存進行資料移動以及容錯。在此核心之上是專門建立的函式庫:用於分散式模型訓練的 Ray Train、用於超參數搜尋的 Ray Tune、用於串流資料管道的 Ray Data、用於強化學習的 RLlib 以及用於可擴展模型服務的 Ray Serve。這使得一個叢集能夠端到端地處理整個機器學習工作流程。

技術洞察

關鍵原語是任務(無狀態、平行函數呼叫)和參與者(保存載入模型或計數器等內容的有狀態工作人員)。當您呼叫遠端任務時,Ray 立即傳回 future 並在可用的 CPU/GPU 上安排工作;您呼叫 ray.get() 來取得結果。具有零拷貝共享記憶體的分散式記憶體物件儲存可以有效地在工作人員之間移動數組等大型對象,避免重複序列化並使資料量大的 AI 管道快速運行。

戰略影響

成本與預算

多年來,架構決策決定著效能和營運成本。

更明確的決策

技術教育幫助團隊選擇正確的堆疊,而不僅僅是最新的堆疊。

品質管控

更好的工程選擇可以減少生產中的可靠性事故。

Ray 分散式 AI 的未來

Ray 已成為大規模人工智慧的支柱,特別是用於訓練和服務大型語言模型。預計 LLM 特定服務(帶有 vLLM 的 Ray Serve)、異構 GPU 調度、透過 KubeRay 與資料湖和 Kubernetes 更緊密的集成,以及針對尖峰生成工作負載的更好的自動擴展等方面會出現增長。隨著模型的增長,Ray 在協調多節點訓練、RLHF 管道以及跨數千個加速器的批量推理方面的作用可能會擴大。

現實世界的實施

運行 Ray Tune 在 GPU 叢集中並行搜尋數百個超參數組合,以找到最佳模型配置

使用 Ray Train 將深度學習模型的訓練分佈在多個 GPU 和節點上,只需最少的程式碼更改

使用 Ray Data 建立批次推理管道,透過跨集群的模型串流數百萬筆記錄來獲得這些記錄

使用 Ray Serve 在單一自動縮放端點後面部署多個模型,以處理可變的生產流量

風險與防護欄

優化一項基準測試可以隱藏更廣泛的系統弱點。

基礎設施和維護成本常常被低估。

隨著系統變得更加複雜,安全性和可觀察性差距可能會擴大。

實施路線圖

1

在實施之前定義延遲、品質和成本目標。

2

在實際負載和資料條件下進行基準測試。

3

儀器監控錯誤、漂移和使用者影響。

4

在擴展之前準備回滾和事件回應路徑。

不斷探索

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Ray for Distributed AI quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

開始測驗

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

下一步指南

梯度檢查點

常見問題

What is Ray for Distributed AI?

Ray 是一個開源框架,可以輕鬆地將 Python 和 AI 工作負載從筆記型電腦擴展到包含數千台機器的叢集。這很重要,因為它提供了一種簡單、統一的方式來分發訓練、調優、資料處理和服務,而無需為每個項目重寫程式碼。

Ray主要解決什麼問題?

Ray 提供了一種統一、簡單的方法來在多台機器上指派計算,而無需為每種工作負載類型重寫程式碼。

在 Ray 中,「任務」和「演員」有什麼區別?

任務是並行運行的無狀態遠端函數,而參與者是保持狀態的長期對象,就像載入的模型一樣。

當您啟動遠端任務時,Ray 立即返回什麼?

Ray 立即傳回一個輕量級 future,因此工作非同步運行;您可以在需要時呼叫 ray.get() 來檢索實際結果。

哪個 Ray 函式庫是為分散式超參數搜尋而設計的?

Ray Tune 專注於在叢集中並行運行許多超參數試驗。

Ray 的物件儲存如何提高資料密集型 AI 管道的效率?

共享記憶體物件儲存使用零拷貝讀取,因此工作人員可以存取大型數組,而無需昂貴的重新序列化。