evojax

evojax

基于JAX的高性能神经进化工具包

EvoJAX是基于JAX库开发的神经进化工具包,支持在多个TPU/GPU上并行运行神经网络。通过在NumPy中实现进化算法、神经网络和任务,并即时编译到加速器上运行,EvoJAX显著提升了神经进化算法的性能。该工具包提供了多个示例,涵盖监督学习、强化学习和生成艺术等领域,展示了如何在几分钟内完成原本需要数小时或数天的进化实验。EvoJAX为研究人员提供了一个高效、灵活的神经进化开发平台。

EvoJAX神经进化JAX硬件加速机器学习Github开源项目

EvoJAX:硬件加速神经进化

EvoJAX是一个可扩展、通用、硬件加速的神经进化工具包。它基于JAX库构建,使神经进化算法能够在多个TPU/GPU上并行运行神经网络。EvoJAX通过将进化算法、神经网络和任务全部用NumPy实现,并即时编译以在加速器上运行,从而实现极高的性能。

本仓库还包含了EvoJAX在广泛任务中的几个可扩展示例,包括监督学习、强化学习和生成艺术,展示了EvoJAX如何在单个加速器上几分钟内运行您的进化实验,相比之下使用CPU可能需要数小时或数天。

EvoJAX论文:https://arxiv.org/abs/2202.05008(介绍[视频](https://youtu.be/TMkft3wWpb8))

如果您希望在您的出版物中引用本项目,请使用以下BibTeX:

@article{evojax2022,
  title={EvoJAX: Hardware-Accelerated Neuroevolution},
  author={Tang, Yujin and Tian, Yingtao and Ha, David},
  journal={arXiv preprint arXiv:2202.05008},
  year={2022}
}

使用EvoJAX的出版物列表(请通过PR添加缺失的条目):

安装

EvoJAX是在JAX上实现的,需要先安装JAX。

安装JAX: 请首先按照JAX的安装说明进行安装,可选择GPU/TPU后端支持。 如果未设置JAX,EvoJAX安装仍会尝试拉取仅CPU版本的JAX。 请注意,Colab运行时预装了JAX。

安装EvoJAX

# 从PyPI安装 pip install evojax # 或者,从我们的GitHub仓库安装 pip install git+https://github.com/google/evojax.git@main

如果您还想安装某些可选功能所需的额外依赖项,请使用

pip install evojax[extra] # 或 pip install git+https://github.com/google/evojax.git@main#egg=evojax[extra]

代码概览

EvoJAX是一个由三个主要组件组成的框架,我们期望用户对其进行扩展。

  1. 神经进化算法 所有神经进化算法都应实现evojax.algo.base.NEAlgorithm接口,并位于evojax/algo/中。 有关EvoJAX中可用算法的信息,请参见此处
  2. 策略网络 所有神经网络都应实现evojax.policy.base.PolicyNetwork接口,并保存在evojax/policy/中。 在本仓库中,我们给出了MLP、ConvNet、Seq2Seq和PermutationInvariant模型的示例实现。
  3. 任务 所有任务都应实现evojax.task.base.VectorizedTask,并位于evojax/task/中。

这些组件可以独立使用,也可以由管理训练流程的evojax.trainerevojax.sim_mgr协调使用。 虽然它们应该足以满足当前提供的策略和任务的需求,但我们计划在未来根据需要扩展其功能。

示例

作为快速入门,我们提供了一些非平凡的示例(examples/中的脚本和examples/notebooks中的笔记本)来说明EvoJAX的用法。 我们在每个脚本的顶部提供了启动训练过程的示例命令。 这些脚本和笔记本在TPU和/或NVIDIA V100 GPU上运行:

监督学习任务

虽然在实践中显然会使用梯度下降来解决此类任务,但重点是要表明神经进化也能在短时间内以一定程度的准确性解决这些问题,这在将这些模型适应到更复杂的任务中时会很有用,因为在那些情况下基于梯度的方法可能不起作用。

<img width="100%" src="https://yellow-cdn.veclightyear.com/835a84d5/3e8e03eb-ba02-4fad-adfc-624e57740e9d.png"></img>

  • MNIST分类 - 我们展示了EvoJAX在单个GPU上5分钟内训练ConvNet策略,达到>98%的测试准确率。
  • Seq2Seq学习 - 我们演示了EvoJAX能够学习一个具有数十万参数的大型网络来完成seq2seq任务。

经典控制任务

包含控制任务有两个目的:1) 与监督学习任务不同,EvoJAX中的控制任务步数不确定,因此我们使用这些示例来展示我们任务展开循环的效率。2) 我们希望展示在JAX中实现任务的加速优势,并说明如何从头开始实现一个任务。

<img width="100%" src="https://yellow-cdn.veclightyear.com/835a84d5/732f26ed-9ac6-45d5-935e-6ebc56a86978.png"></img>

  • 运动 - Brax是一个用JAX实现的可微分物理引擎。 我们将其包装为一个任务,并在GPU/TPU上使用EvoJAX进行训练。EvoJAX只需几十分钟就能解决Brax中的运动任务。
  • 倒立摆摆动 - 我们说明了如何在JAX中实现经典控制任务,并将其集成到EvoJAX的流程中,以显著加快训练速度。

新颖任务

在最后这一类中,我们超越简单的说明,展示了更实用和吸引遗传和进化计算领域研究人员的新颖任务示例,目的是帮助他们在EvoJAX中尝试想法。

<table width="100%"> <tr> <td width="30%"> <img width="100%" src="https://yellow-cdn.veclightyear.com/835a84d5/50a8dcdd-e122-455a-acba-97749f42d71a.gif"></img> </td> <td width="30%"> <img width="100%" src="https://yellow-cdn.veclightyear.com/835a84d5/c4e2cee2-baa7-49de-98ce-ee8e39ea4293.gif"></img> </td> <td width="40%"> <img width="100%" src="https://yellow-cdn.veclightyear.com/835a84d5/b19ed966-cd39-4541-b9ce-65626241e07f.gif"></img> </td> </tr> <tr> <td> 多智能体水世界 </td> <td> ES-CLIP:<i>"一幅猫的画"</i> </td> <td> 史莱姆排球 </td> </tr> </table> * [水世界](https://github.com/google/evojax/blob/main/examples/train_waterworld.py) - 在这个[任务](https://cs.stanford.edu/people/karpathy/reinforcejs/waterworld.html)中,智能体试图获取尽可能多的食物,同时避开毒药。EvoJAX能够在单个GPU上用数十分钟训练出智能体。 此外,我们证明在EvoJAX中可以进行[多智能体训练](https://github.com/google/evojax/blob/main/examples/train_waterworld_ma.py),这有利于学习能够应对环境复杂性和不确定性的策略。
  • 抽象画(笔记本1笔记本2) - 我们复现了这项计算创造力工作的结果,并展示了如何使用EvoJAX在单个GPU上高效地加速原本需要多个CPU和GPU的实现,这在之前是不可能的。 此外,使用多个GPU/TPU,EvoJAX可以进一步将上述工作的速度提升近乎线性。 我们还展示了EvoJAX的模块化设计允许其组件被独立使用 - 在这种情况下,可以只使用EvoJAX的ES算法,同时利用自己的训练循环和环境实现。

  • 神经网络史莱姆排球 - 在这个任务中,智能体的目标是让球落在对手一侧的地面上,使对手失去一条生命。当任一智能体失去全部五条生命或达到时间限制时,回合结束。当对手失去生命时,智能体获得+1的奖励,当自己失去生命时获得-1的奖励。 EvoJAX能够在单个GPU上用不到5分钟训练出智能体,相比之下在多个CPU上需要数小时。 这个实现基于Slime Volleyball Gym环境,它是原始JavaScript版游戏的Python移植版。在所有这些版本中,内置的AI对手和不太理想的物理引擎都是相同的。

征集贡献

EvoJAX的目标是让进化计算能够在加速器上处理大量任务。

之前的一个问题是,许多进化算法只针对某篇论文中的特定任务进行了优化。这就是为什么在EvoJAX的第一个版本中,我们只关注一种算法(PGPE),同时创建了6个以上不同领域的多样化任务,确保单一算法可以毫无问题地适用于所有任务。查看已贡献算法的表格

进化算法

我们欢迎新的进化算法被添加到这个工具包中。如果你能在提交拉取请求之前,展示你的实现可以在倒立摆(硬模式)、BRAX、水世界和MNIST上表现良好,那将会很棒。

进化算法候选ideas:

我们建议新算法遵循以下性能指南:

  1. MNIST: 90%以上
  2. 倒立摆: 900分以上(简单),600分以上(困难)
  3. 水世界: 6分以上(单智能体),2分以上(多智能体)
  4. Brax蚂蚁: 3000分以上

请注意,这些不是硬性要求,只是粗略的指南。

在向我们发送PR之前,请使用基准测试脚本评估你的算法,如果由于硬件限制无法测试某些任务,请告诉我们。 查看这个示例拉取请求线程,了解如何将遗传算法合并到EvoJAX中。

如果你想进一步讨论,欢迎联系evojax-dev@google.comevojax-dev@googlegroups.com

新任务

我们也欢迎新的任务和示例(查看这里了解EvoJAX中的所有任务)。一些建议:

  • 使用进化训练神经图灵机来创建一个排序算法。
  • 通过自我对弈的足球(示例)
  • 进化具有Hebbian学习能力的可塑网络,可以从智能体最近的经历中记住迷宫地图。
  • 执行需要未知步骤数的任务的RNN自适应计算时间
  • 使用硬注意力的任务。

姊妹项目

越来越多的研究人员在使用JAX进行进化计算。以下是相关工作列表:

  • QDax: 加速的质量多样性。一个使用JAX帮助通过硬件加速器和大规模并行加速质量多样性(QD)算法的工具。(GitHub | 论文)

  • evosax: 一个基于JAX的进化策略库,专注于JAX可组合的ask-tell功能和策略多样性。实现了10多种ES算法。(GitHub)

免责声明

这不是Google的官方产品。

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
下拉加载更多