一万亿模型要来了?谷歌大脑和DeepMind联手发布分布式训练框架Launchpad

简介: AI模型进入大数据时代,单机早已不能满足训练模型的要求,最近Google Brain和DeepMind联手发布了一个可以分布式训练模型的框架Launchpad,堪称AI界的MapReduce。

正如吴恩达所言,当代机器学习算法的成功很大程度上是由于模型和数据集大小的增加,在大规模数据下进行分布式训练也逐渐变得普遍,而如何在大规模数据、大模型的情况下进行计算,还是一个挑战。

分布式学习过程也会使实现过程复杂化,这对于许多不熟悉分布式系统机制的机器学习从业者来说是个问题,尤其是那些具有复杂通信拓扑结构的机器学习从业者。

在arxiv上一篇新论文中,来自 DeepMind 和 Google Brain 的研究团队用 Launchpad 解决了这个问题,Launchpad 是一种编程模型,它简化了定义和启动分布式计算实例的过程。

60.jpg

论文的第一作者是来自DeepMind的华人Yang Fan,毕业于香港中文大学。


61.jpg

Launchpad 将分布式系统的拓扑描述为一个图形数据结构,这样图中的每个节点都代表一个服务,即研究人员正在运行的基本计算单元。

将句柄构造为节点的引用,将客户端表示为尚未构造的服务。

图的边表示两个服务之间的通信,并在构建时将与一个节点相关联的句柄给予另一个节点时创建。

62.jpg

通过这种方式,Launchpad 可以通过传递节点句柄来定义跨服务通信。Launchpad 的计算构建块由不同的服务类型表示,每种服务类型由特定于该类型的节点和句柄类表示。

63.jpg

论文中提出的 Launchpad 的生命周期可以分为三个阶段: 设置、启动和执行。设置阶段构造程序数据结构; 在启动阶段,处理这个数据结构以分配资源、地址等,并启动指定服务; 然后执行阶段运行服务,例如为服务通信创建客户端。

Launchpad 是用流行的编程语言 Python 实现的,它简化了定义程序和节点数据结构以及为单个平台启动的过程。Launchpad 框架还可以很容易地用任何其他宿主语言实现,包括 c/c + + 等低级编程语言。

64.jpg

Launchpad 编程模型非常丰富,足以容纳各种各样的分布式系统,包括参数服务器、 MapReduce和 Evolution Strategies。

研究人员用简洁的代码详细描述了如何将 Launchpad 应用到这些常见的分布式系统范例中,并说明了该框架在简化本研究领域常用机器学习算法和组件的设计过程方面的能力。

总的来说,Launchpad 是一个实用的、用户友好的、表达性强的框架,用于机器学习研究人员和实践者详细说明分布式系统,作者表示,这个框架能够处理日益复杂的机器学习模型。其他框架

2020年,DeepMind 发布过一个强化学习优化框架Acme,可以让AI驱动的智能体在不同的执行规模上运行,从而简化强化学习算法的开发过程。


65.jpg

强化学习可以让智能体与环境互动,生成他们自己的训练数据,这在电子游戏、机器人技术、自动驾驶机器人出租车等领域取得了突破。

随着所使用的训练数据量的增加,这促使设计了一个系统,使智能体与环境实例相互作用,迅速积累经验。DeepMind 断言,将算法的单进程原型扩展到分布式系统通常需要重新实现相关的智能体,这就是 Acme 框架的用武之地。

DeepMind研究员写道,「Acme 是一个用于构建可读、高效、面向研究的 RL 算法的框架。Acme 的核心是设计用于简单描述 RL 智能体,这些智能体可以在不同规模的执行中运行,包括分布式智能体。」66.jpg


Determined AI也是一个深度学习神器。Determined使深度学习工程师可以集中精力大规模构建和训练模型,而无需担心DevOps,或者为常见任务(如容错或实验跟踪)编写代码。更快的分布式训练,智能的超参优化,实验跟踪和可视化。



67.jpg


Determined主要运用了Horovod,以Horovod为起点,研究人员运用了多年的专业知识和经验,使得整个训练过程比库存配置要快得多。

Horovod 是一套面向TensorFlow 的分布式训练框架,由Uber 构建并开源,目前已经运行于Uber 的Michelangelo 机器学习即服务平台上。Horovod 能够简化并加速分布式深度学习项目的启动与运行。当数据较多或者模型较大时,为提高机器学习模型训练效率,一般采用多 GPU 的分布式训练。TensorFlow 集群存在诸多缺点,如概念太多、学习曲线陡峭、修改的代码量大、性能损失较大等,而 Horovod 则让深度学习变得更加美好,随着规模增大,Horovod 性能基本是线性增加的,损失远小于 TensorFlow。

2019年,字节跳动AI lab开源了一款高性能分布式框架BytePS,在性能上颠覆了过去几年allreduce流派一直占据上风的局面,超出目前其他所有分布式训练框架一倍以上的性能,且同时能够支持Tensorflow、PyTorch、MXNet等开源库。


68.jpg

BytePS 提供了 TensorFlow、PyTorch、 MXNet 以及Keras的插件,用户只要在代码中引用BytePS的插件,就可以获得高性能的分布式训练。BytePS的核心逻辑,则实现在BytePS core里。具体的通信细节,完全由BytePS完成,用户完全不需要操心。

相关文章
|
17天前
|
Java 数据库
在Java中使用Seata框架实现分布式事务的详细步骤
通过以上步骤,利用 Seata 框架可以实现较为简单的分布式事务处理。在实际应用中,还需要根据具体业务需求进行更详细的配置和处理。同时,要注意处理各种异常情况,以确保分布式事务的正确执行。
|
17天前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
16天前
|
存储 Java 关系型数据库
在Spring Boot中整合Seata框架实现分布式事务
可以在 Spring Boot 中成功整合 Seata 框架,实现分布式事务的管理和处理。在实际应用中,还需要根据具体的业务需求和技术架构进行进一步的优化和调整。同时,要注意处理各种可能出现的问题,以保障分布式事务的顺利执行。
32 6
|
16天前
|
数据库
如何在Seata框架中配置分布式事务的隔离级别?
总的来说,配置分布式事务的隔离级别是实现分布式事务管理的重要环节之一,需要认真对待和仔细调整,以满足业务的需求和性能要求。你还可以进一步深入研究和实践 Seata 框架的配置和使用,以更好地应对各种分布式事务场景的挑战。
24 6
|
14天前
|
消息中间件 运维 数据库
Seata框架和其他分布式事务框架有什么区别
Seata框架和其他分布式事务框架有什么区别
20 1
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
DeepSpeed分布式训练框架深度学习指南
【11月更文挑战第6天】随着深度学习模型规模的日益增大,训练这些模型所需的计算资源和时间成本也随之增加。传统的单机训练方式已难以应对大规模模型的训练需求。
98 3
|
1月前
|
分布式计算 Java 开发工具
阿里云MaxCompute-XGBoost on Spark 极限梯度提升算法的分布式训练与模型持久化oss的实现与代码浅析
本文介绍了XGBoost在MaxCompute+OSS架构下模型持久化遇到的问题及其解决方案。首先简要介绍了XGBoost的特点和应用场景,随后详细描述了客户在将XGBoost on Spark任务从HDFS迁移到OSS时遇到的异常情况。通过分析异常堆栈和源代码,发现使用的`nativeBooster.saveModel`方法不支持OSS路径,而使用`write.overwrite().save`方法则能成功保存模型。最后提供了完整的Scala代码示例、Maven配置和提交命令,帮助用户顺利迁移模型存储路径。
|
2月前
|
NoSQL Java Redis
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
Redis分布式锁在高并发场景下是重要的技术手段,但其实现过程中常遇到五大深坑:**原子性问题**、**连接耗尽问题**、**锁过期问题**、**锁失效问题**以及**锁分段问题**。这些问题不仅影响系统的稳定性和性能,还可能导致数据不一致。尼恩在实际项目中总结了这些坑,并提供了详细的解决方案,包括使用Lua脚本保证原子性、设置合理的锁过期时间和使用看门狗机制、以及通过锁分段提升性能。这些经验和技巧对面试和实际开发都有很大帮助,值得深入学习和实践。
太惨痛: Redis 分布式锁 5个大坑,又大又深, 如何才能 避开 ?
|
9天前
|
存储 NoSQL Java
使用lock4j-redis-template-spring-boot-starter实现redis分布式锁
通过使用 `lock4j-redis-template-spring-boot-starter`,我们可以轻松实现 Redis 分布式锁,从而解决分布式系统中多个实例并发访问共享资源的问题。合理配置和使用分布式锁,可以有效提高系统的稳定性和数据的一致性。希望本文对你在实际项目中使用 Redis 分布式锁有所帮助。
27 5
|
12天前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
26 8