본문 바로가기
Stable Diffusion

cross-attention optimization webui 이미지 생성 속도 최적화

by DesignerAllan 2023. 10. 16.
반응형

안녕하세요 Allan입니다.

 

webui를 사용하다 보면 고사양의 GPU를 가지고 계시지 않는 이상, 속도가 매우 느려 답답할 때가 많습니다.

 

특히 저와 같은 코랩 유저시라면, 이미지 해상도가 조금만 올라가도 속도가 너무 느려지는 현상을 자주 겪으셨을 것이라 생각합니다.

 

따라서, 이를 해결해기 위해 이번 포스팅에서는 cross-attention optimization을 통해 webui 이미지 생성 속도를 빠르게 개선하는 방법에 대해서 알아보도록 하겠습니다.

 

Ⅰ. Cross-attention optimization

cross attention은 프롬프트와 이미지가 만나는 U-net에서 텍스트 트랜스포머의 출력을 사용하는 메커니즘을 말합니다.

 

cross attention optimization은 이 과정을 최적화하여 이미지 생성 속도를 개선해 주는 역할을 합니다.

 

대표적으로는 많은 사람들이 이용하고 있는 xformers가 있습니다.

 

cross-attention optimization은 webui 1.6.0v 기준 Settings > Optimization에서 변경할 수 있습니다.

아마 기본 설정 값은 Automatic일 것입니다.

 

Ⅱ. Cross-attention optimiztion 종류

cross-attention optimization에는 여려 종류가 있습니다.

 

변경 창에 보면 다음과 같은 종류의 Cross-attention optimization이 있는 것을 확인할 수 있습니다.

 

  • Doggettx
  • xformers
  • sdp-no-mem - scaled dot product without memory efficient attention
  • sdp - scaled dot product
  • sub-quadratic
  • V1 - original v1
  • InvokeAI

 

1. xformers

어떠어떠한 원리로 인해서 메모리 사용량이 적고 작업 속도가 빨라진다고 합니다.

 

구체적인 이유에 대해서는 알 필요 없으니 생략하도록 하겠습니다.

 

xformer는 얼마 전 까지만 해도 가장 좋다고 알려져 있었으나, 너무 빨리 바뀌어서 현재는 잘 모르겠습니다.

 

그래도 안쓰는 것 보다는 낫다고 합니다.

 

Torch 1.13 에서만 효과적이고

Torch 2.0 부터는 사용 불가능하다고 하니 참고해주시면 되겠습니다.
(webui에서 기본적으로 지원하지 않으나 수동으로 설치하면 사용가능)

 

 

torch 버전 선택

torch 버전은 원클릭 코랩에서는 위와 같이 설정할 수 있습니다.

 

 

2. Doggettx

구형 cross-attention optimization입니다. 되도록 다른 것을 사용해 주시면 되겠습니다.

 

 

3. sub-quadratic

xformer의 효과적인 대안이라고 합니다.

 

 

5. sdp - scaled dot product

torch 2.0.0에서 부터 지원하는 crossattention optimization입니다.

 

xformers에 이어서 가장 많이 사용되고 있습니다.

 

다만, 동일 파라미터를 적용하여 이미지를 생성하더라도 동일한 이미지가 생성되지 않을 수 있다는 단점이 있습니다.

 

 

4. sdp-no-mem - scaled dot product without memory efficient attention

torch 2.0.0에서 부터 지원하는 crossattention optimization입니다.

 

SDP의 단점이 제거된 버전이라고 합니다.

다만 메모리 효율 최적화가 적용되지 않았다고 합니다.

 

 

6. InvokeAI

NVIDIA GPU를 사용하지 않는 맥OS용 사용자에게 적합한 cross attention입니다.

 

 

Ⅲ. 어떤 Cross attention optimization을 사용하는 것이 좋을까?

추천드리는 cross attention optimization은 xformers와 sdp입니다.

 

xformers와 sdp의 차이점은 다음과 같습니다.

 

xformers는 CPU에서 일부 작업을 수행하기 때문에 저가형 GPU라면 큰 도움을 받을 수 있습니다. 
반면 SDP는 GPU에서 모든 작업을 수행하기 때문에 고가형 GPU일 경우에 효율적입니다.

 

또한 이전에 말씀드린 것처럼 torch 1.13에서는 xformers만, torch 2.0.0에서는 sdp만 사용가능합니다.

 

이 점 참고하셔서 Cross attention optimization 선택해주시면 되겠습니다.

 

코랩의 경우 경험상 크게 차이가 나지 않는 것 같습니다.

확실한 것은 optimization을 사용하지 않는 것보다는 어느 것이던 적용하여 사용하는 것이 훨씬 빠른 이미지 생성이 가능하다는 것입니다.

 

지금까지 적용하지 않으셨다면, torch 버전에 따라 둘 중 하나를 선택하여 조금 더 쾌적한 환경에서 webui를 사용하시기를 바랍니다.

반응형