
互联网
必要的概念传统编程依赖于两个核心概念:函数和类。使用这些构建块就可以构建出无数的应用程序。但是,当我们将应用程序迁移到分布式环境时,这些概念通常会发生变化。一方面,OpenMPI、Python多进程和ZeroMQ等工具提供了用于发送和接收消息的低级原语。这些工具非常强大,但它们提供了不同的抽象,因此要使用它们就必须从头开始重写单线程应用程序。另一方面,我们也有一些特定领域的工具,例如用于模型训练的TensorFlow、用于数据处理且支持SQL的Spark,以及用于流式处理的Flink。这些工具提供了更高级别的抽象,如神经网络、数据集和流。但是,因为它们与用于串行编程的抽象不同,所以要使用它们也必须从头开始重写应用程序。用于分布式计算的工具Ray占据了一个独特的中间地带。它并没有引入新的概念,而是采用了函数和类的概念,并将它们转换为分布式的任务和actor。Ray可以在不做出重大修改的情况下对串行应用程序进行并行化。开始使用Rayray.init()命令将启动所有相关的Ray进程。在切换到集群时,这是需要更改的行(我们需要传入集群地址)。Java课程培训机构发现这些过程包括:有很多worker进程并行执行Python函数(大概是每个CPU核心对应一个worker)。用于将“任务”分配给worker(以及其他计算机)的调度程序进程。任务是Ray调度的工作单元,对应于一个函数调用或方法调用。
Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号