基于语言模型 的进化搜索开源库
OpenELM是一个开源库,致力于在代码和自然语言领域实现基于语言模型的进化搜索。它支持MAP-Elites等多种进化算法,集成了本地和API调用的语言模型,并提供了包括Sodarace和图像生成在内的多个基准环境。该项目旨在为不同计算能力的用户提供简单易用的接口,展示语言模型进化的潜力。
OpenELM是由CarperAI开发的开源库,旨在实现代码和自然语言中语言模型的进化搜索。
OpenELM项目有以下目标:
**<ins>对于QDAIF</ins>:**诗歌领域目前已在主分支中实现,其他使用少样本LMX领域的实验代码目前在实验分支中
pip install openelm
要使用sodarace环境,你必须先pip install swig
。
然后:
pip install openelm[sodaracer]
查看pyproject.toml以了解更多安装选项。
OpenELM支持质量多样性算法MAP-Elites、CVT-MAP-Elites和Deep Grid MAP-Elites,以及简单的遗传算法基准。
OpenELM支持:
默认情况下,OpenELM的语言模型被实例化为Langchain类,这意味着OpenELM可以支持几乎所有现有的LLM API,以及通过HuggingFace Transformers在本地GPU上运行的模型。
我们还提供可选的Nvidia Triton推理服务器支持,适用于在8 个或更多GPU上需要低延迟的用例。最后,对于代码生成领域,我们提供了一个沙盒环境,包括一个由gVisor(一个在主机和容器之间引入额外屏障的容器运行时)支持的容器服务器,以及基于启发式的安全保护。
大致上,ELM由不同组件的管道组成:
Environment
类。这个类定义了如何初始化种群成员、使用所需操作符进行突变以及如何测量个体的适应度(和多样性)的机制。MAPElites
类。这个类描述了进化算法的工作原理,可以看作是环境的包装器,定义了生成个体的选择算法。MutationModel
类,负责运行LLM以实际生成新的个体。这作为LangChain API的包装器。环境预期在需要新个体时调用MutationModel
。ELM
类调用MAPElites
算法类并运行搜索。这些类的所有选项都在configs.py
中通过数据类定义,这些数据类注册为hydra
配置,可以在运行示例脚本(如run_elm.py