第 9 站 · 組織與角色該站第 2 / 9 場

研究原型交棒進生產程式碼的三槓桿

018Vaidas Razgaitis(Higharc)14:572026-06-28

Research to Reality: Bringing Frontier ML Research to Production - Vaidas Razgaitis, Higharc

研究原型交棒進生產程式碼的三槓桿 —— Higharc的演講縮圖

Higharc 研究工程師分享如何用文件、monorepo 架構與 PR 拆解三個槓桿,把機器學習研究原型交棒給軟體工程師做成正式產品代碼。

重點摘要

  • 研究與工程的落差:機器學習研究者熟悉最新論文,能用有創意的方式組合新概念,卻少有寫過正式產品等級 API 的經驗;軟體工程師則相反,擅長寫穩健的程式碼,但不熟悉背後的研究方法,這個落差正是交棒卡關的根源。
  • 用技術設計文件對齊團隊:Higharc 要求每個研究原型都附上一份「研究原型分類」文件,寫清楚領域背景、資料型別、商業目標與系統架構,讓後續接手的軟體工程師與產品經理能快速看懂脈絡。
  • 獨立的機器學習 monorepo:機器學習相關程式碼獨立成一個 Python monorepo,裡面是彼此解耦的 microservice,大致是一位研究者對應一個 microservice,各自維持 API、商業邏輯、資料層三層架構。
  • 用 graphite 拆解大型 PR:把龐大的研究原型依相依關係拆成一系列 stacked diff,讓不同領域的專家可以非同步審查,同時加快正式上線的速度。
  • 三個自我檢查指標:分別對應原型是否好懂、程式碼庫是否還撐得住新概念、拆解與審查流程是否順暢;卡關時通常代表研究交接或程式碼庫架構該調整了。

時間軸12 段

00:00開場講者是 Higharc labs 團隊的資深研究工程師,團隊把電腦視覺、推理 agent、自訂 transformer 與 diffusion model 這些前沿技術應用在住宅設計上。
01:18交棒的落差把前沿研究做成量產,需要軟體、平台、基礎架構工程師接手,但他們不熟悉背後的研究方法;研究者則相反,很少寫過正式產品等級的 API。
02:32兩個效率槓桿先點出兩個能加速研究落地的槓桿:研究原型的可讀性,以及程式碼庫要怎麼架構才能快速收下新原型。
03:32技術文件的由來引用 The Pragmatic Engineer 談軟體工程團隊擴張時該寫技術設計文件對齊共識,Higharc 也要求每個研究原型附上類似文件。
04:40RPT 文件內容這份「研究原型分類」文件要寫清楚領域背景、資料表示方式、商業目標、型別安全的介面約定、資料持久層、整體系統架構,以及最後打算怎麼合併與拆解。
06:48獨立 ML monorepo機器學習程式碼獨立成一個 Python monorepo,是一群彼此解耦的 microservice,大致一位研究者對應一個 microservice。
07:58microservice 三層架構每個 microservice 都採 API 層、商業邏輯層、資料層的簡單分層,並附上乾淨的規格文件,方便 agent 協助研究者導覽程式庫。
09:56CI/CD 與工具層monorepo 底下有自動化建置部署、測試、linting 與型別檢查,也用 Jupyter notebook 搭配 Modal 的 GPU 算力跑機器學習實驗。
10:55拆解是設計問題把拆解大型研究原型當成設計問題處理,先畫出相依關係圖,再用 graphite 拆成一串 stacked diff,方便不同領域專家非同步審查。
12:31三個檢查指標重新看研究可讀性、程式碼庫結構、拆解與審查這三個槓桿,並為每一個提出可以自我檢查的診斷問題。
13:12程式碼庫跟不跟得上問程式碼庫是否還有清楚的模板與框架可以依循,還是已經因為不斷塞入新研究概念,被逼出一堆舊的抽象包袱。
14:12收尾最後一個檢查點看拆解階段:時程能不能穩定估算、該找哪些領域專家審查;卡關通常代表交接協調或程式碼庫架構出了問題。

值得記的話4 句

  • So that's kind of what I want to get into is this handoff, this baton pass of how do we facilitate that and how do we do it productively.這就是我想談的交接,也就是這個「接力棒」怎麼順利、有效率地傳下去02:11
  • Now, looking a bit closer at these individual microservices, we tend to build them in a pretty simple layered architecture, right? There's an API layer, the business logic and the data layer.仔細看每個 microservice,架構其實很單純:分成 API 層、商業邏輯層與資料層07:58
  • We really like graphite because it allows for asynchronous review, right? I could be working on a PR all the way up here while a domain specialist is still reviewing a different PR.很喜歡 graphite,因為它能做到非同步審查:可以一邊繼續往前做 PR,另一位領域專家同時還在審查別的 PR11:35
  • I love thinking about ways how our team can speed up how quickly we can bring research concepts into production.很喜歡思考要怎麼讓團隊更快把研究成果做成正式產品14:32

名詞與人物5 個

Higharc
訂製住宅設計新創公司,講者任職於其中的 labs 研究團隊,這場談的正是團隊如何把研究成果做成量產系統。
Research Prototype Taxonomy(RPT)
Higharc 要求每個研究原型都要附上的技術設計文件,寫清楚領域背景、資料型別與系統架構,作為交棒依據。
monorepo
Higharc 用來集中放所有機器學習程式碼的單一版本庫,裡面是彼此解耦、各自獨立部署的 microservice。
graphite
程式碼審查工具,這場用它把龐大的研究原型拆成一串 stacked diff,讓不同領域專家可以非同步審查。
The Pragmatic Engineer
講者引用的部落格文章,談軟體工程團隊隨規模擴大而需要技術設計文件來對齊共識。

提到但沒有展開

  • 提到撰寫 RPT 文件時用的是 Notion,但也說任何文字工具都做得到,沒有進一步展開範本內容。
  • 提到部分機器學習研究涉及頂級機密主題,沒辦法在這場公開分享細節。
  • 提到用 Jupyter notebook 搭配 Modal 的 GPU 算力跑機器學習實驗,沒有進一步說明實驗內容。

研究開發工具

在 YouTube 看原片 ↗