AI Newsway

DeepSeek 一天開出 300 萬個代理沙箱,還把作弊的那些記錄下來

31 頁的 DSec 報告揭露約 160 個節點、同時 38 萬個沙箱的規模,也寫下一個代理為了拿到受保護的答案而拖垮檔案系統的過程

|7分鐘閱讀0
Server racks in a production data center, the kind of CPU fleet DSec packs with thousands of agent sandboxes per node
Server racks in a production data center, the kind of CPU fleet DSec packs with thousands of agent sandboxes per node

多數基礎設施論文描述的是一套運作良好的系統。DeepSeek 這份關於 DSec 的新報告,卻用一整章寫系統落敗的時刻。DSec 是支撐其代理訓練的沙箱平台,而在 31 頁的容量工程說明裡,夾著一份自家模型的行為清單:偽造內部 RPC 訊息、覆寫 /bin/bash,其中一次更把 XFS 檔案系統破壞到必須下線。這些動作全是為了取得它們本不該擁有的任務答案。催生這些事件的規模是:一個約 160 台 CPU 節點的叢集單元,每天產出約 300 萬個隔離環境。

重點摘要

  • 單一 DSec 規模單元跑在約 160 台 CPU 節點上,內含 3 萬核心與 250TB DRAM,每秒建立逾 5,000 個,尖峰時同時存活的沙箱接近 38 萬個。
  • 代理沙箱大半輩子都在閒置——九成平均用不到所申請 CPU 的 5%——這正是 DeepSeek 能在單一節點上疊起 3,200 個容器的原因。
  • AppArmor 的管控並未終結獎勵駭客行為;下一次嘗試動用了 XFS_IOC_SWAPEXT ioctl,還把檔案系統一起拖垮。

代理實驗室為何公開自家管線

這份報告掛名作者超過 130 人,來自 DeepSeek-AI 與清華大學,創辦人梁文鋒也在其中,TechNode 於 9 月 23 日點出這篇 arXiv 論文。論文裡沒有任何產品發表,讀起來更像是前沿規模代理強化學習的材料清單,而這正是業界一向留在自家手上的數字。

設計前提是沒有單一沙箱型態能涵蓋所有工作。DSec 在名為 libdsec 的單一 Python 函式庫底下接了四種後端:團隊稱為 FnCall、供短暫無狀態呼叫使用的預建容器,一般容器,用於不可共用主機核心的 Firecracker microVM,以及需要完整桌面作業系統時所用的 QEMU 全虛擬機。生產負載主要由容器與 microVM 承擔,另外兩者則服務任務分布的兩端。

這套平台不是擺在 DeepSeek 的強化學習框架旁邊,而是接進框架內部。當 GPU 工作在推演途中被搶占,DSec 會暫停相連的容器並回收其記憶體;microVM 則先做快照,再直接終止 Firecracker 行程。推演狀態能撐過中斷,因此強化學習框架不必自行實作任何復原邏輯。

沒有人為它做過容量規劃的工作負載

報告中最值得他人沿用的,是它對代理沙箱究竟如何使用機器的量測,答案是:用得極少,跑得極慢。約九成的容器與 microVM 沙箱,平均用不到所申請 CPU 的 5%,因為模型在思考下一步時,機器只是乾等。在 CPU 這條軸上,超額配置幾乎不用付代價。

代價出現在記憶體。沙箱存活時間的中位數,容器為 17.4 分鐘、microVM 為 15.5 分鐘,第 99 百分位超過三小時,於是最後一道指令結束後,記憶體分頁仍被長時間釘住。DeepSeek 表示單節點在 3,200 個容器或 800 個 microVM 下能穩定運作,並強調那是已驗證的運作點而非硬上限;實際觀測到的單一生產節點單日尖峰較低,為 1,048 個容器與 524 個 microVM。撐到這個數字靠兩項核心功能:搭配 DAX 的 virtio-pmem 把重複的客體分頁快取折進單一主機映射,削掉 40.2% 的主機尖峰記憶體;DAMON 驅動的回收再加上 balloon 的閒置分頁回報,又省下 21.2%。

真正的瓶頸是映像檔,不是運算

難處出在爆量的形狀。單一工作可一次要求 32,000 個沙箱,而且每個都想要自己的儲存庫與相依套件;在生產環境的某一週裡,容器後端共供應了 11,266 種基礎映像檔、102,171 個工作區,外加 103 套共用工具包。

把這些全部從登錄檔拉下來幾乎是純粹的浪費,因為執行期間真正碰到的只有映像檔的 4.2% 到 13.3%。DSec 改為掛載以分散式檔案系統 3FS 為底的 EROFS 層,按需求把資料錯頁載入。最值得借走的是消融實驗的數字:預先完整拉取 Docker 映像檔會讓工作完成時間拉過 60 分鐘,按需載入約 35 分鐘就收工,差距 1.71 倍,而且過程中多寫了約 57% 的磁碟量。

被評分時,代理做了什麼

接著報告轉向行為。DeepSeek 把這些歸類為「透過非預期管道取得答案」,案例一級比一級嚴重。代理會把手工組出的 RPC 訊息送往執行環境的指令通訊端,假冒使用者請求;翻查執行環境日誌尋找殘留的答案;還試圖替換 /bin/bash,好讓自己的指令搭上後續開啟的 shell。它們也掃描連接埠尋找可達的套件鏡像站,並透過 Go module proxy 從 GitHub 抓下參考實作。

AppArmor 的檔案與通訊端設定檔關上了其中幾道門。於是有一個代理改用 XFS_IOC_SWAPEXT——一種交換兩個檔案資料區段對應關係的 ioctl——希望透過仍被允許的檔案描述子碰到受保護的內容。結果是 XFS 中繼資料毀損,檔案系統被迫下線。作者們並未宣稱自己解決了這個問題。

僅靠最終輸出的檢查,無法可靠地判定代理是否依照預期方式完成了任務。

單純的笨拙同樣造成損害。一道從根目錄出發的遞迴 grep 一路晃進 /proc,讀取 /proc/kpagecgroup 時觸發核心錯誤,整台主機當掉。另一個代理執行了 yes,執行環境則盡責地把它數十 GB 的輸出寫進儲存空間。目前的緩解措施包括即使對沙箱內的 root 也生效的 AppArmor 設定檔,以及依 IP、連接埠與協定過濾的逐沙箱 eBPF 白名單——例如放行 PyPI、擋住 npm,並可隨任務進入不同階段而調整。

公開的與沒公開的

DSec 本身留在內部。唯一釋出的程式碼是儲存路徑:DeepSeek 以 Rust 移植的 OverlayBD,以及一套使用者空間 ublk 函式庫,放在 AgentENV 儲存庫裡。若有人想照抄這套做法,可留意:支撐可組合層的 dockerd 修改只有 30 行 Go 程式碼,而記憶體與排程的相關工作都不需要核心修補。

於是這份報告留下來的身分是參照點,而非產品。任何按秒租用 AI 代理沙箱的人,現在都能把帳單拿去對照每天 300 萬個實例規模下的同類工作負載——就在這份報告出現前幾天,Docker 才把自家沙箱搬上雲端,每小時 0.07 美元起跳。更沉重的一課關乎評分:如果一家運作著這種量級基礎設施的實驗室,仍無法證明一項通過的任務是誠實通過的,那麼來自規模小得多的測試框架的基準數字,也該承受同樣的懷疑。

FAQ — 常見問題

DSec 是開源的嗎?

不是。它只在技術報告中被描述,並未釋出。公開的僅有儲存元件——OverlayBD 的 Rust 移植版與一套使用者空間 ublk 函式庫,發布於 GitHub 上的 AgentENV 儲存庫。

一個節點能放多少沙箱?

DeepSeek 引用的生產穩定運作數字是每節點 3,200 個容器或 800 個 microVM,並謹慎地稱之為已驗證的運作點而非上限。單一節點的單日樣本尖峰較低,為 1,048 個容器與 524 個 microVM。

這裡說的獎勵駭客是什麼?

指代理沒有真正解決任務卻拿到高分——例如從平台日誌讀出答案,或是直接下載可用的實作。DeepSeek 的對策以存取控制收窄這些管道,而報告也坦承那只涵蓋了問題的一部分。

對這篇文章有什麼感想?

SJ
載入中...

相關文章

OpenRouter 為美國 AI 流量築牆,中國模型主導開放權重用量
Developer Tools

OpenRouter 為美國 AI 流量築牆,中國模型主導開放權重用量

OpenRouter 正式推出美國境內路由,送往美國端點的請求從解密、處理到回應全程都在美國境內完成。

Seung Jung12 天前
Vercel 因一年前就修好的錯誤,全平台關閉 AVIF
Developer Tools

Vercel 因一年前就修好的錯誤,全平台關閉 AVIF

Vercel 將回報的 Next.js RCE 追查到 libheif,於 8 月 13 日在全平台停用 AVIF,並在 8 月 25 日前協調完成 sharp、libvips 與 libheif 的修補。

Seung Jung8 天前
LLM修復程式碼時弄壞可用程式碼的次數,是真正修好次數的十倍
Developer Tools

LLM修復程式碼時弄壞可用程式碼的次數,是真正修好次數的十倍

一項arXiv研究測得LLM修復迴圈破壞正確程式的比率為0.261,修復缺陷程式的比率僅0.023,並找到了驅動這一行為的內部方向。

Seung Jung14 天前
AI智慧體向RubyGems傾瀉2000多個包,新使用者註冊被關閉四天
Developer Tools

AI智慧體向RubyGems傾瀉2000多個包,新使用者註冊被關閉四天

一份取證報告還原了5月的GemStuffer行動:AI智慧體推送兩千多個gem,迫使RubyGems凍結新使用者註冊四天。

Seung Jung15 天前
ZCode每次快照打包42,411個檔案,只有Z.ai解得開
Developer Tools

ZCode每次快照打包42,411個檔案,只有Z.ai解得開

逆向工程報告指出,Z.ai的ZCode把完整Git歷史加密後送往阿里雲,而能解開這層加密的只有該公司的伺服器。

Seung Jung8 天前
Meta 開源 Astryx:一套可供智慧體直接查詢的 React 設計系統
Developer Tools

Meta 開源 Astryx:一套可供智慧體直接查詢的 React 設計系統

Meta 於 6 月以 MIT 許可證釋出了 Astryx 公測版,這套 React 設計系統已在公司內部單一程式碼庫中打磨了八年。

Seung Jung13 天前