在 Farside Compute 跑完任務的人,馬上拿到一組成果代碼、看得到它什麼時候過期;成果檔另外放進一個「只有 Farside 能寫、Slate 只能讀」的檔案池,讓 Slate 那一側(#252)憑這組代碼把檔帶進畫布。

#296 Farside 側:Compute 成果的檔案池+成果代碼(#252 的前置,ADR-0115)

狀態
還沒開始
誰在做
宜芳分派
做到哪
還沒有程式、沒有 PR,也還沒建檔案池或權杖。Farside 那一側 10/04 做了現況調查:成果已經自動上傳到 Farside 自己的 R2 工作區桶(不是只留在 GPU 機器上),但那個桶不是要另開的檔案池;目前自動流程只收 3DGS 的 splat.ply,模型權重沒收。負責人 10/05 照 PM 建議定了做事順序、代碼一次性 24 小時、池子只放成果(#326)。
卡在
照 10/05 定的順序,要先等 #252(畫布這邊,負責人+Claude)貼出介面草案:清單檔的格式、給 Slate 的唯讀權杖能碰什麼、誰記「代碼已經用過」、池子的保存期與大小上限提案。草案確認後,還要宜芳分派這張的實作。
下一步
畫布這邊(負責人+Claude)先在 #252、#296 貼介面草案;負責人與 Farside 那一側確認後,宜芳分派這張的實作。實作的人第一步:在這張留言公告後,建檔案池桶與兩把權杖(Farside 寫、Slate 只讀),再做發代碼、寫清單檔、任務完成處顯示代碼。
提醒:① 本文〈還沒裁的〉三題都有著落了:第 1 題(成果存在哪)Farside 那一側 10/04 自己查到了——已經在 R2,但那是 Farside 自己的工作區桶,不是要另開的檔案池;第 2 題 10/05 定一次性 24 小時;第 3 題(池子上限、保存期)改成跟 #252 一起定。所以「待負責人裁決」這個標籤現在只剩第 3 題、而且要等 #252 草案,建議拿掉或改標,本文也該請負責人+Claude 更新。② 本文與 10/05 那則留言都寫了指定某位工程師實作;但負責人 10/05 補了一句「之後一律先給宜芳看、由她分派」,所以誰做由妳決定。③ 三張單互相等:這張等 #252 的草案;#252 從頭到尾的驗收等這張的池子和代碼;#297 排在 #252 之後——起點是 #252 草案。④ Farside 今天自動產出的只有 3DGS 的 .ply,第一輪驗收大概只能用 3D 檔;圖、報告、表格的出口要另外做(見〈還沒定的〉)。⑤ 本文〈測試方式〉的端到端要 #252 做好才跑得了;這張自己可以先驗權杖、代碼、清單檔三件。⑥ Farside 的程式碼在另一個 repo,寫這份時讀不到,Farside 任務完成處的畫面是照需求畫的線框,不是現在的樣子。

這張要解決什麼

在 Farside Compute 跑 GPU 任務的人,同時也用 Slate 畫布(例如把現場照片做成 3DGS 立體模型的設計師),任務跑完,成果只放在 Farside 自己的工作區;要放上 Slate 畫布只能自己下載再上傳,Slate 也不知道這個檔是哪個任務做出來的——要能 任務一完成就在 Farside 看到一組成果代碼和它的期限,複製下來拿去 Slate 畫布貼上,成果就帶過去了(貼的那一半在 #252)

一步一步 8 步

  1. 實作的人(宜芳分派) 先在 #296 留言公告要改 Cloudflare 設定,然後在 Cloudflare 開一個新的 R2 桶當檔案池,發兩把權杖:一把給 Farside、只能寫這個池子;一把給 Slate、只能讀這個池子
    池子存在。沒有任何一把權杖同時能寫池子又能碰 Slate 現在的檔案桶;Farside 對 Slate 的檔案桶讀寫都沒有。權杖清單截圖貼回這張單
    Cloudflare 後台:API 權杖清單(截圖貼回 #296 給 PM 看)
    API 權杖
    每把權杖一列:名稱、能碰哪個桶、讀或寫
    Farside 用的:檔案池・讀寫
    Slate 用的:檔案池・只能讀
    沒有一把同時碰檔案池和 Slate 的檔案桶
  2. 使用者(在 Farside) 跟今天一樣送一個 GPU 任務,例如用照片訓練 3DGS
    任務照常排隊、跑;這一段不改
  3. Farside 系統(任務跑完) 跟今天一樣把成果寫進 Farside 自己的工作區;再把這次要給使用者帶走的成果(圖、報告、表格、3D)放進檔案池。模型權重(checkpoint、LoRA)不放進池子
    池子裡有這次的成果檔。診斷紀錄 runner.log 不算成果、不放進去(Farside 那一側 10/04 的讀法)
  4. Farside 系統 產生一組成果代碼(亂數、至少 128 bit,不是檔案路徑、看不出任務或使用者),並在池子裡寫一份清單檔:版本、哪個任務、產生與過期時間;每個檔的原檔名、大小、檢查碼、類型、在池子裡的位置;權重只寫位置
    代碼 24 小時內有效、只能用一次。Slate 不用呼叫 Farside,用唯讀權杖讀得到這份清單(清單怎麼命名、欄位最後長什麼樣,照 #252 草案)
  5. 使用者(在 Farside) 打開剛完成的任務(任務完成頁或通知,放哪還沒定),看成果代碼,按複製
    代碼在剪貼簿裡,也看得到什麼時候過期
    Farside:任務完成處多一塊「成果代碼」(線框,照需求畫,不是現在的畫面)
    任務完成
    • 這次的成果:splat.ply・3D(Gaussian splat)・檔案大小
    模型權重:只記位置,不會帶到 Slate(有權重時才出現)
    複製代碼
    有效到 ○月○日 ○○:○○,只能用一次
    到 Slate 畫布左側的「從 Compute 匯入」貼上
  6. 使用者(在 Slate,#252 那一半) 打開畫布,按左側工具列的「從 Compute 匯入」,貼代碼、按匯入
    Slate 用唯讀權杖讀池子裡的清單與檔,複製進自己機構的區域、比對檢查碼,成果以檔案元件出現在畫布上。同一組代碼第二次貼就失敗(「已經用過」由誰記,寫在 #252 草案;Slate 不能刪池子裡的東西)
  7. 使用者 超過 24 小時才去 Slate 貼,或代碼弄丟了
    Slate 那邊回固定格式的錯誤。能不能回 Farside 再拿一組新的代碼,還沒定
  8. 檔案池(自動清理) 過了保存期,池子裡的檔自動刪掉(保存多久還沒定)
    R2 的自動清除會晚最多約一天,所以「代碼過期」不能靠池子刪檔來判斷,Slate 匯入時要看清單上的過期時間自己擋(Farside 那一側 10/04 查的)

已經定的 15 條

還沒定的 8 題

Slate 怎麼從一組代碼找到池子裡的檔?
  • A:Farside 在池子裡放一份以「代碼的雜湊」命名的清單檔,Slate 用唯讀權杖去讀
  • B:Slate 呼叫 Farside 的 API 問這組代碼對到哪些檔
建議:A(#296 本文第 3 點的建議,還沒定案):Slate 不用呼叫 Farside,守住「Compute 不需要知道 Slate 存在」
誰裁:#252 草案寫,負責人與 Farside 那一側確認
清單檔每個成果要寫哪些欄位?
  • 照 Farside 那一側 10/04 列的起點:版本、任務識別、產生與過期時間;每個檔的原檔名、大小、檢查碼與算法、類型與具體格式、池內位置、「複製」或「只記位置」
  • 再加別的(例如縮圖、說明文字)
建議:照 10/04 那份當起點;檢查碼用 SHA-256;3DGS 的 .ply 要在類型寫明是 Gaussian splat,不能只靠副檔名(Farside 那一側 10/04 的建議,未定)
誰裁:#252 草案寫,負責人與 Farside 那一側確認
「這組代碼已經用過」由誰記?只讀清單檔不會自己失效,Slate 也不能刪池子裡的東西
  • Slate 自己記
  • Farside 記,Slate 兌換時回頭通知 Farside
誰裁:寫進 #252 草案(#326 指定),負責人確認
檔案池的檔留多久、池子總共多大?
  • 代碼過期後幾天就清(反方向 #297 的交換桶定的是 7 天)
  • 留久一點,讓使用者可以重新拿代碼
建議:#252 草案提一個數(#326:跟匯入政策一起定)
誰裁:負責人
代碼過期或弄丟了,能不能在 Farside 重新拿一組?
  • 可以:池子裡的檔還在,就能對同一批成果再發一組新代碼
  • 不行:過期就只能自己下載再到 Slate 上傳
誰裁:負責人(跟保存期一起定)
成果代碼放在 Farside 的哪裡給使用者看?
  • 任務完成頁
  • 通知
  • 兩個都放
誰裁:負責人(本文寫「任務完成頁或通知」,沒選)
模型權重「只記位置」要記到哪裡?Farside 目前的自動流程不收權重,只記 GPU 機器上的暫存路徑不夠(任務結束就沒了)
  • Farside 先把權重放到一個會留著的位置,清單檔再記那個位置
  • 第一版先不處理權重,等之後補
誰裁:Farside 那一側回答現況,負責人決定第一版做不做
Farside 今天的自動出口只有 3DGS 的 .ply;圖、報告、表格要不要在第一版就有出口進池子?
  • 第一版只做 3DGS,其他類型之後補
  • 第一版就做成各種類型都能放進池子
誰裁:負責人

怎麼驗收 8 項

這張不做

相關的單