Sakana AIの「AI Scientist-v2」を動かしてみた
はじめに
はじめまして。株式会社neoAIの研究開発組織 (neoAI Research) の長谷川駿一です。
2025年5月末、Sakana AIは「ダーウィン・ゲーテルマシン(DGM)」と呼ばれる、AIが自らのコードを自己改善する新しい枠組みを発表しました。
この発表に先立ち、同社は2025年の3月に、AIが研究プロセス全体を自律的に遂行するシステム「AI Scientist-v2」が生成した科学論文が、ICLR 2025のワークショップで査読を通過したと公表しました。これは、研究アイデアの立案から実験設計・実行、データ分析、論文執筆に至るまで、すべてのステップをAIが担当するという意欲的な取り組みです。
Sakana AIは2024年8月に初めて科学研究を自動化するAIシステム「AI Scientist」 を発表しており、そこから約半年後の2025年3月にv2を発表しました。先行バージョン(v1)では人間が作成したコードテンプレートに依存していた制約がありましたが、v2ではこれを排除し、より広範な機械学習領域に対応できるようになったとのことです。
一時話題になったAI Scientist-v2ですが、オープンソースとして公開されているにもかかわらず、実はまだ触ったことがありませんでした。DGMのような仕組みが登場した今、先行で発表されたAI Scientist-v2に対してずっと興味があったので、今回は実際に動かしてみました。
結論から言うと、Dynamic Tanh (DyT)の論文のabstractを読み込ませて、研究アイデアを生成〜論文執筆させた結果、TempGateという新たな手法を提案、論文を執筆してくれました。
具体的な実装については本記事の後半で紹介しているので、ぜひ読んでくれると幸いです。
AI Scientist-v2の概要
AI Scientist-v2のワークフローは以下の通りです。順を追って見ていきます。
Idea Generation
最初のIdea Generationでは、ユーザが与えたワークショップのテーマに基づいて、システムが研究のコンセプト、仮説、実験計画などを考案します。
具体的には、以下のようなプロセスが行われます。
-
創造的で新しい研究アイデアの提案
経験豊富なAI研究者として、影響力のある研究アイデアを考案します。
ここで注目すべきなのは、0からアイデアを生成するのではなく、ユーザーが指定した研究分野について先行研究を調べた上でアイデアを考えているという点です。だからこそ、提案される内容にも説得力があります。
-
関連研究の調査と新規性チェック
Semantic Scholarなどのツールを使い、提案したアイデアが既存の研究とどう異なるかを評価し、関連研究を特定します。
Semantic Scholarとは、主に学術論文を効率的に検索・探索できる無料の学術検索エンジンサービスです。後の実装でも説明しますが、AI Scientist-v2ではSemantic ScholarのAPIを使用して、文献の検索を行う実装が用意されています。
-
具体的な実験計画の設計
アイデアを検証するための実験計画(使用データセット、モデル設計、評価方法など)を段階的に提案します。
-
リスクと制限事項の明確化
研究の潜在的なリスクや制約も同時に検討し、説明します。
-
構造化された形式での出力
アイデアはJSON形式で、タイトル、仮説、関連研究、実験内容、リスクなどを含めて整理されます。
-
反省と改善
生成したアイデアは新規性・実現可能性などの観点から自己評価され、必要に応じて文献情報などを活用し改善されます。
Tree-Based Experimentation
システムが生成した研究アイデアに基づき、実験を設計、実行、分析するという研究ワークフローの中核を担う部分です。
Experiment Progress Managerと呼ばれる専用のエージェントによって管理され、以下の4つの明確に定義されたステージで構成されています。
ステージ1:Preliminary Investigation
目的: 生成された研究アイデアが実現可能であるか、また基本的なアイデアが機能するかを、迅速に確認する。
内容: アイデアに基づいて最小限の動作プロトタイプを構築する。(ex.モデルの基本構造の実装、データセット読み込み、学習の基本的なループが機能することを確認)
次のステージへの移行: このステージで実行された実験ノードの中から、Experiment Manager が専用のLLM評価器を使って最もパフォーマンスが高く、かつ問題なく動作したノードを選び出す。この選ばれたノードが、次のステージの出発点(シード)となる。
ステージ2:Hyperparameter Tuning
目的: ステージ1で確立した基本的な実装を改良し、実験のロバストなベースラインを構築するために、重要なハイパーパラメータを最適化する。
内容: このステージでは、Hyperparameter nodes という特殊なノードタイプが活用される。LLMが様々なハイパーパラメータの組み合わせ(学習率、バッチサイズなど)を提案し、それぞれで実験を実行する。システムは以前試したハイパーパラメータを記録して、重複しないように実行している。
次のステージへの移行: チューニングの結果、Experiment Manager が最も良い性能を示したノードを選択し、それをステージ3のシードとする。
ステージ3:Research Agenda Execution
目的: チューニングされたベースラインを使って、研究アイデアの中核となる仮説や手法を系統的に実装し、実験を行う。
内容: LLMは、ベースラインノードを基に、研究アジェンダに沿った実験計画とコードを生成する。このステージでも、問題があればデバッグを試み、うまく行った実験はさらに洗練されるプロセスが繰り返される。
次のステージへの移行: このステージで得られた主要な実験結果が、次のアブレーション研究の基礎となる。ステージ3の完了後も最良ノードが選択され、ステージ4のシードとなる。
ステージ4:Ablation Studies
目的: ステージ3で得られた主要な実験結果を裏付けるために、実験の様々な構成要素(手法の各部分や仮定など)の重要性を系統的に評価する。
内容: Ablation nodes という特殊なノードタイプが使われる。例えば、「提案手法のこの部分を取り除いたら性能はどうなるか?」「この設定は本当に必要か?」といった疑問を検証する実験を行う。これにより、得られた結果が偶然によるものではなく、特定の要素によってもたらされたものであることを確認しようとする。また、Replication nodes を使って同じ実験を複数回繰り返し、結果の統計的測定(平均や標準偏差など)を行う。最後に、これらの繰り返し実験の結果をAggregation nodes が集計し、最終的な可視化結果を生成する。
フェーズの完了: ステージ4のアブレーション研究が完了すると、Tree-Based Experimentation フェーズ全体が終了し、得られた実験結果と可視化が論文執筆フェーズへと引き継がれる。
Paper Write-Up
実験実行フェーズで得られた結果を基に、科学論文として形にまとめるためのプロセスです。
AI Scientist-v1では、論文執筆が逐次的な手法に依存していましたが、v2ではこの部分が改良され、単一パスでの初期生成と、それに続く独立したReflection(検討・修正)ステージによって合理化されています。このReflectionステージでは、reasoning models(例えばOpenAIのo1)が活用されます。また、Vision-Language Model (VLM) が図やキャプションのレビューに統合されている点が特徴です。
1. 初期原稿生成
目的: AI Scientist-v2が、これまでの実験で得られた結果、分析、図などを基に、科学論文のドラフトを自動的に生成する。
内容: この段階では、システムは「Writeup Prompt」というプロンプトを使用して、論文のLaTeXコードを生成する。このプロンプトには、以下の情報が入力として与えられる。
- 元の研究アイデアのテキスト
- 実験結果の要約(JSON形式)。数値結果や図のファイルパスも含む
- 最終的な図を生成するために使用されたPythonスクリプト
- 利用可能な図のファイル名のリスト
- VLMによって生成された図の説明
- 前回の試行で生成されたLaTeXドラフト
システムは、ターゲットとするワークショップ(例えばICBINB)のテーマ(ネガティブな結果を強調するなど)、ページ制限、そして論文の標準的な構成に関する詳細な指示に従って、LaTeXコードを生成する。図の配置、キャプションの付け方、参考文献の引用などもこのプロンプトに含まれる指示に従う。
2.Reflection Stage (検討・修正段階)
目的: 生成された初期ドラフトを、科学的な厳密さ、明確さ、形式などの観点から評価し、繰り返し修正を行う。
内容: この段階は「Reflectionステージ」と呼ばれる。主に「Writeup Reflection Prompt」と「VLM Reflection Prompt」というプロンプトが使用される。
Writeup Reflection Prompt: システムは生成されたLaTeXコードに対して、様々な問題点をチェックし、修正を試みる。チェックされる項目には、LaTeXの構文エラーやスタイルの違反(外部ツールによるチェック結果も利用)、記述の明確さや科学的な妥当性、実験結果の要約からの情報の漏れや捏造の有無、本文と付録間の重複図の削除などが含まれる。これらの問題点を踏まえ、システムは修正されたLaTeXコード全体を再度生成する。
VLM Reflection Prompt: 特に図に関連する修正に焦点を当てたプロンプト。VLMが実験段階と論文執筆段階の両方で図のレビューを行うが、このプロンプトは論文執筆のReflectionステージでVLMからのフィードバックを基に図の管理と改善を行う。VLMは、図が実験結果を効果的に伝えているか、キャプションと内容が一致しているかなどを評価する。このプロンプトでは、VLMのレビュー結果を基に、論文の価値を高めない図を付録へ移動させる、情報量が少ない図を削除する、関連する複数の図を統合して1つの図にする、図の変更に合わせて本文中の記述を更新・強化する、といった指示が与えられる。ページ制限を考慮した図の数の設定も担っている。
論文から以上のことが読み取れましたが、まだまだわからないことがたくさんですね..
より詳しい内容は以下の論文を読んでみてください。
ということで、次の章で実際に動かしたりコードを読んだりして、理解を深めていきます。
動かしてみた
AI Scientist-v2のコードは以下のGitHubで公開されています。
READMEを参考に、H100 × 2 の計算機環境で動かしてみました。
今回の実行で使用したモデルは以下の通りです。
- gpt-4o-2024-11-20
- o3-mini-2025-01-31
環境構築
公式のREADMEではcondaで環境を構築していたので、conda環境がなかったのでMinicondaをインストールしました。
Minicondaのインストール方法は以下を参照してください。
# Create a new conda environment
conda create -n ai_scientist python=3.11
conda activate ai_scientist
# Install PyTorch with CUDA support (adjust pytorch-cuda version for your setup)
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia
# Install PDF and LaTeX tools
conda install anaconda::poppler
conda install conda-forge::chktex
# Install Python package requirements
pip install -r requirements.txt
ここで、自分の環境だけかもしれませんが、latex周りで追加でインストールする必要がありました。
追加で実行したコマンドは以下の通りです。
# tex関連のパッケージをシステムにインストール
sudo apt install texlive-latex-extra
# pdflatex.fmt等のフォーマットファイルの生成
sudo fmtutil-sys --all
# pdflatexコマンドの確認(miniconda配下ではなくシステムのほうにインストールされていたらOK!)
which pdflatex
また、論文執筆の際にLLMの入力として持たせるTeXのテンプレートのai_scientist/blank_icml_latex/template.tex
内で、冒頭の\usepackage{subfigure}
の部分を\usepackage{subfig}
にする必要がありました。
(subfigure
パッケージは古いため、現在はsubfig
パッケージを使うことが推奨されており、私の環境だとsubfigure.sty
がインストールされなかったため、エラーが出てしまいました。)
最後に、確認で以下のコマンドを実行し、template.pdfが生成されればtexの環境構築はOKです。
pdflatex ai_scientist/blank_icml_latex/template.tex
続いて、使用するモデルのAPIキーを.envに用意します。
OPENAI_API_KEYはデフォルトだと必須なので、ご注意ください。
(AI-Scientist-v2では、いろんなところでgpt-4o-2024-08-06
が使われています)
OPENAI_API_KEY="YOUR_OPENAI_KEY"
S2_API_KEY="YOUR_S2_KEY"
GEMINI_API_KEY="YOUR_GEMINI_KEY"
AWS_ACCESS_KEY_ID="YOUR_AWS_ACCESS_KEY_ID"
AWS_SECRET_ACCESS_KEY="YOUR_AWS_SECRET_KEY"
AWS_REGION_NAME="YOUR-AWS-REGION"
HUGGINGFACE_API_KEY="YOUR_HUGGINGFACE_KEY"
Ai-Scientist-v2では、OpenAI、Gemini, AWS Betrock経由でのClaudeをデフォルトでサポートしています。また、Idea Generationで文献検索をする際に、Semantic ScholarのAPIキーがあると便利です(キーがなくても、リクエスト回数制限があるだけなので、時間がかかりますが実行可能です)。
研究アイデアを生成
AI Scientist-v2の最初のフェーズである「Idea Generation」を実行します。
実行手順
今回私は、2025年3月にMeta(FAIR)とNYU、MIT、Princetonの研究チームから発表された論文Transformers Without Normalization を、研究トピックとして選びました。この論文では、Transfomerの正規化層の入出力がtanh関数に似ていることに着目し、正規化層の代わりとなるDynamic Tanh(DyT) を提案しました。
詳しい内容は以下の記事で解説されており、大変勉強になりました。ありがとうございます。
上記の論文の概要をmdファイルで用意し、ai_scientist/ideas/
直下に配置します。
AI Scientist-v2のリポジトリにはサンプルとしてai_scientist/ideas/i_cant_believe_its_not_better.md
が用意されていたので、それを参考にして、以下のように記述しました。
# Title: Transformers without Normalization
## Abstract
Normalization layers are ubiquitous in modern neural networks and have long been considered essential. This work demonstrates that Transformers without normalization can achieve the same or better performance using a remarkably simple technique. We introduce Dynamic Tanh (DyT), an element-wise operation DyT(x)=tanh(αx), as a drop-in replacement for normalization layers in Transformers. DyT is inspired by the observation that layer normalization in Transformers often produces tanh-like, S-shaped input-output mappings. By incorporating DyT, Transformers without normalization can match or exceed the performance of their normalized counterparts, mostly without hyperparameter tuning. We validate the effectiveness of Transformers with DyT across diverse settings, ranging from recognition to generation, supervised to self-supervised learning, and computer vision to language models. These findings challenge the conventional understanding that normalization layers are indispensable in modern neural networks, and offer new insights into their role in deep networks.
このmdファイルを使用して、以下のコマンドを実行して文献検索を行います。
python ai_scientist/perform_ideation_temp_free.py \
--workshop-file "ai_scientist/ideas/transformers_without_normalization.md" \
--model gpt-4o-2024-11-20 \
--max-num-generations 20 \
--num-reflections 5
各引数には以下の役割があります。今回の場合、--workshop-file
以外はREADMEで書かれている値をそのまま使用しました。
-
--workshop-file
: トピックの説明のMarkdown ファイルへのパス -
--model
: アイデアの生成に使用する LLM -
--max-num-generations
: 生成する研究アイデアの数 -
--num-reflections
: 各アイデアに対する改善ステップの数
具体的な実装内容
max-num-generations
個のアイデアを生成する際、調査が必要な場合はSemantic Seaerchを使用して既存の論文を検索します。調査が十分と判断したら次のアイデアを生成し、調査が不十分だと判断したら再度Semantic Seaerchを実行します(最大num-reflections
回)。
最後に生成したアイデアをjsonに保存します。
max-num-generations
を20に設定したため、20個のアイデアが生成されました。
次の実験のフェーズでは、これら生成されたアイデアのうちの1つを選択して、実験〜論文作成までを行います。
(ちなみに今回私は、一番最初に生成された"tempgate_dynamic_depth"
が一番面白そうだったので、このアイデアで実験を行いました)
実際に生成されたjsonファイル(抜粋)
```yaml
[
{
"Name": "tempgate_dynamic_depth",
"Title": "TempGate: Temperature-Gated Dynamic Depth in Transformers for Adaptive Computation",
"Short Hypothesis": "Introducing differentiable, temperature-controlled gating mechanisms in transformer layers enables the model to dynamically adjust its effective depth during training and inference, leading to improved computational efficiency and potentially enhanced performance without the overhead of reinforcement learning or fixed heuristics.",
"Related Work": "Prior work on adaptive computation time (ACT) in recurrent models and early exit strategies for deep networks (e.g., SkipNet) have attempted to modulate effective depth using reinforcement learning or pre-defined heuristics. However, these methods often add training instability or require extra supervision. Our approach, TempGate, embeds a per-layer differentiable gating mechanism using a temperature-scaled sigmoid function within transformer blocks. This method is trained end-to-end via standard gradient descent and is distinct in its simplicity and integration into transformer architectures without auxiliary losses or policy training.",
"Abstract": "We propose TempGate, a novel temperature-gated dynamic depth mechanism for transformers that adaptively modulates network depth based on input complexity. Each transformer layer is augmented with a learnable gate that scales the layer\u2019s contribution through a temperature-controlled sigmoid function. This design enables the network to effectively \u2018skip\u2019 or downweight redundant layers on simpler inputs while allocating more processing power to complex ones. Unlike existing adaptive-depth methods that require reinforcement learning or retrospective performance heuristics, TempGate is fully differentiable and trained end-to-end, promoting stable and smooth adaptation of depth during training. Our experiments span across natural language processing tasks, such as language modeling and machine translation, and computer vision benchmarks, assessing performance improvements through metrics like BLEU scores, classification accuracy, latency, and FLOPs reduction. We hypothesize that enabling a dynamic computation pathway not only reduces inference cost but also acts as an implicit regularizer, potentially leading to improved generalization. The proposed method promises significant implications for deploying efficient, adaptively deep transformer models in resource-constrained environments.",
"Experiments": "1. Evaluate TempGate-enabled transformers versus standard transformers on NLP tasks (e.g., WMT machine translation, language modeling), measuring performance via BLEU scores, perplexity, inference latency, and total FLOPs. 2. Conduct ablation studies by varying the temperature parameter to examine its effect on gating sharpness and depth distribution, tracking the percentage of layers activated across different input complexities. 3. Visualize gating signals across training epochs to understand layer usage dynamics and convergence behaviors. 4. Extend experiments to vision benchmarks (e.g., CIFAR-100, reduced-scale ImageNet) to assess the cross-domain applicability while comparing accuracy and computational benefits.",
"Risk Factors and Limitations": "Potential risks include training instability due to abrupt gating transitions, sensitivity to the temperature parameter requiring careful tuning, and the possibility that without proper regularization the model might collapse to trivial solutions (either utilizing all layers or skipping most layers). Additionally, the balance between computational savings and performance may vary significantly with task complexity, potentially limiting applicability to very deep transformer architectures."
},
{
"Name": "transformers_without_norm_dyt",
"Title": "Transformers without Normalization: Rethinking Regularization with Dynamic Tanh",
"Short Hypothesis": "By replacing traditional normalization layers in Transformers with a simple, learned, element-wise non-linearity\u2014Dynamic Tanh (DyT)\u2014we hypothesize that the same regularization and stabilization can be achieved, potentially simplifying architecture design and improving gradient flow without the extra computational overhead of normalization.",
"Related Work": "Layer Normalization has been a staple in Transformer architectures to stabilize training and ensure efficient gradient propagation. Prior work examining alternatives includes Fixed Activation function modifications and gating mechanisms as in ACT or dynamic depth strategies. However, these alternatives either add complexity or adopt reinforcement learning mechanisms. Our proposal diverges by proposing an extremely simple drop-in replacement\u2014DyT, defined as tanh(\u03b1x), where \u03b1 is a learned scalar. Unlike prior methods, our approach is minimalistic, fully differentiable, and does not introduce additional layers, extra supervision, or training instability induced by heuristic gating.",
"Abstract": "Normalization layers have long been justified as essential components in deep neural networks, particularly in Transformers where they stabilize training and facilitate convergence. In this work, we challenge this assumption by introducing Dynamic Tanh (DyT), a learnable element-wise non-linear transformation defined as tanh(\u03b1x) that replaces conventional normalization layers. Inspired by observations that normalization operations often yield S-shaped input-output mappings reminiscent of tanh functions, our approach leverages a simple, parameterized transformation to mimic and even enhance the regulation provided by normalization. Our hypothesis is that eliminating normalization layers in favor of a plainly parameterized DyT not only simplifies the Transformer architecture but may also improve gradient flow and training dynamics in deep models. To validate this, we plan comprehensive experiments across natural language processing and computer vision benchmarks, assessing performance improvements, training stability, and computational efficiency. Our method promises streamlined architectural designs and offers new insights into the necessary conditions for stability and regularization in deep neural networks.",
"Experiments": "1. Compare standard Transformer models (with LayerNorm) against DyT-augmented Transformers on NLP tasks (e.g., language modeling, machine translation), measuring metrics such as perplexity and BLEU scores, as well as training dynamics (gradient norms, convergence speed). 2. Conduct ablation studies by varying the initialization and learning dynamics of the parameter \u03b1 in DyT to assess sensitivity and learnability. 3. Visualize input-output curves of DyT versus LayerNorm outputs to analyze how well DyT approximates normalization behavior across training epochs. 4. Extend experiments to vision benchmarks (e.g., CIFAR-10/100, small-scale ImageNet) using Vision Transformers to validate cross-domain applicability, comparing accuracy and computational efficiency metrics (FLOPs, latency).",
"Risk Factors and Limitations": "Potential risks include the possibility that DyT may not fully capture the invariant properties provided by normalization, leading to instability in very deep networks or requiring more delicate hyperparameter tuning. There might also be unforeseen interactions with residual connections and scaling in multi-head attention, limiting the method's transferability across all architectures or tasks. Additionally, while the approach aims to simplify the architecture, the learnable scaling parameter \u03b1 might introduce new challenges if it collapses during training or behaves erratically in different model regimes."
},
```
実験開始〜論文作成
続いて、Tree-Based Experimentation(実験を実行するフェーズ)とPaper Write-Up(論文を執筆するフェーズ)に入ります。
実行手順
まずbfts_config.yaml
を設定します。今回私は以下の設定にしました。モデル以外のパラメータはデフォルト設定のままにしてあります。
# データセットが保存されているディレクトリのパス
data_dir: "data"
#
preprocess_data: False
# 実験の目標や評価設定(任意)
goal: null
eval: null
# ログを保存するディレクトリ
log_dir: logs
# ワークスペースのディレクトリ
workspace_dir: workspaces
# データをworkspaceにコピーするか(True推奨、元データの破損を防ぐため)
copy_data: True
# 実験名(指定しないとランダムな名前が生成される)
exp_name: run
# コード実行設定
exec:
# 各 runfile.py の実行タイムアウト時間(秒)
timeout: 3600
# 実行対象のファイル名
agent_file_name: runfile.py
# IPython形式のスタックトレースを使用するか
format_tb_ipython: False
# 実験結果のレポートを自動生成するか
generate_report: True
# レポート生成LLM
report:
model: o3-mini-2025-01-31
temp: 1.0
# 実験の高次設定
experiment:
# 合成データセットの数
num_syn_datasets: 1
# デバッグ用設定(必要に応じてステージ単位で有効化)
debug:
stage4: False
# エージェントの設定(学習の制御)
agent:
# 実行するエージェントの種類(並列処理型)
type: parallel
# 並列処理数(GPUの数未満)
num_workers: 2
# 各ステージでの最大イテレーション数
stages:
stage1_max_iters: 20
stage2_max_iters: 12
stage3_max_iters: 12
stage4_max_iters: 18
# ステージ毎に設定されていない場合に使うデフォルトの反復回数
steps: 5
# 複数の乱数シードで評価する設定
multi_seed_eval:
# 評価に使用するシード数 (num_workers が3未満の場合は、一般的に num_workers と同じ値)
num_seeds: 3
# (以下3つは使用しない (2025/05時点))
k_fold_validation: 1
expose_prediction: False
data_preview: False
# コード生成用LLM
code:
model: gpt-4o-2024-11-20
temp: 1.0
max_tokens: 12000
# 出力やエラートレースの評価用LLM
feedback:
model: gpt-4o-2024-11-20
temp: 0.5
max_tokens: 8192
# 生成した図の評価用LLM
vlm_feedback:
model: gpt-4o-2024-11-20
temp: 0.5
max_tokens: null
# 探索戦略に関する設定
search:
# デバッグ時の最大の深さ
max_debug_depth: 3
# デバッグを行う確率
debug_prob: 0.5
# 生成する候補コードの数
num_drafts: 3
これらのyamlファイルを準備した上で、以下のコマンドを実行しました。
これもほぼREADMEのままで、変更したのは先程生成したアイデアのjsonファイルのパスと、各モデルです。
python launch_scientist_bfts.py \
--load_ideas "ai_scientist/ideas/transformers_without_normalization.json" \
--idea_idx 0
--model_writeup o3-mini-2025-01-31 \
--model_citation gpt-4o-2024-11-20\
--model_review gpt-4o-2024-11-20\
--model_agg_plots o3-mini-2025-01-31\
各引数には以下の役割があります。上記では明示されている引数以外にも、たくさんの引数があります。
-
--load_ideas
: 事前生成されたアイデアが格納されたJSONファイルのパスを指定。(デフォルト値:ideas/i_cant_believe_its_not_better.json) -
--load_code
: 設定すると、アイデアファイルと同じ名前で拡張子が.pyのPythonファイルを読み込む。(デフォルト値:False) -
--idea_idx
: 実行するアイデアのインデックス番号を指定。(デフォルト値:0) -
--add_dataset_ref
: 設定すると、アイデアにHugging Faceのデータセット参照を追加。(デフォルト値:False) -
--writeup-retries
: 論文作成の試行回数を指定。(デフォルト値:3) -
--attempt_id
: 並列実行時に同じアイデアの異なる試行を区別するためのID。(デフォルト値:0) -
--model_agg_plots
: プロット集約に使用するモデルを指定。(デフォルト値:o3-mini-2025-01-31) -
--model_writeup
: 論文執筆に使用するモデルを指定。(デフォルト値:o1-preview-2024-09-12) -
--model_citation
: 引用文献収集に使用するモデルを指定。(デフォルト値:gpt-4o-2024-11-20) -
--num_cite_rounds
: 引用文献収集のラウンド数を指定。(デフォルト値:20) -
--model_review
: メインテキストとキャプションのレビューに使用するモデルを指定。(デフォルト値:gpt-4o-2024-11-20) -
--skip_writeup
: 設定すると、論文執筆プロセスをスキップ。(デフォルト値:False) -
--skip_review
: 設定すると、レビュープロセスをスキップ。(デフォルト値:False)
ここで注目して欲しいのは、--load_code
と--add_dataset_ref
です。
--load_code
で設定すると、実験の時に使用するであろうモジュール(データの用意からモデルの構築、訓練と評価等)を定義した.pyファイル(今回の場合ではai_scientist/ideas/transformers_without_normalization.py
)を用意した場合に、この.pyファイルを改良・拡張する形でAI-Scientist-v2が実験を行うことができます。具体的には、この.pyのスクリプトをmarkdown形式に直したものをLLMに入力して、実験ファイルを作成していきます。
また、--add_dataset_ref
を設定すると、実験で使用するhugging face上のデータセットを記述してあるhf_dataset_reference.py
のスクリプトをmarkdown形式に直し、実験に必要なデータをLLMが理解します。
私の場合、アイデアに沿ったこれら2つの.pyファイルを用意するのは難しいと考え、.pyファイルは用意せずに実行しました。
実験中の中間生成物
実験中で生成されるoutputは全てexperiments/{日付}_{選択したアイデア名}_attempt{args.attempt_id}
直下に保存されます。
このディレクトリ内で作成される主なディレクトリは以下の通りです
-
0-run
: 各プロセスの一時的な作業スペース。生成した.pyファイルやデータが保存されている。 -
logs/0-run
: 最終的なログ。0-run
で実行されたプロセスのうち完了したもの(エラーやバグがなかったもの)をコピーしてここに置く。 -
data
: 実験で参照したデータ。 -
figures
: 生成された画像(matplotlib)。 -
{論文の名前}_imgs
: 生成した論文から切り取った画像。PyMuPDFで論文から画像とその周辺のタイトルを切り取って、VLMで図の評価を行わせる。
logs/0-run
配下に作成された、ステージごとのディレクトリ( Preliminary Investigation 〜 Ablation Studiesまでの、4つのステージ)内では、実験が実行されたノードの様子がtree_plot.html
が生成されます。
ブラウザで起動すると、ステージごとのワークツリーが表示されます。また、各ノードをクリックすると、画面右側にノードの実行時間や評価値、生成したpythonスクリプトが表示されます。
結果
実行コマンドを入力してから3時間程で2枚の論文が生成されました。
これは、実験のテーマや使用するモデル、そしていい結果が得られるかどうかの運的な要素も加わってこの時間になってます。特に、この実行時間の大半をSemanticSearchへのリクエスト待ち時間が占めているので、SemanticSearchのAPIキーを持っていたらもっと早く終わったと思います。
いずれにせよ、通常であれば数ヶ月かかるような一連の研究プロセスを、短時間で完了させてしまうのはやはり衝撃的です。
1枚目が論文の執筆のフェーズで最初に生成されたもので、2枚目が、ICBINBのWorkshopに沿った、ページ数・本文長の調整を入れた最終版となります。
論文執筆フェーズの初期の生成結果
ICBINBのWorkshopのフォーマットを適用した生成結果
この研究で編み出されたTempGateという手法は、入力の複雑さに基づいてネットワークの深さを動的に調整するために、各Transformer層にtemperatureを組み込みます。
具体的には、トランスフォーマーの各層にtemperatureで制御されたゲート機構を組み込むことで、入力の複雑さに応じて動的に処理の深さを調整する適応的な制御手法です。学習可能なtemperatureパラメータを持つシグモイド関数でゲート値を計算し、そのゲート値に基づいて変換処理を適用するか元の入力をスキップするかを決定することで、簡単な入力には浅い処理、複雑な入力には深い処理を自動的に割り当て、計算効率の向上と適応的正則化を同時に実現する手法です。
結果として、TempGateを有効にしたTransformerは、ベースラインモデルよりも一貫して低いトレーニング損失と検証損失を達成したことが言及されています。
TempGateの数式
一見論文として綺麗な出力が生成されましたが、以下のようないくつかの懸念点が挙げられます。
- TempGateとベースラインのloss等が同じグラフ上に並べて描かれているような、直接的な比較が一目でわかるようなグラフは含まれていない。
- 実験で使用したデータセットの具体が述べられていない。
- 文中でうまく参考文献を参照できてない([?]になっている)。
- グラフが小さい。
生成された論文のFigure 1
また、この結果を生成するための実験フェーズでは以下のようなエラーだったり、不安定な出力が確認されました。
- VRAMが足りなくなる処理を行い、OOMによって実験が中断される
- コード生成のループで、ないディレクトリパスを何回も読み込もうとしている
実験〜論文執筆におけるこれらの問題は、GPTのモデルに起因するところもあれば、実験遂行における自分の事前準備不足(アイデアに沿うサンプルコードの用意、データセットの用意など)が原因だと思います。
AI Scientist-v2の技術力には感銘を受けましたが、それと同時に、研究者がもつ専門的な背景知識を前提として与えることの意義を改めて実感しました。
まとめ
AI Scientist-v2を用いて、研究アイデアの創出から実験設計、データ分析、論文執筆までを一貫して実行するプロセスを体験しました。各ステージにおいて適宜フィードバックを挟みながらも、短時間で論文作成に至るまでを自動的に進行できた点は非常に印象的でした。
一方で、完全な自動化を実現するには、事前準備やエラー対応といった点でユーザー側の介入も求められます。ユーザーのリテラシーがAI Scientist-v2の能力を引き出す鍵になると感じました。
AI Scientist-v2の実装には、エージェント的な要素とワークフロー指向の設計が組み合わされており、アーキテクチャとしても非常に興味深い構成でした。弊社でもAIエージェントを活用したシステム案件を取り扱っていることから、今後の設計において参考にできる多くの示唆を得ることができました。
弊社では過去にAgentについてさまざまな記事を執筆しているので、ぜひご覧ください。
本記事は、株式会社neoAIの研究組織「neoAI Research」のメンバーで執筆しています。neoAI Researchではオンプレミス環境でのLLMの研究開発や、LLM Agentの社会実装に向けた研究開発を行っています。これらの研究開発成果を可能な限り公開することを通じて、国内のAI研究の発展に寄与することを目指しています。
neoAIでは、現在下記のポジションでの採用を行っています。新卒、中途、インターンシップのエントリーも受け付けています.詳しくは下記をご覧ください。
- 研究開発員 (neoAI Research)
- AIエンジニア (エンジニア職 / PM職)
- 自社プロダクトエンジニア (エンジニア職 / PM職)
- Biz Dev
- コーポレート
- オープンポジション
Discussion