跳至主要內容

範本

報價決定你拿到什麼硬體。範本決定上面跑什麼。部署時兩者都要有:你在市集中挑選報價,部署頁面會把它一路帶著走,同時讓你挑選範本。

範本是一份啟動配方

範本是對「這台機器應該開機進入什麼」這個問題所存下的答案。它帶著:

部分它決定的事
映像檔與標籤要拉取的容器映像檔,也可以來自私有登錄檔。
啟動模式容器如何啟動,以及隨附哪些連接埠。
連接埠哪些容器連接埠會被發布,每個都附一個標籤。
環境交給容器的變數。值可以標示為機密。
啟動時腳本容器第一次啟動時在容器內執行的指令。之後再啟動不會重跑。
限制條件最低 CUDA 版本、最低 VRAM,以及部署頁面在讓你啟動前會檢查的其他硬體下限。

範本永遠不會指名某一台機器。它的限制條件是下限 — 最低 CUDA 版本、最低 VRAM — 而不是綁死的主機,所以同一個範本不用修改就能部署到 1× RTX 4090 或 8× H100 PCIe 上,只要兩者都跨過那些下限。這就是為什麼值得存一個範本,而不是每次都重新輸入同樣的設定。

啟動模式

啟動模式是唯一會改變執行個體形態而非內容的欄位。

模式你會得到什麼
ssh一台 SSH 伺服器。系統會替你加上連接埠 22。
jupyterJupyterLab 加上一個 SSH shell。系統會替你加上連接埠 22 與 8080。
args映像檔本身的進入點,以你提供的引數執行。無互動介面。
vm完整的 KVM 虛擬機器。只能部署到支援 VM 的報價上。

sshjupyter 需要以 Superheat 基礎映像檔為基底的映像檔,因為這兩種模式仰賴基礎映像檔的進入點來啟動 SSH 常駐程式與 JupyterLab。argsvm 可以跑任何映像檔。請參閱啟動模式

不論你的範本設定什麼,平台都會把自己的環境疊在上面,而且以疊上去的那層為準。你無法從範本覆寫 JupyterLab 權杖或 GPU 數量。環境變數說明平台控制了哪些部分。

可見性

每個範本都是三種可見性層級之一。

可見性誰看得到誰能編輯
system所有人。這些是 Superheat 維護的精選起點。沒有人。系統範本透過 API 是不可變更的。
private只有擁有它的組織。這是你所建立的任何東西的預設值。該組織。
public所有人。任何帳號都可以讀取這份配方。擁有它的組織。

機密的環境值對擁有組織以外的任何人都會遮蔽,所以公開範本只會分享配方,不會洩漏其中內建的憑證。

你不能編輯不屬於你的系統範本或公開範本,但你可以複製任何你看得到的範本。副本會以 private 落在你的組織裡,由你自由修改。複製別人的範本會清空它的機密值與私有登錄檔憑證 — 這些要你自己填。

為什麼範本有兩個身分

範本有一個固定的 id 和一個 hash_idhash_id 是與啟動相關欄位的內容雜湊 — 映像檔、標籤、儲存庫、模式、引數、啟動時腳本、環境、連接埠、限制條件、Jupyter 目錄與 JupyterLab 開關,以及私有登錄檔使用者名稱 — 並加上 th_ 前綴。

只要其中任何一項改變,它就會重新產生;當擁有者編輯名稱、描述、readme、可見性或排序時,它維持不變。啟動配方有自己的身分,與存放它的那筆資料是分開的。

這個切分讓你有兩種方式指向一個範本:

你分享的東西行為
id跟著範本走。如果擁有者改變了它啟動的內容,你的連結就會啟動新的版本。
hash_id指向一份確切的配方。如果擁有者改變了它啟動的內容,舊的雜湊就再也解析不到。

當有人需要重現你的執行結果時,要用第二種。過期的雜湊連結會明確地失敗,而不是默默啟動一個已經不是你測過的東西。API 在 GET /v1/templates/by-hash/{hash_id} 解析它。

相關內容