官术网_书友最值得收藏!

推薦序——讓分布式AI觸手可及

2017年年中,螞蟻集團技術管理團隊參加了一次加州大學伯克利分校的技術論壇,然后將剛剛開源不久的Ray帶回了公司。數年后的今天,Ray已經在螞蟻集團生產環境落地超過100萬CPU核的業務,在機器學習、模型推理與服務、搜索推薦系統等方面有了廣泛的應用。作為國內最早一批Ray開發者,我們在業內的技術交流中經常被問道:“你們為什么在這么早期就決定投入Ray這個開源項目中?是什么原因讓團隊下定決心?”從我個人的角度來看,我們最初是被Ray清爽的API設計所吸引了。Ray是一個基礎設施層的引擎和編程框架,面向的主要是程序員群體。Ray清爽、簡潔的API設計可以說是分布式系統或者應用開發者的福音。Ray Core的API從設計之初到現在,基本上沒有改變過,也從側面證明了Ray創始團隊對這套API的優秀設計。

有人說,是OpenAI帶火了Ray(Ray被OpenAI公司應用于ChatGPT大模型系統)。但從多年的Ray內核開發者視角來看,Ray多年來圍繞其核心抽象積累的底層能力、原生庫,以及AI生態一直在幫助數以萬計的AI系統和應用開發者解決分布式難題,而大模型是一個助推器,在高速增長的Scaling需求面前,Ray的優勢被更多的開發者發現和挖掘。

如果去GitHub看Ray的介紹,我們會發現Ray的定義是:“Ray is a unified framework for scaling AI...”。沒錯,“unified”翻譯過來是“統一的”或“一體的”,可以準確地描述Ray的定位。在中文社區,我們更喜歡將這種能力叫作“通用分布式”。Ray的“通用分布式”能力來源于Ray獨特的計算引擎抽象和API設計。如果說Spark是圍繞數據集(RDD)進行抽象,PyTorch是圍繞模型(Tensor)進行抽象,那么Ray就是從最基本的面向對象的編程語言進行抽象和設計。大部分應用程序都可以通過面向對象編程語言進行實現,這幫助Ray找到了一個更加底層的切面,相比于其他計算引擎,Ray可以被用于更廣泛的場景。這一點相信大家通過本書學習到Ray Core的兩個核心概念Task和Actor后就會深有體會。

Ray看起來很云原生,因為Ray依賴K8s做容器化部署、云資源彈性、服務部署等,這是當前Ray集群和應用運維最主流、最成熟的方式;Ray看起來又很不云原生,因為它確實是一個二層調度系統,定義了一套云上應用的新玩兒法,資源、環境等聲明與應用程序高度融合。Ray從定位上并不對標K8s,但資源調度確實是Ray Core底層最核心的能力之一,因此大家也經常將兩者拿來比較。單純從資源調度的角度來看,Ray最大的特色是輕量化。相比于Pod(作為K8s的交付物),Ray的交付物是由一個進程或者線程承載的遠程實例。在最好的情況下,Ray的調度僅僅是一個RPC的開銷。因此,Ray非常適合那些對調度時延敏感的業務以及高頻創建的小(或短)任務,這也是Ray是在強化學習場景誕生的原因。

優秀的研發體驗是Ray能吸引大量國內外開發者的另一個原因。在AI領域,基礎設施的易用性對于ML工程師或算法工程師來說顯得尤為重要,特別是在大模型時代,一個能夠屏蔽底層復雜性、幫助用戶快速開發和驗證算法或模型的框架會受到追捧。基于Task和Actor的設計,Ray可以在不改變用戶單機編程習慣的前提下,無縫地從單機編程走向分布式編程,這就是一種優秀的研發體驗。我們曾經做過一個實驗:分別以云原生的方式和Ray的方式開發一個復雜的分布式系統,并對比兩種方式的不同。從最終結果來看,Ray可以將云原生開發中的Python、ProtoBuf、Dockerfile、Go和YAML等5種編程語言的代碼壓縮到僅1/10行的純Python代碼。

經過多年的發展,圍繞Ray社區已經形成了一個龐大的AI生態,為用戶提供開箱即用的AI基礎設施。Ray做AI生態有一個天然的優勢,就是它“與框架無關”(framework agnostic)的設計。以AI pipeline的角度來看,數據處理、訓練、推理與服務等上層Libs的設計都是framework agnostic的。比如訓練,你可以在Ray上很方便地使用主流的訓練框架(PyTorch、TensorFlow、XGBoost等),沒有原生支持的框架也可以很方便地通過Ray Core接口進行集成。當主流的AI框架都可以在Ray中集成時,它們會被Ray有效地融合在一起,產生“化學反應”。典型的融合(比如“數據處理+推理”的融合)在Ray社區造就了經典的離線批量推理的Case。早期螞蟻集團提出的融合計算也是得益于Ray這種天然的“膠水”能力。

說回這本書,本書的作者均為Ray開源社區的核心貢獻者,在Ray的系統和設計方面有著多年的積累,他們呈現了一本全面且高質量的Ray入門書籍。本書內容根據Ray的架構進行組織,既適合按順序通讀,也適合讀者根據自身的需求閱讀相應的章節。作為一個開發框架,Ray提供的Libs有豐富的組件和接口,強烈建議讀者邊閱讀邊動手。Ray的開源社區非常活躍,當你通過本書對Ray有了全面的了解之后,建議關注開源社區最新的發布和文檔,獲取Ray最新的特性和用法。

好了,快來開啟一段分布式機器學習之旅,讓分布式AI觸手可及!

宋顧楊

螞蟻集團Ray團隊開源負責人

Ray開源社區Committer

主站蜘蛛池模板: 罗平县| 桦川县| 株洲市| 南雄市| 且末县| 韶山市| 石柱| 临安市| 随州市| 大埔区| 新昌县| 镇宁| 古交市| 兰考县| 商洛市| 体育| 安庆市| 华容县| 息烽县| 合阳县| 黔西县| 夏河县| 金塔县| 石泉县| 冷水江市| 鸡东县| 宝山区| 图片| 富源县| 绥棱县| 韩城市| 桐柏县| 海阳市| 萝北县| 台中县| 衡山县| 大同市| 博爱县| 迁西县| 上思县| 蓬溪县|