百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Uber Fiber用于分布式强化学习模型计算的开源框架

ccwgpt 2024-11-06 09:51 29 浏览 0 评论

新框架简化了强化学习代理的分布式和可扩展培训。


我最近开始了以AI为重点的教育通讯,该通讯已经有70,000多个订阅者。TheSequence是不面向BS(意味着没有大肆宣传,没有新闻等)的面向ML的新闻通讯,需要5分钟的阅读时间。目的是使您了解机器学习项目,研究论文和概念的最新动态。请通过以下订阅尝试一下:

序列

TheSequence解释了主要的机器学习概念,并让您及时了解最相关的项目和…

计算成本是采用机器学习模型的主要挑战之一。深度强化学习(DRL)等领域中一些最新的突破性模型具有计算要求,导致大多数组织禁止这样做,这导致DRL仍然局限于大型AI研究实验室的实验。为了使DRL成为主流,它必须伴随有效地解决复杂计算要求的高效分布式计算方法。最近,Uber开源了Fiber,这是一种可扩展的分布式计算框架,适用于DRL和基于人群的方法。

从培训到仿真,跨机器学习生命周期的许多领域都需要分布式计算方法。在监督学习方法中,我们似乎已经在分布式培训框架(如Horovod)方面取得了进步。但是,在分布式计算基础架构方面,DRL方案带来了一系列挑战。

强化学习的分布式计算挑战

凭直觉,我们倾向于认为监督学习模型的分布式培训框架应适用于DRL方法。但是,现实有点不同。鉴于经常使用各种各样的模拟来训练DRL方法,因此我们需要一个适应该独特环境的分布式计算框架。首先,大多数仿真模型都在CPU上运行,并且并未针对GPU环境进行优化。从这个角度来看,分布式培训方法应能够根据特定要求同时使用大量资源。此外,DRL方法在整个培训生命周期中通常需要不同的资源。DRL方法会根据其环境特征逐渐扩大培训规模,这很常见。这些因素使DRL培训的规模扩展成为非常独特的挑战,并不十分适合为监督模型设计的分布式培训框架。

除了DRL的独特特征外,分布式训练/计算还具有非常独特的障碍,应考虑以下因素:

  • 使代码在笔记本电脑或台式机上本地工作与在生产集群上运行代码之间存在巨大差距。您可以使MPI在本地工作,但是在计算机集群上运行它是完全不同的过程。
  • 没有动态缩放可用。如果您启动需要大量资源的作业,那么很可能需要等到所有内容分配完毕后才能运行作业。这种等待扩大规模的做法使效率降低。
  • 缺少错误处理。在运行时,某些作业可能会失败。而且您可能会陷入非常讨厌的境地,您必须恢复部分结果或放弃整个运行。
  • 学习费用高。每个系统都有不同的API和编程约定。为了使用新系统启动作业,用户必须先学习一组全新的约定,然后才能启动作业。

这些是Uber为其新的开放源代码框架解决的挑战。

引入Fiber

Fiber是用于现代计算机集群的基于Python的分布式计算库。该框架使用户能够使用标准且熟悉的库界面为大型计算机集群编写应用程序。从设计角度来看,Fiber封装了一些关键功能,这些功能有助于DRL模型的分布式训练:

  • 易于使用。Fiber使您可以编写在计算机群集上运行的程序,而无需深入研究计算机群集的详细信息。
  • 简单易学。Fiber提供了与人们熟悉的Python标准多处理库相同的API。
  • 快速的性能。Fiber的通信主干网建立在Nanomsg之上,Nanomsg是一个高性能的异步消息传递库,可实现快速可靠的通信。
  • 无需部署。您可以像在计算机群集上运行普通应用程序一样运行Fiber应用程序,而Fiber会为您处理其余的事情。
  • 可靠的计算。当您运行工作池时,Fiber具有内置的错误处理功能。

为了实现上述目标,Fiber提供了一种体系结构,该体系结构分为三个不同的层:API,后端和群集。API层为Fiber之类的进程,队列,池和管理器提供了基本的构建块。它们具有与多处理相同的语义,但已扩展为可在分布式环境中工作。后端层处理诸如在不同集群管理器上创建或终止作业的任务。最后,集群层由不同的集群管理器组成。尽管它们不是Fiber本身的一部分,但它们可以帮助光纤管理资源并跟踪不同的作业,从而减少Fiber需要跟踪的项目数量。


Fiber中的分布式计算原语借鉴了并行和并行编程理论中的传统工件。具体来说,Fiber多处理模型提供了一种架构,其中包括管道,队列,池和管理器等组件。

Fiber中的队列和管道的行为与多处理中的相同。区别在于,队列和管道现在由在不同计算机上运行的多个进程共享。例如,下图显示了在三个不同的光纤进程之间共享的Fiber队列。一个Fiber进程与该队列位于同一台计算机上,而其他两个进程位于另一台计算机上。一个进程正在写入队列,其他两个进程正在从队列读取。


池允许用户管理工作进程池。Fibre扩展了具有工作支持流程的池,因此每个池可以管理数千个(远程)工作者。由作业支持的过程可以在本地或跨大量远程计算机的计算机群集中运行容器化的应用程序。


最后,Fiber管理器使Fiber能够支持诸如共享存储之类的功能,这对分布式系统至关重要。通常,此功能由计算机群集上的外部存储(如Cassandra,Redis等)处理。Fiber提供了内置的内存存储供应用程序使用。该界面与多处理程序的Manager类型相同。

为了了解Fiber的实际应用,让我们举一个使用原型DRL模型运行的示例。以下简化代码说明了使Fiber工作的步骤。本质上,开发人员需要启动管理器(RemoveEnvManager),创建一系列环境,并在其中分布模型以收集最终结果。显然,此代码取决于您的光纤环境的基础架构设置。

# fiber.BaseManager is a manager that runs remotely
class RemoteEnvManager(fiber.managers.AsyncManager):
    pass
class Env(gym.env):
    # gym env
    pass
RemoteEnvManager.register('Env', Env)
def build_model():
    # create a new policy model
    return model
def update_model(model, observations):
    # update model with observed data
    return new_model
def train():
    model = build_model()
    manager = RemoteEnvManager()
    num_envs = 10
    envs = [manager.Env() for i in range(num_envs)]
    handles = [envs[i].reset() for i in num_envs]
    obs = [handle.get() for handle in handles]
    for i in range(1000):
        actions = model(obs)
        handles = [env.step() for action in actions]
        obs = [handle.get() for handle in handles]
        model = update_model(model, obs)

Uber对Fiber进行了基准测试,并采用了跨不同标准的最新分布式计算方法,例如Spark或IPyParallel。结果表明,在大多数测试中,Fiber的性能均优于其他方法。例如,下图显示,Fiber能够完成任务的速度比IPyParallel快24倍,比Spark快38倍。


Fiber为DRL模型的分布式训练提供了非常可靠的体系结构。Fiber实现了许多目标,包括有效利用大量异构计算硬件,动态扩展算法以提高资源使用效率以及减轻使复杂算法在计算机群集上工作所需的工程负担。Fiber的初始版本已在GitHub上开源,并且也提供了研究论文。

(本文由闻数起舞翻译自Nduka Anthony Okocha的文章《Uber Fiber is an Open Source Framework to Distribute Compute for Reinforcement Learning Models》,转载请注明出处,原文链接:https://medium.com/dataseries/uber-fiber-is-an-open-source-framework-to-dsitibute-compute-for-reinforcement-learning-models-de04eb1c5a9f)

相关推荐

Python+ Appium:Android手机连接与操作详解(附源码)

在移动端自动化测试领域,Appium一直是最热门的开源工具之一。今天这篇文章,我们聚焦Android端自动化测试的完整流程,从环境配置到代码实战,一步一步带你掌握用Python控制Android...

全平台开源即时通讯IM框架MobileIMSDK开发指南,支持鸿蒙NEXT

写在前面在着手基于MobileIMSDK开发自已的即时通讯应用前,建议以Demo工程为脚手架,快速上手MobileIMSDK!Demo工程主要用于演示SDK的API调用等,它位于SDK完整下载包的如下...

移动开发(一):使用.NET MAUI开发第一个安卓APP

对于工作多年的C#程序员来说,近来想尝试开发一款安卓APP,考虑了很久最终选择使用.NETMAUI这个微软官方的框架来尝试体验开发安卓APP,毕竟是使用VisualStudio开发工具,使用起来也...

在安卓系统上开发一款软件详细的流程

安卓app软件开发流程是一个系统而复杂的过程,涉及多个阶段和环节。以下是一个典型的安卓软件开发流程概述:1.需求分析目的:了解用户需求,确定APP的目标、功能、特性和预期效果。活动:开发团队与客户进...

ArkUI-X在Android上使用Fragment开发指南

本文介绍将ArkUI框架的UIAbility跨平台部署至Android平台Fragment的使用说明,实现Android原生Fragment和ArkUI跨平台Fragment的混合开发,方便开发者灵活...

Web3开发者必须要知道的6个框架与开发工具

在Web3领域,随着去中心化应用和区块链的兴起,开发者们需要掌握适用于这一新兴技术的框架与开发工具。这些工具和框架能够提供简化开发流程、增强安全性以及提供更好的用户体验。1.Truffle:Truff...

Python开发web指南之创建你的RESTful APP

上回我们说到了:PythonFlask开发web指南:创建RESTAPI。我们知道了Flask是一个web轻量级框架,可以在上面做一些扩展,我们还用Flask创建了API,也说到了...

python的web开发框架有哪些(python主流web框架)

  python在web开发方面有着广泛的应用。鉴于各种各样的框架,对于开发者来说如何选择将成为一个问题。为此,我特此对比较常见的几种框架从性能、使用感受以及应用情况进行一个粗略的分析。  1Dja...

Qwik:革新Web开发的新框架(webview开源框架)

听说关注我的人,都实现了财富自由!你还在等什么?赶紧加入我们,一起走向人生巅峰!Qwik:革新Web开发的新框架Qwik橫空出世:一场颠覆前端格局的革命?是炒作还是未来?前端框架的更新迭代速度,如同...

Python中Web开发框架有哪些?(python主流web框架)

Python为Web开发提供了许多优秀的框架。以下是一些流行的PythonWeb框架:1.Django:一个高级的Web框架,旨在快速开发干净、实用的Web应用。Django遵...

WPF 工业自动化数据管控框架,支持热拔插 DLL与多语言实现

前言工业自动化开发中,设备数据的采集、处理与管理成为提升生产效率和实现智能制造的关键环节。为了简化开发流程、提高系统的灵活性与可维护性,StarRyEdgeFramework应运而生。该框架专注...

[汇川PLC] 汇川IFA程序框架06-建立气缸控制FB块

前言:汇川的iFA要跟西门子对标啦,这可是新的选择!就在2月14日,汇川刚发布的iFA平台,一眼就能看出来是对标西门子的全集成自动化平台博途(TIAPortal)。这个平台能在同一个...

微软发布.NET 10首个预览版:JIT编译器再进化、跨平台开发更流畅

IT之家2月26日消息,微软.NET团队昨日(2月25日)发布博文,宣布推出.NET10首个预览版更新,重点改进.NETRuntime、SDK、libraries、C#、AS...

大模型部署革命:GGUF量化+vLLM推理的极致性能调优方案

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在官网-聚客AI学院大模型应用开发微调项目实践课程学习平台一、模型微调核心概念与技术演进1.1微调的本质与优势数学表达:1....

拓扑学到底在研究什么?(拓扑学到底在研究什么问题)

拓扑是“不量尺寸的几何学”,那么它的核心内容,主要方法是什么?如果你问罗巴切夫斯基,他会说“附贴性是物体的一个特殊的属性。如果我们把这个性质掌握,而把物体其他的一切属性,不问是本质的或偶然出现的,均不...

取消回复欢迎 发表评论: