이 노드는 Ideogram4 모델 forward pass에 두 가지 실험적인 VRAM 절감 최적화를 적용합니다. "KJNodes/experimental" 카테고리에 속하며 모델 출력을 변경할 수 있습니다 — 피크 VRAM이 제한 요소일 때만 사용하고 출력 품질을 확인한 후에 사용하세요.
설명
Ideogram4 최적화 KJ 노드는 각 트랜스포머 블록에서 가장 큰 두 개의 임시 텐서(SwiGLU 활성화 및 RoPE 계산)를 대상으로 Ideogram4 모델을 패치하여 추론 중 피크 GPU 메모리를 줄입니다. 두 최적화는 개별 논리값 및 정수 입력으로 제어되므로 메모리 절감과 계산 오버헤드 간의 세밀한 조정이 가능합니다.
입력
-
model (MODEL, 필수) – 최적화를 적용할 Ideogram4 베이스 모델입니다.
-
chunk_ffn (BOOLEAN, 기본값
True) – 활성화되면 피드포워드(SwiGLU) 활성화가 토큰 시퀀스 차원을 따라 분할되어 중간 텐서 크기가(B, L, hidden)대신(B, chunk_size, hidden)으로 제한됩니다. 이는 피크 메모리를 줄이지만 약간의 계산 증가가 발생합니다. -
ffn_chunks (INT, 기본값
2, 범위 1–64, 간격 1) – 피드포워드를 분할할 시퀀스 청크 수입니다. 값이 높을수록 피크 메모리는 낮아지지만 오버헤드(더 많은 커널 실행)가 증가합니다. 값이1이면 청크가 사실상 비활성화됩니다.2부터 시작하고 VRAM이 여전히 부족하면 값을 높이세요. -
ffn_seq_threshold (INT, 기본값
1024, 범위 256–65536, 간격 256) – 입력 토큰 시퀀스 길이가 이 값을 초과할 때만 청크가 적용됩니다. 짧은 시퀀스(예: 1024 토큰 미만)의 경우 기준 메모리가 이미 충분히 작아 청크가 불필요한 오버헤드를 추가합니다. 일반적인 생성 길이에 따라 이 임계값을 설정하세요. -
bf16_rope (BOOLEAN, 기본값
True) – 활성화되면 Rotary Position Embedding(RoPE)이float32로 업캐스팅되는 대신 모델의 작업 dtype(일반적으로bfloat16또는float16)으로 적용됩니다. 이는 RoPE 활성화 메모리를 대략 절반으로 줄이고 Hugging Face 참조 구현에서 사용되는 정밀도와 일치합니다. 출력 품질은 기본fp32RoPE 경로와 약간 다를 수 있습니다.
출력
- MODEL – 선택한 최적화가 패치된 동일한 모델입니다. ComfyUI 워크플로에서 원본 패치되지 않은 모델을 대체하여 사용하도록 설계되었습니다.
사용 참고 사항
- 두 최적화 모두 실험적입니다. 프로덕션 워크플로에 배포하기 전에 항상 출력 품질을 테스트하고 패치되지 않은 모델과 비교하세요.
chunk_ffn및bf16_rope최적화는 독립적입니다. 필요한 것만 활성화하세요. 최대 메모리 절감을 위해 둘 다 활성화하세요.chunk_ffn을 사용할 때는 기본ffn_chunks = 2부터 시작하고 VRAM 오버플로우가 지속되는 경우에만 증가시키세요. 청크가 많을수록 오버헤드가 커집니다.ffn_seq_threshold는 워크플로가 매우 짧은 시퀀스와 매우 긴 시퀀스(예: 이미지 조건화와 전체 이미지 생성)를 모두 처리할 때 가장 유용합니다. 짧은 프롬프트에서 오버헤드를 피하기 위해 조정하세요.- 이러한 최적화는 Ideogram4 전용으로 설계되었습니다. 다른 모델 아키텍처에서는 효과가 없으며 적용 시 오류가 발생할 수 있습니다. 입력 모델이 Ideogram4 변형인지 확인하세요.
댓글
GitHub로 로그인하고 토론에 참여하세요.