Skip to content

cttmayi/llm-evolve

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

656 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LLM Evolve

🧬 最先进的开源进化代码智能体

将您的LLM转化为自主代码优化器,发现突破性算法

GitHub stars License


✨ 为什么选择llmEvolve?

🎯 自主发现

LLM 不仅仅是优化——而是发现全新的算法。无需人工指导。

经过验证的结果

在实际硬件上实现2-3倍加速。圆填充问题达到最先进水平突破性优化。

🔬 研究级品质

内置完全可重现性、广泛评估流程和科学严谨性。

OpenEvolve vs 手动优化:

方面 手动优化 LLM Evolve
解决时间 数天到数周 数小时
探索广度 受人类创造力限制 无限的LLM创造力
可重现性 难以复制 完全确定
多目标 复杂的权衡 自动帕累托优化
扩展性 无法扩展 跨岛屿的并行进化

🏆 已验证的成就

🎯 领域 📈 成就 🔗 示例
GPU优化 Apple Silicon上2-3倍加速 MLX Metal内核
数学问题 圆填充问题达到最先进水平(n=26) 圆填充
算法设计 自适应排序算法 Rust自适应排序
科学计算 自动化滤波器设计 信号处理
多语言 Python、Rust、R、Metal着色器 所有示例

🧬 LLM Evolve 如何工作

LLM Evolve 实现了复杂的进化代码流程,远超简单优化:

🎯 核心创新:MAP-Elites + Island + LLM

  • 质量-多样性进化:跨特征维度维护多样化种群
  • 基于岛屿的架构:多个种群防止过早收敛
  • LLM 集成:具有智能回退策略的多个模型
  • 工件旁路通道:错误反馈改进后续世代

🚀 高级功能

🔬 科学可重现性
  • 全面种子化:每个组件(LLM、数据库、评估)都已种子化
  • 默认种子=42:开箱即用的即时可重现结果
  • 确定性进化:跨机器精确重现运行
  • 组件隔离:基于哈希的隔离防止交叉污染
🤖 高级LLM集成
  • 测试时计算:与OptiLLM集成,实现MoA和增强推理
  • 通用API:适用于OpenAI、Google、本地模型
  • 插件生态系统:支持OptiLLM插件(readurls、executecode、z3_solver)
  • 智能集成:具有复杂回退的加权组合
🧬 进化算法创新
  • 双重选择:性能与灵感的不同程序
  • 自适应特征维度:自定义质量-多样性度量
  • 迁移模式:具有受控基因流的环形拓扑
  • 多策略采样:精英、多样和探索性选择

🎯 完美适用场景

使用案例 OpenEvolve的优势
🏃‍♂️ 性能优化 发现人类遗漏的硬件特定优化
🧮 算法发现 找到经典问题的新颖方法
🔬 科学计算 自动化繁琐的手动调参过程
🎮 竞技编程 生成多种解决方案策略
📊 多目标问题 跨维度的帕累托最优解

🛠 安装与设置

要求

  • Python:3.9+
  • LLM访问:任何OpenAI兼容的API

安装选项

🔧 开发安装
git clone https://github.com/cttmayi/llm-evolve.git
cd llm-evolve
pip install -e ".[dev]"

🎯 快速示例:函数最小化

观看LLM Evolve从随机搜索进化到复杂优化:

# 初始程序(随机搜索)
def minimize_function(func, bounds, max_evals=1000):
    best_x, best_val = None, float('inf')
    for _ in range(max_evals):
        x = random_point_in_bounds(bounds)
        val = func(x)
        if val < best_val:
            best_x, best_val = x, val
    return best_x, best_val

↓ 进化过程 ↓

# 进化程序(模拟退火 + 自适应冷却)
def minimize_function(func, bounds, max_evals=1000):
    x = random_point_in_bounds(bounds)
    temp = adaptive_initial_temperature(func, bounds)
    
    for i in range(max_evals):
        neighbor = generate_neighbor(x, temp, bounds)
        delta = func(neighbor) - func(x)
        
        if delta < 0 or random.random() < exp(-delta/temp):
            x = neighbor
            
        temp *= adaptive_cooling_rate(i, max_evals)  # 动态冷却
    
    return x, func(x)

性能:收敛速度提升100倍!

🔬 高级示例

🎨 提示词进化

进化提示词而非代码,获得更好的LLM性能:

# 示例:HotpotQA数据集
初始提示词:"根据上下文回答问题。"

进化提示词:"作为专家分析师,仔细检查提供的上下文。
将复杂的多跳推理分解为清晰的步骤。交叉引用
来自多个来源的信息以确保准确性。回答:[问题]"

结果:HotpotQA基准测试准确率提升23%

完整示例

🏁 竞技编程

编程竞赛的自动解决方案生成

# 问题:寻找最大子数组和
# OpenEvolve发现多种方法:

# 进化路径1:暴力 → Kadane算法
# 进化路径2:分治 → 优化Kadane算法
# 进化路径3:动态规划 → 空间优化DP

在线评测集成

⚙️ 配置

LLM Evolve为高级用户提供广泛配置:

# 高级配置示例
max_iterations: 1000
random_seed: 42  # 完全可重现

llm:
  # 测试时计算的集成
  models:
    - name: "gemini-2.5-pro"
      weight: 0.6
    - name: "moa&readurls-o3"  # OptiLLM功能
      weight: 0.4
  temperature: 0.7

database:
  # MAP-Elites质量-多样性
  population_size: 500
  num_islands: 5  # 并行进化
  migration_interval: 20
  feature_dimensions: ["complexity", "diversity", "performance"]

evaluator:
  enable_artifacts: true      # 向LLM的错误反馈
  cascade_evaluation: true    # 多阶段测试
  use_llm_feedback: true      # AI代码质量评估

prompt:
  # 复杂的灵感系统
  num_top_programs: 3         # 最佳表现者
  num_diverse_programs: 2     # 创意探索
  include_artifacts: true     # 执行反馈
  
  # 自定义模板
  template_dir: "custom_prompts/"
  use_template_stochasticity: true  # 随机化提示词
🎯 特征工程

控制程序在质量-多样性网格中的组织方式:

database:
  feature_dimensions: 
    - "complexity"      # 内置:代码长度
    - "diversity"       # 内置:结构多样性
    - "performance"     # 自定义:来自您的评估器
    - "memory_usage"    # 自定义:来自您的评估器
    
  feature_bins:
    complexity: 10      # 10个复杂度级别
    performance: 20     # 20个性能桶
    memory_usage: 15    # 15个内存使用类别

重要:从评估器返回原始值,OpenEvolve自动处理分箱。

🎨 自定义提示词模板

高级提示词工程与自定义模板:

prompt:
  template_dir: "custom_templates/"
  use_template_stochasticity: true
  template_variations:
    greeting:
      - "让我们增强这段代码:"
      - "优化时间:"
      - "改进算法:"

查看提示词示例了解完整的模板自定义。

🔧 工件与调试

工件旁路通道提供丰富反馈以加速进化:

# 评估器可以返回执行上下文
from llm_evolve.evaluation_result import EvaluationResult

return EvaluationResult(
    metrics={"performance": 0.85, "correctness": 1.0},
    artifacts={
        "stderr": "警告:次优内存访问模式",
        "profiling_data": {...},
        "llm_feedback": "代码正确但可以使用更好的变量名",
        "build_warnings": ["未使用变量x"]
    }
)

下一代提示词自动包含:

## 先前执行反馈
⚠️ 警告:次优内存访问模式
💡 LLM反馈:代码正确但可以使用更好的变量名
🔧 构建警告:未使用变量x

这创建了反馈循环,每一代都从以前的错误中学习!

🚀 路线图

🔥 即将推出的功能

  • 多模态进化:同时处理图像、音频和文本
  • 联邦学习:跨多台机器的分布式进化
  • AutoML集成:超参数和架构进化
  • 基准套件:跨领域标准化评估

🌟 研究方向

  • 自修改提示词:进化修改自身的提示策略
  • 跨语言进化:Python → Rust → C++优化链
  • 神经符号推理:结合神经和符号方法
  • 人-AI协作:带人类反馈的交互式进化

🤔 常见问题

Details

节省成本技巧:

  • 从较少的迭代开始(100-200)
  • 使用o3-mini、Gemini-2.5-Flash或本地模型进行探索
  • 使用级联评估提前过滤不良程序
  • 最初配置较小的种群规模
🆚 与手动优化相比如何?
方面 手动 LLM Evolve
初始学习 需要数周理解领域 几分钟即可开始
解决方案质量 取决于专业知识 始终探索新颖方法
时间投入 每次优化需要数天到数周 数小时完成完整进化
可重现性 难以复制确切过程 用种子完美重现
扩展性 无法超越人类能力扩展 跨岛屿的并行进化

当您需要探索大型解决方案空间或同时优化多个目标时,LLM Evolve表现突出

🚨 如果进化卡住了怎么办?

内置机制防止停滞:

  • 岛屿迁移:来自其他种群的新鲜基因
  • 温度控制:探索与利用的平衡
  • 多样性维护:MAP-Elites防止收敛
  • 工件反馈:错误消息指导改进
  • 模板随机性:随机化提示词打破模式

人工干预:

  • 增加num_diverse_programs进行更多探索
  • 添加自定义特征维度以多样化搜索
  • 使用模板变体随机化提示词
  • 调整迁移间隔以获得更多交叉授粉
📈 如何衡量成功?

多种成功指标:

  1. 主要指标:您的评估器的combined_score或指标平均值
  2. 收敛性:随时间的最佳分数改进
  3. 多样性:MAP-Elites网格覆盖率
  4. 效率:达到目标性能的迭代次数
  5. 鲁棒性:跨不同测试用例的性能

使用可视化器实时跟踪所有指标,并确定进化何时收敛。

About

Open-source implementation of AlphaEvolve

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%