经 AI Skill Hub 精选评估,PopuLoRA 获评「强烈推荐」。这款AI工具在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 8.0 分,适合有一定技术背景的用户使用。
PopuLoRA 是一款基于 Python 开发的开源工具,专注于 artificial-intelligence、deep-learning、evolutionary-algorithms 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
PopuLoRA 是一款基于 Python 开发的开源工具,专注于 artificial-intelligence、deep-learning、evolutionary-algorithms 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
# 方式一:pip 安装(推荐)
pip install populora
# 方式二:虚拟环境安装(推荐生产环境)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install populora
# 方式三:从源码安装(获取最新功能)
git clone https://github.com/lucidrains/populora
cd populora
pip install -e .
# 验证安装
python -c "import populora; print('安装成功')"
# 命令行使用
populora --help
# 基本用法
populora input_file -o output_file
# Python 代码中调用
import populora
# 示例
result = populora.process("input")
print(result)
# populora 配置文件示例(config.yml) app: name: "populora" debug: false log_level: "INFO" # 运行时指定配置文件 populora --config config.yml # 或通过环境变量配置 export POPULORA_API_KEY="your-key" export POPULORA_OUTPUT_DIR="./output"
pip install populora
import torch
import torch.nn as nn
from populora import Population
model = nn.Sequential(nn.Linear(2, 8), nn.ReLU(), nn.Linear(8, 1))
pop = Population(model, pop_size = 16, low_rank = 4, lora_targets = ['0', '2'])
state = torch.randn(1, 4, 2)
preds = pop(state, all_individuals = True) # one routed forward over every individual
labels = torch.randn(1, 4, 1)
fitnesses = -((preds - labels) ** 2).reshape(16, -1).mean(dim = -1)
result = pop.select('deterministic', fitnesses, survive_frac = 0.5)
parents = pop.select_parents(
'tournament',
fitnesses,
num_children = len(result.selected_out_indices),
culled = result.selected_out_indices # parents come from the survivors
)
pop.crossover_('average', parents, result.selected_out_indices) # offspring overwrite the culled
pop.mutate_('full_gaussian', individuals = result.selected_out_indices)
model = pop.merge_(fitnesses.argmax()) # merge the best individual back in
pop.save_individual('best.pt', fitnesses.argmax()) # or save just the best individual's weights
pop.evolve_(fitnesses) runs selection, parent selection, crossover, and mutation in one step. Batch evaluation also supports pop(x, individuals = [ids]) to route each sample to its own individual.
evolve_with_env evolves a population against any MDP-style environment in one call — gymnasium, dm_control, isaac, maniskill, pybullet, pufferlib, or any simulator — and returns the merged best policy.
from torch import nn
from dm_control import suite
from populora import evolve_with_env
policy, history = evolve_with_env(
[suite.load('cartpole', 'balance') for _ in range(16)], # envs, a list, a vector env, or a factory
nn.Sequential(nn.Linear(5, 32), nn.ReLU(), nn.Linear(32, 2)),
pop_size = 16,
low_rank = 16,
action = lambda logits: logits.argmax(-1) * 2 - 1,
num_generations = 25,
horizon = 1000,
seed = 0,
progress = True,
return_history = True # per-generation best / mean
)
lora_targets auto-discovers every Linear layer when omitted. Pass target_fitness to stop early, checkpoint_dir to write latest.pt (every checkpoint_every generations) and best.pt (on new bests), and resume = True to pick up from the latest checkpoint.
Continuous policies emit actions on (-1, 1) — pass to_range = (-2., 2.) (or any env action range) to evolve_with_env / interact_with_env and the actions are rescaled before stepping the env. An action fn built with make_action carries its own range, e.g. a beta with beta_rescale_neg_one_one = False emits on (0, 1) instead — the interactor rescales from that automatically. interact_with_env(from_range = ...) is the fallback for custom action functions, and rescale_from_range_to_range is exported too.
For a custom loop, interact_with_env exposes the underlying EnvInteractor — one routed forward over the active slots per timestep, distributed across ranks under torchrun:
from torch import nn
from dm_control import suite
from populora import interact_with_env
interactor = interact_with_env([suite.load('cartpole', 'balance') for _ in range(16)])
backbone = nn.Sequential(nn.Linear(5, 32), nn.ReLU(), nn.Linear(32, 2))
population = interactor.population(backbone, pop_size = 16, low_rank = 16)
for gen in range(25):
fitnesses = interactor.evaluate(
population,
action = lambda logits: logits.argmax(-1) * 2 - 1,
horizon = 1000
)
population.evolve_(fitnesses)
policy = population.merge_(fitnesses.argmax())
Custom fitness functions may take (population, individuals) (batched), (population, idx) (per index), or (population) (all at once) — detected automatically.
高质量的AI工具,具有创新性和实用价值
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
AI Skill Hub 点评:PopuLoRA 的核心功能完整,质量优秀。对于AI 技术爱好者来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。
| 原始名称 | populora |
| 原始描述 | 开源AI工具:Implementation and explorations into PopuLoRA, Co-Evolving LLM Populations for R。⭐12 · Python |
| Topics | artificial-intelligencedeep-learningevolutionary-algorithms |
| GitHub | https://github.com/lucidrains/populora |
| License | MIT |
| 语言 | Python |
收录时间:2026-06-03 · 更新时间:2026-06-06 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。