ComfyUI 핵심 블록 희소 어텐션 노드 및 Comfy Compiler 추가

ComfyUI Wikinews

Kijai 의 블록 희소 어텐션이 MiniMax H3 를 위한 세 가지 백엔드로 ComfyUI 코어에 탑재되었으며, VRAM 낭비를 줄이고 긴 H3 실행 속도를 높이는 새로운 메모리 컴파이어가 추가되었습니다.

이번 주 ComfyUI 코어에 두 가지 성능 개선 릴리스가 도착했습니다. 블록 희소 어텐션 (PR #16072, 9 월 6 일 병합) 은 comfy-kitchen 커널을 기반으로 한 공식 스파스 어텐션 노드를 추가하며, Comfy Compiler (PR #15861, 9 월 5 일 병합) 은 기존 CUDA 그래프 경로 위에 CUDA 할당 오버헤드를 줄이는 메모리 컴파이어를 도입합니다. 둘 다 긴 시퀀스를 목표로 합니다: MiniMax H3 는 첫 번째 변환된 모델이며, 스파스 노드는 H3 전용 옵션으로 제공됩니다.

블록 희소 어텐션: 하나의 노드, 세 가지 백엔드

새로운 블록 희소 어텐션 노드 (카테고리 advanced/model, 실험적 표시됨) 는 comfy_extras/nodes_sparse_attention.py 에 위치하며 각 쿼리 블록을 선택된 키 블록의 하위 집합으로 라우팅합니다. 상대적인 속도 향상은 시퀀스 길이에 따라 증가하며, 이는 정확히 10 초 H3 클립의 영역입니다. min_tokens 가드 는 짧은 시퀀스를 자동으로 밀집 상태로 유지합니다.

동일한 노드에 세 가지 선택 모드가 포함되어 있습니다:

  • Sol-Attn (적응형 tau): 점수 분포 시그마 당 헤드별 적응형 임계값입니다. tau 1.0 은 약 16% 의 키 블록을 정확하게 유지하고, 1.5 는 약 7%, 2.0 은 약 2.7% 를 유지합니다. 이는 특별히 학습된 가중치 없이 작동하는 모드입니다.
  • top-k (SLA): 모든 곳에서 고정된 keep_percent 의 키 블록입니다. 이는 lightx2v SLA 스타일 터보 LoRA 가 증류되는 대상과 일치하므로 해당 학습된 가중치와 함께 사용할 것을 권장합니다.
  • VSA (FastVideo): 조밀한 압축 브랜치가 있는 큐브 타일링으로, 10% 유지율의 FastH3-VSA 학습 설정과 일치합니다. 존재할 경우 모델의 to_gate_compress 레이어를 사용합니다.

일정 창 (start_percent / end_percent, 기본값 0.2 에서 1.0) 은 초기 디노이즈 단계를 밀집 상태로 유지하며, 두 가지 H3 전용 고급 옵션이 조건화를 처리합니다: sink_conditioning 은 패킹된 텍스트/오디오/참조 행을 정확히 어텐션하여 (~3% 비용) 프롬프트와 오디오가 저하되지 않도록 하고, extra_tokens 은 선택된 블록 이상의 최고 점수 토큰을 추가하여 밀집 상태에 더 가깝게 유지합니다.

지금까지 이 기능은 별도의 커뮤니티 노드 팩으로만 존재했으며, 커뮤니티 테스트는 LoRA 만으로는 매칭되는 스파스 백엔드가 없으면 아무것도 하지 않는다는 것을 보여주었습니다. 핵심 노드는 세 가지 접근 방식을 하나의 인터페이스 뒤로 통합하여 단일 워크플로는 콤보 박스 하나를 변경하여 Sol-Attn, SLA 및 VSA 간에 전환할 수 있습니다.

ComfyUI memory usage and iteration speed on a MiniMax H3 run with the Comfy Compiler

PR #15861 의 Comfy Compiler 벤치마크: RTX 5060 에서 158 프레임의 MiniMax H3 720p 는 메모리 컴파이어가 활성화되면 안정적인 VRAM 발자국과 훨씬 높은 반복 속도를 보여줍니다.

Comfy Compiler: 더 적은 할당, 더 빠른 단계

Comfy Compiler (PR #15861) 는 두 층 컴파일 프로세스입니다:

  1. aimdo 메모리 컴파이어 (comfy-aimdo 0.5.0 내) 는 메모리 할당을 사전에 계산하고 최소화하여 CUDA 할당 호출을 일회성 설정으로 줄이고 추론 메모리를 안정적이고 일정하게 유지합니다. PR 에 따르면 이는 할당자 스래시를 제거하고 동적 VRAM 압력과 CUDA 의 보고된 숫자 사이의 경주를 방지하며, 해제된 할당이 캐시에 머무르는 대신 물리적 VRAM 피크가 논리적 할당 피크와 일치하도록 보장합니다.
  2. 그 위에 CUDA 그래프 레이어가 있습니다. 메모리 컴파이어에서 생성된 안정적인 가상 주소는 그래프 녹화가 안전하도록 하는 요소이며, 동기화는 첫 번째 트랜스포머 블록에서만 필요합니다.

실제 효과는 PR 벤치마크에서 나타납니다: 이전에는 진행 없이 멈췄던 RTX 5060 에서의 MiniMax H3 720p 158 프레임 실행이 변경 후 단계당 약 43 초로 완료되며, 같은 카드에서 MiniMax Music 3 AR 샘플링은 단계 처리량이 약 35% 향상됩니다.

프리페처를 사용하는 모든 모델과 MiniMax H3 는 초기 병합에서 변환됩니다. WAN 은 향후 작업으로 나열되어 있으며, 이는 동일한 방식으로 최대 가능한 생성 크기를 높일 것입니다.

ComfyUI log output before the Comfy Compiler: the run stalls with no iteration activity

이전: H3 실행은 19.9 GB 의 스테이지된 가중치를 준비한 후 몇 분 동안 침묵합니다. 변경 후, 동일한 실행은 꾸준한 단계별 진전을 보여줍니다.

주의 사항: 초기 OOM 및 취소 충돌

Banodoco Discord 의 커뮤니티 테스트는 처음 며칠 동안 두 가지 거친 부분을 검토 대상으로 표시했습니다. Comfy Compiler 도 활성 상태일 때 스파스 실행은 OOM 될 수 있으며, 스파스 노드가 로드된 상태에서 실행을 취소하면 ComfyUI 가 충돌할 수 있습니다. 후속 커밋 (#16148, "긴 생명주기의 스파스 할당을 위해 Comfy 컴파일러 일시 중지") 은 이미 상호 작용을 해결했으며, --disable-comfy-compiler 는 대체 플래그로 계속 사용 가능합니다. 노드의 밀집 대체 경로는 시퀀스가 일정 창 바깥에 있거나 min_tokens 아래인 경우 일반 밀집 백엔드를 재배선 없이 단순히 실행한다는 의미입니다.

제공 여부

두 기능 모두 현재 ComfyUI 빌드에 포함되어 있습니다: 블록 희소 어텐션 노드는 comfy-kitchen 0.2.33 이 필요하며 (이미 requirements.txt 포함), Comfy Compiler 는 comfy-aimdo 0.5.2 와 함께 코어의 일부입니다. 최신 설치에서는 추가 설치 단계가 필요하지 않습니다. MiniMax H3 워크플로우 사용자는 모델 로더와 샘플러 사이에 노드를 배치하기만 하면 됩니다.

댓글

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

댓글을 불러오는 중…
ComfyUI 핵심 블록 희소 어텐션 노드 및 Comfy Compiler 추가 | ComfyUI Wiki