美文网首页Ray
[ray入门] Ray控制任务资源使用

[ray入门] Ray控制任务资源使用

作者: king_wang | 来源:发表于2021-11-08 19:09 被阅读0次

    Ray的资源控制非常细粒度,你可以控制某个函数function的资源使用,控制力非常的强。

    集群资源

    集群资源大致可以分为4类,cpu,gpu,内存和自定义资源:

    • num_cpus(int) - CPU数量,默认为系统CPU核数。
    • num_gpus(int) - GPU数量,默认为系统GPU数量。
    • object_store_memory(bytes) - 对象存储可以使用的内存大小。
    • resources(json) - 自定义资源设置。

    resources参数允许用户自定义一种资源名字及资源的大小,形式如{"custom_parallelism":16}。通过这种方式,Ray提供了自由的资源限制,不在限定于cpu,gpu,memory。

    非Cluster模式

    代码初始化时,指定参数

    # 设置cpu8个,gpu1个,自定义资源Resource1共4个,自定义资源Resource2共16个
    ray.init(num_cpus=8, num_gpus=1, resources={'Resource1': 4, 'Resource2': 16})
    
    Cluster模式

    启动ray node时,指定CLI参数:

    # 设置cpu8个,gpu1个,自定义资源custom_parallelism共16个
    ray start --num-cpus=8 --num_gpus=1 --resources='{"custom_parallelism":16}'
    

    通过dashboard我们可以非常容易的看到集群各节点资源使用情况

    resource.png

    设置任务参数

    在@ray.remote注解上设置需要的资源

    # -*- coding: utf-8 -*-
    
    import ray
    
    # 设置需要的cpu、gpu数量
    @ray.remote(num_cpus=2, num_gpus=2)
    def func1():
        return 1
    
    # 按百分比设置需要的cpu、gpu资源
    @ray.remote(num_cpus=0.5)
    def func2():
        return 1
    
    # 设置需要的自定义资源
    @ray.remote(resources={'custom_parallelism': 1})
    def func3():
        return 1
    
    if __name__ == '__main__':
        # 设置ray的num_cpus、num_gpus以及自定义资源
        ray.init(num_cpus=8, num_gpus=8, resources={'custom_parallelism': 16})
        res1 = func1.remote()
        res2 = func2.remote()
        res3 = func3.remote()
        print(ray.get(res1))
        print(ray.get(res2))
        print(ray.get(res3))
    

    相关文章

      网友评论

        本文标题:[ray入门] Ray控制任务资源使用

        本文链接:https://www.haomeiwen.com/subject/cexpzltx.html