vatt'ghern jaskier's ballads

2026.07.17 —— 今日 10 則

TODAY'S THREAD 今天的線索是「把綁死在中心的東西拆開」——推論搬進瀏覽器、預訓練散到網際網路、資料庫分支長在快照上,連 prompt 與 SQLite 的預設值都被當成可以版本化、逐步鬆綁的工程對象。

10 items ai · 2 systems · 3 infra · 2 web · 1 backend · 2
0 / 10 read
#06

Agora:把 LLM 預訓練散到網際網路上的異質 GPU

一篇論文提出 Agora,用所謂 Protocol Learning 在散布於網際網路的異質 GPU 上預訓練 LLM:每個節點只持有模型的一個 pipeline stage,沒有任何一方握有完整權重。作者用 330 個貢獻節點、花 40 天訓出 86 億參數的 Pluralis-8B(吃 5000 億 token),達到集中式 H100 基線約 63% 的效率。若這條路能規模化,它動搖的是「大模型必須在單一資料中心訓練」這個前提。

read source → distributed-training

#07

把 agent 的 prompt 當 build artifact:Google 談模組化 prompt transpilation

Google 主張把 agent 的 prompt 當成 build artifact 來對待:把龐大的單體 system prompt 拆成可重用的 skill 檔,用 template engine 組合並 transpile,好在部署前就用 dependency 驗證與 CI/CD 檢查抓出副作用。他們想解決的問題是「加一句話可能在整個 agent 裡引發難以預測的連鎖反應」。對正在把 prompt 當程式碼在維護的團隊,這是一種把它工程化的做法。

read source → ai-agents

#04

把 30 萬行 Rust 編譯器改寫成 Zig,Roc 團隊的得失清單

Roc 語言團隊把約 30 萬行的 Rust 編譯器整個改寫成 Zig,花了 487 天才追回原本的功能。作者坦白列出得失:Zig 版的建置快到 35ms、對記憶體配置器的掌控更細,但也失去了 borrow checker、private 欄位與 Rust 的向後相容承諾。記憶體損毀類 bug 從 Rust 版的 21 個降到 10 個,不過多半是編譯器產碼的 miscompilation,而非編譯器實作本身的問題。

read source → deep read zig

#08

SQLite 該學 Rust 的 edition:用單一 pragma 打包現代預設

一篇文章主張 SQLite 該學 Rust 的 edition 機制:它嚴格的向後相容承諾,讓一堆舊預設值改不掉——外鍵預設不啟用、型別檢查鬆散、一遇寫入競爭就丟 SQLITE_BUSY、WAL 預設關閉。作者提議用像 PRAGMA edition = 2026 的單一開關,打包一組現代預設,又不動到既有資料庫。這把「相容」與「進步」的取捨講得很具體。

read source → sqlite

#10

Go 泛型只單態化到 GC shape,效能陷阱藏在共用本體裡

一篇文章拆解 Go 泛型的實作:編譯器只單態化到型別的「GC shape」,所以像 *User 和 *Order 這種指標型別會共用同一份編譯後函式本體。省下的是二進位膨脹,代價是共用本體得在執行期查 dictionary 才能做型別相依操作,例如方法呼叫,比完全特化多一層開銷。理解這點,你才知道泛型的效能陷阱藏在哪。

read source → golang

#02

從快照長出可寫的資料庫分支:Homescale 的儲存基礎設施

一個叫 Homescale 的自造專案,示範如何從不可變快照生出「可寫的資料庫分支」而不必整份複製:底層用 Ceph RBD 的 copy-on-write clone 做分支、Kubernetes 當 control plane、Rook 來編排 Ceph。第一篇聚焦儲存與計算分離的基礎設施設計,實作程式碼留待下一篇。對想自己搭 PlanetScale 式 branching 的人,這是一份把架構決策攤開講的筆記。

read source → deep read database

#05

Cloudflare Smart Tiered Cache 現在吃得下公有雲的 region 提示

Cloudflare 的 Smart Tiered Cache 現在能吃客戶指定的雲端 region 提示:過去面對 AWS、GCP、Azure、Oracle Cloud 這類 anycast 來源,系統難以挑出單一 upper tier,容易跨洲繞路。現在你可以透過 dashboard、API 或 Terraform 指定 region,讓它把公有雲來源對應到正確位置、少一些無謂的回源。對把來源放在公有雲後面的人,這能實際減少跨區 fetch。

read source → cdn

#01

LiteRT.js:讓 ML 推論直接在瀏覽器裡用 WebGPU、WebNN 跑

Google 釋出 LiteRT.js,讓 ML 模型直接在瀏覽器裡跑:以 WebGPU(透過 ML Drift)與實驗性的 WebNN 為後端,並保留 WASM/XNNPACK 的 CPU 後備。官方宣稱在傳統模型上比其他 web runtime 快最多 3 倍,GPU/NPU 後端相較 CPU 可達 5 到 60 倍。對想把推論搬到端上、省掉伺服器往返的前端團隊,這補上了缺的那一塊。

read source → deep read webgpu

#03

用 Durable Functions 在 Azure Functions 上撐起長時間執行的 MCP tool

Microsoft 示範用 Durable Functions 在 Azure Functions 上撐起「長時間執行」的 MCP tool:start_mining 這個 tool 啟動一段 orchestration,回傳即時結果或一個 workflow_id,再由 get_mining_result 拿該 id 輪詢執行狀態。這繞開了 MCP 工具呼叫必須同步、幾秒內回應的限制,讓一個 tool 能跑上好幾分鐘並回報進度。對在 Azure 上把 agent 接到耗時工作的後端,這是個現成的模式。

read source → mcp

#09

SET NOCOUNT ON 的大不了:省掉每條語句的 row-count token

一篇 T-SQL 衛生文重新解釋 SET NOCOUNT ON:它會壓掉 SQL Server 每條語句後回傳的 row-count 協定 token,一支 20 條語句、被呼叫 10 萬次的 stored procedure,可能就多送約 200 萬個無用 token。但要留意副作用——開了之後 ExecuteNonQuery() 會回傳 -1,需要時得自己用 @@ROWCOUNT 補回來。對用 stored procedure 撐高頻查詢的後端,這是個小改動、可量測的收益。

read source → sql-server

today's deep reads

deep · 01 LiteRT.js:讓 ML 推論直接在瀏覽器裡用 WebGPU、WebNN 跑 deep · 02 從快照長出可寫的資料庫分支:Homescale 的儲存基礎設施 deep · 03 把 30 萬行 Rust 編譯器改寫成 Zig,Roc 團隊的得失清單