问题描述
我是最近从 python 多处理库转换到 ray 的转换器。
我有一个带有四个芯片的自定义资源,我需要指定环境变量。例如VISIBLE_DEVICE=0
并行使用它们。
所以在多处理中,我总是创建 4 个进程,每个进程获取 1 个芯片
class P(Process):
def run(self,chip_id):
os.environ['VISIBLE_DEVICE']=chip_id
fn()
有没有办法在 ray 中做类似的事情?喜欢
解决方法
要在每个主机中仅生成一个工作器,您可以尝试针对归置组使用 STRICT_SPREAD 策略:https://docs.ray.io/en/master/placement-group.html
要将环境变量传递给光线任务或 Actor,您可以使用参数 override_environment_variables
(https://docs.ray.io/en/master/package-ref.html#ray-remote)。例如:
my_task.options(override_environment_variables={'VISIBLE_DEVICE': 1234}).remote()