资讯详情

OpenEvolve 配置完全指南:默认配置模板、岛屿模型调优与早期停止实战

📅 2026/10/6 22:23:44 | 华诺云谱 👁 阅读
OpenEvolve 配置完全指南:默认配置模板、岛屿模型调优与早期停止实战
人工智能大模型AI Agent代码智能体自主智能体【免费下载链接】openevolveOpen-source implementation of AlphaEvolve项目地址https://gitcode.com/gh_mirrors/op/openevolve点击查看免费下载OpenEvolve 是一个开源的 AlphaEvolve 实现它把 LLM 变成自主代码优化器通过进化的方式反复改进程序。本篇文章以仓库configs/目录下的配置体系为核心系统讲解如何从default_config.yaml全量模板出发理解每一个配置参数的含义与默认值掌握岛屿模型Island-Based Evolution三个核心参数num_islands、migration_interval、migration_rate的调优逻辑并基于island_examples.yaml的五大典型场景与early_stopping_example.yaml的早期停止示例写出可直接运行的实战配置。读完本文你将具备从零搭建 OpenEvolve 进化任务配置、按问题复杂度选择合适的岛屿策略、并通过命令行或 Python API 一键启动的能力。configs 目录OpenEvolve 配置文件的完整图谱configs/目录是 OpenEvolve 的配置中心共包含 4 个 YAML 文件与一份导读文档configs/README.md它们分工明确文件定位configs/default_config.yaml主配置模板包含所有可用选项与合理的默认值参数注释最全适合作为自定义配置的起点configs/island_config_example.yaml岛屿模型实战示例演示推荐的海岛设置、平衡的迁移参数是一份可直接运行的完整配置configs/island_examples.yaml五种不同场景的岛屿配置集合最大多样性、聚焦探索、均衡、快速探索、大规模进化并附参数选择准则configs/early_stopping_example.yaml早期停止功能示例演示如何在进化的同时自动判断是否已无改进空间其中default_config.yaml是灵魂文件它既是一份参数字典也是 OpenEvolve 各核心模块LLM、Prompt、Database、Evaluator、EvolutionTrace配置入口的真实写照与 openevolve/config.py 中的Config及其子 dataclassLLMConfig、PromptConfig、DatabaseConfig、EvaluatorConfig、EvolutionTraceConfig一一对应。下面我们先逐模块拆解这份全量模板。default_config.yaml全量配置模板逐模块拆解通用设置General Settingsmax_iterations: 100 # Maximum number of evolution iterations checkpoint_interval: 10 # Save checkpoints every N iterations log_level: INFO # Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) log_dir: null # Custom directory for logs (default: output_dir/logs) random_seed: 42 # Random seed for reproducibility (null random, 42 default)max_iterations进化总迭代数上限。注意这是 YAML 模板中的示例值代码层Config的默认值为 10000见 openevolve/config.pyCLI 也可通过--iterations覆盖checkpoint_interval每隔 N 次迭代保存一次检查点配合 CLI 的--checkpoint参数可实现断点续跑random_seed设置后控制器会同步 seed 全局random、numpy并对不同组件派生哈希种子保证可复现设为null则随机。进化设置Evolution Settingsdiff_based_evolution: true # Use diff-based evolution (true) or full rewrites (false) max_code_length: 10000 # Maximum allowed code length in characters enforce_evolve_blocks: false # Revert LLM edits outside EVOLVE-BLOCK-START/END markersdiff_based_evolutiontrue采用基于 SEARCH/REPLACE diff 的增量进化false则使用全量重写。Config中还维护diff_pattern正则默认 SEARCH\n(.*?)\n(.*?) REPLACE用于解析 LLM 返回的 diffenforce_evolve_blocks开启后LLM 在EVOLVE-BLOCK-START/EVOLVE-BLOCK-END标记之外的编辑会被回滚实现位于 openevolve/utils/code_utils.py 的enforce_evolve_blocks。早期停止设置Early Stoppingearly_stopping_patience: null # Stop after N iterations without improvement (null disabled) convergence_threshold: 0.001 # Minimum improvement required to reset patience counter early_stopping_metric: combined_score # Metric to track for early stopping详见本文早期停止Early Stopping配置一节。LLM 配置llmllm: models: # List of available models with their weights - name: gemini-2.0-flash-lite weight: 0.8 - name: gemini-2.0-flash weight: 0.2 evaluator_models: # Models for LLM feedback - name: gemini-2.0-flash-lite weight: 0.8 - name: gemini-2.0-flash weight: 0.2 api_base: https://generativelanguage.googleapis.com/v1beta/openai/ # Base URL for API api_key: null # API key (defaults to OPENAI_API_KEY env variable) # api_key: ${GEMINI_API_KEY} # Reads API key from $GEMINI_API_KEY temperature: 0.7 # Higher more creative top_p: 0.95 # Top-p sampling parameter max_tokens: 4096 # Maximum tokens to generate timeout: 60 # Timeout for API requests in seconds retries: 3 # Number of retries for failed requests retry_delay: 5 # Delay between retries in seconds几个值得注意的源码级细节多模型加权集成models列表支持配置多个模型并赋予权重运行时由LLMEnsemble按权重采样见 openevolve/llm/ensemble.py。evaluator_models若未显式配置会复用models列表openevolve/config.py${VAR}环境变量语法api_key支持api_key: ${GEMINI_API_KEY}形式配置加载时会通过_resolve_env_var完整匹配并展开若引用的环境变量未设置会抛出ValueErroropenevolve/config.py向后兼容语法除了models数组还兼容primary_model/primary_model_weight与secondary_model/secondary_model_weight的旧写法LLMConfig.__post_init__会自动把它们转换为models列表条目openevolve/config.pyisland_config_example.yaml与 examples/circle_packing/config_phase_1.yaml 均使用了这种写法provider 扩展LLMModelConfig还支持provider字段openai默认、claude_code、copilot_cli以及reasoning_effort、max_budget_usdClaude Code、max_ai_creditsCopilot CLI、manual_mode人机协同等进阶选项。Prompt 配置promptprompt: template_dir: null # Custom directory for prompt templates system_message: You are an expert coder helping to improve programs through evolution. island_system_messages: [] # Optional literal text or template names by island index evaluator_system_message: You are an expert code reviewer. num_top_programs: 3 # Number of top-performing programs to include num_diverse_programs: 2 # Number of diverse programs to include use_template_stochasticity: true # Use random variations in templates for diversity template_variations: # Different phrasings for parts of the template improvement_suggestion: - Heres how we could improve this code: - I suggest the following improvements: - We can enhance this code by: include_artifacts: true # Include execution outputs/errors in prompt max_artifact_bytes: 20480 # Maximum artifact size in bytes (20KB default) artifact_security_filter: true # Apply security filtering to artifacts suggest_simplification_after_chars: 500 include_changes_under_chars: 100 concise_implementation_max_lines: 10 comprehensive_implementation_min_lines: 50 diff_summary_max_line_len: 100 diff_summary_max_lines: 30template_dir自定义提示词模板目录。加载时若为相对路径会相对配置文件所在目录解析openevolve/config.py仓库默认模板见 openevolve/prompts/defaults/island_system_messages按岛屿下标为不同岛屿指定专属系统消息字面量或模板名null/缺失则回退到system_message。它必须与database.num_islands配合条目数不能超过岛屿数否则Config.from_dict会抛出ValueErroropenevolve/config.py阈值类参数suggest_simplification_after_chars等用于特征提取与程序标签简洁实现/全面实现diff_summary_*控制 Previous Attempts 段落中 SEARCH/REPLACE 块的展示长度。Database 配置databasedatabase: db_path: null # Path to persist database (null in-memory only) in_memory: true log_prompts: true population_size: 1000 # Maximum number of programs to keep in memory archive_size: 100 # Size of elite archive num_islands: 5 # Number of islands (separate populations) migration_interval: 50 # Migrate between islands every N generations migration_rate: 0.1 # Fraction of top programs to migrate (0.1 10%) elite_selection_ratio: 0.1 # Ratio of elite programs to select exploration_ratio: 0.2 # Ratio of exploration vs exploitation exploitation_ratio: 0.7 # Ratio of exploitation vs random selection feature_dimensions: # MAP-Elites feature map dimensions - complexity # Code length (built-in) - diversity # Code diversity (built-in) feature_bins: 10 # Number of bins per dimension diversity_reference_size: 20 # Size of reference set for diversity calculationdb_path持久化路径null时数据库仅在内存中运行MAP-Elites 特征图feature_dimensions默认[complexity, diversity]两者均为内置特征代码长度与结构多样性也可混入评估器返回的自定义指标如performance、correctness。注意自定义维度必须由评估器返回连续的原始数值OpenEvolve 内部完成缩放与分箱评估器不应返回预先算好的 bin 索引feature_bins每个维度的分箱数可以是整数所有维度一致或按维度指定的字典例如feature_bins: {complexity: 10, diversity: 15}从源码看diversity_metric目前固定为edit_distancefeature_based 未实现选择比例默认elite_selection_ratio0.1、exploration_ratio0.2、exploitation_ratio0.7。Evaluator 配置evaluatorevaluator: timeout: 300 # Maximum evaluation time in seconds max_retries: 3 # Maximum number of retries for evaluation cascade_evaluation: true # Use cascade evaluation to filter bad solutions early cascade_thresholds: # Thresholds for advancing to next evaluation stage - 0.5 - 0.75 - 0.9 parallel_evaluations: 4 # Number of parallel evaluations use_llm_feedback: false # Use LLM to evaluate code quality (experimental) llm_feedback_weight: 0.1 # Weight for LLM feedback in final score适应度计算优先使用评估器返回的combined_score否则对所有指标取平均但会排除database.feature_dimensions中列出的特征维度级联评估cascade先跑廉价的第一阶段达到阈值0.5才进入下一阶段用于尽早过滤劣质解对应 openevolve/evaluator.py 中的_cascade_evaluate与run_stage1/2/3资源限制memory_limit_mb、cpu_limit与分布式评估distributed在注释中明确标注not yet implemented配置时不要依赖。Evolution Trace 配置evolution_traceevolution_trace: enabled: false # Enable evolution trace logging format: jsonl # Output format: jsonl, json, or hdf5 include_code: false # Include full program code in traces include_prompts: true # Include prompts and LLM responses output_path: null # Defaults to output_dir/evolution_trace.{format} buffer_size: 10 # Number of traces to buffer before writing compress: false # Compress output file (jsonl only)该模块为强化学习训练与进化分析记录细粒度的进化轨迹支持 jsonl/json/hdf5 三种格式与可选压缩底层实现在 openevolve/evolution_trace.py。岛屿模型OpenEvolve 保持进化多样性的核心机制configs/README.md明确指出default_config.yaml的价值不仅在于参数齐全还在于内置了岛屿式进化参数Island-Based Evolution Parameters——这是 OpenEvolve 维持进化多样性的关键设计。岛屿模型的思想是不维护一个全局种群而是把种群拆成多个独立进化的子种群岛屿每个岛屿在自己的搜索区域深耕每隔若干代把各岛屿上的优秀程序迁移到相邻岛屿实现知识共享。这样既避免了单一种群过早收敛到局部最优又通过周期性交流保留了全局进步的动力。三个核心参数database: num_islands: 5 # Number of separate populations migration_interval: 50 # Migrate every N generations migration_rate: 0.1 # Fraction of top programs to migratenum_islands岛屿数量。岛屿越多独立搜索方向越多、多样性越强但收敛变慢推荐大多数问题取 3–10migration_interval每隔多少代迁移一次。值越大各岛屿越独立推荐 25–100 代migration_rate每次迁移时从每个岛屿顶部程序按适应度降序中迁出的比例推荐 0.05–0.25%–20%。比例越高知识传播越快。源码级的迁移实现细节在 openevolve/database.py 中可以看到岛屿机制的真实实现轮转调度next_island()以 round-robin 方式切换当前进化岛屿increment_island_generation()维护每个岛屿的代数计数器openevolve/database.py迁移判定should_migrate()比较最大岛屿代数与上次迁移代数的差值是否达到migration_intervalopenevolve/database.py迁移数量migrate_programs()将每个岛屿的程序按get_fitness_score优先combined_score否则对非特征维度指标取平均降序排列取max(1, int(len(island_programs) * migration_rate))个作为迁出对象openevolve/database.py环状拓扑默认把迁出程序复制到相邻岛屿(i1) % n与(i-1) % nopenevolve/database.py即邻居共享而非全局广播去重保护_migrate_one()会跳过目标岛屿已存在相同代码的程序并为迁移副本生成新 UUID、打上migrant: true标记openevolve/database.py最少岛屿限制岛屿数小于 2 时直接跳过迁移openevolve/database.py。这些细节解释了为什么migration_rate是比例而非数量迁移量随岛屿种群规模动态缩放小种群也能保证至少迁移 1 个程序。何时使用什么参数选择速查configs/README.md与 configs/island_examples.yaml 给出的经验法则问题特征策略说明复杂问题易陷入局部最优更多岛屿 更低迁移频率增大搜索空间覆盖延长各岛独立演化时间简单问题结构清晰更少岛屿 更频繁迁移加速知识共享快速收敛长时运行更多岛屿用岛屿多样性对抗长跑中的早熟收敛短时运行更少岛屿更快收敛避免资源浪费island_config_example.yaml一份可直接运行的岛屿配置configs/island_config_example.yaml 是岛屿模型的标准答案它同时示范了两套 LLM 配置语法与岛屿专属系统消息的用法max_iterations: 1000 checkpoint_interval: 100 log_level: INFO llm: primary_model: gemini-2.0-flash-lite primary_model_weight: 0.8 secondary_model: gemini-2.0-flash secondary_model_weight: 0.2 temperature: 0.7 top_p: 0.95 max_tokens: 4096 database: population_size: 500 archive_size: 100 num_islands: 5 # 5 个独立种群 migration_interval: 50 # 每 50 代迁移 migration_rate: 0.1 # 迁移顶部 10% 的程序 elite_selection_ratio: 0.1 exploration_ratio: 0.3 exploitation_ratio: 0.7 feature_bins: 10 prompt: system_message: Improve the program through evolution. island_system_messages: - Focus on simpler algorithms. - null - Focus on runtime performance. num_top_programs: 3 num_diverse_programs: 2 use_template_stochasticity: true evaluator: timeout: 300 max_retries: 3 cascade_evaluation: true parallel_evaluations: 4 diff_based_evolution: true allow_full_rewrites: false max_code_length: 10000亮点解读岛屿专属提示词island_system_messages允许给不同岛屿定制演化风格——岛屿 0 专注更简单的算法、岛屿 2 专注运行时性能第二个条目为null表示该岛屿沿用system_message。这种分工进化正是岛屿模型多样性的延伸兼容语法primary_modelsecondary_model的写法会在Config加载时被自动展开为models权重列表主模型 0.8、次模型 0.2feature_bins 支持字典形式注释中展示了feature_bins: {performance: 20, correctness: 10}的按维度分箱写法。island_examples.yaml五大典型场景配置速查configs/island_examples.yaml 把岛屿参数压缩成五个可直接套用的场景模板# 1. 最大多样性适合复杂问题、长时运行、避免局部最优 max_diversity: database: num_islands: 10 migration_interval: 25 migration_rate: 0.2 population_size: 1000 archive_size: 200 # 2. 聚焦探索适合结构清晰的问题、较短运行 focused_exploration: database: num_islands: 3 migration_interval: 100 migration_rate: 0.05 population_size: 500 archive_size: 50 # 3. 均衡方案大多数问题的默认起点 balanced: database: num_islands: 5 migration_interval: 50 migration_rate: 0.1 population_size: 1000 archive_size: 100 # 4. 快速探索小规模、原型验证 quick_exploration: database: num_islands: 3 migration_interval: 20 migration_rate: 0.15 population_size: 200 archive_size: 30 # 5. 大规模进化复杂优化、超长进化运行 large_scale: database: num_islands: 15 migration_interval: 75 migration_rate: 0.08 population_size: 2000 archive_size: 300从 5 个场景可以观察出清晰的权衡规律max_diversity用 10 个岛屿 高频高比例迁移25 代 / 20%最大化搜索空间覆盖focused_exploration用 3 个岛屿 低频低比例迁移100 代 / 5%让每个岛屿深入挖掘large_scale则把岛屿数推到 15、种群扩到 2000同时用保守的 8% 迁移率避免大规模种群被过早同化。参数选取的本质是在多样性多岛、少迁与收敛速度少岛、多迁之间找平衡点。早期停止Early Stopping配置configs/early_stopping_example.yaml 演示了如何在进化长跑中自动止损max_iterations: 1000 checkpoint_interval: 50 log_level: INFO # 连续 30 代无改进即停止 early_stopping_patience: 30 # Stop after 30 iterations without improvement convergence_threshold: 0.01 # Minimum improvement of 0.01 required to reset patience early_stopping_metric: combined_score # Track the combined_score metric llm: models: - name: gpt-4o-mini weight: 1.0 api_base: https://api.openai.com/v1 temperature: 0.7 max_tokens: 4096 database: population_size: 50 num_islands: 3 migration_interval: 20 evaluator: timeout: 60 max_retries: 2 parallel_evaluations: 2 diff_based_evolution: true max_code_length: 8000三个早期停止参数的语义见 openevolve/config.pyearly_stopping_patience连续 N 次迭代无改进即停止null表示禁用。该示例中30表示30 代无改进就收工可显著节省 LLM API 调用成本convergence_threshold判定有改进的最小幅度。只有当early_stopping_metric的提升超过该阈值示例为 0.01才会重置耐心计数器若只是小幅抖动则不重置early_stopping_metric跟踪的指标默认combined_score可改为评估器返回的其他指标名。该文件同样是一个完整的可运行配置gpt-4o-mini OpenAI API适合预算有限、想快速验证想法的场景。关于早期停止参数更细的行为与校验逻辑可参考 tests/test_early_stopping_config.py。使用方法把配置跑起来方式一命令行启动推荐快速上手先复制模板为自有配置cp configs/default_config.yaml my_config.yaml # Edit my_config.yaml for your specific needs然后通过仓库入口脚本openevolve-run.py启动python openevolve-run.py initial_program.py evaluator.py --config my_config.yaml --output my_outputCLI 支持的主要参数见 openevolve/cli.py参数说明initial_program位置参数初始程序文件路径evaluation_file位置参数含evaluate函数的评估文件路径--config/-c配置文件路径YAML--output/-o结果输出目录--iterations/-i覆盖配置中的最大迭代数--target-score/-t达到目标分数即停止--log-level/-l覆盖日志级别--checkpoint指定检查点目录续跑--api-base、--primary-model、--secondary-model覆盖 LLM API 与模型配置实际项目中这种用法非常常见例如 examples/arc_benchmark/run_evolution.sh 中的启动命令python ../../openevolve-run.py initial_program.py evaluator.py --config config.yaml --output $OUTPUT_DIR $方式二Python API 启动适合集成与脚本化configs/README.md给出的 API 用法如下from openevolve import OpenEvolve from openevolve.config import Config config Config() config.from_yaml(my_config.yaml) evolve OpenEvolve( initial_program_pathprogram.py, evaluation_fileevaluator.py, configconfig )此外仓库还提供了更简洁的函数式 APIrun_evolutionopenevolve/api.py它接受文件路径 / 代码字符串 / 代码行列表三种形式的初始程序以及文件路径 / Callable两种形式的评估器config参数既可以是 YAML 路径也可以是Config对象from openevolve import run_evolution result run_evolution( initial_programprogram.py, evaluatorevaluator.py, configmy_config.yaml, iterations200, ) print(result.best_score)配置加载的底层行为了解即可从 openevolve/config.py 的Config.from_yaml/from_dict实现可知YAML 通过yaml.safe_load读取再用dacite.from_dict转换为类型化的Configdataclass 结构因此字段名必须与 dataclass 定义一致llm.temperature/top_p为null时会被自动剔除避免 dacite 类型错误顶层random_seed会自动下放到database.random_seed两处校验会直接抛出ValueErrorprompt.island_system_messages条目数超过database.num_islandsprompt.programs_as_changes_descriptiontrue但diff_based_evolutionfalsediff_pattern若提供会先尝试编译正则非法表达式会报错。从示例到实战参考仓库里的真实配置如果想看岛屿参数之外的完整实战配置仓库的 examples 目录提供了大量真实任务的配置文件是绝佳的参考样本examples/circle_packing/config_phase_1.yaml圆填充问题n26使用 4 个岛屿、cascade_thresholds: [0.5, 0.75]、diff_based_evolution: false构造型程序用全量重写以及含领域知识的长 system messageexamples/arc_benchmark/config.yamlARC 基准任务的配置配套post_evolution_eval.py做进化后评估examples/algotune/AlgoTune 基准下的多个算法优化任务FFT、LU 分解、特征向量等每个任务都包含config.yaml、evaluator.py与initial_program.py三件套。综合来看OpenEvolve 的配置哲学可以总结为三句话用default_config.yaml保证参数覆盖完整用岛屿三参数num_islands/migration_interval/migration_rate控制多样性与收敛的平衡用早期停止参数控制成本与收益的平衡。从复制模板、调整岛屿参数、按需开启早期停止到用 CLI 或 API 启动任务这就是一条完整且可复现的 OpenEvolve 配置实战路径。赞分享人工智能大模型AI Agent代码智能体自主智能体【免费下载链接】openevolveOpen-source implementation of AlphaEvolve项目地址https://gitcode.com/gh_mirrors/op/openevolve点击查看免费下载相关推荐CAI模型设置完全指南如何配置默认模型与单个代理CAICybersecurity AI是一个开源的人工智能平台专为网络安全测试和安全评估而设计。作为一名安全研究人员或渗透测试人员了解如何正确配置CAI人工智能AI Agent网络安全渗透测试工具调用AI 评测2024最新three-globe入门教程5分钟上手3D地球可视化开发2024最新three globe入门教程5分钟上手3D地球可视化开发 three globe是一款基于ThreeJS的WebGL地球数据可视化库能帮助开发数据可视化3D渲染openclaw-cn models 命令完全指南模型发现、扫描、默认模型与认证配置openclaw cn models 命令完全指南模型发现、扫描、默认模型与认证配置 openclaw cn models 是中文社区版 OpenClawo人工智能AI Agent即时通讯后端本地部署语音上一篇Azure Community-Policy 与内置策略对比何时选择自定义解决方案下一篇解放双手KeymouseGo自动化操作从入门到精通指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑