Ray编程:给新用户的小指南

本文是针对初次使用Ray编程框架的用户的指南,讲述了如何避免影响程序性能的常见错误。首先,强调了正确使用`ray.get()`的重要性,避免在任务调用上直接使用以保持并行性。其次,提醒开发者避免创建过于微小的任务,因为这可能导致Ray程序比顺序执行更慢。接着,解释了如何避免重复传递大对象以减少内存开销和提高性能。最后,建议利用`ray.wait()`来形成数据处理管道,提高处理效率。这些技巧有助于提升Ray程序的性能和效率。
摘要由CSDN通过智能技术生成


AI Conference 北京站

AI Conference 2019 北京站6月18-21日即将开幕!


培训:大会推出「PyTorch 深度学习」两天培训课程,资深数据科学家主讲,限制人数,抢票从速!

编者注:文中超链接如果不能访问可以点击“阅读原文”访问本文原页面;本文作者将在北京人工智能大会上带来教学辅导课Building reinforcement learning models and AI applications with Ray。

Ray是一个用于在计算集群上编程的通用框架。 Ray使开发人员能够轻松地并行化他们的Python应用程序,构建新的应用,在任意大小规模的集群上(从笔记本电脑到大型集群)运行。 Ray提供了一个高度灵活,极简主义、易于使用的API。 表1 介绍了此API的核心功能。

在这篇博客中我们描述了几个小技巧,可以帮助首次使用Ray的用户避免一些可能严重影响其程序性能的常见错误。

API 描述 示例
ray.init() 初始化Ray执行上下文。
@ ray.remote 函数或类装饰器,指定 函数将作为不同进程中的任务执行,或者类作为不同进程中的actor定义。 @ray.remote        @ray.remote


def fun(x):           class Actor(object):

…                            def method(y)

.remote Postfix到每个远程函数,远程声明类,或远程进行类方法的调用。 远程操作是异步。 ret_id = fun.remote(x)


a = Actor.remote()

ret_id = a.method.remote(y)

ray.put() 将对象存储在对象库中,并返回其ID。 此ID可用于将对象作为参数传递给任何远程函数或方法调用。 这是一种同步的操作。 x_id = ray.put(x)
ray.get() 从对象ID或对象ID列表返回对象或对象列表。 这是一种 同步 (即阻塞)操作。 x = ray.get(x_id)


objects = ray.get(object_ids)

ray.wait() 从对象ID列表返回(1)准备好的对象的ID列表,以及(2)尚未准备好的对象的ID列表。 默认情况下,它一次返回一个已准备好的对象ID。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值