a3f63e56e2
- 10_Wiki/Comfyui/: ComfyUI docs generated via /wikify - 00_Raw/_youtube/: /youtube extraction outputs - Move some 00_Raw originals into 10_Wiki/Topics_meeting; remove empty canvases and stray files Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
79 lines
5.8 KiB
Markdown
79 lines
5.8 KiB
Markdown
---
|
|
id: execution-model-inversion-guide---comfyui
|
|
title: "Execution Model Inversion Guide - ComfyUI"
|
|
category: "10_Wiki/Topics"
|
|
status: "draft"
|
|
verification_status: "conceptual"
|
|
canonical_id: ""
|
|
aliases: []
|
|
duplicate_of: ""
|
|
source_trust_level: "B"
|
|
confidence_score: 0.8
|
|
created_at: 2026-05-20
|
|
updated_at: 2026-05-20
|
|
review_reason: ""
|
|
merge_history: []
|
|
tags: ["web", "wikify"]
|
|
raw_sources: ["https://docs.comfy.org/development/comfyui-server/execution_model_inversion_guide"]
|
|
applied_in: []
|
|
github_commit: ""
|
|
---
|
|
|
|
# [[Execution Model Inversion Guide - Com뮬UI]]
|
|
|
|
## 🎯 한 줄 통찰 (One-line insight)
|
|
PR #2666을 통해 실행 모델이 기존의 역방향 재귀 모델에서 순방향 위상 정렬(front-to-back topological sort) 방식으로 변경됨에 따른 커스텀 노드 개발자용 가이드입니다.
|
|
|
|
## 🧠 핵심 개념 (Core concepts)
|
|
* **실행 모델 전환**: [[PR #2666]]을 통해 실행 모델이 back-to-front recursive model에서 front-to-back topological sort로 반전되었습니다.
|
|
* **선택적 입력 검증 (Optional Input Validation)**: 기존에는 "required" 입력에 대해서만 검증이 이루어졌으나, 이제는 "optional" 입력을 사용하는 커스텀 노드에 대해 새로운 검증 규칙과 대응 방안이 적용됩니다.
|
|
* **실행 순서의 비결정성 (Execution Order)**: 실행 순서는 노드의 ID나 캐시된 값에 따라 달라질 수 있으며, 그래프 구조 외의 요소에 의존해서는 안 됩니다.
|
|
* **지연 평가 (Lazy Evaluation)**: 입력값이 필요한 시점까지 평가를 미루는 기능이 도입되었습니다.
|
|
|
|
## 📌 추출된 패턴 (Extracted patterns)
|
|
* **Monkey Patching의 위험성**: 실행 모델을 [[Monkey Patching]]하는 코드는 새로운 모델에서 작동하지 않을 가능성이 높습니다.
|
|
* **검증 실패 대응 전략**: 커스텀 노드 작성 시 검증 오류를 피하기 위해 `VALIDATE_INPUTS` 함수를 정의하거나, 특정 데이터 구조(예: 리스트 대신 딕셔계 사용)를 사용하는 패턴이 권장됩니다.
|
|
* **확장성 (Node Expansion)**: 런타임에 노드가 서브그래프로 확장되어 루프 구현을 가능하게 하는 구조를 가집니다.
|
|
|
|
## 📖 세부 내용 (Details)
|
|
|
|
### 1. 입력 검증 오류 및 해결 방법 (Optional Input Validation)
|
|
커스텀 노드 작성 시 발생할 수 있는 검증 실패 사례와 권장 솔루션입니다.
|
|
|
|
| 발생 원인 | 상세 내용 | 권장 솔루션/대응 |
|
|
| :--- | :--- | :--- |
|
|
| **예약된 추가 파라미터 오용** | 비교 불가능한 타입(예: 딕셔너리)에 `min`, `max` 같은 예약어를 사용 | `uiMin`, `uiMax`와 같은 비예약 키로 변경하여 사용 |
|
|
| **복합 타입 (Composite Types)** | `CUSTOM_A, CUSTOM_B`와 같은 형태의 출력/입력 사용 시 검증 문제 발생 | 출력 시에는 `MakeSmartType`과 같은 래퍼(Wrapper)를 정의하여 사용하거나, 입력 시에는 `VALIDATE_INPUTS`를 통해 검기 스킵 |
|
|
| **상수 리스트 사용** | 그래프 정의 내에서 `[1, 2, 3]`과 같은 리스트를 상수로 사용 (이전에는 프론트엔드 확장이 필요했음) | 리스트를 `{ "value": [1, 2, 3] }`와 같이 딕셔너리 형태로 감싸서 사용 |
|
|
|
|
### 2. VALIDATE_INPUTS 함수의 새로운 기능
|
|
검증 오류 영향을 줄이기 위해 추가된 기능들입니다.
|
|
* **기본 검증 스킵**: `VALIDATE_INPUTS` 함수에 의해 수신된 입력은 기본 검증이 생략됩니다.
|
|
* **kwargs 지원**: `**kwargs`를 처리할 수 있어, 노드 작성자가 모든 입력을 검증된 것으로 간주하게 할 수 있습니다.
|
|
* **input_types 인자**: 이 인자가 존재하면 연결된 출력 타입과 입력 타입을 매핑하는 딕셔너리를 제공하며, 이때 타입 검증이 생략됩니다.
|
|
|
|
### 3. 기타 기능적 변화
|
|
* **Lazy Evaluation**: 노드와 그 조상(ancestors) 노드를 평가하기 전에 필요 여부를 먼저 확인하여 효율성을 높입니다.
|
|
* **Node Expansion**: 런타임 시 노드가 서브그래프로 확장되어 [[tail-recursion]]을 통한 루프 구현을 지원합니다.
|
|
|
|
## ⚖️ 모순 및 업데이트 (Contradictions & updates)
|
|
* **업데이트**: 실행 모델이 기존의 back-to-front 재귀 방식에서 front-to-back 위상 정렬 방식으로 완전히 뒤집혔습니다(Inverted)는 점이 가장 중요한 기술적 변화입니다.
|
|
* **주의사항**: 실행 순서가 캐시 값에 따라 변할 수 있으므로, 그래프 구조 이외의 요소에 의존하는 것은 위험하다는 경고가 포함되어 있습니다.
|
|
|
|
## 🛠️ 적용 사례 (Applied in summary)
|
|
* **커스텀 노드 개발자**: 새로운 실행 모델 하에서 기존 커스텀 노드가 깨지는 것을 방지하기 위해 `uiMin/uiMax` 사용, `VALIDATE_INPUTS` 정의, 리스트의 딕셔너리화 등의 대응책을 적용해야 합니다.
|
|
|
|
## ✅ 검증 상태 및 신뢰도
|
|
- **상태:** draft
|
|
- **검증 단계:** conceptual
|
|
- **출처 신뢰도:** B (Primary Source — 웹사이트 본문 직접 추출)
|
|
- **중복 검사 결과:** 신규 생성 (New discovery)
|
|
|
|
## 🔗 관련 문서 링크 (Related document links)
|
|
* [[PR #2666]] : 실행 모델의 구조적 변화를 일으킨 핵심 변경 사항입니다.
|
|
* [[Monkey Patching]] : 실행 모델을 수정하려는 시도가 새로운 모델에서 작동하지 않을 수 있음을 나타냅니다.
|
|
* [[Lazy Evaluation]] : 입력값 평가 시점을 조절하여 성능을 최적화하는 기술입니다.
|
|
* [[Node Expansion]] : 노드가 서브그래프로 확장되어 복잡한 로직(루프 등)을 수행하게 하는 기능입니다.
|
|
|
|
## 📝 변경 이력 (Change history)
|
|
- 2026-05-20: Astra /wikify 로 https://docs.comfy.org/development/comfyui-server/execution_model_inversion_guide 본문에서 초안 생성. |