赞
踩
本文首发于:行者AI
随着各行各业数字化的不断推进,AI需要处理的数据越来越多,单一服务器已经难以满足当前产业的发展需求,服务器集群成为企业用AI处理数据的标配硬件,而分布式计算成为人工智能应用的标配软件。
从图1可以看出,现今有很多开源的分布式计算框架,从模型的训练、调参到部署;从NLP、CV到RS;这些框架覆盖到了AI产业生命周期的各个方面。本文就选取其中的Ray框架进行简单的介绍。
Ray 是伯克利大学在2017年开源的分布式计算框架,对应的论文是《Ray: A Distributed Framework for Emerging AI Applications》。强化学习任务需要与环境进行大量的交互(毫秒级),且在时间上支持异构性。该框架专门为机器学习与强化学习设计,相较于其他框架,ray具有以下优势:
下面就这四个优点为大家进行详细介绍。
相较于传统的分布式框架(尤其是hadoop、spark等),Ray可以直接通过pip进行安装,且对系统版本无要求。
pip install -U ray
Ray是一个简单的分布式策略,而非完整的生态,因而不需要复杂的构建。
另一方面,轻量而优秀的框架往往可以作为企业数据处理的基础框架,企业不断在该框架的基础上增加生态,从而形成企业独有的应用生态。
如hadoop等传统框架,要对原有的单机程序进行分布式化,需要修改整个代码逻辑,以MapReduce的编程方案重构各个计算模块,这使得hadoop等传统框架有着良好的可编辑性,算法工程师可以根据业务需求进行详细的修改。强大的可编辑性也带来了学习成本高,代码重构困难等诸多问题。人工智能日新月异,模型在不断更迭,敏捷开发成为了很多AI企业的开发模式,AI应用的复杂构建会大大影响整个项目的推进。
如下代码,将一个简单的单机程序函数,转换为Ray分布式的函数,只是在原有函数的基础上加入了ray.remote的装饰器,便完成了分布式化的工作。
### 原始单机代码
def f(x):
return x * x
futures = [f.remote(i) for i in range(4)]
print(ray.get(futures))
### Ray分布式代码
import ray
ray.init()
@ray.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。