ComfyUI 실행 모델 반전 가이드. monkey patching과 선택적 입력 검증의 호환성 깨짐, 지연 평가와 노드 확장 등 새 기능을 다룹니다.
PR #2666는 실행 모델을 뒤에서부터 앞쪽으로 진행하는 재귀적 모델에서 앞에서부터 뒤로 진행하는 위상 정렬 방식으로 반전시킵니다. 대부분의 커스텀 노드는 기존처럼 “그냥 작동”할 것으로 예상되지만, 이 페이지는 커스텀 노드 제작자들이 고장날 수 있는 부분들을 안내하기 위한 것입니다.
실행 순서는 항상 어떤 노드가 어떤 ID를 갖느냐에 따라 달라졌지만, 이제는 캐시된 값에 따라서도 변경될 수 있습니다. 일반적으로 실행 순서는 비결정적이고 그래프 구조가 강제하는 것 외에도 변경될 수 있다고 간주해야 합니다.실행 순서에 의존하지 마세요.HIC SUNT DRACONES
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"ComfyUI","colors":{"primary":"#49378B","light":"#F2FF59","dark":"#F2FF59"},"logo":{"light":"https://mintcdn.com/dripart/WCFdTagRdhtvk9-o/logo/light.svg?fit=max\u0026auto=format\u0026n=WCFdTagRdhtvk9-o\u0026q=85\u0026s=ec112de87239058f5a931a7e4b594965","dark":"https://mintcdn.com/dripart/QzWbjSCBG7w61rR3/logo/dark.svg?fit=max\u0026auto=format\u0026n=QzWbjSCBG7w61rR3\u0026q=85\u0026s=62b4d879fb3aadbd7a468d1539032d6f","href":"/"},"favicon":"https://mintcdn.com/dripart/maKDA164-rrTfyxY/favicon.ico?fit=max\u0026auto=format\u0026n=maKDA164-rrTfyxY\u0026q=85\u0026s=94f3a697cf4c9a1ee3961b69219d0942","appearance":{"default":"dark"},"navbar":{"links":[{"href":"https://blog.comfy.org/?utm_source=docs","label":"Blog"},{"href":"/tutorials/partner-nodes/pricing","label":"Pricing"},{"href":"https://platform.comfy.org/?utm_source=docs","label":"Platform"},{"href":"https://comfy.org/download?utm_source=docs","label":"Download"}],"primary":{"type":"button","label":"Comfy Cloud","href":"https://comfy.org/cloud?utm_source=docs"}},"footer":{"socials":{"github":"https://github.com/Comfy-Org/ComfyUI","x":"https://x.com/ComfyUI","discord":"https://discord.com/invite/comfyorg","youtube":"https://www.youtube.com/@comfyorg"},"links":[{"header":"Resources","items":[{"label":"installation","href":"/installation/system_requirements"},{"label":"Tutorials","href":"/tutorials/basic/text-to-image"},{"label":"Development","href":"/development/overview"}]},{"header":"Products","items":[{"label":"Features","href":"https://www.comfy.org/?utm_source=docs"},{"label":"Gallery","href":"https://www.comfy.org/gallery?utm_source=docs"},{"label":"Download","href":"https://www.comfy.org/download?utm_source=docs"}]},{"header":"Company","items":[{"label":"About","href":"https://www.comfy.org/about?utm_source=docs"},{"label":"Careers","href":"https://www.comfy.org/careers?utm_source=docs"},{"label":"Terms of Service","href":"https://www.comfy.org/terms-of-service?utm_source=docs"},{"label":"Privacy Policy","href":"https://www.comfy.org/privacy-policy?utm_source=docs"}]}]},"search":{"prompt":"Search Comfy documentation..."},"seo":{"metatags":{"googlebot":"max-video-preview:0"}},"icons":{"library":"fontawesome"},"integrations":{"ga4":{"measurementId":"G-MXC01ZDDHQ"},"posthog":{"apiKey":"phc_iKfK86id4xVYws9LybMje0h44eGtfwFgRPIBehmy8rO"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","href":""},{"language":"zh","footer":{"socials":{"github":"https://github.com/Comfy-Org/ComfyUI","x":"https://x.com/ComfyUI","discord":"https://discord.com/invite/comfyorg","youtube":"https://www.youtube.com/@comfyorg"},"links":[{"header":"资源","items":[{"label":"安装","href":"/zh/installation/system_requirements"},{"label":"教程","href":"/zh/tutorials/basic/text-to-image"},{"label":"开发","href":"/zh/development/overview"}]},{"header":"产品","items":[{"label":"功能","href":"https://www.comfy.org/?utm_source=docs"},{"label":"画廊","href":"https://www.comfy.org/gallery?utm_source=docs"},{"label":"下载","href":"https://www.comfy.org/download?utm_source=docs"}]},{"header":"公司","items":[{"label":"关于","href":"https://www.comfy.org/about?utm_source=docs"},{"label":"招聘","href":"https://www.comfy.org/careers?utm_source=docs"},{"label":"服务条款","href":"https://www.comfy.org/terms-of-service?utm_source=docs"},{"label":"隐私政策","href":"https://www.comfy.org/privacy-policy?utm_source=docs"}]}]},"href":"zh"},{"language":"ja","footer":{"socials":{"github":"https://github.com/Comfy-Org/ComfyUI","x":"https://x.com/ComfyUI","discord":"https://discord.com/invite/comfyorg","youtube":"https://www.youtube.com/@comfyorg"},"links":[{"header":"リソース","items":[{"label":"インストール","href":"/ja/installation/system_requirements"},{"label":"チュートリアル","href":"/ja/tutorials/basic/text-to-image"},{"label":"開発","href":"/ja/development/overview"}]},{"header":"プロダクト","items":[{"label":"機能","href":"https://www.comfy.org/?utm_source=docs"},{"label":"ギャラリー","href":"https://www.comfy.org/gallery?utm_source=docs"},{"label":"ダウンロード","href":"https://www.comfy.org/download?utm_source=docs"}]},{"header":"会社情報","items":[{"label":"概要","href":"https://www.comfy.org/about?utm_source=docs"},{"label":"採用情報","href":"https://www.comfy.org/careers?utm_source=docs"},{"label":"利用規約","href":"https://www.comfy.org/terms-of-service?utm_source=docs"},{"label":"プライバシーポリシー","href":"https://www.comfy.org/privacy-policy?utm_source=docs"}]}]},"navbar":{"links":[{"href":"/ja/tutorials/partner-nodes/pricing","label":"料金"},{"href":"https://comfy.org/download?utm_source=docs","label":"ダウンロード"}],"primary":{"type":"button","label":"Comfy Cloud","href":"https://comfy.org/cloud?utm_source=docs"}},"href":"ja"},{"language":"ko","footer":{"socials":{"github":"https://github.com/Comfy-Org/ComfyUI","x":"https://x.com/ComfyUI","discord":"https://discord.com/invite/comfyorg","youtube":"https://www.youtube.com/@comfyorg"},"links":[{"header":"리소스","items":[{"label":"설치","href":"/ko/installation/system_requirements"},{"label":"튜토리얼","href":"/ko/tutorials/basic/text-to-image"},{"label":"개발","href":"/ko/development/overview"}]},{"header":"제품","items":[{"label":"기능","href":"https://www.comfy.org/?utm_source=docs"},{"label":"갤러리","href":"https://www.comfy.org/gallery?utm_source=docs"},{"label":"다운로드","href":"https://www.comfy.org/download?utm_source=docs"}]},{"header":"회사 정보","items":[{"label":"소개","href":"https://www.comfy.org/about?utm_source=docs"},{"label":"채용","href":"https://www.comfy.org/careers?utm_source=docs"},{"label":"이용약관","href":"https://www.comfy.org/terms-of-service?utm_source=docs"},{"label":"개인정보 처리방침","href":"https://www.comfy.org/privacy-policy?utm_source=docs"}]}]},"navbar":{"links":[{"href":"/ko/tutorials/partner-nodes/pricing","label":"가격 정책"},{"href":"https://comfy.org/download?utm_source=docs","label":"다운로드"}],"primary":{"type":"button","label":"Comfy Cloud","href":"https://comfy.org/cloud?utm_source=docs"}},"href":"ko"},{"language":"es","href":"es"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dripart","hasAudioNarration":false,"actualSubdomain":"dripart","customDomains":["docs.comfy.org"],"gitSource":{"type":"github","owner":"comfy-org","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae116b2eb01454f205601ff","collectionId":"98723bdc-a2d8-4b22-bd4c-942bab89dfd2","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae116b2eb01454f205601ff"},"feedback":{"thumbs":true,"edits":true,"issues":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6ae116b2eb01454f205601ff","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"en","tag":"Built-in Nodes","count":1133},{"language":"ja","tag":"組み込みノード","count":1133},{"language":"zh","tag":"内置节点","count":1133},{"language":"en","tag":"Nodes","count":1132},{"language":"ja","tag":"ノード","count":1132},{"language":"zh","tag":"节点","count":1132},{"language":"ko","tag":"내장 노드 (Built-in Nodes)","count":1091},{"language":"ko","tag":"노드","count":1090},{"language":"es","tag":"Nodos integrados","count":1025},{"language":"es","tag":"Nodos","count":1024},{"language":"en","tag":"Tutorials","count":403},{"language":"es","tag":"Tutoriales","count":398},{"language":"en","tag":"Model","count":377},{"language":"es","tag":"Modelo","count":377},{"language":"ja","tag":"Model","count":377},{"language":"ko","tag":"Model","count":377},{"language":"zh","tag":"Model","count":377},{"language":"en","tag":"Image","count":347},{"language":"en","tag":"Partner","count":322},{"language":"ja","tag":"Partner","count":322},{"language":"ko","tag":"Partner","count":322},{"language":"zh","tag":"Partner","count":322},{"language":"es","tag":"Partner","count":320},{"language":"es","tag":"Imagen","count":314},{"language":"ja","tag":"はじめに","count":299},{"language":"ko","tag":"시작하기","count":299},{"language":"zh","tag":"开始使用","count":299},{"language":"ja","tag":"API 開発","count":294},{"language":"ko","tag":"API 개발","count":294},{"language":"zh","tag":"API 开发","count":294},{"language":"en","tag":"Video","count":269},{"language":"es","tag":"Comfy Router","count":267},{"language":"ja","tag":"Comfy Router","count":257},{"language":"ko","tag":"Comfy Router","count":257},{"language":"zh","tag":"Comfy Router","count":257},{"language":"en","tag":"Comfy Router","count":253},{"language":"es","tag":"Video","count":244},{"language":"es","tag":"Models","count":230},{"language":"ja","tag":"Models","count":229},{"language":"ko","tag":"Models","count":229},{"language":"zh","tag":"Models","count":229},{"language":"es","tag":"All Models","count":227},{"language":"en","tag":"Models","count":225},{"language":"en","tag":"All Models","count":222},{"language":"ja","tag":"画像","count":202},{"language":"ko","tag":"이미지","count":202},{"language":"zh","tag":"图像","count":202},{"language":"ja","tag":"Video","count":177},{"language":"zh","tag":"Video","count":177},{"language":"ko","tag":"Video","count":160}],"searchSettings":{"maxResults":10}},"assistantConfig":{"enableStarterQuestions":false},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":":root{--ink-900:#151417;--hub-shell-light:#f7f6f9;--accent-purple:#49378b;--accent-yellow:#f2ff59;--primary:73 55 139!important;--primary-light:242 255 89!important;--primary-dark:242 255 89!important}html.dark{--primary:242 255 89!important;--background-dark:14 14 13!important}html.dark body{background-color:#0e0e0d!important}html.dark #navbar,html.dark #navbar-transition{background-color:var(--ink-900)!important}html.dark #sidebar,html.dark #sidebar-content{background-color:rgb(var(--background-dark))!important}html.dark #navbar,html.dark #navbar-transition{box-shadow:none!important;filter:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}html.dark #navbar-transition{border-bottom:1px solid rgba(255,255,255,.08)!important;opacity:1!important}html.dark img.nav-logo{filter:none}html.dark #sidebar-content a:not([aria-current=page]){color:rgba(255,255,255,.72)!important}html.dark #sidebar-content a:not([aria-current=page]) *{color:inherit!important}html.dark #sidebar-content a[aria-current=page]{color:var(--accent-yellow)!important;background-color:rgba(242,255,89,.1)!important}html.dark #sidebar-content a[aria-current=page] *{color:inherit!important}html.dark .nav-tabs-item[data-active],html.dark mobile-nav-tabs-item[data-active]{color:var(--accent-yellow)!important}html.dark #navbar a[href*=\"comfy.org/cloud\"] span.absolute{background-color:var(--accent-yellow)!important}html.dark #navbar a[href*=\"comfy.org/cloud\"] span.text-white{color:#151417!important}html:not(.dark) #background-color,html:not(.dark) #navbar,html:not(.dark) #navbar-transition,html:not(.dark) #sidebar,html:not(.dark) #sidebar-content{background-color:var(--hub-shell-light)!important}html:not(.dark) .nav-tabs-item[data-active],html:not(.dark) mobile-nav-tabs-item[data-active],html:not(.dark) nav-dropdown-item[data-active]{background-color:transparent!important;box-shadow:none!important;color:var(--accent-purple)!important;font-weight:600!important}html:not(.dark) #navbar a[href*=\"comfy.org/cloud\"] *,html:not(.dark) #sidebar-content a[aria-current=page] *,html:not(.dark) .nav-tabs-item[data-active] *,html:not(.dark) mobile-nav-tabs-item[data-active] *,html:not(.dark) nav-dropdown-item[data-active] *{color:inherit!important}html:not(.dark) #sidebar-content li:has(>a[aria-current=page]){background-color:transparent!important;box-shadow:none!important}html:not(.dark) #sidebar-content a[aria-current=page]{color:var(--accent-purple)!important;background-color:rgba(73,55,139,.1)!important;font-weight:600!important}html:not(.dark) toc-item[data-active-deepest],html:not(.dark) toc-item[data-active-deepest] a,html:not(.dark) toc-item[data-active],html:not(.dark) toc-item[data-active] a{background-color:transparent!important;color:var(--accent-purple)!important;font-weight:600!important}html:not(.dark) #content-area :where(h1, h2, h3, h4, h5, h6),html:not(.dark) #header :where(h1, h2, h3, h4, h5, h6){color:#151417!important}html:not(.dark) #navbar a[href*=\"comfy.org/cloud\"]{background-color:transparent!important;color:var(--accent-purple)!important;border-radius:.75rem;box-shadow:inset 0 0 0 1px var(--accent-purple)!important}html:not(.dark) #navbar a[href*=\"comfy.org/cloud\"] span.absolute{background-color:transparent!important}#sidebar .sticky.top-0.pointer-events-none.bg-linear-to-b{background-image:none!important}@media (min-width:1024px){#navbar.is-not-custom.is-not-center+div:has(>#sidebar),.max-w-8xl.mx-auto,.max-w-8xl.mx-auto.relative{max-width:none!important;width:100%!important;margin-left:0!important;margin-right:0!important;padding-left:0!important;padding-right:0!important}#navbar [class*=mx-4],#navbar [class*=px-12]{padding-left:0!important;padding-right:1.5rem!important;margin-left:0!important;margin-right:0!important}#navbar .nav-logo,#navbar a.select-none{margin-left:1rem!important}#navbar .nav-tabs{padding-left:2rem!important}#sidebar{left:0!important;margin-left:0!important;box-shadow:none!important}#sidebar-content{margin-left:0!important;padding-left:1rem!important;box-sizing:border-box!important}#navbar,#navbar-transition{left:0!important;right:0!important;width:100%!important;max-width:none!important}#content-area{margin-left:0!important;padding-left:18rem!important}#sidebar.sticky~#content-container #content-area{padding-left:2rem!important;padding-right:2rem!important}#body-content,#content-area,#content-container{max-width:none!important;width:100%!important}:root{--content-width:100%;--sidebar-width:18rem}#sidebar[style],nav#sidebar{left:0!important;right:auto!important;margin-left:0!important;transform:none!important}#navbar li.navbar-link:has(a[href*=\"comfy.org/download\"]){margin-right:0!important}#navbar a[href*=\"comfy.org/download\"]{box-sizing:border-box;border:1px solid rgb(255 255 255/.22);border-radius:.75rem;padding:7px .875rem!important;color:#fff!important;font-size:.875rem;line-height:1.25rem}html:not(.dark) #navbar a[href*=\"comfy.org/download\"]{border-color:rgb(0 0 0/.16);color:#151417!important}#navbar a[href*=\"comfy.org/download\"]:hover{background:rgb(255 255 255/.06)}html:not(.dark) #navbar a[href*=\"comfy.org/download\"]:hover{background:rgb(0 0 0/.04)}#navbar .flex.space-x-6>.whitespace-nowrap.hidden,#navbar li.navbar-link:has(a[href*=\"comfy.org/download\"])+.whitespace-nowrap{margin-left:.5rem!important}}body:has(.router-api-reference-marker) #content,body:has(.router-api-reference-marker) #header{max-width:48rem}body:has(.router-api-reference-marker) #content-area table,body:has(.router-provider-coverage-marker) #content-area table{width:100%;table-layout:auto}body:has(.router-api-reference-marker) #content-area td,body:has(.router-api-reference-marker) #content-area th{min-width:4rem!important;overflow-wrap:anywhere}body:has(.router-api-reference-marker) #content-area table:has(th:nth-child(6)) td:nth-child(3),body:has(.router-api-reference-marker) #content-area table:has(th:nth-child(6)) th:nth-child(3){min-width:5rem!important}@media (max-width:1535px){body:has(.router-api-reference-marker) #content-side-layout{display:none!important}}body:has(.router-provider-coverage-marker) #content,body:has(.router-provider-coverage-marker) #header{max-width:64rem}body:has(.router-provider-coverage-marker) #content-area td,body:has(.router-provider-coverage-marker) #content-area th{min-width:5rem!important;overflow-wrap:anywhere}body:has(.router-provider-coverage-marker) #content-area td:first-child,body:has(.router-provider-coverage-marker) #content-area th:first-child{min-width:12rem!important}body:has(.router-quickstart-marker) [data-component-part=card-content] [data-component-part=code-block-root][style*=\"height: 190px\"],body:has(.router-quickstart-marker) [data-component-part=card-content] [data-component-part=code-block-root][style*=\"height:190px\"]{height:86px!important}"},{"filePath":"samples-cards.css","content":".sample-card-grid{display:grid;gap:20px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:28px}.sample-card{min-width:0;perspective:1200px}.sample-card-inner{height:565px;position:relative;transform-style:preserve-3d;transition:transform 560ms cubic-bezier(.2,.75,.3,1)}.sample-card[data-flipped=true] .sample-card-inner{transform:rotateY(180deg)}.sample-card-face{backface-visibility:hidden;background:#fff;border:1px solid #e5e1eb;border-radius:12px;box-sizing:border-box;height:100%;inset:0;overflow:hidden;position:absolute;width:100%}.sample-card-front{display:flex;flex-direction:column}.sample-card-back{opacity:0;pointer-events:none;transform:rotateY(180deg);visibility:hidden}.sample-card[data-flipped=true] .sample-card-front{pointer-events:none;transition:visibility 0s linear 280ms;visibility:hidden}.sample-card[data-flipped=true][data-active-path=api] .sample-card-back[data-sample-path=api],.sample-card[data-flipped=true][data-active-path=endpoint] .sample-card-back[data-sample-path=endpoint]{opacity:1;pointer-events:auto;visibility:visible}.sample-card-preview{border-bottom:1px solid #e5e1eb;cursor:pointer;display:block;width:100%}.sample-card-body{display:flex;flex:1;flex-direction:column;padding:20px}.sample-card-body h2,.sample-path-body h2{color:#49378b;font-size:18px;font-weight:700;letter-spacing:-.02em;margin:0 0 8px}.sample-path-body h2{text-align:center}.sample-card-body>p{color:#5f5966;font-size:14px;line-height:1.55;margin:0;min-height:66px}.sample-card-actions,.sample-card-links{display:flex;gap:8px;margin-top:20px}.sample-card-actions button{background:#fff;border:1px solid #cfc8de;border-radius:6px;color:#49378b;cursor:pointer;flex:1;font-size:13px;font-weight:700;padding:10px 12px}.sample-card-links{border-top:1px solid #eeeaf1;margin-top:16px;padding-top:12px}.sample-card-links a{color:#625b6c;font-size:12px;font-weight:650;text-decoration:none}.sample-card-links span{color:#b3adba}.sample-path-body{padding:20px}.sample-path-body>button{background:0 0;border:0;color:#625b6c;cursor:pointer;font-size:12px;font-weight:700;padding:0}.sample-path-eyebrow{color:#857a9e;font-size:10px;font-weight:700;letter-spacing:.08em;margin:19px 0 5px;text-align:center;text-transform:uppercase}.sample-path-body>p:not(.sample-path-eyebrow){color:#5f5966;font-size:12px;line-height:1.5;margin:0 0 15px}.sample-path-steps{display:grid;gap:8px}.sample-path-step{align-items:center;background:#faf9fc;border:1px solid #e5e1ea;border-radius:8px;display:flex;gap:10px;padding:10px 11px}.sample-path-number{align-items:center;background:#49378b;border-radius:999px;color:#fff;display:inline-flex;flex:0 0 21px;font-size:11px;font-weight:700;height:21px;justify-content:center}.sample-path-copy{flex:1;min-width:0}.sample-path-copy strong{color:#312c36;display:block;font-size:12px}.sample-path-copy span{color:#706a75;display:block;font-size:11px;line-height:1.35;margin-top:2px}.sample-path-step a{color:#49378b;flex:0 0 auto;font-size:11px;font-weight:700;text-decoration:none}@media (max-width:768px){.sample-card-grid{grid-template-columns:1fr}.sample-card-inner{height:clamp(620px,180vw,760px)}}"}],"page":{"pagePath":"ko/development/comfyui-server/execution_model_inversion_guide","slug":"/ko/development/comfyui-server/execution_model_inversion_guide","pageMetadata":{"title":"실행 모델 반전 가이드","sidebarTitle":"실행 모델 반전","description":"ComfyUI 실행 모델 반전 가이드. monkey patching과 선택적 입력 검증의 호환성 깨짐, 지연 평가와 노드 확장 등 새 기능을 다룹니다.","icon":"code-branch","translationSourceHash":"7b21c2f1","translationFrom":"development/comfyui-server/execution_model_inversion_guide.mdx","translationBlockHashes":{"_intro":"03f1bf08","Breaking Changes":"1ef26168","New Functionality":"b06c1a30"},"href":"/ko/development/comfyui-server/execution_model_inversion_guide"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"ComfyUI 실행 모델 반전 가이드. monkey patching과 선택적 입력 검증의 호환성 깨짐, 지연 평가와 노드 확장 등 새 기능을 다룹니다.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://github.com/Comfy-Org/ComfyUI/pull/2666`,children:`PR #2666`}),`는 실행 모델을 뒤에서부터 앞쪽으로 진행하는 재귀적 모델에서 앞에서부터 뒤로 진행하는 위상 정렬 방식으로 반전시킵니다. 대부분의 커스텀 노드는 기존처럼 “그냥 작동”할 것으로 예상되지만, 이 페이지는 커스텀 노드 제작자들이 `,_jsx(_components.em,{children:`고장날 수 있는`}),` 부분들을 안내하기 위한 것입니다.`]}),`\n`,_jsx(Heading,{level:`2`,id:`중단되는-변경사항`,children:`중단되는 변경사항`}),`\n`,_jsx(Heading,{level:`3`,id:`몽키-패치`,children:`몽키 패치`}),`\n`,_jsx(_components.p,{children:`실행 모델을 몽키 패치한 코드는 더 이상 작동하지 않을 가능성이 높습니다. 이번 PR을 통한 실행 성능은 가장 인기 있는 몽키 패치를 사용했을 때보다 뛰어나므로 많은 몽키 패치가 불필요해질 것입니다.`}),`\n`,_jsx(Heading,{level:`3`,id:`선택적-입력-검증`,children:`선택적 입력 검증`}),`\n`,_jsxs(_components.p,{children:[`이 PR 이전에는, 일련의 `,_jsx(_components.code,{children:`\"required\"`}),` 입력을 통해서만 출력에 연결된 노드만 실제로 검증되었습니다. 만약 커스텀 노드가 오직 `,_jsx(_components.code,{children:`\"optional\"`}),` 입력에만 연결되어 있었다면, 이전에는 검증 실패를 확인하지 못했을 것입니다.`]}),`\n`,_jsxs(Tip,{children:[`노드의 출력이 이미 `,_jsx(_components.code,{children:`\"required\"`}),` 입력에 연결될 수 있다면, 이 섹션의 내용이 적용될 가능성은 낮습니다. 주로 맞춤형 타입을 사용하고 오직 `,_jsx(_components.code,{children:`\"optional\"`}),` 입력만 사용하는 커스텀 노드 제작자들에게 해당됩니다.`]}),`\n`,_jsx(_components.p,{children:`다음과 같은 사항들이 검증 실패를 일으킬 수 있으며, 권장 해결 방법도 함께 제공합니다:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`비교할 수 없는 타입(예: 딕셔너리)에 `,_jsx(_components.code,{children:`min`}),` 및 `,_jsx(_components.code,{children:`max`}),`와 같은 예약된 `,_jsx(_components.a,{href:`/ko/custom-nodes/backend/datatypes#%EC%B6%94%EA%B0%80-%ED%8C%8C%EB%9D%BC%EB%AF%B8%ED%84%B0`,children:`추가 매개변수`}),`를 사용하여 맞춤 위젯을 구성하는 경우.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`사용하는 추가 매개변수를 `,_jsx(_components.code,{children:`uiMin`}),` 및 `,_jsx(_components.code,{children:`uiMax`}),`와 같은 비예약 키로 변경하세요. `,_jsx(_components.em,{children:`(권장 해결 방법)`})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`classmethod`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` INPUT_TYPES`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`cls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"required\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"my_size\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: (`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"VEC2\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"uiMin\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"uiMax\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1.0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}),`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`이 입력을 포함한 맞춤 `,_jsx(_components.a,{href:`/ko/custom-nodes/backend/server_overview#validate_inputs`,children:`VALIDATE_INPUTS`}),` 함수를 정의하여 검증을 건너뛰세요. `,_jsx(_components.em,{children:`(빠른 해결 방법)`})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`classmethod`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` VALIDATE_INPUTS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`cls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`my_size`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` True`})]}),`\n`]})})}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`복합 타입(예: `,_jsx(_components.code,{children:`CUSTOM_A,CUSTOM_B`}),`) 사용 시`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`(출력으로 사용될 때) `,_jsx(_components.code,{children:`MakeSmartType`}),`과 같은 래퍼를 정의하고 사용하세요. `,_jsx(_components.a,{href:`https://github.com/Comfy-Org/ComfyUI/pull/2666/files#diff-714643f1fdb6f8798c45f77ab10d212ca7f41dd71bbe55069f1f9f146a8f0cb9R2`,children:`PR의 단위 테스트에서 확인할 수 있음`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`13`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`class`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` MyCustomNode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` @`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`classmethod`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` INPUT_TYPES`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`cls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"required\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"input\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: (MakeSmartType(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"FOO,BAR\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`), {}),`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` RETURN_TYPES`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (MakeSmartType(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"FOO,BAR\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # ...`})}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`(입력으로 사용될 때) `,_jsx(_components.code,{children:`input_types`}),` 인자를 받는 맞춤 `,_jsx(_components.a,{href:`/ko/custom-nodes/backend/server_overview#validate_inputs`,children:`VALIDATE_INPUTS`}),` 함수를 정의하여 타입 검증을 건너뛰세요.`,`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`@`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`classmethod`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` VALIDATE_INPUTS`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`cls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`input_types`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` True`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`(입출력 모두 지원, 편리) `,_jsx(_components.code,{children:`@VariantSupport`}),` 데코레이터를 정의하고 사용하세요. `,_jsx(_components.a,{href:`https://github.com/Comfy-Org/ComfyUI/pull/2666/files#diff-714643f1fdb6f8798c45f77ab10d212ca7f41dd71bbe55069f1f9f146a8f0cb9R15`,children:`PR의 단위 테스트에서 확인할 수 있음`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`14`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`14`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`@VariantSupport`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`class`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` MyCustomNode`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` @`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`classmethod`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` INPUT_TYPES`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`cls`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`):`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"required\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"input\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: (`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"FOO,BAR\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {}),`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` `})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:` RETURN_TYPES`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (MakeSmartType(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"FOO,BAR\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # ...`})}),`\n`]})})}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`그래프 정의에서 리스트(예: `,_jsx(_components.code,{children:`[1, 2, 3]`}),`)를 상수로 사용하는 경우(예: const `,_jsx(_components.code,{children:`VEC3`}),` 입력을 표현하기 위해). 이전에는 프론트엔드 확장이 필요했습니다. 이전에는 크기가 정확히 `,_jsx(_components.code,{children:`2`}),`인 리스트는 어쨌든 실패했으며, 링크가 깨진 것으로 처리되었습니다.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`리스트를 `,_jsx(_components.code,{children:`{ \"value\": [1, 2, 3] }`}),`와 같은 딕셔너리로 감싸세요.`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`실행-순서`,children:`실행 순서`}),`\n`,_jsx(_components.p,{children:`실행 순서는 항상 어떤 노드가 어떤 ID를 갖느냐에 따라 달라졌지만, 이제는 캐시된 값에 따라서도 변경될 수 있습니다. 일반적으로 실행 순서는 비결정적이고 그래프 구조가 강제하는 것 외에도 변경될 수 있다고 간주해야 합니다.`}),`\n`,_jsx(_components.p,{children:`실행 순서에 의존하지 마세요.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.em,{children:`HIC SUNT DRACONES`})}),`\n`,_jsx(Heading,{level:`2`,id:`새로운-기능`,children:`새로운 기능`}),`\n`,_jsx(Heading,{level:`3`,id:`검증-변경사항`,children:`검증 변경사항`}),`\n`,_jsxs(_components.p,{children:[`위에서 언급한 `,_jsx(_components.a,{href:`#%EC%84%A0%ED%83%9D%EC%A0%81-%EC%9E%85%EB%A0%A5-%EA%B2%80%EC%A6%9D`,children:`선택적 입력 검증`}),`의 영향을 줄이기 위해 `,_jsx(_components.code,{children:`VALIDATE_INPUTS`}),` 함수에 여러 기능이 추가되었습니다.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`기본 검증은 이제 `,_jsx(_components.code,{children:`VALIDATE_INPUTS`}),` 함수에서 전달받은 입력에 대해 건너뛰어집니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`VALIDATE_INPUTS`}),` 함수는 이제 `,_jsx(_components.code,{children:`**kwargs`}),`를 받을 수 있어 모든 입력이 노드 제작자에 의해 검증된 것으로 처리됩니다.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`VALIDATE_INPUTS`}),` 함수는 `,_jsx(_components.code,{children:`input_types`}),`라는 이름의 입력을 받을 수 있습니다. 이 입력은 각 입력(링크를 통해 연결된)을 연결된 출력의 타입으로 매핑한 딕셔너리입니다. 이 인자가 존재하면 노드의 입력에 대한 타입 검증은 건너뜁니다.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`자세한 내용은 `,_jsx(_components.a,{href:`/ko/custom-nodes/backend/server_overview#validate_inputs`,children:`VALIDATE_INPUTS`}),`에서 확인할 수 있습니다.`]}),`\n`,_jsx(Heading,{level:`3`,id:`지연-평가`,children:`지연 평가`}),`\n`,_jsxs(_components.p,{children:[`입력을 지연해서 평가할 수 있습니다(즉, 연결된 노드와 그 모든 상위 노드를 평가하기 전에 필요한지 여부를 기다릴 수 있음). 자세한 정보는 `,_jsx(_components.a,{href:`/ko/custom-nodes/backend/lazy_evaluation`,children:`지연 평가`}),`를 참고하세요.`]}),`\n`,_jsx(Heading,{level:`3`,id:`노드-확장`,children:`노드 확장`}),`\n`,_jsxs(_components.p,{children:[`런타임에 노드는 하위 그래프로 확장될 수 있습니다. 이는 꼬리 재귀를 통해 루프를 구현할 수 있게 해줍니다. 자세한 정보는 `,_jsx(_components.a,{href:`/ko/custom-nodes/backend/expansion`,children:`노드 확장`}),`을 참고하세요.`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"실행 모델 반전 가이드","sidebarTitle":"실행 모델 반전","description":"ComfyUI 실행 모델 반전 가이드. monkey patching과 선택적 입력 검증의 호환성 깨짐, 지연 평가와 노드 확장 등 새 기능을 다룹니다.","icon":"code-branch","translationSourceHash":"7b21c2f1","translationFrom":"development/comfyui-server/execution_model_inversion_guide.mdx","translationBlockHashes":{"_intro":"03f1bf08","Breaking Changes":"1ef26168","New Functionality":"b06c1a30"},"href":"/ko/development/comfyui-server/execution_model_inversion_guide"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"중단되는 변경사항","slug":"중단되는-변경사항","depth":2,"children":[{"title":"몽키 패치","slug":"몽키-패치","depth":3,"children":[]},{"title":"선택적 입력 검증","slug":"선택적-입력-검증","depth":3,"children":[]},{"title":"실행 순서","slug":"실행-순서","depth":3,"children":[]}]},{"title":"새로운 기능","slug":"새로운-기능","depth":2,"children":[{"title":"검증 변경사항","slug":"검증-변경사항","depth":3,"children":[]},{"title":"지연 평가","slug":"지연-평가","depth":3,"children":[]},{"title":"노드 확장","slug":"노드-확장","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/dripart/9d6bf2b2531e904c/giscus-comments.js","/_mintlify/custom/dripart/bd0341946f3c75a6/syft.js","/_mintlify/custom/dripart/042392a43b5e681e/samples-cards.js"],"subdomain":"dripart","siteName":"ComfyUI","title":"실행 모델 반전 가이드 - ComfyUI","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/development/comfyui-server/execution_model_inversion_guide","matchLevel":1},"zh":{"href":"/zh/development/comfyui-server/execution_model_inversion_guide","matchLevel":1},"ja":{"href":"/ja/development/comfyui-server/execution_model_inversion_guide","matchLevel":1},"ko":{"href":"/ko/development/comfyui-server/execution_model_inversion_guide","matchLevel":0},"es":{"href":"/es/development/comfyui-server/execution_model_inversion_guide","matchLevel":1}}},"lastModified":"2026-08-23T02:04:45.094Z","originalFileLocation":"ko/development/comfyui-server/execution_model_inversion_guide.mdx","locale":"ko"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"ComfyUI 실행 모델 반전 가이드. monkey patching과 선택적 입력 검증의 호환성 깨짐, 지연 평가와 노드 확장 등 새 기능을 다룹니다.\">\u003cmeta data-mint-head name=\"application-name\" content=\"ComfyUI\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dripart/lS3H5I41bE6LSXEf/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/dripart/lS3H5I41bE6LSXEf/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dripart/lS3H5I41bE6LSXEf/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/dripart/lS3H5I41bE6LSXEf/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/dripart/lS3H5I41bE6LSXEf/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/dripart/lS3H5I41bE6LSXEf/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/dripart/lS3H5I41bE6LSXEf/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/dripart/lS3H5I41bE6LSXEf/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/dripart/lS3H5I41bE6LSXEf/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"실행 모델 반전 가이드 - ComfyUI\">\u003cmeta data-mint-head property=\"og:description\" content=\"ComfyUI 실행 모델 반전 가이드. monkey patching과 선택적 입력 검증의 호환성 깨짐, 지연 평가와 노드 확장 등 새 기능을 다룹니다.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"ComfyUI\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.comfy.org/ko/development/comfyui-server/execution_model_inversion_guide\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://dripart.mintlify.app/_mintlify/api/og/v2?division=Python+%28%EB%B0%B1%EC%97%94%EB%93%9C%29\u0026amp;title=%EC%8B%A4%ED%96%89+%EB%AA%A8%EB%8D%B8+%EB%B0%98%EC%A0%84+%EA%B0%80%EC%9D%B4%EB%93%9C\u0026amp;description=ComfyUI+%EC%8B%A4%ED%96%89+%EB%AA%A8%EB%8D%B8+%EB%B0%98%EC%A0%84+%EA%B0%80%EC%9D%B4%EB%93%9C.+monkey+patching%EA%B3%BC+%EC%84%A0%ED%83%9D%EC%A0%81+%EC%9E%85%EB%A0%A5+%EA%B2%80%EC%A6%9D%EC%9D%98+%ED%98%B8%ED%99%98%EC%84%B1+%EA%B9%A8%EC%A7%90%2C+%EC%A7%80%EC%97%B0+%ED%8F%89%EA%B0%80%EC%99%80+%EB%85%B8%EB%93%9C+%ED%99%95%EC%9E%A5+%EB%93%B1+%EC%83%88+%EA%B8%B0%EB%8A%A5%EC%9D%84+%EB%8B%A4%EB%A3%B9%EB%8B%88%EB%8B%A4.\u0026amp;theme=a03fed56f9a178c9b893031e\u0026amp;signature=8b85bcef7bcc8494cb1bf08253a39a9efef76120df40aac2e17b863e059aac7b\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"실행 모델 반전 가이드 - ComfyUI\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"ComfyUI 실행 모델 반전 가이드. monkey patching과 선택적 입력 검증의 호환성 깨짐, 지연 평가와 노드 확장 등 새 기능을 다룹니다.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dripart.mintlify.app/_mintlify/api/og/v2?division=Python+%28%EB%B0%B1%EC%97%94%EB%93%9C%29\u0026amp;title=%EC%8B%A4%ED%96%89+%EB%AA%A8%EB%8D%B8+%EB%B0%98%EC%A0%84+%EA%B0%80%EC%9D%B4%EB%93%9C\u0026amp;description=ComfyUI+%EC%8B%A4%ED%96%89+%EB%AA%A8%EB%8D%B8+%EB%B0%98%EC%A0%84+%EA%B0%80%EC%9D%B4%EB%93%9C.+monkey+patching%EA%B3%BC+%EC%84%A0%ED%83%9D%EC%A0%81+%EC%9E%85%EB%A0%A5+%EA%B2%80%EC%A6%9D%EC%9D%98+%ED%98%B8%ED%99%98%EC%84%B1+%EA%B9%A8%EC%A7%90%2C+%EC%A7%80%EC%97%B0+%ED%8F%89%EA%B0%80%EC%99%80+%EB%85%B8%EB%93%9C+%ED%99%95%EC%9E%A5+%EB%93%B1+%EC%83%88+%EA%B8%B0%EB%8A%A5%EC%9D%84+%EB%8B%A4%EB%A3%B9%EB%8B%88%EB%8B%A4.\u0026amp;theme=a03fed56f9a178c9b893031e\u0026amp;signature=8b85bcef7bcc8494cb1bf08253a39a9efef76120df40aac2e17b863e059aac7b\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/dripart/lS3H5I41bE6LSXEf/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"ComfyUI\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#49378B\">\u003cmeta data-mint-head name=\"googlebot\" content=\"max-video-preview:0\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.comfy.org/ko/development/comfyui-server/execution_model_inversion_guide\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/ko/development/comfyui-server/execution_model_inversion_guide.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.comfy.org/ko/development/comfyui-server/execution_model_inversion_guide\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.comfy.org/development/comfyui-server/execution_model_inversion_guide\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"zh\" href=\"https://docs.comfy.org/zh/development/comfyui-server/execution_model_inversion_guide\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://docs.comfy.org/ja/development/comfyui-server/execution_model_inversion_guide\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"es\" href=\"https://docs.comfy.org/es/development/comfyui-server/execution_model_inversion_guide\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.comfy.org/development/comfyui-server/execution_model_inversion_guide\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.comfy.org/#organization\",\"name\":\"ComfyUI\",\"url\":\"https://docs.comfy.org\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/dripart/WCFdTagRdhtvk9-o/logo/light.svg?fit=max\u0026auto=format\u0026n=WCFdTagRdhtvk9-o\u0026q=85\u0026s=ec112de87239058f5a931a7e4b594965\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.comfy.org#website\",\"name\":\"ComfyUI\",\"url\":\"https://docs.comfy.org\",\"publisher\":{\"@id\":\"https://docs.comfy.org/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.comfy.org/ko/development/comfyui-server/execution_model_inversion_guide#webpage\",\"url\":\"https://docs.comfy.org/ko/development/comfyui-server/execution_model_inversion_guide\",\"name\":\"실행 모델 반전 가이드\",\"description\":\"ComfyUI 실행 모델 반전 가이드. monkey patching과 선택적 입력 검증의 호환성 깨짐, 지연 평가와 노드 확장 등 새 기능을 다룹니다.\",\"dateModified\":\"2026-08-23T02:04:45.094Z\",\"isPartOf\":{\"@id\":\"https://docs.comfy.org#website\"},\"breadcrumb\":{\"@id\":\"https://docs.comfy.org/ko/development/comfyui-server/execution_model_inversion_guide#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.comfy.org/ko/development/comfyui-server/execution_model_inversion_guide#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"커스텀 노드 구축\",\"item\":\"https://docs.comfy.org/ko/custom-nodes/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python (백엔드)\",\"item\":\"https://docs.comfy.org/ko/custom-nodes/backend/server_overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"실행 모델 반전 가이드\",\"item\":\"https://docs.comfy.org/ko/development/comfyui-server/execution_model_inversion_guide\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.comfy.org/ko/development/comfyui-server/execution_model_inversion_guide#article\",\"headline\":\"실행 모델 반전 가이드\",\"name\":\"실행 모델 반전 가이드\",\"description\":\"ComfyUI 실행 모델 반전 가이드. monkey patching과 선택적 입력 검증의 호환성 깨짐, 지연 평가와 노드 확장 등 새 기능을 다룹니다.\",\"url\":\"https://docs.comfy.org/ko/development/comfyui-server/execution_model_inversion_guide\",\"mainEntityOfPage\":{\"@id\":\"https://docs.comfy.org/ko/development/comfyui-server/execution_model_inversion_guide#webpage\"},\"dateModified\":\"2026-08-23T02:04:45.094Z\",\"publisher\":{\"@id\":\"https://docs.comfy.org/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.comfy.org#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"ComfyUI\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"ComfyUI","nav":{"global":null,"languages":[{"language":"en","pages":[{"title":"en","href":"/development/comfyui-server/execution_model_inversion_guide"}]},{"language":"zh","footer":{"socials":{"github":"https://github.com/Comfy-Org/ComfyUI","x":"https://x.com/ComfyUI","discord":"https://discord.com/invite/comfyorg","youtube":"https://www.youtube.com/@comfyorg"},"links":[{"header":"资源","items":[{"label":"安装","href":"/zh/installation/system_requirements"},{"label":"教程","href":"/zh/tutorials/basic/text-to-image"},{"label":"开发","href":"/zh/development/overview"}]},{"header":"产品","items":[{"label":"功能","href":"https://www.comfy.org/?utm_source=docs"},{"label":"画廊","href":"https://www.comfy.org/gallery?utm_source=docs"},{"label":"下载","href":"https://www.comfy.org/download?utm_source=docs"}]},{"header":"公司","items":[{"label":"关于","href":"https://www.comfy.org/about?utm_source=docs"},{"label":"招聘","href":"https://www.comfy.org/careers?utm_source=docs"},{"label":"服务条款","href":"https://www.comfy.org/terms-of-service?utm_source=docs"},{"label":"隐私政策","href":"https://www.comfy.org/privacy-policy?utm_source=docs"}]}]},"pages":[{"title":"zh","href":"/zh/development/comfyui-server/execution_model_inversion_guide"}]},{"language":"ja","footer":{"socials":{"github":"https://github.com/Comfy-Org/ComfyUI","x":"https://x.com/ComfyUI","discord":"https://discord.com/invite/comfyorg","youtube":"https://www.youtube.com/@comfyorg"},"links":[{"header":"リソース","items":[{"label":"インストール","href":"/ja/installation/system_requirements"},{"label":"チュートリアル","href":"/ja/tutorials/basic/text-to-image"},{"label":"開発","href":"/ja/development/overview"}]},{"header":"プロダクト","items":[{"label":"機能","href":"https://www.comfy.org/?utm_source=docs"},{"label":"ギャラリー","href":"https://www.comfy.org/gallery?utm_source=docs"},{"label":"ダウンロード","href":"https://www.comfy.org/download?utm_source=docs"}]},{"header":"会社情報","items":[{"label":"概要","href":"https://www.comfy.org/about?utm_source=docs"},{"label":"採用情報","href":"https://www.comfy.org/careers?utm_source=docs"},{"label":"利用規約","href":"https://www.comfy.org/terms-of-service?utm_source=docs"},{"label":"プライバシーポリシー","href":"https://www.comfy.org/privacy-policy?utm_source=docs"}]}]},"navbar":{"links":[{"href":"/ja/tutorials/partner-nodes/pricing","label":"料金"},{"href":"https://comfy.org/download?utm_source=docs","label":"ダウンロード"}],"primary":{"type":"button","label":"Comfy Cloud","href":"https://comfy.org/cloud?utm_source=docs"}},"pages":[{"title":"ja","href":"/ja/development/comfyui-server/execution_model_inversion_guide"}]},{"language":"ko","footer":{"socials":{"github":"https://github.com/Comfy-Org/ComfyUI","x":"https://x.com/ComfyUI","discord":"https://discord.com/invite/comfyorg","youtube":"https://www.youtube.com/@comfyorg"},"links":[{"header":"리소스","items":[{"label":"설치","href":"/ko/installation/system_requirements"},{"label":"튜토리얼","href":"/ko/tutorials/basic/text-to-image"},{"label":"개발","href":"/ko/development/overview"}]},{"header":"제품","items":[{"label":"기능","href":"https://www.comfy.org/?utm_source=docs"},{"label":"갤러리","href":"https://www.comfy.org/gallery?utm_source=docs"},{"label":"다운로드","href":"https://www.comfy.org/download?utm_source=docs"}]},{"header":"회사 정보","items":[{"label":"소개","href":"https://www.comfy.org/about?utm_source=docs"},{"label":"채용","href":"https://www.comfy.org/careers?utm_source=docs"},{"label":"이용약관","href":"https://www.comfy.org/terms-of-service?utm_source=docs"},{"label":"개인정보 처리방침","href":"https://www.comfy.org/privacy-policy?utm_source=docs"}]}]},"navbar":{"links":[{"href":"/ko/tutorials/partner-nodes/pricing","label":"가격 정책"},{"href":"https://comfy.org/download?utm_source=docs","label":"다운로드"}],"primary":{"type":"button","label":"Comfy Cloud","href":"https://comfy.org/cloud?utm_source=docs"}},"tabs":[{"tab":"시작하기","pages":[{"title":"시작하기","href":"/ko"}]},{"tab":"내장 노드 (Built-in Nodes)","pages":[{"title":"내장 노드 (Built-in Nodes)","href":"/ko/built-in-nodes/overview"}]},{"tab":"API 개발","pages":[{"title":"API 개발","href":"/ko/development/overview"}]},{"tab":"커스텀 노드","pages":[{"title":"커스텀 노드","sidebarTitle":"개요","href":"/ko/custom-nodes/intro"},{"group":"커스텀 노드 구축","pages":[{"title":"ComfyUI 커스텀 노드 유형과 구조","sidebarTitle":"노드 유형 및 구조","href":"/ko/custom-nodes/overview"},{"title":"ComfyUI에서 커스텀 노드 만들기","sidebarTitle":"첫 노드 만들기","href":"/ko/custom-nodes/walkthrough"},{"group":"Python (백엔드)","pages":[{"title":"커스텀 노드 속성","sidebarTitle":"노드 속성","href":"/ko/custom-nodes/backend/server_overview"},{"title":"ComfyUI 커스텀 노드 라이프사이클","sidebarTitle":"노드 수명 주기","href":"/ko/custom-nodes/backend/lifecycle"},{"title":"ComfyUI 커스텀 노드 데이터 타입","sidebarTitle":"데이터 유형","href":"/ko/custom-nodes/backend/datatypes"},{"title":"이미지, 랜트, 마스크","sidebarTitle":"이미지, 랜트, 마스크","href":"/ko/custom-nodes/backend/images_and_masks"},{"title":"숨겨진 및 유연한 입력","sidebarTitle":"숨겨진 및 유연한 입력","href":"/ko/custom-nodes/backend/more_on_inputs"},{"title":"지연 평가","href":"/ko/custom-nodes/backend/lazy_evaluation"},{"title":"노드 확장","href":"/ko/custom-nodes/backend/expansion"},{"title":"ComfyUI 데이터 목록과 목록 처리","sidebarTitle":"리스트 및 리스트 처리","href":"/ko/custom-nodes/backend/lists"},{"title":"torch.Tensor와 함께 작업하기","sidebarTitle":"텐서","href":"/ko/custom-nodes/backend/tensors"},{"title":"주석이 달린 예제","description":"ComfyUI 커스텀 노드 코드 예제: 이미지 로드/저장, 마스크 반전, 마스크 형태 변환, 투명도 레이어로 마스크 사용, 노이즈 생성.","href":"/ko/custom-nodes/backend/snippets"},{"title":"실행 모델 반전 가이드","sidebarTitle":"실행 모델 반전","icon":"code-branch","href":"/ko/development/comfyui-server/execution_model_inversion_guide"}]},{"group":"JavaScript (UI)","pages":[{"title":"JavaScript 확장기능","sidebarTitle":"JavaScript 확장","description":"WEB_DIRECTORY 내보내기, .js 파일 추가, app.registerExtension으로 확장을 등록하여 ComfyUI를 JavaScript 확장으로 확장하는 방법을 알아보세요.","href":"/ko/custom-nodes/js/javascript_overview"},{"title":"ComfyUI JavaScript 후크","sidebarTitle":"훅","href":"/ko/custom-nodes/js/javascript_hooks"},{"title":"컴피 오브젝트","href":"/ko/custom-nodes/js/javascript_objects_and_hijacking"},{"title":"설정 API","href":"/ko/custom-nodes/js/javascript_settings"},{"title":"ComfyUI 대화 API","sidebarTitle":"대화상자 API","href":"/ko/custom-nodes/js/javascript_dialog"},{"title":"ComfyUI Toast API","sidebarTitle":"토스트 API","href":"/ko/custom-nodes/js/javascript_toast"},{"title":"패널 배지에 대하여","href":"/ko/custom-nodes/js/javascript_about_panel_badges"},{"title":"하단 패널 탭","href":"/ko/custom-nodes/js/javascript_bottom_panel_tabs"},{"title":"사이드바 탭","href":"/ko/custom-nodes/js/javascript_sidebar_tabs"},{"title":"선택 도구 상자","href":"/ko/custom-nodes/js/javascript_selection_toolbox"},{"title":"명령어 및 키바인딩","href":"/ko/custom-nodes/js/javascript_commands_keybindings"},{"title":"ComfyUI 탑바 메뉴 API","sidebarTitle":"상단 메뉴 API","href":"/ko/custom-nodes/js/javascript_topbar_menu"},{"title":"ComfyUI 부그래프","sidebarTitle":"서브그래프","href":"/ko/custom-nodes/js/subgraphs"},{"title":"주석이 달린 예제","href":"/ko/custom-nodes/js/javascript_examples"}]},{"title":"ComfyUI 커스텀 노드 i18n 지원","sidebarTitle":"i18n 지원","href":"/ko/custom-nodes/i18n"},{"group":"마이그레이션 가이드","pages":[{"title":"V3 마이그레이션","href":"/ko/custom-nodes/v3_migration"},{"title":"컨텍스트 메뉴 마이그레이션 가이드","sidebarTitle":"컨텍스트 메뉴 마이그레이션","href":"/ko/custom-nodes/js/context-menu-migration"},{"title":"노드 교체","href":"/ko/custom-nodes/backend/node-replacement"}]}]},{"group":"패키지 및 게시","pages":[{"title":"ComfyUI 커스텀 노드에 노드 문서 추가하기","sidebarTitle":"노드 문서","href":"/ko/custom-nodes/help_page"},{"title":"워크플로 템플릿","href":"/ko/custom-nodes/workflow_templates"},{"title":"하위 그래프 블루프린트","href":"/ko/custom-nodes/subgraph_blueprints"},{"title":"Comfy Registry: 커스텀 노드 게시와 버전 관리","sidebarTitle":"Registry 개요","href":"/ko/registry/overview"},{"title":"노드 게시하기","href":"/ko/registry/publishing"},{"title":"내 노드 신청하기","href":"/ko/registry/claim-my-node"},{"title":"Comfy Registry 노드 품질 및 보안 표준","sidebarTitle":"품질 및 보안 기준","href":"/ko/registry/standards"},{"title":"커스텀 노드 CI/CD","sidebarTitle":"CI/CD","href":"/ko/registry/cicd"},{"title":"pyproject.toml","href":"/ko/registry/specifications"},{"title":"API 개요","href":"/ko/registry/api-reference/overview"},{"group":"Registry API 참조","pages":[{"title":"Get information about the calling user.","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /users","href":"/ko/registry/api-reference/registry/get-information-about-the-calling-user"},{"title":"Retrieve all publishers for a given user","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /users/publishers/","href":"/ko/registry/api-reference/registry/retrieve-all-publishers-for-a-given-user"},{"title":"Validate if a publisher username is available","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /publishers/validate","href":"/ko/registry/api-reference/registry/validate-if-a-publisher-username-is-available"},{"title":"Create a new publisher","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi post /publishers","href":"/ko/registry/api-reference/registry/create-a-new-publisher"},{"title":"Retrieve all publishers","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /publishers","href":"/ko/registry/api-reference/registry/retrieve-all-publishers"},{"title":"Retrieve a publisher by ID","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /publishers/{publisherId}","href":"/ko/registry/api-reference/registry/retrieve-a-publisher-by-id"},{"title":"Update a publisher","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi put /publishers/{publisherId}","href":"/ko/registry/api-reference/registry/update-a-publisher"},{"title":"Delete a publisher","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi delete /publishers/{publisherId}","href":"/ko/registry/api-reference/registry/delete-a-publisher"},{"title":"Retrieve permissions the user has for a given publisher","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /publishers/{publisherId}/nodes/{nodeId}/permissions","href":"/ko/registry/api-reference/registry/retrieve-permissions-the-user-has-for-a-given-publisher"},{"title":"Create a new personal access token","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi post /publishers/{publisherId}/tokens","href":"/ko/registry/api-reference/registry/create-a-new-personal-access-token"},{"title":"Delete a specific personal access token","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi delete /publishers/{publisherId}/tokens/{tokenId}","href":"/ko/registry/api-reference/registry/delete-a-specific-personal-access-token"},{"title":"Retrieve all nodes","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /publishers/{publisherId}/nodes/v2","href":"/ko/registry/api-reference/registry/retrieve-all-nodes"},{"title":"Retrieve all nodes","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /publishers/{publisherId}/nodes/v2","href":"/ko/registry/api-reference/registry/retrieve-all-nodes"},{"title":"Create a new custom node","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi post /publishers/{publisherId}/nodes","href":"/ko/registry/api-reference/registry/create-a-new-custom-node"},{"title":"Update a specific node","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi put /publishers/{publisherId}/nodes/{nodeId}","href":"/ko/registry/api-reference/registry/update-a-specific-node"},{"title":"Delete a specific node","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi delete /publishers/{publisherId}/nodes/{nodeId}","href":"/ko/registry/api-reference/registry/delete-a-specific-node"},{"title":"Retrieve permissions the user has for a given publisher","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /publishers/{publisherId}/nodes/{nodeId}/permissions","href":"/ko/registry/api-reference/registry/retrieve-permissions-the-user-has-for-a-given-publisher"},{"title":"Claim nodeId into publisherId for the authenticated publisher","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi post /publishers/{publisherId}/nodes/{nodeId}/claim-my-node","href":"/ko/registry/api-reference/registry/claim-nodeid-into-publisherid-for-the-authenticated-publisher"},{"title":"Publish a new version of a node","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi post /publishers/{publisherId}/nodes/{nodeId}/versions","href":"/ko/registry/api-reference/registry/publish-a-new-version-of-a-node"},{"title":"Update changelog and deprecation status of a node version","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi put /publishers/{publisherId}/nodes/{nodeId}/versions/{versionId}","href":"/ko/registry/api-reference/registry/update-changelog-and-deprecation-status-of-a-node-version"},{"title":"Unpublish (delete) a specific version of a node","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi delete /publishers/{publisherId}/nodes/{nodeId}/versions/{versionId}","href":"/ko/registry/api-reference/registry/unpublish-delete-a-specific-version-of-a-node"},{"title":"Retrieves a list of nodes","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /nodes/search","href":"/ko/registry/api-reference/registry/retrieves-a-list-of-nodes"},{"title":"Retrieves a list of nodes","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /nodes/search","href":"/ko/registry/api-reference/registry/retrieves-a-list-of-nodes"},{"title":"Retrieve a specific node by ID","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /nodes/{nodeId}","href":"/ko/registry/api-reference/registry/retrieve-a-specific-node-by-id"},{"title":"Returns a node version to be installed.","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /nodes/{nodeId}/install","href":"/ko/registry/api-reference/registry/returns-a-node-version-to-be-installed"},{"title":"Add review to a specific version of a node","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi post /nodes/{nodeId}/reviews","href":"/ko/registry/api-reference/registry/add-review-to-a-specific-version-of-a-node"},{"title":"Create Node Translations","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi post /nodes/{nodeId}/translations","href":"/ko/registry/api-reference/registry/create-node-translations"},{"title":"List all versions of a node","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /nodes/{nodeId}/versions","href":"/ko/registry/api-reference/registry/list-all-versions-of-a-node"},{"title":"Retrieve a specific version of a node","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /nodes/{nodeId}/versions/{versionId}","href":"/ko/registry/api-reference/registry/retrieve-a-specific-version-of-a-node"},{"title":"Retrieve multiple node versions in a single request","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi post /bulk/nodes/versions","href":"/ko/registry/api-reference/registry/retrieve-multiple-node-versions-in-a-single-request"},{"title":"List all node versions given some filters.","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /versions","href":"/ko/registry/api-reference/registry/list-all-node-versions-given-some-filters"},{"title":"list all comfy-nodes","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /comfy-nodes","href":"/ko/registry/api-reference/registry/list-all-comfy-nodes"},{"title":"Retrieve a node by ComfyUI node name","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /comfy-nodes/{comfyNodeName}/node","href":"/ko/registry/api-reference/registry/retrieve-a-node-by-comfyui-node-name"},{"title":"create comfy-nodes for certain node","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi post /nodes/{nodeId}/versions/{version}/comfy-nodes","href":"/ko/registry/api-reference/registry/create-comfy-nodes-for-certain-node"},{"title":"list comfy-nodes for node version","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /nodes/{nodeId}/versions/{version}/comfy-nodes","href":"/ko/registry/api-reference/registry/list-comfy-nodes-for-node-version"},{"title":"get specify comfy-node based on its id","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /nodes/{nodeId}/versions/{version}/comfy-nodes/{comfyNodeName}","href":"/ko/registry/api-reference/registry/get-specify-comfy-node-based-on-its-id"},{"title":"Update a specific comfy-node","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi put /nodes/{nodeId}/versions/{version}/comfy-nodes/{comfyNodeName}","href":"/ko/registry/api-reference/registry/update-a-specific-comfy-node"},{"title":"Get server feature flags","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /features","href":"/ko/registry/api-reference/registry/get-server-feature-flags"},{"title":"Get release notes","deprecated":null,"version":null,"openapi":"https://api.comfy.org/openapi get /releases","href":"/ko/registry/api-reference/releases/get-release-notes"}]}]}]},{"tab":"지원","pages":[{"title":"지원","href":"/ko/support/contact-support"}]},{"tab":"Cloud API 참조","pages":[{"title":"Cloud API 참조","href":"/ko/api-reference/cloud/workflow/get-information-about-current-prompt-executions"}]}]},{"language":"es","pages":[{"title":"es","href":"/es/development/comfyui-server/execution_model_inversion_guide"}]}]},"title":"실행 모델 반전 가이드 - ComfyUI","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":[],"chunks":[]}