SakanaAI/AI-Scientist
요약
SakanaAI가 개발한 'The AI Scientist'는 LLM을 활용하여 아이디어 생성부터 논문 작성까지 과학적 연구 과정을 자율적으로 수행하는 최초의 포괄적 시스템입니다. 이 시스템은 독립적인 연구 수행을 목표로 하며, 다양한 연구 주제에 대한 논문 생성 및 리뷰 실험 결과를 제공합니다.
핵심 포인트
- LLM 기반의 완전 자동 과학적 발견 시스템 구축
- 아이디어 브레인스토밍부터 논문 작성까지 전 과정 자동화
- 자율적 코드 실행에 따른 보안 및 컨테이너화 주의 필요
- 다양한 연구 템플릿을 통한 실험적 논문 생성 가능
📚 [논문 (Paper)] | 📝 [블로그 포스트 (Blog Post)] | 📂 [드라이브 폴더 (Drive Folder)]
인공지능 (AI)의 거대한 도전 과제 중 하나는 과학적 연구를 수행하고 새로운 지식을 발견할 수 있는 에이전트 (Agent)를 개발하는 것입니다. 최첨단 모델 (Frontier models)들이 아이디어 브레인스토밍이나 코드 작성 등 인간 과학자를 돕는 데 이미 사용되고 있지만, 여전히 광범위한 수동 감독이 필요하거나 특정 작업에 크게 제한되어 있습니다.
우리는 대규모 언어 모델 (LLMs)과 같은 파운데이션 모델 (Foundation Models)이 독립적으로 연구를 수행할 수 있도록 하는, 완전 자동 과학적 발견을 위한 최초의 포괄적 시스템인 The AI Scientist를 소개하게 되어 기쁩니다.
우리는 논문의 모든 실행 결과와 데이터를 여기에 제공하며, 여기서 각 베이스 모델 (Base model)을 각 템플릿 (Template)에 대해 약 50개의 아이디어로 실행했습니다. 시스템의 강점과 약점을 파악하기 위해 Claude 논문 중 일부를 읽어보실 것을 강력히 권장합니다. 다음은 The AI Scientist가 생성한 논문의 예시입니다 📝:
- DualScale Diffusion: 저차원 생성 모델 (Low-Dimensional Generative Models)을 위한 적응형 특징 균형 (Adaptive Feature Balancing)
- Multi-scale Grid Noise Adaptation: 저차원 데이터를 위한 확산 모델 (Diffusion Models) 강화
- GAN-Enhanced Diffusion: 샘플 품질 및 다양성 증대
- DualDiff: 이중 전문가 노이즈 제거 (Dual-expert Denoising)를 통한 저차원 확산 모델의 모드 포착 (Mode Capture) 강화
- StyleFusion: 문자 수준 언어 모델 (Character-Level Language Models)에서의 적응형 다중 스타일 생성
- Q-Learning을 통한 트랜스포머 (Transformers)의 적응형 학습률 (Adaptive Learning Rates)
- Grokking의 해제: 트랜스포머 모델에서의 가중치 초기화 전략 (Weight Initialization Strategies) 비교 연구
- 가속화된 Grokking: 트랜스포머 일반화 (Transformer Generalization)를 위한 계층별 학습률 (Layer-wise Learning Rates)
- 압축을 통한 Grokking: 최소 기술 길이 (Minimal Description Length)를 통한 갑작스러운 일반화의 규명
- 수학적 통찰력 가속화: 전략적 데이터 증강 (Data Augmentation)을 통한 Grokking 증대
참고:
주의! 이 코드베이스는 LLM이 작성한 코드를 실행합니다. 잠재적으로 위험한 패키지 사용, 웹 접속, 프로세스 생성 가능성 등 이러한 자율성과 관련된 다양한 위험과 과제가 존재합니다. 사용자의 재량에 따라 사용하십시오. 반드시 컨테이너화(Containerize)를 수행하고 웹 접속을 적절히 제한하시기 바랍니다.
- 서론 (Introduction)
- 요구 사항 (Requirements)
- 템플릿 설정 (Setting Up the Templates)
- AI Scientist 논문 생성 실험 실행 (Run AI Scientist Paper Generation Experiments)
- LLM 생성 논문 리뷰 받기 (Getting an LLM-Generated Paper Review)
- 나만의 템플릿 만들기 (Making Your Own Template)
- 템플릿 리소스 (Template Resources)
- AI Scientist 인용하기 (Citing The AI Scientist)
- 자주 묻는 질문 (Frequently Asked Questions)
- 컨테이너화 (Containerization)
저희는 논문에서 사용된 다음 도메인을 다루는 세 가지 템플릿을 제공합니다: NanoGPT, 2D Diffusion, 그리고 Grokking. 이 템플릿들을 통해 The AI Scientist는 해당 분야에서 아이디어를 생성하고 실험을 수행할 수 있습니다. 커뮤니티로부터 새로운 템플릿 기여를 환영하지만, 저희가 직접 유지 관리하지는 않는다는 점에 유의해 주세요. 제공된 세 가지 외의 모든 템플릿은 커뮤니티 기여분입니다.
이 코드는 CUDA와 PyTorch를 사용하는 NVIDIA GPU 환경의 Linux에서 실행되도록 설계되었습니다. PyTorch 가이드라인을 따르면 다른 GPU 아키텍처에 대한 지원도 가능할 수 있습니다. 현재 템플릿들은 CPU 전용 머신에서는 실행 불가능할 정도로 많은 시간이 소요될 가능성이 높습니다. 다른 운영 체제에서 실행하려면 상당한 조정이 필요할 수 있습니다.
conda create -n ai_scientist python=3.11
conda activate ai_scientist
# pdflatex 설치
...
참고: texlive-full을 설치하는 데는 오랜 시간이 걸릴 수 있습니다. 설치 중에 Enter 키를 계속 누르고 있어야 할 수도 있습니다.
저희는 오픈 웨이트 (Open-weight) 모델과 API 전용 모델을 포함하여 매우 다양한 모델을 지원합니다. 일반적으로 기존 GPT-4의 능력을 상회하는 프런티어 모델 (Frontier models)만을 사용할 것을 권장합니다. 지원되는 모델의 전체 목록을 보려면 여기를 참조하십시오.
기본적으로 이 설정은 OPENAI_API_KEY 환경 변수를 사용합니다.
기본적으로 이 설정은 ANTHROPIC_API_KEY 환경 변수를 사용합니다.
Amazon Bedrock에서 제공하는 Claude 모델을 사용하는 경우, 다음 추가 패키지를 설치해 주세요:
pip install anthropic[bedrock]
그 다음, 유효한 AWS 자격 증명(Credentials) 세트와 대상 AWS 리전(Region)을 지정합니다:
환경 변수 AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION_NAME을 설정하세요.
Vertex AI Model Garden에서 제공하는 Claude 모델을 사용하는 경우, 다음 추가 패키지를 설치해 주세요:
pip install google-cloud-aiplatform
pip install anthropic[vertex]
그 다음, Google Cloud 프로젝트에 대한 유효한 인증을 설정합니다. 예를 들어 리전(region)과 프로젝트 ID(project ID)를 제공하는 방식은 다음과 같습니다:
export CLOUD_ML_REGION="REGION" # Model Garden 호출용
export ANTHROPIC_VERTEX_PROJECT_ID="PROJECT_ID" # Model Garden 호출용
export VERTEXAI_LOCATION="REGION" # Aider/LiteLLM 호출용
...
기본적으로, 이는 DEEPSEEK_API_KEY 환경 변수를 사용합니다.
기본적으로, 이는 OPENROUTER_API_KEY 환경 변수를 사용합니다.
우리는 google-generativeai Python 라이브러리를 통해 Google Gemini 모델(예: "gemini-1.5-flash", "gemini-1.5-pro")을 지원합니다. 기본적으로 다음 환경 변수를 사용합니다:
export GEMINI_API_KEY="YOUR GEMINI API KEY"
우리의 코드는 더 높은 처리량(throughput)을 위해 사용 가능한 경우 선택적으로 Semantic Scholar API 키(S2_API_KEY)를 사용할 수 있지만, 원칙적으로는 키 없이도 작동해야 합니다. Semantic Scholar 사용에 문제가 있는 경우, 논문 생성 과정 중 문헌 조사(literature search) 및 인용(citation) 단계를 건너뛸 수 있습니다.
실행에 사용하는 모델에 대한 키를 반드시 제공해야 합니다. 예:
export OPENAI_API_KEY="YOUR KEY HERE"
export S2_API_KEY="YOUR KEY HERE"
Semantic Scholar API 키가 없는 경우 OpenAlex API를 대안으로 사용할 수 있습니다. OpenAlex는 API 키를 요구하지 않습니다.
pip install pyalex
export OPENALEX_MAIL_ADDRESS="YOUR EMAIL ADDRESS"
그리고 AI Scientist 코드를 실행할 때 --engine openalex를 지정하세요.
Semantic Scholar API 키가 없는 사용자에게 이 방식은 실험적(experimental)이라는 점에 유의하십시오.
이 섹션에서는 본 논문에서 사용된 세 가지 템플릿 각각을 설정하기 위한 지침을 제공합니다. The AI Scientist 실험을 실행하기 전에, 관심 있는 템플릿에 대한 설정 단계를 완료했는지 확인하십시오.
설명 (Description): 이 템플릿은 트랜스포머 기반의 자기회귀적 다음 토큰 예측 (autoregressive next-token prediction) 작업을 조사합니다.
설정 단계 (Setup Steps):
데이터 준비 (Prepare the data):
python data/enwik8/prepare.py
python data/shakespeare_char/prepare.py
python data/text8/prepare.py
베이스라인 실행 생성 (Create baseline runs) (머신 의존적):
# NanoGPT 베이스라인 실행 설정
# 참고: 반드시 위에서 언급한 준비 스크립트를 먼저 실행해야 합니다!
cd templates/nanoGPT
python experiment.py --out_dir run_0
python plot.py
설명 (Description): 이 템플릿은 저차원 데이터셋에서 확산 생성 모델 (diffusion generative models)의 성능을 향상시키는 방법을 연구합니다.
설정 단계 (Setup Steps):
의존성 설치 (Install dependencies):
# 2D Diffusion 설정
git clone https://github.com/gregversteeg/NPEET.git
cd NPEET
pip install .
pip install scikit-learn
베이스라인 실행 생성 (Create baseline runs):
# 2D Diffusion 베이스라인 실행 설정
cd templates/2d_diffusion
python experiment.py --out_dir run_0
python plot.py
설명 (Description): 이 템플릿은 심층 신경망 (deep neural networks)에서의 일반화 (generalization) 및 학습 속도에 관한 질문을 조사합니다.
설정 단계 (Setup Steps):
의존성 설치 (Install dependencies):
# Grokking 설정
pip install einops
베이스라인 실행 생성 (Create baseline runs):
# Grokking 베이스라인 실행 설정
cd templates/grokking
python experiment.py --out_dir run_0
python plot.py
참고 (Note): 이 실험들을 실행하기 전에 위의 설정 단계가 완료되었는지 확인하십시오.
conda activate ai_scientist
# 논문 생성을 실행합니다.
python launch_scientist.py --model "gpt-4o-2024-05-13" --experiment nanoGPT_lite --num-ideas 2
...
GPU가 여러 개 있는 경우, --parallel 옵션을 사용하여 여러 GPU에 걸쳐 아이디어를 병렬화하십시오.
import openai
from ai_scientist.perform_review import load_paper, perform_review
client = openai.OpenAI()
...
배치 분석 (batch analysis)을 실행하려면:
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
The AI Scientist가 탐구하기를 원하는 연구 분야가 있다면, 자신만의 템플릿(template)을 만드는 방법은 간단합니다. 일반적으로 다음 요소들로 구성된 기존 템플릿의 구조를 따르면 됩니다:
experiment.py
— 핵심 콘텐츠가 담긴 메인 스크립트입니다. --out_dir 인자를 받으며, 이 인자는 실행 결과와 관련된 정보를 저장할 폴더를 어디에 생성할지 지정합니다.
plot.py
— run 폴더로부터 정보를 가져와 그래프(plot)를 생성하는 스크립트입니다. 코드는 명확하고 편집하기 쉬워야 합니다.
prompt.json
— 여기에 템플릿에 관한 정보를 넣습니다.
seed_ideas.json
— 여기에 아이디어 예시를 넣습니다. 예시 없이 아이디어를 생성해 본 뒤, 가장 좋은 한두 개를 골라 여기에 넣는 방법도 시도해 볼 수 있습니다.
latex/template.tex
— 저희의 LaTeX 폴더를 사용하는 것을 권장하지만, 미리 로드된 인용(citation)들을 더 관련성이 높다고 판단되는 것들로 반드시 교체해야 합니다.
새로운 템플릿이 작동하게 만드는 핵심은 기본 파일 이름과 출력되는 JSON을 기존 형식과 일치시키는 것입니다. 그 외의 모든 것은 자유롭게 변경할 수 있습니다.
또한 template.tex 파일이 귀하의 템플릿에 맞는 올바른 인용 스타일 및 기본 그래프(base plots)를 사용하도록 업데이트되었는지 확인해야 합니다.
저희는 새로운 템플릿 형태의 커뮤니티 기여를 환영합니다. 이러한 템플릿들을 저희가 직접 유지 관리하지는 않지만, 귀하의 템플릿을 다른 사람들에게 소개하게 되어 기쁘게 생각합니다. 아래에 커뮤니티에서 기여한 템플릿과 해당 풀 리퀘스트(PR) 링크를 나열합니다:
- 감염병 모델링 (Infectious Disease Modeling,
seir) - PR #137 - MobileNetV3를 이용한 이미지 분류 (Image Classification with MobileNetV3,
mobilenetV3) - PR #141 - Sketch RNN (
sketch_rnn) - PR #143 - 양자 화학에서의 AI (AI in Quantum Chemistry,
MACE) - PR #157 - 지진 예측 (Earthquake Prediction,
earthquake-prediction) - PR #167 - 텐서 복사장 (Tensorial Radiance Fields,
tensorf) - PR #175 - 대규모 언어 모델 스티어링 / 프로브 (Large Language Model Steering / Probes,
probes) - PR #215
이 섹션은 커뮤니티 기여를 위해 마련되었습니다. 목록에 귀하의 템플릿을 추가하려면 풀 리퀘스트 (Pull Request, PR)를 제출해 주세요! PR 설명에 템플릿에 대해 기술하고, 생성된 논문의 예시도 함께 보여주시기 바랍니다.
우리는 아래에 출처를 밝힌 다른 저장소의 코드를 많이 활용한 세 가지 템플릿을 제공합니다:
**NanoGPT 템플릿 (NanoGPT Template)**은 NanoGPT와 이 PR의 코드를 사용합니다.
**2D 확산 템플릿 (2D Diffusion Template)**은 tiny-diffusion, ema-pytorch, 그리고 Datasaur의 코드를 사용합니다.
**Grokking 템플릿 (Grokking Template)**은 Sea-Snell/grokking과 danielmamay/grokking의 코드를 사용합니다.
오픈 소스 모델과 패키지 개발자분들의 기여와 그들의 작업물을 사용할 수 있게 해주신 점에 대해 감사의 말씀을 전합니다.
연구에 The AI Scientist를 사용하신다면, 다음과 같이 인용해 주세요:
@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},
...
The AI Scientist에 대해 궁금한 점이 있다면 저희 논문을 먼저 읽어보시는 것을 권장합니다.
The AI Scientist를 실행할 때 왜 파일이 누락되나요?
메인 실험 스크립트를 실행하기 전에 모든 설정 및 준비 단계를 완료했는지 확인하십시오.
왜 PDF나 리뷰가 생성되지 않나요?
The AI Scientist는 템플릿, 기반 파운데이션 모델 (Foundation Model), 그리고 아이디어의 복잡성에 따라 달라지는 성공률로 아이디어를 마무리합니다. 저희의 메인 논문을 참조하시길 권장합니다. 가장 높은 성공률은 Claude Sonnet 3.5에서 관찰되었습니다. 리뷰는 GPT-4o를 사용할 때 가장 잘 수행됩니다. 다른 모든 모델은 긍정 편향 (Positivity Bias) 문제나 요구되는 출력 형식을 준수하지 못하는 문제가 있습니다.
생성된 각 아이디어의 비용은 얼마인가요?
일반적으로 Claude Sonnet 3.5를 사용할 경우 논문당 15달러 미만입니다. 훨씬 더 비용 효율적인 접근 방식을 원하신다면 DeepSeek Coder V2를 추천합니다. 새로운 모델을 찾아보기 좋은 곳은 Aider 리더보드 (Leaderboard)입니다.
작성물과 관련된 기본 컨퍼런스 형식을 어떻게 변경하나요?
기본 template.tex를 변경합니다.
각 템플릿 내에 포함된 파일들입니다.
다양한 주제 분야에 대해 The AI Scientist를 실행하려면 어떻게 하나요?
각기 다른 템플릿에 대한 지침을 참조하십시오. 현재 버전에서는 코드로 표현할 수 있는 아이디어로 제한되어 있습니다. 하지만 이 제한을 해제하는 것은 흥미로운 향후 연구 과제가 될 것입니다! :)
새로운 파운데이션 모델 (Foundation Model)에 대한 지원을 추가하려면 어떻게 하나요?
새로운 파운데이션 모델 (Foundation Model)에 대한 지원을 추가하려면 ai_scientist/llm.py를 수정할 수 있습니다. The AI Scientist를 위해 GPT-4 수준보다 현저히 성능이 낮은 모델을 사용하는 것은 권장하지 않습니다.
왜 베이스라인 실행 (Baseline runs)을 직접 수행해야 하나요?
이것들은 run_0와 같이 나타나며, 하드웨어 차이로 인한 정확한 실행 시간 비교를 위해 The AI Scientist를 실행하는 각 머신마다 실행되어야 합니다.
Semantic Scholar API에 접근하는 데 문제가 발생하면 어떻게 하나요?
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Jupyter Notebook (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기