數學是一個很神奇的東西,他不會背叛你,數學不會就是不會。
有鑑於此,目前 AI Agent 盛行的時代下,有些事情就能請 AI 幫你做。所以,我就開始跟 AI 協作來製作一個跟 Stable Diffusion Lora 訓練有關的優化器(Optimizer)。
這些東西我全數都開源在我 Fork 的 sd-scripts 底下,有興趣的人可以自行察看。
https://github.com/hinablue/sd-scripts/blob/sd3-hina/docs/hina/README.md
在開始之前
以下是我所使用的工具:
上述的工具部分需要你的魔法小卡,或者說你公司肯幫你付錢的話。當然做個免費仔也可以,但就不能保證效果。
思考
你還是需要「思考」。
你還是需要「思考」。
你還是需要「思考」。
思考這件事情很重要,把東西一股腦丟給 AI Agent 去製作可能不是一個很好的方式。畢竟現代人可能連問題都沒辦法好好提問,所以覺得 AI 不好用可能不是 AI 的問題。
那麼,身為一介農夫,理所當然的不可能理解語言模型、演算法、優化器這一類的事情。那麼,我能做的第一件事情,就是收集資料,收集問題。
用 NotebookLM 來幫助思考
首先,你可以在 NotebookLM 裡面,加入你所整理好的資料當作 Source,然後開始跟他聊天。而,使用 NotebookLM 的一個好處是,
他會根據你的來源來回答,所以比較不會有唬爛你的狀況。
所以說,我們可以在 NotebookLM 當中去詢問,或是請他分析某些優化器、實作方法、優缺點等等。

在累積足夠多的交談記錄,你可以把一些你覺得很好的資料儲存到 Notes,也可以將 Notes 再次放入 Source 來當參考。
但是,你必須留意一點,
如果你的來源是迷因,那麼聊天結果可能也會是迷因
把迷因 Notes 存回 Source,只會讓聊天更迷因
所以你需要「思考」,然後「驗證」你的聊天內容是否正確。
開始動工之前
無論你使用哪一種 AI Agent 來幫助你撰寫程式碼,你還是必需要保持一定的警覺性。
例如
rm -rf ~/
你打開Auto-run
的時候在想什麼?
如果你完全沒有接觸過程式碼、終端機、命令列執行,那麼請對每個指令保持警覺。如果真的不知道,可以去問 ChatGPT。
提問的準備
在 NotebookLM 當中,我可以找到一些覺得不錯、可能可行的方法,那麼,當我換到任何一個 AI Agent 開始撰寫程式碼的時候,你還是需要歸納出一份文件,讓他知道你想要做什麼事情。
所以,這個時候你可以簡單的整理一份 Markdown 檔案,當然,你要使用 NotebookLM 幫你寫也是可以。
接著,你就可以開始讓 AI Agent 幫你實現程式碼。
提問的流程
我有了一份 Markdown 檔案用來描述我的需求,那麼,AI Agent 真的可以一次就看懂?為了預防這件事情,所以會有一個問答流程,來確保 AI Agent 能明確的理解我的需求。
- 請 AI Agent 閱讀 .md 檔案,給出程式碼實作步驟,並列出思考過程,先不要撰寫程式碼。
- 察看 AI Agent 給你的答案,然後開始雞蛋裡挑骨頭。
- 繼續詢問 AI Agent,一樣讓他不要撰寫程式碼,僅列出步驟、思考過程。
- 直到你覺得步驟、思考過程你都可以接受。
- 接著請他把步驟、思考過程,建立成粒度更小的 To-Do list。
- 最後請他依照 To-Do list 開始實作。
- 每做完一個 To-Do,請他回頭確認是否符合 .md 的需求。
- 接著就重複 6 - 7 直到結束。

測試
寫完了總是要測試,當然,測試這件事情也可以請 AI Agent 幫你做。但是,請記得一件事,
當 Run Command 出現
rm -rf ~/
你還按下Accept
的時候在想什麼?
由於我是製作了跟 Stable Diffusion Lora 訓練有關的優化器,所以我的測試只能真的拿去跑 Lora 訓練才能驗證結果。

這個 Optimizer 除了概念與每個超參數執行的順序是我自己決定的之外,其餘的都是 AI Agent 完成的。
因為這樣的模式可行,所以我也根據這樣的流程製作了一個基於 mse_loss/l1_loss 計算方法,然後混入傅立葉轉換的 loss 計算方式。

這個 FFT Loss 的方法,大概只花了我 4 個小時(不要問我花了多少 Token)。
小結
Claude Code 真心強,Cursor Pro 也很可以。目前在工作上有這樣的輔助開發也非常順利,唯一美中不足的大概就是很貴吧。
如果你熟悉 Kohya 的話,可以試試看我的 Fork,就能用一些很奇怪的優化器,例如 @gesen2egee 所開發的 Automagic_Sinkgd 優化器。