Files
2nd/10_Wiki/Topics/Comfyui/위키 Lazy Evaluation - ComfyUI 2026-05-20.md
T
koriweb a3f63e56e2 Add ComfyUI wikified docs and youtube extracts; tidy raw→Topics
- 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>
2026-05-20 18:41:10 +09:00

5.3 KiB

id, title, category, status, verification_status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, created_at, updated_at, review_reason, merge_history, tags, raw_sources, applied_in, github_commit
id title category status verification_status canonical_id aliases duplicate_of source_trust_level confidence_score created_at updated_at review_reason merge_history tags raw_sources applied_in github_commit
lazy-evaluation---comfyui Lazy Evaluation - ComfyUI 10_Wiki/Topics draft conceptual
B 0.8 2026-05-20 2026-05-20
web
wikify
https://docs.comfy.org/custom-nodes/backend/lazy_evaluation

Lazy Evaluation - ComfyUI

🎯 한 줄 통찰 (One-line insight)

불필요한 연산을 방지하기 위해 필요한 시점에만 입력을 평가하여 그래프 실행 효율성을 최적화하는 기술적 전략.

🧠 핵심 개념 (Core concepts)

  • Lazy Evaluation (지연 평가): 모든 입력을 미리 계산하지 않고, 실제 사용 여부가 결정될 때까지 평가를 미루어 불필요한 프로세싱을 방지함.
  • Lazy Input Marking: INPUT_TYPES 내의 옵션 딕셔너리에 {"lazy": True}를 추가하여 특정 입력을 지연 평가 대상으로 지정함.
  • check_lazy_status: 지연된 입력이 필요한지 확인하기 위해 실행 전 호출되는 메서드로, 필요한 입력의 이름을 리스트로 반환함.
  • Execution Blocking: ExecutionBlocker 객체를 사용하여 특정 노드의 실행을 중단하거나 에러 메시지를 표시하며 흐름을 제어함.

🧩 추출된 패턴 (Extracted patterns)

  • 조건부 평가 전략: 입력값의 비율(ratio)이 0.0 또는 1.0인 경우, 혹은 마스크가 전체 0.0 또는 1.0인 경우와 같이 특정 조건에서 로딩이나 계산을 생략하는 패턴.
  • 2단계 구현 구조: 입력을 지연 대상으로 표시(lazy: True)하고, 상태를 확인하는 메서드(check_lazy_satus)를 정의하는 일관된 구현 방식.
  • 계층적 제어: 직접적인 노드 개발 시에는 Lazy Evaluation을 권장하며, 외부 노드 제어가 불가능할 때는 ExecutionBlocker를 사용하는 우회 전략.

📖 세부 내용 (Details)

1. 지연 평가의 이점 및 사례

기본적으로 모든 입력은 실행 전 평가되지만, 다음과 같은 경우 지연 평가가 유용함:

  • ModelMergeSimple 노드: 비율(ratio)이 0.0이면 첫 번째 모델을 로드할 필요가 없고, 1.0이면 두 번째 모델을 로드할 필요가 없음.
  • 이미지 보간(Interpolation): 마스크나 비율이 완전히 0.0 또는 1.0인 경우 불필요한 이미지 평가를 생금함.
  • Switch 노드: 특정 입력에 의해 다른 입력의 통과 여부가 결정되는 경우.

2. 지연 입력 구현 방법 (Creating Lazy Inputs)

지연 입력을 만드는 과정은 두 단계로 나뉨:

  1. INPUT_TYPES 정의: 입력 옵션 딕셔너리에 lazy: True 키-값 쌍을 추가함.
    • 예시: "image1": ("IMAGE", {"lazy": True})
  2. check_lazy_status 메서드 정의:
    • 역할: 지연된 입력 중 추가 평가가 필요한 입력을 찾아 이름 리스트를 반환함.
    • 특징: 인자로 실제 입력값들을 받으며, 사용 불가능한(None) 지연 입력은 None으로 처리됨. 클래스 메서드가 아닌 일반 메서드로 작성되어야 함.

3. 실행 차단 (Execution Blocking)

노드의 실행을 제어하는 두 가지 방법:

  • 직접 구현: 출력 노드 개발 시 enabled 입력을 추가하고 다른 입력을 모두 지연 입력으로 설정하여 조건부로 평가함.
  • ExecutionBlocker 활용:
    • None 전달: 실행을 조용히 차단(silent block)하며, 출력을 비활성화할 때 유용함.
    • String 메시지 전달: 차단 시 사용자에게 보여줄 에러 메시지를 표시함 (예: VAE가 없는 체크포인트 로드 시).

⚖️ 모tes 및 업데이트 (Contradictions & updates)

  • 주의사항: check_lazy_status는 실제 입력값을 사용하므로 클래스 메서드가 아닌 인스턴스 메서드로 동작해야 함. 또한, ExecutionBlocker를 전파 중단 용도로 사용하는 것은 권장되지 않으며(지연 평가 사용 권장), 이는 의도된 설계임.

🛠️ 적용 사례 (Applied in summary)

  • MixImages 노드 예시: 마스크의 최소/최대값이 0.0 또는 1.0인 경우, image1 또는 image2를 평가하지 않도록 설계하여 연산 효율을 높임.
  • 에러 핸들링: load_checkpoint 시 VAE가 없는 경우 ExecutionBlocker에 에러 메시지를 담아 전달함으로써 사용자에게 명확한 정보를 제공함.

검증 상태 및 신뢰도

  • 상태: draft
  • 검증 단계: conceptual
  • 출처 신뢰도: B (Primary Source — 웹사이트 본문 직접 추출)
  • 중복 검사 결과: 신규 생성 (New discovery)
  • Lazy Evaluation - 입력 평가 시점을 제어하는 핵심 기술.
  • INPUT_TYPES - 노드의 입력 구조를 정의하는 메커니즘.
  • check_lazy_status - 지연된 입력의 필요 여부를 판단하는 로직.
  • ExecutionBlocker - 그래프 실행을 중단하거나 에러를 표시하는 특수 객체.
  • ModelMergeSimple - 지연 평가가 적용될 수 있는 구체적인 노드 사례.

📝 변경 이력 (Change history)