#
Habana Gaudi에서 Stable Diffusion을 사용하는 방법

🤗 Diffusers는 🤗 Optimum Habana를 통해서 Habana Gaudi와 호환됩니다.

##
요구 사항

- Optimum Habana 1.4 또는 이후, 여기에 설치하는 방법이 있습니다.
- SynapseAI 1.8.

##
추론 파이프라인

Gaudi에서 Stable Diffusion 1 및 2로 이미지를 생성하려면 두 인스턴스를 인스턴스화해야 합니다:

- `GaudiStableDiffusionPipeline`이 포함된 파이프라인. 이 파이프라인은 텍스트-이미지 생성을 지원합니다.
- `GaudiDDIMScheduler`이 포함된 스케줄러. 이 스케줄러는 Habana Gaudi에 최적화되어 있습니다.

파이프라인을 초기화할 때, HPU에 배포하기 위해 `use_habana=True`를 지정해야 합니다. 또한 가능한 가장 빠른 생성을 위해 `use_hpu_graphs=True`로 HPU 그래프를 활성화해야 합니다. 마지막으로, Hugging Face Hub에서 다운로드할 수 있는 Gaudi configuration을 지정해야 합니다.

    from optimum.habana import GaudiConfig
    from optimum.habana.diffusers import GaudiDDIMScheduler, GaudiStableDiffusionPipeline

    model_name = "stabilityai/stable-diffusion-2-base"
    scheduler = GaudiDDIMScheduler.from_pretrained(model_name, subfolder="scheduler")
    pipeline = GaudiStableDiffusionPipeline.from_pretrained(
        model_name,
        scheduler=scheduler,
        use_habana=True,
        use_hpu_graphs=True,
        gaudi_config="Habana/stable-diffusion",
    )

파이프라인을 호출하여 하나 이상의 프롬프트에서 배치별로 이미지를 생성할 수 있습니다.

    outputs = pipeline(
        prompt=[
            "High quality photo of an astronaut riding a horse in space",
            "Face of a yellow cat, high resolution, sitting on a park bench",
        ],
        num_images_per_prompt=10,
        batch_size=4,
    )

더 많은 정보를 얻기 위해, Optimum Habana의 문서와 공식 Github 저장소에 제공된 예시를 확인하세요.

##
벤치마크

다음은 Habana/stable-diffusion Gaudi 구성(혼합 정밀도 bf16/fp32)을 사용하는 Habana first-generation Gaudi 및 Gaudi2의 지연 시간입니다:

| Latency (배치 크기 = 1) | Throughput (배치 크기 = 8)
--- | --- | ---
first-generation Gaudi | 4.29s | 0.283 images/s
Gaudi2 | 1.54s | 0.904 images/s