人工智能科学家:迈向全自动开放式科学发现AI Scientist Sakana AI
人工智能科学家:迈向全自动
开放式科学发现
📚 | 📝 | 📂
人工智能面临的最大挑战之一是开发能够进行科学研究和发现新知识的代理。虽然前沿模型已经被用来帮助人类科学家,例如集思广益或编写代码,但它们仍然需要大量的人工监督或严重局限于特定任务。
我们很高兴推出AI Scientist,这是第一个用于全自动科学发现的综合系统,它使大型语言模型 (LLM) 等基础模型能够独立进行研究。
提供了我们论文中的所有运行和数据,其中我们在每个模板上运行每个基本模型以获得约 50 个想法。我们强烈建议您阅读一些(尤其是扩散论文),以了解其优缺点。以下是The AI Scientist 📝 生成的一些示例论文:
注意:小心!此代码库将执行 LLM 编写的代码。这种自主性存在各种风险和挑战。这包括使用潜在危险的软件包、Web 访问和可能产生的进程。请自行决定使用。请确保容器化适当限制 Web 访问。
目录
要求
此代码是使用 PyTorch 为带有 CUDA 的 NVIDIA GPU 设计的。遵循,可能可以支持其他 GPU 架构。当前模板在仅使用 CPU 的机器上可能需要花费大量时间。所有代码均设计为在 Linux 上运行,其他操作系统可能需要进行重大调整。
安装 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
,您可能需要。
支持的型号和 API 密钥
我们支持多种模型,包括开放权重和仅 API 模型。一般来说,我们建议仅使用比原始 GPT-4 能力更强的前沿模型。
OpenAI API(GPT-4)
默认情况下,这将使用OPENAI_API_KEY
环境变量。
人性 API (克劳德十四行诗 3.5)
默认情况下,这将使用ANTHROPIC_API_KEY
环境变量。
通过 Bedrock 的 Claude 模型
提供的 Claude 模型,请安装以下附加软件包: pip install anthropic[bedrock]
接下来,指定一组有效的和目标:
设置这些环境变量:AWS_ACCESS_KEY_ID
,,AWS_SECRET_ACCESS_KEY
。AWS_REGION_NAME
通过 Vertex AI 建立 Claude 模型
提供的 Claude 模型,请安装以下附加软件包: pip install google-cloud-aiplatform pip install anthropic[vertex]
设置有效的身份验证,例如通过提供区域和项目 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
DeepSeek API(DeepSeek-Coder-V2)
默认情况下,这将使用DEEPSEEK_API_KEY
环境变量。
OpenRouter API(Llama3.1)
默认情况下,这将使用OPENROUTER_API_KEY
环境变量。
语义学者 API(文献检索)
语义学者 API 密钥(S2_API_KEY
),我们的代码还可以选择使用它来提高吞吐量,但原则上如果没有它它也应该能工作。
请务必提供用于运行的模型的密钥,例如 export OPENAI_API_KEY="YOUR KEY HERE" export S2_API_KEY="YOUR KEY HERE"
设置 NanoGPT
这里和下面,我们给出了设置每个模板的数据和基线评估的说明。您只能运行您感兴趣的模板的设置步骤。这必须在您的机器上运行,因为训练时间可能因您的硬件而异。 # Prepare NanoGPT data python data/enwik8/prepare.py python data/shakespeare_char/prepare.py python data/text8/prepare.py
创建基线运行(取决于机器) # 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
创建 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
设置 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
设置 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
运行 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 之间并行化想法。
获取 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
制作你自己的模板
如果您希望AI 科学家探索某个研究领域,那么创建自己的模板应该非常容易。通常,请遵循现有模板的结构,该结构包括:
experiment.py
-- 这是包含内容“核心”的单个文件。它接受一个参数out_dir
,它应该在其中创建文件夹并保存运行中的相关信息。plot.py
-- 这应该从文件夹中获取信息run
并创建图表。代码应该清晰且易于编辑。prompt.json
-- 在此处输入有关您的模板的信息。seed_ideas.json
-- 将示例想法放在此处。您也可以尝试在没有任何示例的情况下提出想法,然后挑选出最好的一个或两个放在此处。latex/template.tex
-- 我们建议使用我们的乳胶文件夹,但请务必将预加载的引文替换为您认为更相关的引文。
模板资源
我们提供了 3 个模板,它们大量使用了来自其他存储库的代码,我们在下面注明了这些代码。(通常,我们会在文件本身中执行此操作,但由于它是可见的,因此不清楚这会如何影响 AI Scientist)。
NanoGPT 模板使用了来自和此代码。
2D 扩散模板使用了来自、和的代码。
Grokking 模板使用了来自和的代码。
我们要感谢开源模型和软件包的开发人员所做的贡献以及他们的工作。
引用人工智能科学家的话
如果您在研究中使用《AI Scientist》 ,请按以下方式引用:
<span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>@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}
}
</code></span></span></span></span>
常问问题
如果您对《AI 科学家》有任何疑问,我们建议您首先阅读我们的论文。
为什么运行 AI Scientist 时缺少文件?
确保您已经完成了主要实验脚本之前的所有设置和准备步骤。
为什么没有生成 PDF 或评论?
AI 科学家完成一个想法的成功率取决于模板、基础模型和想法的复杂性。我们建议参考我们的主要论文。Claude Sonnet 3.5 的成功率最高。审查最好用 GPT-4o 进行,所有其他模型都存在积极性偏差或无法符合所需输出的问题。
产生的每个想法的成本是多少?
使用 Claude Sonnet 3.5,每篇论文通常不到 15 美元。我们推荐使用 DeepSeek Coder V2,这是一种更具成本效益的方法。寻找新模型的好地方是。
如何更改与撰写文章相关的基本会议格式?
template.tex
更改每个模板中包含的基础文件。
如何针对不同学科领域运行 AI Scientist?
请参阅不同模板的说明。在当前迭代中,这仅限于可以用代码表达的想法。但是,解除此限制将代表令人兴奋的未来工作!:)
如何添加对新基础模型的支持?
请参阅此以获取有关如何添加新模型的示例,例如这次通过 Bedrock 为 Claude 添加模型。我们不建议将任何明显弱于 GPT-4 级别的模型用于 AI Scientist。
为什么我需要自己运行基线运行?
run_0
由于硬件差异,这些显示为并且应该在您执行 AI Scientist 的每台机器上运行,以便进行准确的运行时比较。
如果我在访问 Semantic Scholar API 时遇到问题该怎么办?
我们使用 Semantic Scholar API 检查想法的新颖性并收集论文写作的引用。如果您没有 API 密钥或 API 访问速度较慢,您可以跳过这些阶段。
容器化
我们提供了一个Docker 镜像,它可以帮助您进行容器化工作experimental/Dockerfile
。
您可以像这样使用该图像: # Endpoint Script docker run -e OPENAI_API_KEY=$OPENAI_API_KEY -v `pwd`/templates:/app/AI-Scientist/templates <AI_SCIENTIST_IMAGE> \ --model gpt-4o-2024-05-13 \ --experiment 2d_diffusion \ --num-ideas 2 # Interactive docker run -it -e OPENAI_API_KEY=$OPENAI_API_KEY \ --entrypoint /bin/bash \ <AI_SCIENTIST_IMAGE>