Ray:用於擴充套件和分發Python和ML應用的框架
Ray 為構建分散式應用程式提供了一個簡單、通用的 API。
透過以下方式完成了這一使命:
- 為構建和執行分散式應用程式提供簡單的原語。
- 使終端使用者能夠並行化單個機器程式碼,而程式碼更改幾乎為零。
- 在核心 Ray 之上包括一個由應用程式、庫和工具組成的大型生態系統,以支援複雜的應用程式。
在Ray Core之上是幾個用於解決機器學習問題的庫:
以及用於將 ML 和分散式應用程式投入生產的庫:
還有許多與 Ray 的社群整合,包括Dask、MARS、Modin、Horovod、Hugging Face、Scikit-learn等。
Ray 提供 Python、Java 和EXPERIMENTAL C++ API。Ray 使用任務(函式)和Actors(類)來允許您並行化您的程式碼。
Java程式碼:
import io.ray.api.ActorHandle; import io.ray.api.ObjectRef; import io.ray.api.Ray; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; public class RayDemo { public static int square(int x) { return x * x; } public static class Counter { private int value = 0; public void increment() { this.value += 1; } public int read() { return this.value; } } public static void main(String[] args) { // Intialize Ray runtime. Ray.init(); { List<ObjectRef<Integer>> objectRefList = new ArrayList<>(); // Invoke the `square` method 4 times remotely as Ray tasks. // The tasks will run in parallel in the background. for (int i = 0; i < 4; i++) { objectRefList.add(Ray.task(RayDemo::square, i).remote()); } // Get the actual results of the tasks with `get`. System.out.println(Ray.get(objectRefList)); // [0, 1, 4, 9] } { List<ActorHandle<Counter>> counters = new ArrayList<>(); // Create 4 actors from the `Counter` class. // They will run in remote worker processes. for (int i = 0; i < 4; i++) { counters.add(Ray.actor(Counter::new).remote()); } // Invoke the `increment` method on each actor. // This will send an actor task to each remote actor. for (ActorHandle<Counter> counter : counters) { counter.task(Counter::increment).remote(); } // Invoke the `read` method on each actor, and print the results. List<ObjectRef<Integer>> objectRefList = counters.stream() .map(counter -> counter.task(Counter::read).remote()) .collect(Collectors.toList()); System.out.println(Ray.get(objectRefList)); // [1, 1, 1, 1] } } } |
相關文章
- laravel框架應用和composer擴充套件包開發Laravel框架套件
- plain framework的實際應用和擴充套件AIFramework套件
- iOS開發的分類和擴充套件iOS套件
- VSCode擴充套件應用VSCode套件
- SQL_Postgresql-一些擴充套件和應用SQL套件
- 安裝Swoole框架和擴充套件框架套件
- chrome擴充套件應用開發快速科普Chrome套件
- easyui應用(四)--- easyui擴充套件UI套件
- 並查集擴充套件應用並查集套件
- Vue.js 元件複用和擴充套件之道Vue.js元件套件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- ?用Chrome擴充套件管理器, 管理你的擴充套件Chrome套件
- 擴充套件:使用 Vue.js 和 node 共建一個簡單的 CRUD 應用套件Vue.js
- 一個用於 Angular 開發的 Chrome 擴充套件 - Angular Dev ToolsAngularChrome套件dev
- 推薦一個非常好用的Chrome擴充套件應用,用於美化Json字串Chrome套件JSON字串
- 用 TDD 的方式為 Laravel 開發擴充套件Laravel套件
- blog-engine-07-gatsby 建極速網站和應用程式 基於React的最佳框架,具備效能、可擴充套件性和安全性。網站React框架套件
- 基於 Kyma 的企業級雲原生應用的擴充套件案例分享套件
- 2.3.2.4 擴充套件 Data-Linked 應用程式物件套件物件
- c# 高階應用 理解擴充套件方法C#套件
- 如何在AWS上自動擴充套件Web應用套件Web
- 縮放Python ML:使用不同的工具來擴充套件Python ML工作負載的玩家部落格Python套件負載
- Python擴充套件_淺拷貝和深拷貝Python套件
- 如何構建可控,可靠,可擴充套件的 PWA 應用套件
- SDN在5G和WAN中的應用,它是否具備可擴充套件性套件
- 分類擴充套件套件
- 分頁查詢及其擴充應用案例
- burpsuite擴充套件開發之PythonUI套件Python
- 一個用於文章收藏的擴充套件包 Laravel-Collect套件Laravel
- 紅帽應用服務組合功能全面擴充套件——優化雲原生應用開發套件優化
- 5.4 多鏈:區塊鏈應用的擴充套件互動區塊鏈套件
- Minecraft中ScoreBoard的底層實現與擴充套件應用Raft套件
- 使用View modification擴充套件SAP Fiori應用的一個案例View套件
- 乾貨丨如何水平擴充套件和垂直擴充套件DolphinDB叢集?套件
- 基於 GatewayWorker 開發的 Laravel 擴充套件GatewayLaravel套件
- 適用於Android的OpenSL ES指南-OpenSL ES的Android擴充套件Android套件
- 實用的可選項(Optional)擴充套件套件
- Bundler和Minifier Visual Studio擴充套件Nifi套件