📌 本文重點
- 讓 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%,顯示自動實驗迭代對指標有明顯放大效果。
背後做的事包括:
- 自己提出假設(例如:換 optimizer / lr schedule)
- 自動改訓練腳本或 config
- 啟動新一輪訓練
- 訓練結束後讀取 log,分析哪裡變好或變壞
- 寫成研究筆記,決定下一輪調整
你可以立刻做的事:
- 選一個你目前「還在摸索怎麼調參」的專案(例如:分類模型 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:準備環境與專案
- 準備一台能跑你模型的機器(本機或遠端,都可以):
- Python 3.10+、CUDA、PyTorch / Transformers 已能正常訓練
- 選一個專案當作試驗田:
- 例如
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
你需要做兩件事:
- 定義一個 Worker 指令模板(讓 Agent 能替換超參):
- 在 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]
- 指定 log / metric 的位置與格式:
- 讓 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
這會做的事通常包括:
- Agent 讀取目前專案目標與 search space
- 設計第 1 個實驗配置,產生實際指令
- 啟動訓練進程,等待完成
- 讀取
metrics.json,寫入研究記憶 - 依照結果調整下一輪超參,直到跑完
max_iterations
跑完後,你可以查看:
logs/目錄:每次實驗的設定、結果、分析- 研究摘要檔:看到 Agent 寫的「這幾次實驗學到了什麼」
步驟 4:把它變成你的「夜間實驗助手」
當你確認一輪流程跑得穩:
- 把
max_iterations調大,例如 50 或 100 - 使用排程或
tmux/screen,在下班前啟動一次 Agent - 第二天早上:
- 開啟 Agent 產生的 summary(通常是 markdown / text)
- 根據它給的建議,決定:
- 是否擴大 search space
- 是否更換模型架構
小結:先讓它代替你跑 5 次實驗就好
Deep Researcher Agent 真正帶來的改變不是「多一個會寫程式的 ChatGPT」,而是:
- 你不再需要手動複製貼上超參、啟動訓練、整理 log
- 你可以把「實驗設計+結果分析」外包給一個成本極低、24 小時上班的助手
建議你的第一步:
- 選一個已有訓練腳本的小專案
- 按上文接入 Deep Researcher Agent,只跑 5 次迭代
- 看看它整理出來的實驗表與建議,感受一下:「如果把這件事放大到 500 次實驗,對你現在的工作會有什麼幫助?」
接著,你就可以考慮把公司或實驗室真正重要的專案,一個一個遷移進這套自動化實驗流程裡。
🚀 你現在可以做的事
- 檢查現有訓練腳本,先挑一個小專案依照文中的
experiments.yaml範例接入 Deep Researcher Agent。- 實際跑一次
--max_iterations 5的自動實驗循環,觀察 log、metrics 與 Agent 產出的研究摘要。- 根據初次結果,逐步擴大 search space 與 iterations,評估是否將公司或實驗室的核心專案遷移到這套流程。
