本文介绍一个用AI写论文的开源应用,AI Scientist 用于全自动科学发现的综合系统,它使大型语言模型 (LLM) 等基础模型能够独立进行研究。
1.简介
人工智能面临的最大挑战之一是开发能够进行科学研究和发现新知识的代理。虽然前沿模型已经被用来帮助人类科学家,例如集思广益或编写代码,但它们仍然需要大量的人工监督或严重局限于特定任务。
我们很高兴推出AI Scientist,这是第一个用于全自动科学发现的综合系统,它使大型语言模型 (LLM) 等基础模型能够独立进行研究。
我们进一步在此处提供了我们论文中的所有运行和数据,其中我们在每个模板上运行每个基本模型以获得约 50 个想法。我们强烈建议您阅读一些Claude 论文(尤其是扩散论文),以了解其优缺点。以下是The AI Scientist 📝 生成的一些示例论文:
- DualScale 扩散:低维生成模型的自适应特征平衡
- 多尺度网格噪声自适应:增强低维数据的扩散模型
- GAN 增强扩散:提升样本质量和多样性
- DualDiff:通过双专家去噪增强低维扩散模型中的模式捕获
- StyleFusion:字符级语言模型中的自适应多风格生成
- 通过 Q-Learning 实现 Transformer 的自适应学习率
- 解锁 Grokking:Transformer 模型中权重初始化策略的比较研究
- Grokking 加速:Transformer 泛化的逐层学习率
- 通过压缩进行理解:通过最小描述长度揭示突然的概括
- 加速数学洞察:通过战略数据增强促进 Grokking
注意:小心!此代码库将执行 LLM 编写的代码。这种自主性存在各种风险和挑战。这包括使用潜在危险的软件包、Web 访问和可能产生的进程。请自行决定使用。请确保容器化并适当限制 Web 访问。
2.要求
此代码是使用 PyTorch 为带有 CUDA 的 NVIDIA GPU 设计的。遵循PyTorch 指南,可能可以支持其他 GPU 架构。当前模板在仅使用 CPU 的机器上可能需要花费大量时间。所有代码均设计为在 Linux 上运行,其他操作系统可能需要进行重大调整。
3.安装
conda create -n ai_scientist python=3.11
conda activate ai_scientist
# Install pdflatex
sudo apt-get install texlive-full
# Install pypi requirements
pip install -r requirements.txt
安装时texlive-full
,您可能需要按住 Enter。
4.支持的型号和 API 密钥
我们支持多种模型,包括开放权重和仅 API 模型。一般来说,我们建议仅使用比原始 GPT-4 能力更强的前沿模型。
4.1 OpenAI API (GPT-4)
默认情况下,这将使用OPENAI_API_KEY
环境变量。
4.2ANTHROPIC
API (Claude sonnet 3.5)
默认情况下,这将使用ANTHROPIC_API_KEY
环境变量。
通过 Bedrock 的 Claude 模型
对于Amazon Bedrock提供的 Claude 模型,请安装以下附加软件包:
pip install anthropic[bedrock]
设置这些环境变量:AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
。AWS_REGION_NAME
通过 Vertex AI 建立 Claude 模型
对于Vertex AI Model Garden提供的 Claude 模型,请安装以下附加软件包:
pip install google-cloud-aiplatform
pip install anthropic[vertex]
接下来,为Google Cloud 项目设置有效的身份验证,例如通过提供区域和项目 ID,如下所示:
export CLOUD_ML_REGION="REGION" # for Model Garden call
export ANTHROPIC_VERTEX_PROJECT_ID="PROJECT_ID" # for Model Garden call
export VERTEXAI_LOCATION="REGION" # for Aider/LiteLLM call, as per https://docs.litellm.ai/docs/providers/vertex#set-vertex-project--vertex-location
export VERTEXAI_PROJECT="PROJECT_ID" # for Aider/LiteLLM call as per https://docs.litellm.ai/docs/providers/vertex#set-vertex-project--vertex-location
4.3 DeepSeek API(DeepSeek-Coder-V2)
默认情况下,这将使用DEEPSEEK_API_KEY
环境变量。
4.4 OpenRouter API (Llama3.1)
默认情况下,这将使用OPENROUTER_API_KEY
环境变量。
4.5 语义学者 API(文献检索)
如果您有语义学者 API 密钥(S2_API_KEY
),我们的代码还可以选择使用它来提高吞吐量,但原则上如果没有它它也应该能工作。
请务必提供用于运行的模型的密钥,例如
export OPENAI_API_KEY="YOUR KEY HERE"
export S2_API_KEY="YOUR KEY HERE"
5 设置 NanoGPT
这里和下面,我们给出了设置每个模板的数据和基线评估的说明。您只能运行您感兴趣的模板的设置步骤。这必须在您的机器上运行,因为训练时间可能因您的硬件而异。
# Prepare NanoGPT data
python data/enwik8/prepare.py
python data/shakespeare_char/prepare.py
python data/text8/prepare.py
5.1 创建基线运行(取决于机器)
# Set up NanoGPT baseline run
# NOTE: YOU MUST FIRST RUN THE PREPARE SCRIPTS ABOVE!
cd templates/nanoGPT && python experiment.py --out_dir run_0 && python plot.py
5.2 创建 NanoGPT_lite 基线运行。我们使用它进行健全性检查
# NOTE: YOU MUST FIRST RUN THE PREPARE SCRIPTS ABOVE!
cd templates/nanoGPT_lite && python experiment.py --out_dir run_0 && python plot.py
6 设置 2D 扩散
# Set up 2D Diffusion
git clone https://github.com/gregversteeg/NPEET.git
cd NPEET
pip install .
pip install scikit-learn
# Set up 2D Diffusion baseline run
cd templates/2d_diffusion && python experiment.py --out_dir run_0 && python plot.py
7 设置 Grokking
# Set up Grokking
pip install einops
# Set up Grokking baseline run
cd templates/grokking && python experiment.py --out_dir run_0 && python plot.py
8 运行 AI 科学家论文生成实验
注意:请确保上述设置步骤已完成。
conda activate ai_scientist
# Run the paper generation.
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
如果您拥有超过 1 个 GPU,请使用该parallel
选项在多个 GPU 之间并行化想法。
9 获取 LLM 生成的论文评审
import openai
from ai_scientist.perform_review import load_paper, perform_review
client = openai.OpenAI()
model = "gpt-4o-2024-05-13"
# Load paper from pdf file (raw text)
paper_txt = load_paper("report.pdf")
# Get the review dict of the review
review = perform_review(
paper_txt,
model,
client,
num_reflections=5,
num_fs_examples=1,
num_reviews_ensemble=5,
temperature=0.1,
)
# Inspect review results
review["Overall"] # overall score 1-10
review["Decision"] # ['Accept', 'Reject']
review["Weaknesses"] # List of weaknesses (str)
运行批量分析:
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
10 制作你自己的模板
如果您希望AI 科学家探索某个研究领域,那么创建自己的模板应该非常容易。通常,请遵循现有模板的结构,该结构包括:
experiment.py
— 这是包含内容“核心”的单个文件。它接受一个参数out_dir
,它应该在其中创建文件夹并保存运行中的相关信息。plot.py
— 这应该从文件夹中获取信息run
并创建图表。代码应该清晰且易于编辑。prompt.json
— 在此处输入有关您的模板的信息。seed_ideas.json
— 将示例想法放在此处。您也可以尝试在没有任何示例的情况下提出想法,然后挑选出最好的一个或两个放在此处。latex/template.tex
— 我们建议使用我们的乳胶文件夹,但请务必将预加载的引文替换为您认为更相关的引文。
11 模板资源
我们提供了 3 个模板,它们大量使用了来自其他存储库的代码,我们在下面注明了这些代码。(通常,我们会在文件本身中执行此操作,但由于它是可见的,因此不清楚这会如何影响 AI Scientist)。
NanoGPT 模板使用了来自NanoGPT和此PR 的代码。
2D 扩散模板使用了来自tiny-diffusion、ema-pytorch和Datasaur的代码。
Grokking 模板使用了来自Sea-Snell/grokking和danielmamay/grokking的代码。
我们要感谢开源模型和软件包的开发人员所做的贡献以及他们的工作。