[紙] | [ブログ投稿] | [ドライブフォルダー]
人工知能の大きな課題の 1 つは、科学研究を実施し、新しい知識を発見できるエージェントを開発することです。フロンティア モデルは、アイデアのブレーンストーミングやコードの作成など、人間の科学者を支援するためにすでに使用されていますが、依然として広範な手動による監督が必要であるか、特定のタスクに大きく制約されています。
大規模言語モデル (LLM) などの基盤モデルが独立して研究を実行できるようにする、完全に自動化された科学的発見のための初の包括的なシステムであるThe AI Scientistを紹介できることを嬉しく思います。
ここでは、論文のすべての実行とデータを提供します。ここでは、約 50 のアイデアに対して各テンプレートで各基本モデルを実行します。システムの長所と短所を理解するために、クロードの論文をいくつか読んでみることを強くお勧めします。 The AI Scientistによって生成された論文の例をいくつか示します。
DualScale の普及: 低次元生成モデルの適応型特徴バランス調整
マルチスケールグリッドノイズ適応: 低次元データの拡散モデルの強化
GAN 拡張拡散: サンプルの品質と多様性を向上
DualDiff: デュアルエキスパートノイズ除去による低次元拡散モデルのモードキャプチャの強化
StyleFusion: 文字レベル言語モデルでの適応型マルチスタイル生成
Q ラーニングによるトランスフォーマーの適応学習率
グロッキングのロック解除: 変圧器モデルにおける重み初期化戦略の比較研究
Grokking Accelerated: トランスフォーマー汎化のための層ごとの学習率
圧縮による理解: 最小限の記述長による突然の一般化を明らかにする
数学的洞察の加速: 戦略的なデータ拡張による理解の促進
注記:
注意!このコードベースは、LLM で記述されたコードを実行します。この自律性には、潜在的に危険なパッケージの使用、Web アクセス、プロセスの生成の可能性など、さまざまなリスクと課題が存在します。ご自身の判断でご使用ください。コンテナ化して Web アクセスを適切に制限してください。
導入
要件
インストール
サポートされているモデルと API キー
テンプレートのセットアップ
NanoGPT テンプレート
2D 拡散テンプレート
グロッキング テンプレート
AI サイエンティストの紙生成実験を実行する
LLM によって生成された論文レビューを取得する
独自のテンプレートを作成する
コミュニティ提供のテンプレート
テンプレートのリソース
AI 科学者の引用
よくある質問
コンテナ化
論文で使用された 3 つのテンプレートが提供されており、 NanoGPT 、 2D Diffusion 、およびGrokkingのドメインをカバーしています。これらのテンプレートを使用すると、AI 科学者はこれらの分野でアイデアを生成し、実験を行うことができます。コミュニティからの新しいテンプレートの寄稿を受け付けていますが、それらは私たちによって管理されていないことに注意してください。提供されている 3 つ以外のテンプレートはすべて、コミュニティからの貢献です。
このコードは、CUDA と PyTorch を使用して、NVIDIA GPU を搭載した Linux 上で実行するように設計されています。 PyTorch ガイドラインに従うことで、他の GPU アーキテクチャのサポートが可能になる場合があります。現在のテンプレートは、CPU のみのマシンでは実行不可能なほどの時間がかかる可能性があります。他のオペレーティング システムで実行すると、大幅な調整が必要になる場合があります。
conda create -n ai_scientist python=3.11 conda activate ai_scientist# pdflatexsudo apt-get install texlive-full をインストール# PyPI 要件をインストールpip install -r要件.txt
注: texlive-full
インストールには長い時間がかかる場合があります。インストール中に Enter キーを押し続ける必要がある場合があります。
オープンウェイトモデルやAPI専用モデルなど、幅広いモデルをサポートしています。一般に、オリジナルの GPT-4 の能力を超えるフロンティア モデルのみを使用することをお勧めします。サポートされているモデルの完全なリストについては、ここを参照してください。
デフォルトでは、 OPENAI_API_KEY
環境変数が使用されます。
デフォルトでは、 ANTHROPIC_API_KEY
環境変数が使用されます。
Amazon Bedrock によって提供される Claude モデルの場合は、次の追加パッケージをインストールしてください。
pip インストール anthropic[bedrock]
次に、有効な AWS 認証情報のセットとターゲットの AWS リージョンを指定します。
環境変数を設定します: AWS_ACCESS_KEY_ID
、 AWS_SECRET_ACCESS_KEY
、 AWS_REGION_NAME
。
Vertex AI Model Garden が提供する Claude モデルの場合は、次の追加パッケージをインストールしてください。
pip インストール google-cloud-aiplatform pip インストール anthropic[頂点]
次に、リージョンとプロジェクト ID を指定するなどして、Google Cloud プロジェクトの有効な認証を設定します。
import CLOUD_ML_REGION="REGION" # Model Garden コールの場合export ANTHROPIC_VERTEX_PROJECT_ID="PROJECT_ID" # Model Garden コールの場合export VERTEXAI_LOCATION="REGION" # Aider/LiteLLM コールの場合export VERTEXAI_PROJECT="PROJECT_ID" # Aider/LiteLLM コールの場合
デフォルトでは、 DEEPSEEK_API_KEY
環境変数が使用されます。
デフォルトでは、 OPENROUTER_API_KEY
環境変数が使用されます。
私たちのコードは、必要に応じて Semantic Scholar API キー ( S2_API_KEY
) を使用して、スループットを向上させることもできます (ある場合)。ただし、原則として、それなしでも動作します。 Semantic Scholar で問題が発生した場合は、論文作成の文献検索と引用の段階をスキップできます。
実行に使用するモデルのキーを必ず指定してください。例:
import OPENAI_API_KEY="ここにあなたのキー"export S2_API_KEY="ここにあなたのキー"
このセクションでは、論文で使用されている 3 つのテンプレートのそれぞれを設定する手順を説明します。 The AI Scientist の実験を実行する前に、興味のあるテンプレートのセットアップ手順が完了していることを確認してください。
説明:このテンプレートは、トランスフォーマーベースの自己回帰ネクストトークン予測タスクを調査します。
セットアップ手順:
データを準備します。
Python データ/enwik8/prepare.py Python データ/shakespeare_char/prepare.py Pythonデータ/text8/prepare.py
ベースライン実行を作成します (マシンに依存します)。
# NanoGPT ベースラインの実行をセットアップします# 注: 最初に上記の準備スクリプトを実行する必要があります!cd templates/nanoGPT Python Experiment.py --out_dir run_0 Pythonプロット.py
説明:このテンプレートは、低次元データセットに対する拡散生成モデルのパフォーマンスの向上を研究します。
セットアップ手順:
依存関係をインストールします。
# 2D Diffusiongit クローンをセットアップする https://github.com/gregversteeg/NPEET.gitcd NPEET pip インストール .pip インストール scikit-learn
ベースライン実行を作成します。
# 2D 拡散ベースラインをセットアップします runcd templates/2d_diffusion Python Experiment.py --out_dir run_0 Pythonプロット.py
説明:このテンプレートは、ディープ ニューラル ネットワークの一般化と学習速度に関する質問を調査します。
セットアップ手順:
依存関係をインストールします。
# Grokkingpip のセットアップ einops のインストール
ベースライン実行を作成します。
# Grokking ベースラインのセットアップ runcd templates/grokking Python Experiment.py --out_dir run_0 Pythonプロット.py
注:これらの実験を実行する前に、上記のセットアップ手順が完了していることを確認してください。
conda activate ai_scientist# 論文を実行します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-20241022" --experiment 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")# Getレビュー辞書レビュー = 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"] # 'Accept' または 'Reject'review["Weaknesses"] # 弱点のリスト (文字列)
バッチ分析を実行するには:
CD レビュー_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
The AI Scientistに調査してもらいたい研究分野がある場合は、独自のテンプレートを簡単に作成できます。一般に、次のもので構成される既存のテンプレートの構造に従います。
experiment.py
— これは、コアコンテンツが含まれるメインスクリプトです。引数--out_dir
受け取り、フォルダーを作成し、実行からの関連情報を保存する場所を指定します。
plot.py
— このスクリプトはrun
フォルダーから情報を取得し、プロットを作成します。コードは明確で編集しやすいものである必要があります。
prompt.json
— ここにテンプレートに関する情報を入力します。
seed_ideas.json
— ここにアイデアの例を配置します。例を使わずにアイデアを生み出して、ここに入れるのに最適なアイデアを 1 つか 2 つ選んでみるのもよいでしょう。
latex/template.tex
— LaTeX フォルダーを使用することをお勧めしますが、事前に読み込まれている引用を、より関連性が高いと思われる引用に必ず置き換えてください。
新しいテンプレートを機能させるための鍵は、ベース ファイル名と出力 JSON を既存の形式に一致させることです。それ以外はすべて自由に変更できます。また、テンプレートの正しい引用スタイル/ベース プロットを使用するようにtemplate.tex
ファイルが更新されていることを確認する必要があります。
新しいテンプレートの形でのコミュニティへの貢献を歓迎します。これらは私たちによって管理されませんが、あなたのテンプレートを他の人に紹介できることを嬉しく思います。以下に、コミュニティが提供したテンプレートとそのプル リクエスト (PR) へのリンクを示します。
感染症モデリング ( seir
) - PR #137
MobileNetV3 による画像分類 ( mobilenetV3
) - PR #141
スケッチ RNN ( sketch_rnn
) - PR #143
このセクションはコミュニティへの貢献のために予約されています。プル リクエストを送信して、テンプレートをリストに追加してください。 PR 説明文にテンプレートを記載し、作成した論文の例も示してください。
以下にクレジットされているように、他のリポジトリのコードを多用する 3 つのテンプレートが提供されています。
NanoGPT テンプレートは、NanoGPT とこの PR のコードを使用します。
2D Diffusion テンプレートはtiny-diffusion、ema-pytorch、Datasaur のコードを使用します。
Grokking テンプレートは、 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}, journal={arXiv preprint arXiv:2408.06292}, year={2024} }
The AI Scientist に関する質問がある場合は、まず論文を読むことをお勧めします。
The AI Scientist の実行時にファイルが見つからないのはなぜですか?
メインの実験スクリプトの前に、セットアップと準備の手順がすべて完了していることを確認してください。
PDF またはレビューが生成されないのはなぜですか?
AI 科学者がアイデアを完成させる成功率は、テンプレート、基本基盤モデル、アイデアの複雑さに依存します。主要論文を参照することをお勧めします。クロード ソネット 3.5 で最も高い成功率が観察されます。レビューは GPT-4o を使用して行うのが最適です。他のすべてのモデルには、肯定的なバイアスや、必要な出力に準拠していないという問題があります。
生み出された各アイデアのコストはいくらですか?
通常、Claude Sonnet 3.5 の場合、論文あたり 15 ドル未満です。よりコスト効率の高いアプローチとして、DeepSeek Coder V2 をお勧めします。新しいモデルを探すのに適した場所は、Aider リーダーボードです。
レポートに関連付けられた基本的なカンファレンスの形式を変更するにはどうすればよいですか?
各テンプレートに含まれるベースのtemplate.tex
ファイルを変更します。
さまざまな主題分野に対して The AI Scientist を実行するにはどうすればよいですか?
さまざまなテンプレートの手順を参照してください。この現在のイテレーションでは、これはコードで表現できるアイデアに限定されます。ただし、この制限が解除されると、将来的にはエキサイティングな取り組みが期待できます。 :)
新しい基礎モデルのサポートを追加するにはどうすればよいですか?
ai_scientist/llm.py
変更して、新しい基礎モデルのサポートを追加することができます。 The AI Scientistでは、GPT-4 レベルよりも大幅に弱いモデルを使用することはお勧めしません。
ベースライン実行を自分で実行する必要があるのはなぜですか?
これらはrun_0
として表示され、ハードウェアの違いによる正確な実行時間を比較するために、 The AI Scientist を実行するマシンごとに実行する必要があります。
Semantic Scholar API へのアクセスに問題がある場合はどうすればよいですか?
私たちは Semantic Scholar API を使用してアイデアの新規性をチェックし、論文執筆の引用を収集します。 API キーがない場合、または API へのアクセスが遅い場合は、これらのフェーズをスキップできる場合があります。
コンテナ化の取り組みに役立つコミュニティ提供の Docker イメージがexperimental/Dockerfile
に含まれています。
この画像は次のように使用できます。
# エンドポイント Scriptdocker の実行 -e OPENAI_API_KEY=$OPENAI_API_KEY -v `pwd`/templates:/app/AI-Scientist/templates <AI_SCIENTIST_IMAGE> --model gpt-4o-2024-05-13 --実験 2d_diffusion --num-ideas 2
# Interactivedocker run -it -e OPENAI_API_KEY=$OPENAI_API_KEY --entrypoint /bin/bash <AI_SCIENTIST_IMAGE>