AI科学家:迈向全自动
开放式科学发现 🧑🔬
人工智能的一个重大挑战是开发能够独立进行科学研究和发现新知识的智能体。虽然前沿模型已经被用来辅助人类科学家,例如进行头脑风暴或编写代码,但它们仍然需要大量的人工监督或严格限制在特定任务中。
我们很高兴推出AI科学家,这是第一个用于全自动科学发现的综合系统,使基础模型(如大型语言模型LLMs)能够独立进行研究。
我们在这里提供了论文中所有的实验运行和数据,我们对每个模板使用每个基础模型运行了约50个想法。我们强烈建议阅读一些Claude论文(尤其是扩散模型相关的),以了解其优势和劣势。以下是AI科学家生成的一些示例论文 📝:
- 双尺度扩散:低维生成模型的自适应特征平衡
- 多尺度网格噪声适应:增强低维数据的扩散模型
- GAN增强扩散:提升样本质量和多样性
- DualDiff:通过双专家去噪增强低维扩散模型的模式捕获
- StyleFusion:字符级语言模型中的自适应多风格生成
- 通过Q学习实现Transformer的自适应学习率
- 解锁顿悟:Transformer模型权重初始化策略的比较研究
- 加速顿悟:Transformer泛化的层级学习率
- 通过压缩实现顿悟:揭示最小描述长度下的突然泛化
- 加速数学洞察:通过策略性数据增强促进顿悟
注意:请谨慎!此代码库将执行LLM编写的代码。这种自主性伴随着各种风险和挑战。这包括使用潜在危险的软件包、网络访问和可能启动的进程等。请自行酌情使用。请确保适当地进行容器化和限制网络访问。
目录
要求
安装
conda create -n ai_scientist python=3.11
conda activate ai_scientist
# LLM APIs
pip install anthropic[bedrock] aider-chat backoff openai
# 可视化
pip install matplotlib pypdf pymupdf4llm
# 安装pdflatex
sudo apt-get install texlive-full
# 通用要求
pip install torch numpy transformers datasets tiktoken wandb tqdm
API密钥
OpenAI API (GPT-4)
默认使用OPENAI_API_KEY
环境变量。
Anthropic API (Claude Sonnet 3.5)
默认使用ANTHROPIC_API_KEY
环境变量。
对于Amazon Bedrock提供的Claude模型,请指定一组有效的AWS凭证和目标AWS区域:
(必需)AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
,(可选)AWS_SESSION_TOKEN
,AWS_DEFAULT_REGION
DeepSeek API (DeepSeek-Coder-V2)
默认使用DEEPSEEK_API_KEY
环境变量。
OpenRouter API (Llama3.1)
默认使用OPENROUTER_API_KEY
环境变量。
Semantic Scholar API (文献搜索)
我们的代码还可以选择使用Semantic Scholar API密钥(S2_API_KEY
)以获得更高的吞吐量如果您有的话,虽然原则上不使用它也应该能正常工作。
确保为您的运行提供所使用模型的密钥,例如:
export OPENAI_API_KEY="您的密钥"
export S2_API_KEY="您的密钥"
设置NanoGPT
# 准备NanoGPT数据
python data/enwik8/prepare.py
python data/shakespeare_char/prepare.py
python data/text8/prepare.py
创建基准运行(取决于机器)
# 设置NanoGPT基准运行
# 注意:您必须先运行上面的准备脚本!
cd templates/nanoGPT && python experiment.py --out_dir run_0 && python plot.py
创建NanoGPT_lite基准运行。我们用它来进行健全性检查
# 注意:您必须先运行上面的准备脚本!
cd templates/nanoGPT_lite && python experiment.py --out_dir run_0 && python plot.py
设置2D扩散
# 设置2D扩散
git clone https://github.com/gregversteeg/NPEET.git
cd NPEET
pip install .
pip install scikit-learn
# 设置2D扩散基准运行
cd templates/2d_diffusion && python experiment.py --out_dir run_0 && python plot.py
设置顿悟
# 设置顿悟
pip install einops
# 设置顿悟基准运行
cd templates/grokking && python experiment.py --out_dir run_0 && python plot.py
运行AI科学家论文生成实验
**注意:**请确保完成上述设置步骤。
conda activate ai_scientist
# 运行论文生成。
python launch_scientist.py --model "gpt-4o-2024-05-13" --experiment nanoGPT_lite --num-ideas 2
python launch_scientist.py --model "claude-3-5-sonnet-20240620" --experiment nanoGPT_lite --num-ideas 2
获取LLM生成的论文评审
import openai
from ai_scientist.perform_review import load_paper, perform_review
client = openai.OpenAI()
model = "gpt-4o-2024-05-13"
# 从PDF文件加载论文(原始文本)
paper_txt = load_paper("report.pdf")
# 获取审核字典
review = perform_review(
paper_txt,
model,
client,
num_reflections=5,
num_fs_examples=1,
num_reviews_ensemble=5,
temperature=0.1,
)
# 检查审核结果
review["Overall"] # 总体评分1-10
review["Decision"] # ['接受', '拒绝']
review["Weaknesses"] # 缺点列表(字符串)
运行批量分析:
cd review_iclr_bench
python iclr_analysis.py --num_reviews 500 --batch_size 100 --num_fs_examples 1 --num_reflections 5 --temperature 0.1 --num_reviews_ensemble 5
创建自己的模板
如果你想让AI科学家探索某个研究领域,创建自己的模板应该很容易。通常,请遵循现有模板的结构,包括:
experiment.py
-- 这是一个包含主要内容的单一文件。它接受一个out_dir
参数,用于创建文件夹并保存运行的相关信息。plot.py
-- 这应该从run
文件夹中获取信息并创建图表。代码应该清晰易编辑。prompt.json
-- 在此处放置有关模板的信息。seed_ideas.json
-- 在此处放置示例想法。你也可以尝试在没有任何示例的情况下生成想法,然后选择最好的一两个放在这里。latex/template.tex
-- 我们建议使用我们的latex文件夹,但请确保将预加载的引用替换为你预期更相关的引用。
模板资源
我们提供了3个模板,这些模板大量使用了其他仓库的代码,我们在下面对此表示感谢。(通常,我们会在文件本身中做这个,但不清楚这会如何影响AI科学家,因为它会是可见的)。
2D扩散模板使用了tiny-diffusion、ema-pytorch和Datasaur的代码。
Grokking模板使用了Sea-Snell/grokking和danielmamay/grokking的代码。
我们要感谢这些开源模型和包的开发者们的贡献,以及他们公开分享自己的工作。
引用AI科学家
如果你在研究中使用了AI科学家,请按以下方式引用:
@article{lu2024aiscientist,
title={The {AI} {S}cientist: Towards Fully Automated Open-Ended Scientific Discovery},
author={Lu, Chris and Lu, Cong and Lange, Robert Tjarko and Foerster, Jakob and Clune, Jeff and Ha, David},
journal={arXiv preprint arXiv:2408.06292},
year={2024}
}
常见问题
我们建议首先阅读我们的论文,了解你对AI科学家的任何问题。
为什么运行AI科学家时缺少文件?
确保在运行主实验脚本之前完成所有设置和准备步骤。
为什么没有生成PDF或审核?
AI科学家完成一个想法的成功率取决于模板、基础模型和想法的复杂性。我们建议参考我们的主要论文。使用Claude Sonnet 3.5观察到最高的成功率。 审核最好用GPT-4o完成,所有其他模型在积极偏见或未能符合所需输出方面都存在问题。
生成每个想法的成本是多少?
使用Claude Sonnet 3.5通常每篇论文不到15美元。我们推荐DeepSeek Coder V2作为更具成本效益的方法。寻找新模型的好地方是Aider排行榜。
如何更改与写作相关的基础会议格式?
更改每个模板中包含的基础template.tex
文件。
如何为不同的学科领域运行AI科学家?
请参考不同模板的说明。在当前版本中,这仅限于可以用代码表达的想法。然而,取消这一限制将代表令人兴奋的未来工作!:)