--- id: lazy-evaluation---comfyui title: "Lazy Evaluation - 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/custom-nodes/backend/lazy_evaluation"] applied_in: [] github_commit: "" --- # [[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) ## πŸ”— κ΄€λ ¨ λ¬Έμ„œ 링크 (Related document links) - [[Lazy Evaluation]] - μž…λ ₯ 평가 μ‹œμ μ„ μ œμ–΄ν•˜λŠ” 핡심 기술. - [[INPUT_TYPES]] - λ…Έλ“œμ˜ μž…λ ₯ ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜. - [[check_lazy_status]] - μ§€μ—°λœ μž…λ ₯의 ν•„μš” μ—¬λΆ€λ₯Ό νŒλ‹¨ν•˜λŠ” 둜직. - [[ExecutionBlocker]] - κ·Έλž˜ν”„ 싀행을 μ€‘λ‹¨ν•˜κ±°λ‚˜ μ—λŸ¬λ₯Ό ν‘œμ‹œν•˜λŠ” 특수 객체. - [[ModelMergeSimple]] - μ§€μ—° 평가가 적용될 수 μžˆλŠ” ꡬ체적인 λ…Έλ“œ 사둀. ## πŸ“ λ³€κ²½ 이λ ₯ (Change history) - 2026-05-20: Astra /wikify 둜 https://docs.comfy.org/custom-nodes/backend/lazy_evaluation λ³Έλ¬Έμ—μ„œ μ΄ˆμ•ˆ 생성.