- Ray分布式機器學習:利用Ray進行大模型的數據處理、訓練、推理和部署
- (德)馬克斯·普佩拉等
- 1404字
- 2024-08-06 17:07:31
1.5 總結
圖1.4概述了Ray的三個層級。Ray的核心分布式執行引擎位于框架中心。Ray Core API是一個多功能的分布式計算庫,而Ray Cluster支持多種方式部署計算任務。
對于實際的數據科學工作流,可以使用Ray Dataset進行數據處理,使用Ray RLlib進行強化學習,然后使用Ray Train進行分布式模型訓練,接著使用Ray Tune進行超參數調優,最后使用Ray Serve進行模型部署。本章展示了每個庫的示例,讀者對它們的API有了一定的了解。Ray AIR為所有其他Ray ML庫提供了統一的API,并都是根據數據科學家的需求構建的。
除此之外,Ray的生態還有許多擴展、集成和后端,稍后將詳細介紹。

圖1.4:Ray的三層架構
[1] “Python為主”是指Ray的所有高級庫都是用Python編寫的,并且新功能的開發是由Python社區的需求驅動的。同時,Ray支持多種編程語言,例如提供了Java API。因此,Ray以后也可能會支持其他對數據科學生態重要的語言。
[2] 長期以來,摩爾定律得到了事實的驗證,但現在可能有跡象表明它正在減緩。一些人甚至說它已經失效了。我們不在書中爭論這些觀點。重要的不是計算機會變得越來越快,而是計算量變得越來越大。
[3] 從基本方法到復雜方法,有很多途徑可以加速ML訓練。例如,第6章將詳細介紹分布式數據處理,第7章將介紹分布式模型訓練。
[4] Ray背后的公司Anyscale(https://www.anyscale.com)正在構建Ray的托管平臺,可以為Ray應用程序提供托管解決方案。
[5] 這聽起來可能很嚴重,但并不是玩笑。舉個例子,2021年3月,一家為數百萬網站提供支持的法國數據中心完全被燒毀(https://oreil.ly/Nl9_o)。如果整個集群都燒毀了,Ray也是無能為力的。
[6] 這是一本Python圖書,因此專注于Python,但Ray還具有Java API。不過,相比于Python版本,當前Java API成熟度較低。
[7] 之所以許多庫建立在Ray Core之上,是因為Ray Core非常精簡和直觀。本書的目標之一是讓用戶利用Ray編寫自己的應用,甚至編寫庫。
[8] 在本書中,我們通常只在需要時介紹依賴項,這樣學習起來更容易。相反,GitHub上的notebook(https://oreil.ly/j9ccz)是一次性安裝所有依賴項,這樣就可以專注于運行代碼而不是安裝依賴項。
[9] 寫作本書時,Python 3.10尚不支持Ray,因此需要使用3.7~3.9之間的Python版本。
[10] 還有其他與Ray集群交互的方式,例如Ray Jobs CLI(https://oreil.ly/XXnlW)。
[11] 我們向來不喜歡將數據科學歸類為數學、編程和商業的交叉學科,因為這樣無法指明數據科學家具體從事什么工作。
[12] 關于這個主題,建議閱讀保羅·格雷厄姆(Paul Graham)的《黑客與畫家》(Hackers and Painters)一書,并將“計算機科學”替換為“數據科學”。
[13] 關于創建機器學習應用的完整介紹,可參考Emmanuel Ameisen的Building Machine LearningPowered Applications一書(O'Reilly出版社)。
[14] 第6章將介紹Ray Dataset的基本原理,包括它對Arrow的使用。現在重點關注其API和具體的使用方法。
[15] 后面章節會進行詳細介紹,特別是第6章,但請注意,Ray Dataset并不是通用的數據處理庫。對于大規模數據處理,諸如Spark之類的工具具有更成熟和優化的支持。
[16] 如果你使用的是Mac,則需要安裝tensorflow-macos。一般而言,如果在系統上安裝Ray或其依賴項時遇到任何問題,則可以參考安裝指南(https://docs.ray.io/en/latest/ray-overview/installation.html)。
[17] 根據所使用的操作系統,你可能需要先安裝Rust編譯器才能使其正常工作。例如,在Mac上,可以使用brew install rust進行安裝。
[18] Spark是伯克利大學的另一個實驗室——AMPLab創建的,互聯網上有很多博客文章宣稱應該將Ray作為Spark的替代品。不過,最好是將二者視為具有不同優勢的工具,這兩種工具都很可能長期共存。
[19] 在深度學習框架Keras(https://keras.io)成為TensorFlow的正式組成部分之前,Keras最初是一個方便的API規范,用于各種低級框架,如Theano或CNTK。從這個意義上說,Ray RLlib有機會成為“用于強化學習的Keras”,而Ray Tune可能是“用于超參數調優的Keras”。如果想將Ray RLlib和Ray Tune更廣泛地用于機器學習,需要采用更優雅的API設計。
- Python快樂編程:人工智能深度學習基礎
- JavaScript語言精髓與編程實踐(第3版)
- CentOS 7 Linux Server Cookbook(Second Edition)
- Dependency Injection in .NET Core 2.0
- 實用防銹油配方與制備200例
- Visual Basic程序設計習題解答與上機指導
- Mastering KnockoutJS
- Python數據挖掘與機器學習實戰
- 學習OpenCV 4:基于Python的算法實戰
- Machine Learning With Go
- C++程序設計教程
- 你真的會寫代碼嗎
- 3D Printing Designs:Octopus Pencil Holder
- Python計算機視覺與深度學習實戰
- Kotlin程序員面試算法寶典