사용 그래픽카드: RX 5700 XT

참조:  Olive/examples/directml/stable_diffusion at main · microsoft/Olive · GitHub


장점

1. 빠르다. WebUI에서는 512x768이 1.07it/s 정도, 512x512가 1.5it/s 정도 나오는데 이녀석은 512x512에서 2.03it/s 정도 나온다.


단점

1. ONNXRuntime이다.

ㄴ 단순 ckpt나 safetensors만으로는 구동할 수 없고  runwayml/stable-diffusion-v1-5 at main (huggingface.co) 이것처럼 feature_extractor, safety_checker, scheduler, text_encoder, tokenizer, unet, vae가 전부 필요하다. (safety_checker는 없어도 생성은 가능)

ㄴ WebUI가 지원하는 각종 기능들과 편의성을 사용할 수 없다.

2. 각 모델마다 모델 최적화 과정을 거쳐야 한다. 한번만 해주면 다음부턴 안해도 되지만 이 과정이 꽤 오래 걸린다. (그리고 최적화는 CPU를 쓴다)

ㄴ 최적화 과정이 있는 걸 보면 알 수 있듯이 학습이 불가능하고 추론만 가능하다.

ㄴ 최적화 과정에서 생성 가능한 해상도가 하나로 결정되는 것 같다. 기본값은 512x512

3. DirectML이다. Olive는 엔비디아 그래픽카드도 DirectML이 강제되는 듯 하다. 기존 DirectML의 문제점을 모두 상속한다.

ㄴ 메모리가 비워지지 않는다. -> 메모리를 과하게 많이 사용한다. -> 최대 해상도 및 배치 사이즈에 제한이 생긴다.