Deep Researcher Agent:幫你 7×24 小時跑深度學習實驗

📌 本文重點

  • 讓 Agent 自動從開題到調參跑完整實驗流程
  • 透過雙層記憶與精簡工具控制 token 與成本
  • 實測可連跑 30+ 天、500+ 次實驗且指標提升 52%

Deep Researcher Agent 不是寫論文工具,而是幫你自動設計、啟動、監控、調整深度學習實驗的「實驗室助理」,讓你晚上開好一個任務,隔天早上直接看總結與下一步建議。

原文與程式碼: arXiv: Deep Researcher Agent


核心功能:把「開題到調參」變成自動流程

1. 零成本監控:只讀日誌與進程,不再瘋狂 call API

多數「AI 助手監控訓練」的做法是:每隔幾分鐘就丟當前 log / loss 給 LLM 解讀,API 費用跟著訓練時間線性上升。Deep Researcher Agent 直接反其道而行:

做法

  • 不在訓練中途問 LLM
  • 只用本機腳本:
  • 檢查訓練進程(還活著嗎?GPU 滿不滿?)
  • 讀 log 檔 / checkpoint 資訊
  • 訓練跑完後,才把「摘要後的訓練結果」送給 LLM 分析

結果

  • 一個專案可以連續跑 30+ 天、500+ 次實驗,LLM 每日成本約 0.08 美元
  • 你可以安心開長實驗,不用擔心「監控本身」把錢燒光

💡 關鍵: 把 LLM 使用集中在「訓練後一次分析」,可以在連跑 500+ 次實驗的情況下,將每日成本壓到約 0.08 美元。

你可以立刻做的事

  • 檢查你現有的訓練流程,是否一定要「在線可視化」?
  • 如果只是每天看一次結果,Deep Researcher Agent 的這種「訓練中不問 LLM,訓練後一次分析」就非常適合。
  • 思考:你現在哪些監控行為其實可以改成「訓練後解析 log」,先在自己腳本裡做一次簡單實驗。

2. 雙層記憶 + 精簡工具:防止 context 爆炸、token 費用受控

讓一個 Agent 連續工作幾天,最常見的問題就是:

  • 每次對話都把所有歷史實驗貼進去
  • context 越來越長,token 費用越來越高,最後不是超長就是被截斷

Deep Researcher Agent 用兩個設計解決:

雙層固定大小記憶(Two-Tier Memory)

  • 短期記憶(Working Memory)
  • 只放當前 1~數個實驗的細節(超參、log 摘要、錯誤訊息)
  • 控制在約 5K 字元級別,方便每次對話完整送進 LLM
  • 長期記憶(Research Memory)
  • 只存「實驗結論」與「調參心得」,像是研究筆記
  • 例如:
    • 「batch size > 64 容易 OOM」
    • 「加入 label smoothing,val F1 提升約 3%」
  • 每次對話只抽取跟當前主題最相關的幾條結論給 LLM

效果

  • 跑到第 300 次實驗時,Agent 不會忘記前面學到的規則
  • 同時每次 LLM 呼叫的 context 仍保持在可控長度

💡 關鍵: 透過短期與長期記憶拆分,即使到第 300 次實驗仍能保留前面經驗,同時維持每次對話在可控 token 範圍。

精簡工具集(Master-Worker 工具設計)

Deep Researcher Agent 不是給 Agent 一大堆雜亂工具,而是用「主代理 + 工人工具」的拆分方式:

  • 主代理(Research Agent):負責思考研究方向與高層決策
  • 工具極少:像是「列出已完成實驗」「建立新實驗配置」「讀取實驗結果」
  • 工作腳本(Workers):真正執行訓練的 Python / shell 指令
  • 不需要 LLM 介入,只在啟動時決定指令與參數

你可以立刻做的事

  • 列出你現在所有給 LLM 能呼叫的「工具」或指令,分成:
  • 必須由 LLM 決策的(例如:如何改超參)
  • 完全可以由固定腳本處理的(例如:啟動訓練、sync log)
  • 把第二類先抽出去,用單純腳本運行,減少 LLM 每次對話要「理解的東西」。

3. 實際成效:30+ 天、500+ 次實驗,指標提升 52%

論文中給了一個具體部署紀錄:

  • 同時跑 4 個研究專案
  • 連續運作超過 30 天
  • 累積超過 500 次實驗迭代
  • 其中一個專案的核心指標(文中稱 meta-metric)提升 52%
  • 每天 LLM 成本約 0.08 美元

💡 關鍵: 在連續 30+ 天、500+ 次迭代中,單一專案 meta-metric 能提升 52%,顯示自動實驗迭代對指標有明顯放大效果。

背後做的事包括:

  1. 自己提出假設(例如:換 optimizer / lr schedule)
  2. 自動改訓練腳本或 config
  3. 啟動新一輪訓練
  4. 訓練結束後讀取 log,分析哪裡變好或變壞
  5. 寫成研究筆記,決定下一輪調整

你可以立刻做的事

  • 選一個你目前「還在摸索怎麼調參」的專案(例如:分類模型 F1 卡在 0.7)
  • 想像:如果可以一週內自動跑 100 次變體,你會想讓 Agent 幫你嘗試哪些方向?
  • 先寫下三個:例如 optimizer、資料增強、模型寬度/深度
  • 等下在「怎麼開始」段落,我會示範怎麼把這些需求塞進 Agent。

適合誰用?三種典型場景

1. 個人研究者:晚上丟任務,早上看實驗日誌

情境:你在做論文或 side project,每天能盯 terminal 的時間有限,但有 GPU 資源。

你可以這樣用:

  • 晚上:
  • 給 Deep Researcher Agent 一個初始實驗設定(Model A + Dataset X)
  • 勾勒你允許它調整的範圍(例如 lr、batch size、增強策略)
  • 隔天早上:
  • 看 Agent 整理的:
    • 已跑過的實驗表格
    • 每一類調整的效果摘要
    • 下一步建議(例如「接下來專注調整 learning rate decay」)

2. Startup ML 團隊:小團隊也能跑「持續自動調參」

情境:公司只有 1–3 個 ML 工程師,但有幾台 GPU,要在短期內打磨一個核心模型(推薦、排序、廣告 CTR 等)。

你可以這樣用:

  • 把既有的 PyTorch / Hugging Face 訓練腳本接入 Deep Researcher Agent
  • 讓 Agent 針對特定線上指標(例如 AUC / NDCG)做持續探索
  • 團隊成員每天只需要花 30 分鐘看報告與決定是否採用 Agent 建議的設定

3. 公司內部模型調參:封裝成本、控管風險

情境:你是公司內部「那個會調參的人」,大家都找你幫忙加一點準確度,但手工改 config 太耗時間。

你可以這樣用:

  • 把公司的標準訓練 pipeline(包含資料路徑、監控、部署步驟)封裝成一個「Agent 可叫的 Worker」
  • 為每個專案設一個 sandbox:
  • 限制 Agent 只能用某些 GPU、只能改某些超參
  • 其他同事只要:
  • 把資料與 baseline config 準備好
  • 按一次「啟動自動調參」,等報告

怎麼開始:最小可用 Workflow

以下以「你已有一個 PyTorch / Hugging Face 訓練腳本」為前提,示範最快上手方式。實作細節可對照論文附檔與 GitHub(論文頁面會附上連結)。

步驟 0:準備環境與專案

  1. 準備一台能跑你模型的機器(本機或遠端,都可以):
  2. Python 3.10+、CUDA、PyTorch / Transformers 已能正常訓練
  3. 選一個專案當作試驗田:
  4. 例如 train.py 接受 --lr --batch_size --model_name 等參數

步驟 1:Clone 專案、安裝依賴

# 以假想 repo 名稱為例,實際請依論文提供的 GitHub
git clone https://github.com/xxx/deep-researcher-agent.git
cd deep-researcher-agent

pip install -r requirements.txt

接著,設定你的 LLM 金鑰(例如 OpenAI / Claude):

export OPENAI_API_KEY=你的_API_KEY
# 或依 repo 說明設定其他模型供應商

步驟 2:接上你現有的訓練腳本

假設你原本的訓練指令是:

python train.py \
  --model_name bert-base-chinese \
  --lr 2e-5 \
  --batch_size 32 \
  --output_dir runs/exp1

你需要做兩件事:

  1. 定義一個 Worker 指令模板(讓 Agent 能替換超參):
  2. 在 Deep Researcher Agent 的設定檔(例如 config/experiments.yaml)中新增:

yaml
experiments:
- name: text_classification_bert
command_template: >-
python /path/to/your/train.py
--model_name {model_name}
--lr {lr}
--batch_size {batch_size}
--output_dir {output_dir}
search_space:
model_name: ["bert-base-chinese", "hfl/chinese-roberta-wwm-ext"]
lr: [1e-5, 2e-5, 3e-5]
batch_size: [16, 32]

  1. 指定 log / metric 的位置與格式
  2. 讓 Agent 知道到哪裡讀結果,例如:

yaml
log_config:
metric_file: "{output_dir}/metrics.json"
target_metric: "f1"

並確保你的 train.py 在訓練結束會輸出一個 metrics.json,內容類似:

json
{"f1": 0.73, "accuracy": 0.88}

步驟 3:啟動一個最小實驗

完成以上設定後,你可以啟動一個最小自動實驗循環,例如:

python run_agent.py \
  --experiment text_classification_bert \
  --max_iterations 5

這會做的事通常包括:

  1. Agent 讀取目前專案目標與 search space
  2. 設計第 1 個實驗配置,產生實際指令
  3. 啟動訓練進程,等待完成
  4. 讀取 metrics.json,寫入研究記憶
  5. 依照結果調整下一輪超參,直到跑完 max_iterations

跑完後,你可以查看:

  • logs/ 目錄:每次實驗的設定、結果、分析
  • 研究摘要檔:看到 Agent 寫的「這幾次實驗學到了什麼」

步驟 4:把它變成你的「夜間實驗助手」

當你確認一輪流程跑得穩:

  1. max_iterations 調大,例如 50 或 100
  2. 使用排程或 tmux / screen,在下班前啟動一次 Agent
  3. 第二天早上:
  4. 開啟 Agent 產生的 summary(通常是 markdown / text)
  5. 根據它給的建議,決定:
    • 是否擴大 search space
    • 是否更換模型架構

小結:先讓它代替你跑 5 次實驗就好

Deep Researcher Agent 真正帶來的改變不是「多一個會寫程式的 ChatGPT」,而是:

  • 你不再需要手動複製貼上超參、啟動訓練、整理 log
  • 你可以把「實驗設計+結果分析」外包給一個成本極低、24 小時上班的助手

建議你的第一步:

  1. 選一個已有訓練腳本的小專案
  2. 按上文接入 Deep Researcher Agent,只跑 5 次迭代
  3. 看看它整理出來的實驗表與建議,感受一下:「如果把這件事放大到 500 次實驗,對你現在的工作會有什麼幫助?」

接著,你就可以考慮把公司或實驗室真正重要的專案,一個一個遷移進這套自動化實驗流程裡。

🚀 你現在可以做的事

  • 檢查現有訓練腳本,先挑一個小專案依照文中的 experiments.yaml 範例接入 Deep Researcher Agent。
  • 實際跑一次 --max_iterations 5 的自動實驗循環,觀察 log、metrics 與 Agent 產出的研究摘要。
  • 根據初次結果,逐步擴大 search space 與 iterations,評估是否將公司或實驗室的核心專案遷移到這套流程。

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *