ComfyUI 네이티브 루프 추가: Start Loop 및 End Loop 노드

ComfyUI Wikinews

이제 ComfyUI 코어에서 워크플로를 네이티브로 반복할 수 있습니다. Start Loop와 End Loop를 함께 쓰면 그래프를 횟수, 인덱스 범위, 목록 단위로 반복할 수 있습니다.

이제 ComfyUI 코어에서 커스텀 노드 없이 그래프를 반복할 수 있습니다. PR #16227이 두 개의 경계 노드인 Start LoopEnd Loop로 구성된 범용 반복 메커니즘을 추가했으며, 이는 2026-09-15에 공개된 코어 릴리스에 포함되었습니다. ComfyUI 업데이트 후 두 노드는 utilities/looping 카테고리에 나타납니다.

루프 구성 방식

설정할 루프 컨테이너는 없습니다. 루프는 한 쌍의 노드이며, 본문(body)은 그 사이에 놓인 모든 것입니다. 즉 Start Loop에서 End Loop까지 연결된 모든 것은 반복마다 한 번씩 실행됩니다.

루프 구조는 일반 프롬프트 검증 과정에서 확인되므로, 잘못 구성된 루프는 실행이 시작되기 전에 실패합니다. 모든 Start Loop는 정확히 하나의 End Loop와 명확하게 짝을 이뤄야 하고, 중첩된 범위는 일관성을 유지해야 하며, 루프 분기는 자신의 End Loop를 벗어날 수 없습니다. Start Loop와 End Loop는 노드 스키마에서 스스로를 루프 경계로 선언하며, 짝 검사는 바로 이 정보를 읽습니다.

실행 시점에 원본 본문은 비활성화되고, 첫 번째 반복을 포함한 각 반복이 새로운 대기열 그래프 노드로 투영됩니다. 반복은 별도의 루프 인터프리터가 처리하는 대신 일반적인 스케줄러 작업으로 유지되며, 반복 진행 상황은 노드에 Iteration n / total로 표시됩니다.

반복 횟수를 세는 세 가지 방법

Start Loop의 mode 입력은 반복 카운터가 생성되는 방식을 선택하며, 선택된 모드의 입력만 표시됩니다.

모드반복 대상전용 입력
simple고정된 횟수만큼 반복num_iterations (기본값 4)
For숫자 인덱스 범위start_iteration_index (기본값 0), max_iteration (기본값 4, 미포함), step (기본값 1)
List연결된 목록의 항목마다 한 번씩list

step은 최소 1이며 0이면 오류가 발생합니다. 계산된 반복 횟수가 0이면 루프 본문은 실행되지 않고 is_last는 true로 보고됩니다.

Start Loop가 반환하는 값

출력의미
iteration_index현재 반복의 인덱스
is_first첫 번째 반복에서 true
is_last마지막 반복에서 true
list_itemList 모드에서의 현재 항목이며, 다른 모드에서는 비어 있음
current_iteration_value이 반복에 대한 루프 이월 값

is_first는 첫 번째 패스를 다르게 처리할 때 흔히 사용하는 지점으로, 예를 들어 비디오 루프를 이전 윈도의 마지막 프레임 대신 소스 프레임에서 시작하도록 시드할 수 있습니다.

작은 이미지 생성 그래프를 감싸는 Start Loop와 End Loop

최소 구성: Start Loop 하나, 작은 생성 본문, End Loop 하나. 이미지 저장의 passthrough가 termination 입력에 연결되어 반복마다 한 번씩 실행됩니다.

루프 닫기

End Loop는 범위를 닫고 무엇이 빠져나갈지 결정합니다.

입력역할
output_value루프가 끝난 뒤 반환되는 값
next_iteration_value다음 반복을 위해 current_iteration_value로 Start Loop에 다시 전달됨
accumulate활성화하면 마지막 값만이 아니라 모든 반복의 output_value가 반환됨
termination 입력미리보기, 저장 및 반복마다 실행되어야 하는 기타 부수 효과를 위한 동적 증가 입력. 해당 값은 반환되지 않음

End Loop에는 output_value의 타입을 따르는 단일 출력 소켓이 있습니다. accumulate를 활성화하면 값은 반복 순서대로 연결된 일반 ComfyUI 목록으로 출력됩니다.

termination 입력은 흔히 겪는 문제를 해결합니다. 본문 안에 있는 이미지 미리보기나 이미지 저장 노드는 이전에 투영된 본문이 대체되기 때문에 그대로 두면 마지막 반복에서만 실행됩니다. 해당 노드의 passthrough를 termination 입력에 연결하면 반복마다 한 번씩 실행되면서 루프 경계 안에 유지됩니다.

모든 반복의 출력 누적

accumulate를 켜면 네 번의 생성 결과가 하나의 목록으로 반환됩니다. 이미지 미리보기가 termination 처리되어 각 반복이 완료될 때마다 확인할 수 있습니다.

반복마다 작업 내용 바꾸기

iteration_index는 일반 정수 출력이므로 해상도, 스텝 수, 프롬프트 변형, LoRA 강도 램프 등 하위의 무엇이든 제어할 수 있습니다.

반복마다 다른 해상도를 제어하는 For 모드

For 모드에서 iteration_index를 해상도에 연결하고, 서로 다른 크기의 결과를 마지막에 누적합니다.

반복 간 상태 이어가기

initial_iteration_value는 첫 번째 반복에서 이월 값을 초기화하고, 각 반복의 next_iteration_value는 다음 반복의 current_iteration_value가 됩니다. 이것이 상태 채널의 전부이며, Start Loop와 End Loop 쌍마다 정확히 하나씩 존재합니다.

여러 값을 이어가려면 목록에 담으면 됩니다. 기존 Create List 노드가 이제 서로 다른 타입의 입력을 받을 수 있으므로, 하나의 이월 값에 이미지와 그것을 생성한 텍스트 프롬프트 같은 혼합 상태를 담을 수 있습니다. utilities 카테고리의 두 노드가 이 패턴을 지원합니다.

  • Create List: 서로 다른 입력으로 이월 값을 구성합니다.
  • Get Item From List: 같은 릴리스에서 새로 추가되었습니다. 목록과 인덱스를 받아 해당 항목을 일반 값으로 반환하므로, 다음 반복 안에서 이월 상태의 구성 요소를 풀어낼 수 있습니다.
이월된 이미지와 프롬프트 값을 통해 서로에게 전달되는 두 번의 생성

Z-Image 생성과 비전-언어 캡셔닝이 하나의 이월 이미지 및 텍스트 값을 통해 주고받습니다.

중첩과 캐싱

Start Loop의 parent_iteration은 force 입력입니다. 외부 루프의 iteration_index를 여기에 연결하면 루프를 다른 루프 안에 중첩할 수 있습니다. 중첩은 추론이 아니라 명시적으로 지정하며, 각 Start Loop에는 여전히 정확히 하나의 End Loop가 필요합니다.

Start Loop의 cache_iterations는 고급 옵션이며 기본적으로 꺼져 있습니다. 활성화하면 투영된 반복 노드가 이전 실행의 캐시된 결과를 재사용할 수 있습니다. End Loop 노드 자체는 일반적인 실행 노드이므로, 어느 경우든 최종 출력은 정상적으로 캐시됩니다.

목록 기반 외부 루프 안에 중첩된 내부 루프

프롬프트를 순회하는 List 모드 외부 루프 안에 parent_iteration으로 생성 루프를 중첩한 구성.

비디오 및 잠재 데이터 예시

이 메커니즘은 각 윈도가 이전 윈도에 의존하는 비디오 확장을 염두에 두고 만들어졌습니다. 공개된 두 예시에서 이 패턴을 직접 확인할 수 있습니다.

이월된 마지막 프레임으로 비디오 윈도 연결

마지막 프레임에서 첫 프레임으로 이어지는 비디오 루프: 소스 이미지가 initial_iteration_value를 시드하고, 생성된 각 윈도의 마지막 프레임이 다음 윈도의 첫 프레임이 되며, 프레임 배치는 누적되어 하나의 클립으로 다시 배치됩니다.

루프를 통해 잠재 데이터를 이어가고 LoRA 강도 램프 적용

accumulate를 끈 상태로 잠재 데이터를 루프를 통해 직접 이어가므로 최종 잠재 데이터만 반환되며, 첫 반복 처리를 위한 lazy switch와 샘플링이 진행됨에 따라 점진적으로 변하는 LoRA 강도도 포함됩니다.

가장 단순한 시작점인, 이월 상태가 없는 4회 반복 생성 루프는 하나의 Start Loop와 End Loop 쌍으로 구성됩니다.

노드 위치

Start Loop와 End Loop는 utilities/looping 카테고리의 코어 노드로 ComfyUI에 기본 포함되므로 별도의 노드 팩이 필요하지 않습니다. Create List와 Get Item From List는 utilities에 있습니다. 반복 동작은 공식 내장 노드 페이지인 Start LoopEnd Loop에 문서화되어 있습니다.

기존 워크플로는 영향을 받지 않습니다. 루프는 선택 사항이며, Start Loop와 End Loop 쌍이 없는 그래프는 이전과 똑같이 대기열에 들어갑니다.

댓글

GitHub로 로그인하고 토론에 참여하세요.

댓글을 불러오는 중…
ComfyUI 네이티브 루프 추가: Start Loop 및 End Loop 노드 | ComfyUI Wiki