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的官方产品。

编辑推荐精选

讯飞智文

讯飞智文

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

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

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

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

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

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多