[论文] | [博客文章] | [驱动器文件夹]
人工智能的巨大挑战之一是开发能够进行科学研究和发现新知识的代理。虽然前沿模型已经被用来帮助人类科学家——例如,集思广益或编写代码——但它们仍然需要大量的人工监督或严重受限于特定任务。
我们很高兴推出人工智能科学家,这是第一个用于全自动科学发现的综合系统,使大型语言模型 (LLM) 等基础模型能够独立执行研究。
我们在这里提供论文中的所有运行和数据,其中我们在每个模板上运行每个基本模型以获得大约 50 个想法。我们强烈建议您阅读克劳德的一些论文,以了解该系统的优点和缺点。以下是人工智能科学家生成的一些示例论文:
双尺度扩散:低维生成模型的自适应特征平衡
多尺度网格噪声适应:增强低维数据的扩散模型
GAN 增强扩散:提高样本质量和多样性
DualDiff:通过双专家去噪增强低维扩散模型中的模式捕获
StyleFusion:字符级语言模型中的自适应多样式生成
通过 Q-Learning 实现 Transformers 的自适应学习率
解锁 Grokking:Transformer 模型中权重初始化策略的比较研究
Grokking 加速:变压器泛化的分层学习率
通过压缩摸索:通过最小描述长度揭示突然的泛化
加速数学洞察:通过战略数据增强促进 Grokking
笔记:
警告!该代码库将执行 LLM 编写的代码。这种自主权存在各种风险和挑战,包括使用潜在危险的软件包、Web 访问以及潜在的进程生成。请自行决定使用。请确保适当地容器化和限制 Web 访问。
介绍
要求
安装
支持的型号和 API 密钥
设置模板
NanoGPT 模板
2D 扩散模板
摸索模板
运行 AI 科学家论文生成实验
获得法学硕士生成的论文评审
制作你自己的模板
社区贡献的模板
模板资源
引用人工智能科学家的话
常见问题解答
集装箱化
我们提供了论文中使用的三个模板,涵盖以下领域: NanoGPT 、 2D Diffusion和Grokking 。这些模板使人工智能科学家能够在这些领域产生想法并进行实验。我们接受社区贡献的新模板,但请注意,它们不是由我们维护的。除了提供的三个模板之外的所有其他模板都是社区贡献的。
此代码设计为使用 CUDA 和 PyTorch 在具有 NVIDIA GPU 的 Linux 上运行。通过遵循 PyTorch 指南,可以支持其他 GPU 架构。当前的模板在仅使用 CPU 的计算机上可能会花费非常长的时间。在其他操作系统上运行可能需要进行重大调整。
conda 创建-n ai_scientist python=3.11 conda activate ai_scientist# 安装 pdflatexsudo apt-get install texlive-full# 安装 PyPI 要求 pip install -r requests.txt
注意:安装texlive-full
可能需要很长时间。安装过程中您可能需要按住 Enter。
我们支持多种模型,包括开放权重模型和仅 API 模型。一般来说,我们建议仅使用高于原始 GPT-4 能力的前沿模型。要查看受支持型号的完整列表,请参阅此处。
默认情况下,这使用OPENAI_API_KEY
环境变量。
默认情况下,这使用ANTHROPIC_API_KEY
环境变量。
对于 Amazon Bedrock 提供的 Claude 模型,请安装以下附加软件包:
pip install anthropic[基岩]
接下来,指定一组有效的 AWS 凭证和目标 AWS 区域:
设置环境变量: AWS_ACCESS_KEY_ID
、 AWS_SECRET_ACCESS_KEY
、 AWS_REGION_NAME
。
对于 Vertex AI Model Garden 提供的 Claude 模型,请安装以下附加软件包:
pip 安装 google-cloud-aiplatform pip install anthropic[顶点]
接下来,为 Google Cloud 项目设置有效的身份验证,例如通过提供区域和项目 ID:
export CLOUD_ML_REGION="REGION" # 对于模型花园 callexport ANTHROPIC_VERTEX_PROJECT_ID="PROJECT_ID" # 对于模型花园 callexport VERTEXAI_LOCATION="REGION" # 对于 Aider/LiteLLM callexport VERTEXAI_PROJECT="PROJECT_ID" # 对于 Aider/LiteLLM 调用
默认情况下,这使用DEEPSEEK_API_KEY
环境变量。
默认情况下,这使用OPENROUTER_API_KEY
环境变量。
如果您有的话,我们的代码还可以选择使用 Semantic Scholar API 密钥 ( S2_API_KEY
) 来获得更高的吞吐量,但原则上没有它也应该可以工作。如果您在使用 Semantic Scholar 时遇到问题,您可以跳过论文生成的文献检索和引用阶段。
请务必提供用于运行的模型的密钥,例如:
导出 OPENAI_API_KEY="此处为您的密钥"export S2_API_KEY="此处为您的密钥"
本节提供了如何设置我们论文中使用的三个模板中的每一个的说明。在运行 AI 科学家实验之前,请确保您已完成您感兴趣的模板的设置步骤。
描述:该模板研究基于变压器的自回归下一个标记预测任务。
设置步骤:
准备数据:
python 数据/enwik8/prepare.py 蟒蛇数据/shakespeare_char/prepare.py 蟒蛇数据/text8/prepare.py
创建基线运行(取决于机器):
# 设置 NanoGPT 基线运行# 注意:您必须首先运行上面的准备脚本!cd templates/nanoGPT python实验.py --out_dir run_0 蟒蛇情节.py
描述:该模板研究提高低维数据集上扩散生成模型的性能。
设置步骤:
安装依赖项:
# 设置 2D Diffusiongit 克隆 https://github.com/gregversteeg/NPEET.gitcd NPEET pip install .pip 安装 scikit-learn
创建基线运行:
# 设置 2D 扩散基线 runcd templates/2d_diffusion python实验.py --out_dir run_0 蟒蛇情节.py
描述:该模板研究有关深度神经网络中的泛化和学习速度的问题。
设置步骤:
安装依赖项:
# 设置 Grokkingpip install einops
创建基线运行:
# 设置 Grokking 基线 runcd templates/grokking python实验.py --out_dir run_0 蟒蛇情节.py
注意:在运行这些实验之前,请确保完成上述设置步骤。
conda activate ai_scientist# 运行论文生成.python launch_scientist.py --model "gpt-4o-2024-05-13" --experiment nanoGPT_lite --num-ideas 2 python launch_scientist.py --模型“claude-3-5-sonnet-20241022”--实验nanoGPT_lite --num-ideas 2
如果您有多个 GPU,请使用--parallel
选项在多个 GPU 上并行化想法。
import openaifrom ai_scientist.perform_review import load_paper, Perform_reviewclient = openai.OpenAI()model = "gpt-4o-2024-05-13"# 从 PDF 文件加载论文(原始文本)paper_txt = load_paper("report.pdf")# 获取评论字典评论= Perform_review(paper_txt,模型,客户端,num_reflections = 5,num_fs_examples = 1,num_reviews_ensemble = 5,温度= 0.1, )# 检查评审结果review["Overall"] # 总分 (1-10)review["Decision"] # 'Accept' 或 'Reject'review["Weaknesses"] # 弱点列表(字符串)
要运行批量分析:
cd review_iclr_bench python iclr_analysis.py --num_reviews 500 --batch_size 100 --num_fs_examples 1 --num_reflections 5 --温度 0.1 --num_reviews_ensemble 5
如果您希望人工智能科学家探索某个研究领域,则可以直接创建自己的模板。一般来说,遵循现有模板的结构,其中包括:
experiment.py
这是核心内容所在的主脚本。它需要一个参数--out_dir
,该参数指定应在何处创建文件夹并保存运行中的相关信息。
plot.py
— 该脚本从run
文件夹中获取信息并创建绘图。代码应该清晰且易于编辑。
prompt.json
— 在此处放置有关您的模板的信息。
seed_ideas.json
— 在此放置示例想法。您也可以尝试在没有任何示例的情况下产生想法,然后选择最好的一两个放在此处。
latex/template.tex
— 我们建议使用我们的 LaTeX 文件夹,但请务必将预加载的引文替换为您希望更相关的引文。
让新模板发挥作用的关键是将基本文件名和输出 JSON 与现有格式相匹配;其他一切都可以自由更改。您还应该确保template.tex
文件已更新,以便为您的模板使用正确的引用样式/基本图。
我们欢迎社区以新模板的形式做出贡献。虽然这些不是由我们维护的,但我们很高兴向其他人突出显示您的模板。下面,我们列出了社区提供的模板及其拉取请求 (PR) 的链接:
传染病建模 ( seir
) - PR #137
使用 MobileNetV3 进行图像分类 ( mobilenetV3
) - PR #141
草图 RNN ( sketch_rnn
) - PR #143
此部分保留用于社区贡献。请提交拉取请求以将您的模板添加到列表中!请在 PR 描述中描述模板,并展示生成论文的示例。
我们提供了三个模板,它们大量使用其他存储库中的代码,如下所示:
NanoGPT 模板使用来自 NanoGPT 和此 PR 的代码。
2D 扩散模板使用来自tiny-diffusion、ema-pytorch 和Datasaur 的代码。
Grokking 模板使用来自 Sea-Snell/grokking 和 danielmamay/grokking 的代码。
我们要感谢开源模型和软件包的开发人员的贡献并提供他们的工作。
如果您在研究中使用《人工智能科学家》 ,请按如下方式引用:
@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} }
如果您对《人工智能科学家》有任何疑问,我们建议您首先阅读我们的论文。
为什么我在运行《人工智能科学家》时丢失文件?
确保您已完成主实验脚本之前的所有设置和准备步骤。
为什么没有生成 PDF 或评论?
人工智能科学家完成一个想法的成功率取决于模板、基础模型和想法的复杂性。我们建议参考我们的主要论文。 Claude Sonnet 3.5 的成功率最高。最好使用 GPT-4o 进行审核;所有其他模型都存在积极偏差或未能符合所需输出的问题。
每个想法的产生成本是多少?
Claude Sonnet 3.5 每篇论文通常低于 15 美元。我们推荐 DeepSeek Coder V2,这是一种更具成本效益的方法。 Aider 排行榜是寻找新模型的好地方。
如何更改与评论相关的基本会议格式?
更改每个模板中包含的基本template.tex
文件。
如何针对不同的学科领域运行《人工智能科学家》?
不同模板请参考说明。在当前的迭代中,这仅限于可以用代码表达的想法。然而,取消这一限制将代表着令人兴奋的未来工作! :)
如何添加对新基础模型的支持?
您可以修改ai_scientist/llm.py
以添加对新基础模型的支持。我们不建议在The AI Scientist中使用任何明显弱于 GPT-4 级别的模型。
为什么我需要自己运行基线?
它们显示为run_0
,并且应该在您执行AI Scientist 的每台计算机上运行,以便由于硬件差异而进行准确的运行时比较。
如果我在访问 Semantic Scholar API 时遇到问题怎么办?
我们使用 Semantic Scholar API 来检查想法的新颖性并收集论文写作的引用。如果您没有 API 密钥或 API 访问速度很慢,您也许可以跳过这些阶段。
我们提供了一个社区贡献的 Docker 镜像,它可以帮助您在experimental/Dockerfile
中进行容器化工作。
您可以像这样使用该图像:
# 端点 Scriptdocker run -e OPENAI_API_KEY=$OPENAI_API_KEY -v `pwd`/templates:/app/AI-Scientist/templates <AI_SCIENTIST_IMAGE> --型号 gpt-4o-2024-05-13 --实验2d_扩散 --num-ideas 2
# Interactivedocker run -it -e OPENAI_API_KEY=$OPENAI_API_KEY --入口点/bin/bash <AI_SCIENTIST_IMAGE>