Ray 分布式计算框架介绍
Ray是由UC Berkeley RISELab推出的机器学习分布式框架,其产生背景源于AI和大数据的快速发展,对应用和硬件能力提出了更高的挑战。该框架由Ion Stoica教授创立,他同时也是Spark产品的公司Databricks的创始人,Apache Mesos、Alluxio、Clipper的项目主导人。
Ray的特点在于其高性能计算能力,主要应用于投资组合的实时归因分析等场景。Ray与Dask等类似框架相比,在Python用户群体中更具优势。Dask是Anaconda的产品,旨在弥补Python在数据科学中的性能不足,而Ray则专注于加速机器学习的调优和训练速度。Ray不仅提供基础的计算平台,还包括Tune(超参数调节)和RLlib(增强学习)等工具。
Apache Arrow是Ray底层内存数据结构的基础,它已经成为数据处理领域最通用的数据结构,具有丰富的生态和出色的性能。Ray团队基于Arrow开发了一个内存数据服务,称为Plasma,它在Linux共享内存中创建了Arrow封装的对象,并通过Plasma Client Library使其他进程能够访问这块共享内存中的Arrow存储。
Ray的架构可以参考arxiv.org/abs/1712.0588...,其中GCS作为集中的服务端,是Worker之间传递消息的纽带。每个Server都有一个共用的Object Store,即用Apache Arrow/Plasma构建的内存数据。Local Scheduler负责Server内部的调度,同时通过GCS与其他Server上的Worker通信。
Raylet是Raylet本地调度的核心,它在中间的作用非常关键,包含了Node Manager、Object Manager和gcs_client等重要内容。Node Manager是基于boost::asio的异步通信模块,主要负责通信连接和消息处理管理;Object Manager负责管理Object Store;gcs_client负责连接GCS客户端。
Ray采用Boost::asio的异步通信模型,通过Proactor模型实现异步操作。Node Manager在初始化时,会根据num_initial_workers的数量初始化worker pool,然后按照asio的异步机制,将任务分配到这些worker pool中的进程。
消息传递和调度机制中,Worker提交task到raylet,raylet将task分配到其他worker。同时,raylet还需要将task和相关worker信息提交给GCS。task执行的参数和返回值需要通过Object Store来获取。
Task Lineage是Ray中一个重要的概念,它包含Lineage Cache、Lineage Entry和Lineage等概念。Lineage管理Task执行的DAG(有向无环图),Lineage Entry管理Task状态,Lineage Cache管理Task在本机执行的缓存。通过对Lineage的优化,可以提高Ray的调度性能。
集群架构方面,Ray集群包括Worker、Gcs和Raylet等模块。Worker是一个执行单元,通过gRPC远程提交任务。整个架构类似于istio的service mesh结构。Raylet是处理Worker和GCS的关键连接点,还有处理Local Worker之间的调度。Raylet包含Node Manager和Object Manager等组件。
提交任务时,Worker将task提交到raylet,raylet将task分配到其他worker。同时,raylet还需要将task和相关worker信息提交给GCS。task执行的参数和返回值需要通过Object Store来获取。
分布式计算是人工智能的研究领域吗
是的。
分布式人工智能是分布式计算与人工智能结合的结果。它主要研究在逻辑上或物理上分散的智能动作者如何协调其智能行为,求解单目标和多目标问题,为设计和建立大型复杂的智能系统或计算机支持协同工作提供有效途径。它所能解决的问题需要整体互动所产生的整体智能来解决。主要研究内容有分布式问题求解(DPS,Distribution Problem Solving)和多智能体系统(MAS,Multi-Agent System)。
分布式问题求解的方法是,先把问题分解成任务,再为之设计相应的任务执行系统。而MAS是由多个Agent组成的集合,通过Agent的交互来实现系统的表现。
MAS主要研究多个Agent为了联合采取行动或求解问题,如何协调各自的知识、目标、策略和规划。在表达实际系统时,MAS通过各Agent间的通信、合作、互解、协调、调度、管理及控制来表达系统的结构、功能及行为特性。由于在同一个MAS中各Agent可以异构,因此Multi-Agent技术对于复杂系统具有无可比拟的表达力。它为各种实际系统提供了一种统一的模型,能够体现人类的社会智能,具有更大的灵活性和适应性,更适合开放和动态的世界环境,因而备受重视,相关研究已成为人工智能以至计算机科学和控制科学与工程的研究热点。
是的。分布式人工智能是人工智能的一个分支,研究核心领域包括多智能体系统和分布式问题求解。
扩展:多智能体系统(multi-agent system,MAS) 是一种全新的分布式计算技术。自20 世纪70年代出现以来得到迅速发展,已经成为一种进行复杂系统分析与模拟的思想方法与工具。
一个多智能体系统(multi-agent system,缩写M.A.S.),是由在一个环境中交互的多个智能体组成的计算系统。多智能体系统也能被用在解决分离的智能体以及单层系统难以解决的问题。
智能可以由一些方法,函数,过程,搜索算法或加强学习来实现。尽管存在相当大的重叠,然而一个多智能体系统并不总是一个基于智能体的模型(ABM)表现一致。ABM的目标是寻找遵循简单规则的智能体(这些智能体不需要体现出太强的“智慧”)集体行为的解释,通常在自然系统又或者解决具体的工程问题。ABM的术语经常在学术界被运用,而MAS的术语经常在工程技术中运用。多主体系统的研究课题可以给予一个合适的视角去观察网络贸易,灾害应对以及社会结构建模。
是的,分布式计算是人工智能的研究领域之一。在人工智能中,很多任务需要处理的数据量非常大,例如图像识别、语音识别、自然语言处理等。这些任务需要使用大量的计算资源和存储资源,传统的计算机系统往往无法满足需求。因此,分布式计算被引入到人工智能中,以解决这些问题。
分布式计算是指利用多台计算机协同工作,共同完成大规模计算任务的一种计算模式。在人工智能中,分布式计算可以加速复杂任务的处理,提高计算效率。例如,通过分布式计算,可以将大规模的训练数据集分散到多台计算机上进行处理,从而加快训练模型的速度。同时,分布式计算还可以提高计算的稳定性和可靠性,减少计算任务失败的概率。
分布式计算在人工智能研究中的应用非常广泛,例如分布式机器学习、分布式神经网络、分布式自然语言处理等。通过分布式计算,可以实现更快、更准确、更可靠的人工智能应用,推动人工智能技术的发展。