콘텐츠로 이동

SDXL-turbo (이미지 생성)

StableDiffusionXL-turbo (SDXL-turbo)는 StabilityAI에서 개발한 stable diffusion xl 모델중 하나로 매우 빠른 속도로 높은 품질의 이미지를 생성할 수 있습니다. SDXL-turbo는 기존 stable diffusion 모델들과는 다르게 한 스텝의 샘플링만으로도 높은 품질의 이미지를 생성할 수 있습니다. 이 튜토리얼에서는 optimum-rbln을 사용하여 sdxl-turbo를 컴파일하고 이미지를 생성하는 방법을 소개합니다.

이 튜토리얼은 두 단계로 구성되어 있습니다:

  1. 파이토치 SDXL-turbo 모델을 컴파일하는 방법
  2. 컴파일된 모델을 통해 이미지를 생성하는 방법

사전 준비

시작하기에 앞서 아래의 파이썬 패키지들을 설치합니다:

Note

세부사항을 생략하고, 빠르게 컴파일 및 이미지 생성하는 방법을 확인하려면 요약을 참고하세요. 컴파일 및 이미지 생성을 위한 모든 코드가 정리되어있어 빠르게 프로젝트를 시작할 수 있습니다.

1단계. 컴파일 방법

모델 준비 및 컴파일

SDXL-turbo 모델을 optimum-rbln에서 제공하는 RBLNStableDiffusionXLPipeline 클래스를 사용하여 컴파일 할 수 있습니다. RBLNStableDiffusionXLPipeline을 사용할때, 다음 매개변수를 사용해야 합니다:

  • export: 모델 컴파일을 위해서, 반드시 export매개변수를 True로 설정해야 합니다. 모델은 허깅페이스 허브에서 다운로드되며, 자동으로 RBLN SDK로 컴파일됩니다. export 매개변수를 False로 설정 할 경우, 사전 컴파일된 모델을 로드하고 바로 추론을 진행하게 됩니다.
1
2
3
4
5
6
7
8
from optimum.rbln import RBLNStableDiffusionXLPipeline

model_id="stabilityai/sdxl-turbo"
pipe = RBLNStableDiffusionXLPipeline.from_pretrained(
    model_id=model_id,
    rbln_guidance_scale=0.0,
    export=True,
)

컴파일된 모델 저장

디스크에 모델을 저장하기 위해, 아래 pipe.save_pretrained()를 사용할 수 있습니다:

pipe.save_pretrained("rbln-sdxl-turbo")

2단계. 이미지 생성 방법

컴파일된 모델 로드

먼저, 이미지 생성을 위해 컴파일된 모델을 로드해야 합니다. 이를 위해 RBLNStableDiffusionXLPipeline 클래스의 export 매개변수를 False로 설정합니다:

1
2
3
4
5
6
from optimum.rbln import RBLNStableDiffusionXLPipeline

pipe = RBLNStableDiffusionXLPipeline.from_pretrained(
    model_id="rbln-sdxl-turbo",
    export=False,
)

이미지 생성

이제 이미지를 생성할 준비가 되었습니다. 허깅페이스 StableDiffusionXLPipeline 클래스에있는 num_inference_stepsguidance_scale과 같은 원본 매개변수를 사용할 수 있습니다. SDXL-turbo는 guidance_scale이나 negative_prompt를 사용하지 않으며, guidance_scale=0.0 으로 이를 비활성화합니다:

1
2
3
prompt = "A cinematic shot of a baby racoon wearing an intricate italian priest robe."
image = pipe(prompt, num_inference_steps=1, guidance_scale=0.0).images[0]
image.save("generated_image.png")

본 튜토리얼이 잘 진행됐다면 아래와 유사한 이미지가 생성되는 것을 확인할 수 있습니다.

요약

SDXL-turbo를 컴파일하여 이미지 생성을 하기 위한 완성 된 코드는 아래와 같습니다:

from optimum.rbln import RBLNStableDiffusionXLPipeline

pipe = RBLNStableDiffusionXLPipeline.from_pretrained(
    "stabilityai/sdxl-turbo",
    export=True,
)

# 생성하기 희망하는 적절한 프롬프트를 입력하세요.
prompt = "A cinematic shot of a baby racoon wearing an intricate italian priest robe."
image = pipe(prompt, num_inference_steps=1, guidance_scale=0.0).images[0]
image.save("generated_image.png")