evosax
:基于JAX的进化策略 🦎
<a href="https://yellow-cdn.veclightyear.com/835a84d5/fd5fa94d-2aac-4629-850c-3e7e00ddd5d8.png?raw=true"><img src="https://yellow-cdn.veclightyear.com/835a84d5/fd5fa94d-2aac-4629-850c-3e7e00ddd5d8.png?raw=true" width="170" align="right" /></a>
厌倦了为神经进化处理异步进程?想要利用大规模向量化和高吞吐量加速器来实现进化策略(ES)吗?evosax
允许您利用JAX、XLA编译和自动向量化/并行化来将ES扩展到您喜欢的加速器上。其API基于ES的经典"询问"、"评估"、"告知"循环。"询问"和"告知"调用都与jit
、vmap
/pmap
和lax.scan
兼容。它包含了大量经典(如CMA-ES、差分进化等)和现代神经进化(如OpenAI-ES、增强RS等)策略。您可以在这里开始 👉
evosax
API基本用法 🍲import jax from evosax import CMA_ES # 实例化搜索策略 rng = jax.random.PRNGKey(0) strategy = CMA_ES(popsize=20, num_dims=2, elite_ratio=0.5) es_params = strategy.default_params state = strategy.initialize(rng, es_params) # 运行询问-评估-告知循环 - 注意:默认为最小化! for t in range(num_generations): rng, rng_gen, rng_eval = jax.random.split(rng, 3) x, state = strategy.ask(rng_gen, state, es_params) fitness = ... # 您的种群评估函数 state = strategy.tell(x, fitness, state, es_params) # 获取整体最佳种群成员及其适应度 state.best_member, state.best_fitness
最新版本的 evosax
可以直接从 PyPI 安装:
pip install evosax
如果你想获取最新的提交,请直接从仓库安装:
pip install git+https://github.com/RobertTLange/evosax.git@main
要在你的加速器上使用 JAX,可以在 JAX 文档中找到更多详细信息。
CartPole-v1
gym 任务上使用 OpenES 和 PEPG (MLP/LSTM 控制器)。