節點參考
CodefyUI 內建 158 個節點,涵蓋 16 大類別。已安裝的 外掛包 與你自己的 自訂節點 會再加入更多。
提示
此表反映目前版本,但後端才是權威來源。請查看即時節點面板或 GET /api/nodes,確認目前安裝可用的節點。雙擊畫布可搜尋節點。
| 類別 | 節點 | 數量 |
|---|---|---|
| CNN | Conv2d、Conv1d、Conv2dExplicit、ConvTranspose2d、MaxPool2d、AvgPool2d、AdaptiveAvgPool2d、BatchNorm2d、Dropout、Activation | 10 |
| RNN | LSTM、GRU、RNNCell | 3 |
| Transformer | MultiHeadAttention、TransformerEncoder、TransformerDecoder、MoELayer | 4 |
| RL | DQN、PPO、EnvWrapper、RewardModel、KLDivergence、PolicyRollout、PPOClipObjective、GroupRelativeAdvantage、Discount、GridWorldEnv、PreferenceDataset、BradleyTerryLoss、BradleyTerryTrain、RLTrainingLoop | 14 |
| 資料 (Data) | Dataset、ImageFolderDataset、DataLoader、DatasetBatch、Transform、HuggingFaceDataset、KaggleDataset、TensorInput、TextInput、CSVReader、ColumnSelector、RowSelector、Normalize、SyntheticDataset、SyntheticShapes、SyntheticSegmentation、SyntheticSequence、TrainTestSplit、KFoldSplit、DatasetSplit、ResizeTransform、ToTensorTransform、NormalizeTransform、RandomCrop、RandomHorizontalFlip、RandomRotation、ColorJitter、RandAugment、ComposeTransform、TensorDataset | 30 |
| 資料流 (Data Flow) | Map、Reduce、Switch | 3 |
| 訓練 (Training) | Optimizer、Loss、TrainingLoop、EvaluateModel、LRScheduler、SequentialModel、BackwardOnce | 7 |
| IO | ImageReader、ImageWriter、ImageBatchReader、FileReader、CheckpointSaver、CheckpointLoader、ModelLoader、ModelSaver、Inference、GraphInput、GraphOutput、VideoLoad、VideoWrite | 13 |
| 控制 (Control) | Start | 1 |
| 工具 (Utility) | Print、Reshape、Concat、Flatten、Linear、Visualize、Embedding、PythonScript、ScatterPlot2D、DecisionBoundary | 10 |
| 正規化 (Normalization) | BatchNorm1d、LayerNorm、GroupNorm、InstanceNorm2d | 4 |
| 張量運算 (Tensor Operations) | Add、MatMul、Mean、Multiply、ScalarMultiply、Permute、Softmax、Argmax、Split、Squeeze、Stack、TensorCreate、Unsqueeze、MaskedFill、TensorStats | 15 |
| LLM | LLMChat、Tokenizer、WordVector、TextEmbedding、EmbeddingScatter、CosineSimilarity、AttentionMask、AttentionHeatmap、PositionalEncoding、CausalLMModel、LMCrossEntropyLoss、LMTokenizer、TextCorpusDataset、LMTokenizedDataset、DataMixDataset、PerplexityEvaluate、TextGenerate、DocumentLoader、TextChunker、VectorStore、Retriever、PromptBuilder、HFTextGenerate | 23 |
| 傳統機器學習 (Classical) | KNN、LinearRegression、LogisticRegression、DecisionTreeClassifier、RandomForestClassifier、SVMClassifier、MLPClassifier、Accuracy、RegressionMetrics | 9 |
| Diffusion | Upsample、TimestepEmbedding、Lerp、GaussianNoise、DDPMSampler、DiffusionUNet、DiffusionTrainingLoop | 7 |
| VLA | VLAModel、VLARollout、VLAActionEval、PushWorldEnv、PushWorldDemos | 5 |
重點節點
Start(控制)— 定義執行進入點。每個可執行的圖都需要一個;請參閱你的第一個圖。TensorInput(資料)— 提供內嵌格狀編輯器,用來輸入明確的張量值。教學檢視器範例會以此節點作為輸入。- 變換鏈(資料)— 九個節點會組成
transforms.Compose:ResizeTransform將圖片縮放為正方形;ToTensorTransform將 PIL 圖片轉為[0, 1]張量;NormalizeTransform套用逐通道正規化並提供預設組合;RandomCrop、RandomHorizontalFlip、RandomRotation、ColorJitter與RandAugment套用資料增強;ComposeTransform則合併兩條分別建構的鏈。參數與順序規則請參閱資料與資料增強。 ImageFolderDataset(資料)— 依 torchvisionImageFolder預期的目錄結構,從每個類別各自的目錄載入圖片。接上選用的path輸入時,會取代path參數。- 表格資料訓練路徑(資料、傳統機器學習)—
CSVReader→TrainTestSplit→TensorDataset→DataLoader→TrainingLoop可以用 CSV 訓練神經網路。回歸目標請把CSVReader的target_type設為number,目標就會以浮點數列表輸出。TensorDataset把特徵與目標配對:number產生 float32 目標,一維目標會變成[N, 1],對齊單一輸出的模型;class產生給CrossEntropyLoss用的 int64 類別索引;測試集的TensorDataset要把訓練集那一個的classes輸出接到自己的classes輸入,即使測試集缺少某個類別,兩邊的類別編號仍然一致;token讓整數目標維持原本形狀並轉成 int64,例如給LMCrossEntropyLoss用的[N, T]下一個 token 編號。RegressionMetrics比較預測值與真實值,輸出 MSE、MAE 與 R²,並和Accuracy記錄accuracy一樣,把它們記錄為 run metric。KFoldSplit的輸入與TrainTestSplit相同,會把 k 折切分(sklearn 的KFold,開啟stratify時為StratifiedKFold)中的一折留作x_val與y_val;用掃描把fold參數從 0 跑到n_folds- 1,就是 k 折交叉驗證。LinearRegression可以直接接收切分後的y_train列表,所以 CSV 回歸不需要ColumnSelector。 TrainingLoop(訓練)— 執行訓練,並將即時 loss 圖表傳至結果面板。它的選項與記錄的指標序列列在訓練迴圈與 loss 圖表。其進階區段包含記憶體控制項precision與accumulate_steps(請參閱訓練記憶體),以及strategy:設為ddp時,會在指派兩張以上 GPU 的 worker run 中以多張卡訓練同一個模型(請參閱多 GPU 執行)。SequentialModel(訓練)— 以單一節點表示層堆疊。雙擊節點可開啟模型架構編輯器。編輯器提供依類別分組且可搜尋的層級面板,以及用來連接各層的畫布。架構必須恰好包含一個Input節點與一個Output節點,合併層則提供連接埠清單編輯器。控制項包括吸附 ON/OFF、由上至下的自動排列、JSON 匯入與匯出,以及套用。驗證會拒絕循環。匯出會把架構下載為model_architecture.json。匯入可讀取這種檔案或畫布圖的.json:檔案中的層節點會轉成Input→ 各層 →Output的鏈;若沒有層節點,則載入其中的SequentialModel(有多個時,會以選擇要匯入的 SequentialModel詢問要匯入哪一個)。其他檔案會失敗並顯示匯入失敗:此檔案沒有層級或 SequentialModel 節點。 參數在層級中意義不同的畫布節點會在匯入時轉換:Reshape的形狀去掉 batch 項、Embedding的padding_idx為 -1 時移除,LayerNorm、AdaptiveAvgPool2d與MultiHeadAttention的參數會改寫。自注意力節點的 query、key、value 三條連線會合併成它唯一的輸入。層級編輯器無法表示的節點(alpha不為 1 的Add、交叉注意力節點、沒有 batch 項的Reshape)會中止匯入,並以訊息指出是哪個節點;畫布上的Mean是對單一張量取平均,匯入時會略過並顯示警告。匯入只會取代編輯器目前顯示的內容;點擊套用後節點才會變更。Subtract、Concat與Stack的結果取決於運算元順序,因此卡片上每個運算元各有一個標示的輸入(Subtract為a/b,Concat與Stack為in0、in1、...),運算元依此順序取用。在這些標示出現前儲存的架構,沿用當初連線的順序,編輯器開啟時也會依該順序標示。EmbeddingScatter(LLM)— 使用 PCA 或 t-SNE 將嵌入向量投影至 2D,並顯示可縮放的散佈圖。AttentionHeatmap(LLM)— 傳遞 attention weight,可選擇其中一個 head,並傳遞選填的 token 標籤。節點卡片會將 weight 顯示為 heatmap,另提供完整尺寸的檢視器。- 由套件包提供的後端(LLM)—
WordVector的glove-50d與句子編碼器選項,以及整個TextEmbedding,都會載入套件中心所安裝的模型。未安裝模型的選項會顯示為灰色。若缺少的選項是圖中已儲存的目前值,該選項仍可選取並會顯示警告。執行圖時不會下載這些模型。套件包大小、檔案位置與編碼器選擇方式請參閱選用套件包。 - 語言模型鏈(LLM)— 八個節點組成 GPT 式解碼器的訓練路徑:
TextCorpusDataset從 Hugging Face Hub 或本機.txt讀取文字列;DataMixDataset將 2 到 6 個這類語料混合成一個資料集:ratio讓weights決定各語料在total_rows列輸出中的占比,必要時重複或抽樣文字列;interleave每一列只用一次,因此占比等於各語料的大小,weights只決定各語料在seed固定的順序中的分布;concat依序讀完各個語料作為課程;LMTokenizedDataset建立固定長度的下一詞元區塊;DataLoader將批次供應給TrainingLoop;CausalLMModel提供模型;LMCrossEntropyLoss提供 loss;LMTokenizer則提供共用的 tokenizer(tiktoken 的 BPE 詞彙表,或詞彙量小到適合字元層級模型的byte與char編碼)。PerplexityEvaluate會評估保留資料切分,TextGenerate則從已訓練權重取樣文字。CausalLMModel的預設值會產生 203,668,480 個參數;若要在筆電上訓練,請降低d_model與n_layers。請參閱範例集中的 Pretrain an LM on TinyStories。 - RAG 鏈(LLM)— 七個節點使用指定文件作為回答脈絡:
DocumentLoader將目錄中的每個.md與.txt讀取為{text, source};TextChunker建立可嵌入的切塊,並保留來源名稱與字元位移;TextEmbedding建立向量;VectorStore將一個[N, D]矩陣與切塊文字一併儲存,並以一次矩陣乘法搜尋;Retriever回傳最接近的top_k個切塊與分數;PromptBuilder將切塊及問題插入限定脈絡的範本;HFTextGenerate則在本機執行 Qwen2.5-0.5B-Instruct。你可以用LLMChat取代HFTextGenerate,改用 Ollama 或託管提供者。TextEmbedding需要sentence-embeddings套件包,HFTextGenerate需要rag套件包。請參閱範例集中的 Fully local RAG 與 RAG with a chat API,下載內容則請參閱選用套件包。 - VLA 鏈(VLA)— VLA 類別包含五個專用節點。訓練與評估圖會連接
PushWorldEnv、PushWorldDemos、VLAModel與TrainingLoop,再使用VLAActionEval和VLARollout。PushWorldEnv以 torch 實作受語言條件控制的 2D 推動任務;干擾圓盤會使策略必須讀取指令才能識別目標。PushWorldDemos會建立 scripted-expert 行為複製樣本與保留資料切分。VLAModel結合視覺前端、位元組層級指令嵌入、Transformer 主幹與分塊動作專家。VLAActionEval會測量相對於 expert 的保留資料開迴路 MSE,VLARollout則以滾動時域執行測量閉迴路成功率。Train a VLA on PushWorld 的 README建議使用 CUDA GPU,並記錄 RTX 4080 約需執行 56 分鐘。 - RL 節點(RL)—
GridWorldEnv提供不依賴 Gymnasium 的 gridworld。PolicyRollout會執行策略 N 個回合,並記錄狀態、動作、獎勵與 logits。Discount計算 return,GroupRelativeAdvantage計算 GRPO 的群組平均 baseline,PPOClipObjective則計算 PPO 的 clipped surrogate,並回傳指出哪些樣本使用 clipped branch 的 mask。RewardModel會為每個 sequence 產生一個純量分數。PreferenceDataset建立訓練與保留 preference pair;BradleyTerryLoss計算 preference loss;BradleyTerryTrain訓練 reward head,並回報訓練與保留資料的 accuracy,以呈現捷徑學習。KLDivergence計算 policy 相對於 reference 的正則化項。DQN、PPO與EnvWrapper會與 Gymnasium 整合。RLTrainingLoop以 REINFORCE、DQN 或 PPO 完整訓練一個智能體:接上模型(REINFORCE 與 DQN 用DQN或SequentialModel,PPO 用PPO的 actor-critic)、EnvWrapper或GridWorldEnv的環境,以及Optimizer。它會跑episodes個回合,或在最近 20 個回合的平均回報達到target_return時停止,同時繪製即時 loss 曲線並把mean_return記錄為 run metric。請參閱範例集中的 RLHF reward and KL terms。 - Diffusion 鏈(Diffusion)—
GaussianNoise建立帶 seed 的 noise,並可符合上游張量的 shape。DiffusionUNet提供將(x, t)映射至 predicted noise 的 toy U-Net,DiffusionTrainingLoop則訓練此模型。DDPMSampler在單一節點內執行 reverse process,使圖維持無環;其詳細 trace 會記錄 trajectory snapshot。TimestepEmbedding、Upsample與Lerp可用來明確建構相同運算。Diffusion 範例包括 Forward diffusion on a digit(GaussianNoise與Lerp),以及 Toy reverse diffusion sampling 和 Mini U-Net node(GaussianNoise→DiffusionUNet→DDPMSampler)。請參閱範例集。 ModelSaver/ModelLoader(IO)— 寫入與讀取模型檔。預設的state_dict模式會儲存張量,且不要求載入任何類別。full_model模式會儲存以 pickle 序列化的模組,並使用受限解序列化器載入;此解序列化器允許 torch 與 CodefyUI 的 layer class,以及 CodefyUI Transformer layer 所儲存的兩個 torch activation function。模式選擇與載入需求請參閱儲存與載入模型。VideoWrite/VideoLoad(IO)—VideoWrite將(T, C, H, W)或(T, H, W, C)的影格張量編碼後寫入媒體資料夾(backend/data/media,專案目錄模式下為assets/media)。format為auto時,若PATH中有ffmpeg執行檔就寫出 mp4,否則透過 Pillow 寫出 gif;選mp4則必須有 ffmpeg。相同的filename會覆寫先前的影片。執行紀錄與檢視器會直接播放 mp4,gif 則以圖片顯示;preview輸出是中間影格的 PNG。VideoLoad會將影片解碼為數值在[0, 1]的(T, 3, H, W)影格,並輸出fps與num_frames;相對的path會從媒體資料夾讀取。mp4 與 webm 需要ffmpeg與ffprobe執行檔,gif 只需要 Pillow;max_frames與stride可限制保留在記憶體中的影格數。ImageWriter/ImageBatchReader(IO)—ImageWriter把張量存成影像,寫到資料目錄的output資料夾(backend/data/output,專案目錄模式下為assets/output)。image輸入接受(C, H, W)或(H, W)的單張影像,或(N, C, H, W)的批次,數值為[0, 1]的浮點數或 uint8。超過一張的批次會每張各寫一個檔案,檔名後面加上補零的編號(shape.png會寫成shape_0.png、shape_1.png……)。path、paths與directory輸出列出寫入的檔案與資料夾。ImageBatchReader把目錄裡符合樣式的影像堆成(N, C, H, W);把ImageWriter.directory接到它選用的directory輸入,會取代directory參數,並讓讀取排在寫入之後。接上的目錄和參數一樣,必須位於資料目錄或範例目錄之內。觸發邊不會決定兩個節點的先後,讀取能排在寫入之後靠的是這條資料邊。Switch(資料流)— 依從 0 開始的索引,轉發其中一個輸入。selector參數設定索引;selector埠有接線時,改用執行時算出的值。接上最後一個空輸入時會再多出一個,最多 16 個。索引超出範圍或指到沒接線的輸入時,執行會停止並回報錯誤;若是selector參數如此設定,Run 會在任何節點執行前就拒絕。輸出的型別就是已接線輸入的型別,這些輸入必須是同一種型別。用selector參數選擇時,只接到未選輸入的節點都會被略過:不執行、不快取,也不會出現在匯出的 Python 中,卡片上會顯示未選取。用selector埠選擇時,要到執行中才知道選哪個,所以所有已接線的輸入都會先算完,未被選到的輸入若出錯,執行仍會停止。需要讓多個來源接到同一個輸入時,請把它們接到一個 Switch。
連接埠資料型別
連線是有型別的。內建的資料型別包括:Tensor、Model、Dataset、DataLoader、Optimizer、Loss、Scalar、String、Image、List、Transform、Any、Trigger。Trigger 型別正是 Start 節點所發出、用來驅動執行順序的型別,而 Transform 則是變換鏈節點之間互相傳遞的型別。