欢迎来到EvoTorch项目! EvoTorch是由NNAISENSE开发的开源进化计算库,建立在PyTorch之上。 请参阅文档以获取有关使用EvoTorch的深入指导,并加入我们的Slack以进行讨论。
通过以下命令开始安装EvoTorch:
pip install evotorch
使用EvoTorch,您可以解决各种优化问题,无论它们是否可微(即是否允许梯度下降)。EvoTorch可以解决的问题类型包括:
- 黑盒优化问题(连续或离散)
- 强化学习任务
- 监督学习任务
EvoTorch中提供了各种进化计算算法:
- 基于分布的搜索算法:
- PGPE: 基于参数的探索的策略梯度。
- XNES: 指数自然进化策略。
- CMA-ES: 协方差矩阵自适应进化策略。
- SNES: 可分离自然进化策略。
- CEM: 交叉熵法。
- 基于种群的搜索算法:
- GeneticAlgorithm: 遗传算法实现。也支持多目标,这种情况下它表现为NSGA-II。
- CoSyNE: 合作性突触神经进化。
- MAPElites: 多维度表现优秀个体存档
由于所有这些算法都是在PyTorch中实现的,因此它们可以利用矢量化和GPU并行化,在可用GPU的情况下大大加快优化速度。 使用Ray,EvoTorch可以进一步扩展这些算法,通过在以下方面分担工作负载来实现:
- 多个CPU
- 多个GPU
- Ray群集中的多台计算机
示例
以下是一些代码示例,展示了EvoTorch的API。
一个黑盒优化示例
使用PyTorch定义的任何目标函数都可以直接用于EvoTorch。 非向量化的目标函数只接收一维PyTorch张量作为解决方案,并返回一个标量作为适应度。 向量化的目标函数接收一批解决方案作为二维PyTorch张量,并返回一维张量作为适应度。 以下示例演示了如何定义和解决经典的Rastrigin问题。
这是一个强化学习的示例,演示了如何通过Gym库解决强化学习任务。
如果您在研究中使用EvoTorch,请考虑引用我们的论文。
@article{evotorch2023arxiv,
title={{EvoTorch}: 可扩展的Python进化计算},
author={Nihat Engin Toklu, Timothy Atkinson, Vojt\v{e}ch Micka, Pawe\l{} Liskowski, Rupesh Kumar Srivastava},
journal={arXiv预印本},
year={2023},
note={https://arxiv.org/abs/2302.12600}
}
如何贡献
请参考我们的贡献指南。