Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在分布式计算中执行ray_Python_Ray - Fatal编程技术网

Python 在分布式计算中执行ray

Python 在分布式计算中执行ray,python,ray,Python,Ray,我在virtualbox上制作的服务器上有数据,那里有一台grpc服务器。 在我的本地机器上,我创建了一个grpc客户端,它向服务器发送一个类实例,服务器执行一个方法并返回结果 我正在尝试使用ray实现同样的功能。我无法理解我应该使用什么工具?我应该在本地计算机中创建光线群集吗?如果是,我应该如何在虚拟盒上编写程序以连接到集群并对虚拟盒中的数据执行所需的方法。编辑2021年2月4日:现在有一种正确的方法可以做到这一点。使用 以下是有关Ray 2节点设置的可能配置以及您的用例: 将VM视为集群的头

我在virtualbox上制作的服务器上有数据,那里有一台grpc服务器。 在我的本地机器上,我创建了一个grpc客户端,它向服务器发送一个类实例,服务器执行一个方法并返回结果

我正在尝试使用ray实现同样的功能。我无法理解我应该使用什么工具?我应该在本地计算机中创建光线群集吗?如果是,我应该如何在虚拟盒上编写程序以连接到集群并对虚拟盒中的数据执行所需的方法。

编辑2021年2月4日:现在有一种正确的方法可以做到这一点。使用

以下是有关Ray 2节点设置的可能配置以及您的用例:

将VM视为集群的头节点。您可以通过ray up-head-resources={data:1}初始化集群。data:1部分将在一秒钟内变得相关

现在,您可以通过ray.initaddress=。。。在python脚本中,您可能需要确保VM的网络/端口转发设置正确

默认情况下,Ray将尝试在任何具有足够资源的节点上运行任务/参与者。想必,您希望大部分任务都运行VM,因此有两种合理的实现方法

方法1:

您可以使用num_cpus=0告诉Ray您的本地计算机没有资源,因此它应该在head节点上运行所有内容。如果您希望将本地计算机纯粹视为客户机,则最好使用这种方法。如果这样做,则不需要-resources标志

import ray
ray.init(address="...", num_cpus=0)

@ray.remote
def foo():
    print("This runs on the VM")


print("This runs locally")
ray.get(foo.remote())
方法2:

使用自定义资源约束任务可以在哪些节点上运行

import ray
ray.init(address="...")

@ray.remote(resources={"data": 0.01})
def foo():
    print("This runs on the VM")

print("This runs locally")
ray.get(foo.remote())
由于远程功能需要一些数据资源,因此它将在头节点上运行,并且由于它只需要该资源的0.01,因此许多任务可以同时在头节点上运行

如果您计划将来将更多节点连接到您的集群,并且其中一些节点有您的数据,而另一些节点没有数据,那么这种方法更可取。

编辑2021年2月4日:现在有一种正确的方法可以做到这一点。使用

以下是有关Ray 2节点设置的可能配置以及您的用例:

将VM视为集群的头节点。您可以通过ray up-head-resources={data:1}初始化集群。data:1部分将在一秒钟内变得相关

现在,您可以通过ray.initaddress=。。。在python脚本中,您可能需要确保VM的网络/端口转发设置正确

默认情况下,Ray将尝试在任何具有足够资源的节点上运行任务/参与者。想必,您希望大部分任务都运行VM,因此有两种合理的实现方法

方法1:

您可以使用num_cpus=0告诉Ray您的本地计算机没有资源,因此它应该在head节点上运行所有内容。如果您希望将本地计算机纯粹视为客户机,则最好使用这种方法。如果这样做,则不需要-resources标志

import ray
ray.init(address="...", num_cpus=0)

@ray.remote
def foo():
    print("This runs on the VM")


print("This runs locally")
ray.get(foo.remote())
方法2:

使用自定义资源约束任务可以在哪些节点上运行

import ray
ray.init(address="...")

@ray.remote(resources={"data": 0.01})
def foo():
    print("This runs on the VM")

print("This runs locally")
ray.get(foo.remote())
由于远程功能需要一些数据资源,因此它将在头节点上运行,并且由于它只需要该资源的0.01,因此许多任务可以同时在头节点上运行


如果您计划在将来将更多节点连接到您的集群,并且其中一些节点有您的数据,而另一些节点没有数据,那么这种方法更可取。

嗨,Alex,感谢您的及时响应。在上面的ray up命令中,我得到两个错误。首先是-head:没有这样的选项,对于-resource,您可以共享您试图运行的完整命令吗?嗨,Alex。该命令正在我的本地计算机上运行。下面的代码也正在运行。我想这个错误与远程机器有关。谢谢但现在,当我进口熊猫时,我陷入了以下错误@Alex我如何配置我的集群,我的主机不做任何工作,所有工作都应该交给工作节点?@Alex另外,我尝试了建议的方法1,我得到了以下错误:ValueError:当连接到现有集群时,必须不提供num_CPU和num_GPU。嗨,Alex,感谢您的及时响应。在上面的ray up命令中,我得到两个错误。首先是-head:没有这样的选项,对于-resource,您可以共享您试图运行的完整命令吗?嗨,Alex。该命令正在我的本地计算机上运行。下面的代码也正在运行。我想这个错误与远程机器有关。谢谢但现在,当我进口熊猫时,我陷入了以下错误@Alex我如何配置我的集群,我的主机不做任何工作,所有工作都应该交给工作节点?@Alex另外,我尝试了建议的方法1,我得到了以下错误:ValueError:连接到现有集群时,不能提供num_CPU和num_GPU。