它,为人工智能而生的分布式执行框架

人工智能是当前科技发展的前沿领域,已被国家列为重大战略并写入“十九大”报告。作为人工智能的关键支撑技术,机器学习已成为当前研究的最热点。

考虑到人们对此感兴趣的程度,我们将不会惊讶于斯坦福的专家在人工智能报告中得出的结论:“越来越强大的人工智能应用,可能会对我们的社会和经济产生深远的积极影响,这将出现在从现在到 2030 年的时间段里。”

它,为人工智能而生的分布式执行框架

机器学习是人工智能的一个分支,研究的是怎样让机器能够通过经验自我提高。还是回到上面那个例子,如果是采用机器学习的办法应该怎么做呢?典型的机器学习方法应该是给计算机很多实例,比如“十”=10,“二〇”=20,“三百”=300,......,然后建立某种模型,利用某种学习算法使计算机掌握某种规则,以后不论我给它“三六五”还是“三百六十五”它都应该知道是365。当然这里有两点要注意,事先给计算机的实例,也就是训练样本要足够多,而且要尽可能覆盖各种情况。第二,这里用到的学习算法很可能也很复杂,甚至通常会比上面说到的传统的算法更复杂。但是这样有一个好处是,有了这样的学习模型和算法后,我们可以把它用在不同的问题上,比如下次可以训练个罗马数字识别机器什么的。

Ray,一个在集群和大型多核机器上高效运行Python代码的框架。可以查看相关代码和文档。

许多人工智能算法在计算上都非常密集,并且显示出复杂的通信模式。为此许多研究人员将大任务依赖的灵活编码

与MapReduce或Apache Spark这样的批量同步并行框架相比,Ray的设计目的是支持需要细粒度任务依赖的人工智能应用程序。它与整个数据集的总统计量的计算不同,训练过程可以对一小部分数据进行操作,也可以对少数任务的输出进行操作。

依赖项可以通过将对象IDs(任务的输出)传递到其他任务来进行编码。部分时间花在构建定制系统上,以高效地在集群中分发代码。

它,为人工智能而生的分布式执行框架

import numpy as np

@ray.remote

def aggregate_data(x, y):

return x + y

data = [np.random.normal(size=1000) for i in range(4)]

while len(data) > 1:

intermediate_result = aggregate_data.remote(data[0], data[1])

data = data[2:] + [intermediate_result]

result = ray.get(data[0])

它,为人工智能而生的分布式执行框架

通过将一些调用的输出传递给aggregate_data,随后调用aggregate_data,然后对这些任务之间的依赖进行编码,这些任务可以由系统使用,从而制定调度决策,并协调对象的传输。注意,当将对象IDs传递到远程函数调用时,实际的值将在函数执行之前被解压,因此当执行aggregate_data函数时,x和y将是numpy数组。

然而,定制的系统通常是基于特定的单一算法或算法类。因此我们构建了Ray来帮助消除一堆冗余的工程任务,这些任务目前在每个新算法中反复出现。我们希望能够重用一些基本的基础元素来实现并高效地执行各种算法和应用程序。

尚学堂12大精英团队+各类实战项目,真正实现1+1>10的目标效果。帮助学员迅速成长,持久腾飞,成就学员“高富帅”人生;帮助企业技术和团队成长,成就百年中华名企;助力中国持续成为世界强国而贡献力量。尚学堂12大精英团队,覆盖IT行业十大领域,实战团队240人,服务学员累计超过10万人,就业合作企业数量500+。


分享到:


相關文章: