教學檢視器
CodefyUI 可用於互動式教學,讓學生查看流經每個節點的實際 tensor。教學檢視器會在 run 期間擷取節點輸出,並顯示在右側面板。
操作說明
- 將
TensorInput節點拖到畫布上(Data 類別)。設定value_mode: explicit,再於內嵌格線中填入 pipeline 要接收的數值。 - 將它連接到任意一串 tensor 運算節點,例如
Reshape → Softmax → Print。 - 新增一個
Start節點,並將 trigger 輸出連到要開始執行的第一個節點,通常是TensorInput。若缺少這個節點,圖會視為草稿並拒絕執行,詳見你的第一個圖。 - 錄製節點輸出預設為開啟。請在設定 → 錄製與檢視中確認它仍開啟,再點擊執行。每個已完成節點的完整輸出會以 run 為 key,擷取到伺服器記憶體。
- 點擊任一節點。檢視器面板會取得該節點的輸入與輸出,由上到下顯示 shape、dtype、min/max/mean 及實際數值。發生變更的儲存格會以熱度著色。
- 使用 Shift 選取兩個節點,再點擊建立段落(設定 → 錄製與檢視 → 段落比較),只查看 head 輸入與 tail 輸出。畫布會以淺橘色區域包住這些節點,並顯示 HEAD/TAIL 標記。
- 若不需要擷取重度訓練的每個 epoch,請先關閉錄製節點輸出。已擷取的 run 在被逐出或伺服器重啟之前仍可查閱。
擷取的輸出會存放在所有分頁共用的伺服器層級 store 中,最多保留最新 20 個 run,容量上限為 2 GiB(CODEFYUI_RUN_OUTPUT_STORE_MAX_MB,預設 2048)。超過任一上限時,會從最舊的完整 run 開始逐出。從執行任務面板刪除 run 也會移除其擷取輸出,詳見訓練記憶體。段落標記會儲存在 graph JSON 中。
建立或清除段落標記都可復原。Ctrl+Z 會還原誤刪的標記,也會還原被收合成子圖或刪除操作移除的標記,並恢復原本的聚焦狀態。
檢視器面板
選取節點、啟用段落,或將外掛面板停駐在右側時,右側欄會顯示。選取節點時,其中有三個分頁:
| 分頁 | 顯示內容 |
|---|---|
| 前向 | 輸入依序顯示在輸出上方,每個 port 都有依型別著色的圓點;tensor 會顯示為數值格線,變更的儲存格以熱度著色。 |
| 步驟 | 開啟顯示內部步驟時,已插樁的節點所發出的 __steps__ 追蹤,詳見下文。 |
| 反向 | 開啟擷取梯度時擷取的權重與輸出梯度,詳見下文。 |
啟用段落後,段落檢視會取代節點檢視,顯示「段落」標頭、段落輸入(N)及段落輸出(N)。段落輸入包含進入 head 到 tail 節點集合的每條 edge。建立段落需要恰好選取兩個節點。畫布上可以同時有多個段落;區域上的 x 只會移除該段落,取消當前段落會清除檢視器目前顯示的醒目段落。按 › 可將面板收合為窄條。
節點詳情
雙擊節點、選取後按 Enter,或按右鍵 → 開啟節點詳情,即可開啟節點詳情對話框。左側顯示參數表單,右側顯示檢視器中的節點資訊。
| 分頁 | 顯示內容 |
|---|---|
| 程式碼 | 僅適用於 script 節點,且是開啟這類節點時的預設分頁;其中有 script editor 與輸入/輸出 port 數量。 |
| 子圖 | 僅適用於 subgraph 實例;其中有 block 的邊界 port 與進入子圖按鈕。 |
| 輸入/輸出 | 各 port 擷取的數值,顯示方式與檢視器的前向分頁相同。 |
| 步驟/反向傳播 | 步驟追蹤與擷取的梯度;分頁有 run 可供讀取後即可使用。 |
| 統計 | 伺服器為每個 port 計算的摘要統計,詳見下文。 |
| 說明 | 節點說明、參數的預設值/範圍/選項,以及各個 port。 |
按 Left/Right 可在不關閉對話框的情況下切換到畫布上的上一個/下一個節點,按 Esc 可關閉。點擊節點名稱會顯示重新命名欄位;Enter 套用,Esc 取消。run 結束後點擊 edge,可查看流經內容的 type、shape、dtype、min/max/mean 摘要。其中的查看統計連結會開啟節點詳情,並在統計分頁中聚焦該 port。
統計分頁
GET /api/execution/outputs/{run}/{node}/{port}/stats 會回傳已擷取 port 的固定大小摘要,而不是實際數值。元素數、min、max、NaN 與 Inf 數量、零值比例,以及 integer label tensor 的類別分佈一律精確。mean、std、quantile 與 64-bin histogram 在不超過 400 萬個元素時也會精確計算;超過時則使用以 seed 固定的 100 萬元素樣本,並在回應中標記 "sampled": true(CODEFYUI_STATS_SAMPLE_THRESHOLD、CODEFYUI_STATS_SAMPLE_SIZE)。計算後的摘要會快取,總上限為 CODEFYUI_STATS_CACHE_MAX_BYTES(8 MB)。
設定 popover 的開關
工具列的設定 popover 會依區段集中顯示每個分頁的教學與訓練開關:
| 區段 | 設定 | 用途 |
|---|---|---|
| 執行 | 運算裝置 | run 使用的裝置;設為 auto 的節點會跟隨此設定。預設為 CPU。 |
| LLM 提供者 | ChatGPT Codex 帳號 | Codex provider 的登入/登出/重新檢查,詳見 Graph Copilot。 |
| 選用套件 | 套件中心 | 開啟套件中心;這一列會顯示已安裝的套件數量。 |
| 外掛 | 外掛中心 | 開啟外掛中心。 |
| 錄製與檢視 | 錄製節點輸出 | 擷取每個已完成節點的完整輸出,供檢視器使用。預設開啟;請在大量訓練前關閉。 |
| 顯示內部步驟 | 已插樁的節點會記錄中間步驟,例如 attention score 與 softmax temperature,並提供給步驟分頁。開啟時不會使用快取,所有節點都會重新執行。 | |
| 段落比較 | 建立段落會將選取的兩個節點包在 HEAD/TAIL 區域中;取消當前段落會移除醒目的段落。 | |
| 訓練行為 | 在多次執行間保留權重 | 在多次點擊執行之間保留 Conv2d/Linear/Attention 權重,讓模型持續學習。預設開啟;關閉時每個 run 都會重新初始化。 |
| 立即重置所有權重 | 移除這個分頁所有快取的權重;下一次執行會重新初始化。 | |
| 擷取梯度 | 執行 forward + .backward(),並儲存各 layer 的梯度供反向分頁使用。開啟時不會使用快取,所有節點都會重新執行。 | |
| 自動合成損失 | 圖中沒有 Loss/BackwardOnce 節點時,自動合成一個 loss,讓 .backward() 能執行。 | |
| 亂數種子 | 使用一個數字為每個節點設定 seed;留空表示不設定。seeded run 一次只執行一個節點,詳見可重現的執行。 | |
| 決定性演算法 | 要求 PyTorch 使用決定性 kernel(warn_only)。這項設定會與 seed 及裝置一起隨 run 送出。 | |
| 編輯器 | 對齊格線 | 拖曳節點時自動對齊畫布格線。 |
| 顯示節點說明 | 將滑鼠停在畫布節點上時顯示說明卡片。 | |
| 節點分類模式 | 入門 只在側欄顯示必要類別;全部 顯示所有類別。 | |
| 連線樣式 | 電路板(預設)將數值連線畫成電路板走線,曲線則使用平滑曲線。 | |
| 這台伺服器 | — | 顯示版本、節點與預設組合數量,以及每個記憶體內 store 相對於預算的使用量,並提供重新讀取按鈕。 |
步驟追蹤(顯示內部步驟)
開啟顯示內部步驟後,已插樁的節點會發出 __steps__ 追蹤,檢視器會逐列顯示。教學用外掛節點會使用這項功能。例如,Edu-ColumnStats 會將母體標準差公式顯示為 sum → divide → deviations² → variance → sqrt。詳見 外掛。
擷取梯度(反向分頁)
開啟擷取梯度後,引擎會執行 forward pass、呼叫 .backward(),並儲存各 layer 的梯度。在檢視器中開啟節點的反向分頁,即可查看每個 layer 的梯度大小,用於診斷梯度消失或梯度爆炸。
完整尺寸檢視器
五張 attention 卡片(attention heatmap、attention mask,以及三個 Edu attention 節點)有查看完整按鈕,embedding scatter 卡片則是開啟詳細檢視;兩者都會在完整尺寸的 heatmap 或 scatter 檢視器中開啟圖表。捲動畫布、縮放或變更 layout 時,檢視器仍會保持開啟;按 Esc 可關閉。