본문 바로가기
AI · 인공지능/이미지 생성 AI

「스테이블 디퓨전(Stable Diffusion)」이 TensorFlow와 KerasCV에서 약 30% 빨라지는 것이 판명

by 두우우부 2022. 9. 29.
반응형


기계학습 플랫폼 TensorFlow에서 실행되며 파이썬으로 작성된 딥러닝 API가 「케라스(Keras)」입니다.

이 Keras를 확장한 모듈식 빌딩 블록「KerasCV」를 사용하면, 이미지 생성 AI Stable Diffusion이 약 30% 빨라진다는 보고가 KerasCV 개발 연구팀에서 올라왔습니다.

High-performance image generation using Stable Diffusion in KerasCV

Keras documentation: High-performance image generation using Stable Diffusion in KerasCV

High-performance image generation using Stable Diffusion in KerasCV Authors: fchollet, lukewood, divamgupta Date created: 2022/09/25 Last modified: 2022/09/25 Description: Generate new images using KerasCV's StableDiffusion model. View in Colab • GitHub

keras.io



Stable Diffusion은 2022년 8월에 공개된 오픈 소스 이미지 생성 AI로 입력한 키워드(프롬프트)에 따라 이미지를 자동으로 생성할 수 있습니다.


참고 글 : 문장으로 이미지를 생성하는 AI「스테이블 디퓨전(Stable Diffusion)」을 사용해 보았다

문장으로 이미지를 생성하는 AI「스테이블 디퓨전(Stable Diffusion)」을 사용해 보았다

런던과 캘리포니아를 거점으로 하는 스타트업 Stability AI가, 마치 아티스트가 그린 것 같은 고품질 이미지를 생성하는 이미지 생성 AI 「Stable Diffusion」을 일반에 공개했습니다. 모델은 Creative ML

doooob.tistory.com



Stable Diffusion은 데이터 세트에서 학습한 내용을 일단 노이즈로 돌리고, 주어진 프롬프트나 이미지에 의해 방향을 지정하면서 노이즈 제거를 실시하여 이미지를 생성하는 구조입니다.



원래 Stable Diffusion의 기본이 되는 것은 초해상 기술입니다. 예를 들어 저해상도의 화상을 단순히 확대했을 때, 사이즈가 커져도 해상도는 그대로이므로,「노이즈」가 눈에 띄게 됩니다. 그래서, 기계학습 알고리즘에 의해 이「노이즈」를 제거해 해상도를 올리는 기술은 이전부터 행해지고 있었습니다.

이 초해상 기술을 한층 더 발전시키고, 「초해상을 사용하는 모델에 완전한 노이즈를 되풀이하여 읽혀나가면 무엇이 생성될까?」라는 의문으로부터 스타트한 것이, Stable Diffusion을 비롯한 잠재 확산 모델입니다.


그래서 연구팀은 PyTorch / Hugging Face Diffusers 에서 동작하는 Stable Diffusion을 TensorFlow/KerasCV에서도 구현하고, 생성 스텝 수 50으로 이미지를 생성했을 경우의 실행 시간을 계측해 비교했습니다.

웜 스타트(Warm start : 이미 한 번 열렸을 때) 결과는 다음과 같습니다. KerasCV에 구현한 것이 고속으로 처리되었으며, 특히 Tesla T4를 GPU에 사용한 경우, Hugging Face Diffusers에 비해 30% 개선된 속도를 보이고 있습니다.

웜 스타트 시 NVIDIA Tesla T4 (VRAM 16GB GDDR6) NVIDIA Tesla V100 (VRAM32GB HBM2)
KerasCV 28.97초 12.45초
Hugging Face Diffusers 41.33초 12.72초

또, 콜드 스타트 (Cold start : 최초 시작)에서의 계측 결과는 이하와 같고, KerasCV 쪽 처리시간이 더 걸려버리는 결과가 되었습니다. 그러나 콜드 스타트는 처음 1회뿐이므로 실제로 몇 번이나 Stable Diffusion을 작동시키는 프로덕션 환경에서는 무시할 수 있는 결과라고 연구팀은 코멘트하고 있습니다.

콜드 스타트 ​​시 NVIDIA Tesla T4 (VRAM 16GB GDDR6) NVIDIA Tesla V100 (VRAM32GB HBM2)
KerasCV 83.47초 76.43초
Hugging Face Diffusers 46.27초 13.90초


또한 TensorFlow에는 XLA(Accelerated Linear Algebra) 컴파일러가 내장되어 있습니다.
이 XLA 컴파일러를 사용하면 속도가 크게 향상됩니다. 보통이라면 이미지 생성에 약 8.17초 걸렸던 것이 XLA 컴파일러만 사용하면 약 6.26초로 줄어든다고 합니다.

게다가 KerasCV에서는 float16의 정밀도로 계산을 실시해, float32 형식으로 가중치를 보존하는「혼합 정밀도」를 간단하게 유효화할 수 있다고 합니다. 이 혼합 정밀도와 XLA 컴파일러를 결합하면 이미지 생성 시간이 약 4.25초로 줄어들 것이라고 연구팀은 보고하고 있습니다.


또한 TensorFlow와 KerasCV에서 실행할 수 있는 Stable Diffusion의 리포지토리는 GitHub에 공개되어 있습니다.

GitHub - divamgupta/stable-diffusion-tensorflow: Stable Diffusion in TensorFlow / Keras

GitHub - divamgupta/stable-diffusion-tensorflow: Stable Diffusion in TensorFlow / Keras

Stable Diffusion in TensorFlow / Keras. Contribute to divamgupta/stable-diffusion-tensorflow development by creating an account on GitHub.

github.com

반응형