Buckets:

mishig's picture
|
download
raw
49.3 kB
# 파이프라인
Pipelines는 여러 독립적으로 학습된 모델, 스케줄러, 프로세서와 같은 모든 필수 구성 요소를 하나의 끝에서 끝(end-to-end) 클래스로 묶어, 최첨단 diffusion 모델을 추론(inference)으로 실행하는 간단한 방법을 제공합니다. Pipelines는 유연하며, 다른 스케줄러 또는 심지어 모델 구성 요소를 사용하도록 조정할 수 있습니다.
모든 파이프라인은 모든 구성 요소를 로드, 다운로드 및 저장하는 기본 기능을 제공하는 기본 [DiffusionPipeline](/docs/diffusers/main/ko/api/pipelines/overview#diffusers.DiffusionPipeline) 클래스로 구성됩니다. [from_pretrained()](/docs/diffusers/main/ko/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained)로 로드되는 특정 파이프라인 유형(예: [StableDiffusionPipeline](/docs/diffusers/main/ko/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline))은 자동으로 감지되며, 파이프라인 구성 요소가 로드되어 해당 파이프라인의 `__init__` 함수에 전달됩니다.
> [!WARNING]
> [DiffusionPipeline](/docs/diffusers/main/ko/api/pipelines/overview#diffusers.DiffusionPipeline) 클래스는 학습에 사용해서는 안 됩니다. diffusion 파이프라인의 개별 구성 요소(예: [UNet2DModel](/docs/diffusers/main/ko/api/models/unet2d#diffusers.UNet2DModel) 및 [UNet2DConditionModel](/docs/diffusers/main/ko/api/models/unet2d-cond#diffusers.UNet2DConditionModel))는 일반적으로 개별적으로 학습되므로, 대신 해당 구성 요소에 직접 작업하는 것을 권장합니다.
>
>
>
> Pipelines에는 학습 기능이 제공되지 않습니다. 파이프라인은 학습에 사용되지 않아야 하므로, [`torch.no_grad`](https://pytorch.org/docs/stable/generated/torch.no_grad.html) 데코레이터로 `__call__()` 메서드를 장식하여 PyTorch의 autograd가 비활성화됨을 확인할 수 있습니다. 학습에 관심이 있으시다면 [Training](../../training/overview) 가이드를 참고해 주세요!
사이드바의 **API > 파이프라인**을 사용하여 모달리티별 모든 파이프라인 참조를 탐색할 수 있습니다. 작업 중심 워크플로우의 경우 [빠른 시작](../../quicktour) 또는 [텍스트-이미지 변환](../../using-diffusers/conditional_image_generation), [이미지-이미지 변환](../../using-diffusers/img2img), [인페인팅](../../using-diffusers/inpaint), [비디오 생성](../../using-diffusers/text-img2vid)과 같은 가이드로 시작하세요.
## DiffusionPipeline[[diffusers.DiffusionPipeline]]
#### diffusers.DiffusionPipeline[[diffusers.DiffusionPipeline]]
```python
diffusers.DiffusionPipeline()
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L198)
모든 파이프라인의 베이스 클래스입니다.
[DiffusionPipeline](/docs/diffusers/main/ko/api/pipelines/overview#diffusers.DiffusionPipeline)는 diffusion 파이프라인의 모든 구성 요소(모델, 스케줄러, 프로세서)를 저장하고 모델의 로딩, 다운로드 및 저장을 위한 메서드를 제공합니다. 또한 다음 메서드를 포함합니다:
- PyTorch 모듈을 원하는 장치로 모두 이동
- denoising 반복에 대한 진행 표시줄을 활성화/비활성화합니다
클래스 속성:
- **config_name** (`str`) -- 모든 diffusion pipeline 구성 요소의 클래스 및 모듈 이름을 저장하는 구성 파일 이름입니다.
- **_optional_components** (`List[str]`) -- 파이프라인이 동작하기 위해 전달할 필요가 없는 모든 선택적 컴포넌트의 목록 (서브클래스에서 오버라이드해야 합니다).
#### __호출__[[diffusers.DiffusionPipeline.__call__]]
```python
__call__(*args, **kwargs)
```
self를 함수로 호출합니다.
#### device[[diffusers.DiffusionPipeline.device]]
```python
device()
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L600)
**반환값:** `torch.device`
파이프라인이 위치한 torch 디바이스입니다. 구성 요소가 여러 디바이스에 걸쳐 분할된 경우(예: 텍스트 인코더는 CPU에, 디노이징 백본은 가속기에서 실행되는 경우) 가속기 디바이스가 반환됩니다.
#### (으)로[[diffusers.DiffusionPipeline.to]]
```python
to(*args, **kwargs)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L397)
**매개변수:**
dtype (`torch.dtype`, *선택 사항*) : 지정된 [`dtype`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.dtype)를 가진 파이프라인을 반환합니다
device (`torch.Device`, *선택 사항*) : 지정된 [`device`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.device)를 가진 파이프라인을 반환합니다
silence_dtype_warnings (`str`, *선택 사항*, 기본값 `False`) : 대상 `dtype`이 대상 `device`와 호환되지 않는 경우 경고를 생략할지 여부.
**반환값:** [DiffusionPipeline](/docs/diffusers/main/ko/api/pipelines/overview#diffusers.DiffusionPipeline)
파이프라인이 지정된 `dtype` 및/또는 `dtype`으로 변환되었습니다.
Performs Pipeline dtype and/or device conversion. A torch.dtype and torch.device are inferred from the arguments of `self.to(*args, **kwargs).`
> [!TIP] > 파이프라인에 이미 올바른 torch.dtype와 torch.device가 있는 경우, 그대로 반환됩니다.
그렇지 않은 경우, > 반환되는 pipeline은 원하는 torch.dtype과 torch.device를 가진 self의 복사본입니다.
`to`를 호출하는 방법은 다음과 같습니다:
- `to(dtype, silence_dtype_warnings=False) → DiffusionPipeline`를 사용하여 지정된 [`dtype`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.dtype)을 가진 파이프라인을 반환합니다
- `to(device, silence_dtype_warnings=False) → DiffusionPipeline`를 호출하여 지정된 [`device`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.device)를 가진 파이프라인을 반환합니다
- `to(device=None, dtype=None, silence_dtype_warnings=False) → DiffusionPipeline`는 지정된 [`device`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.device)와 [`dtype`](https://pytorch.org/docs/stable/tensor_attributes.html#torch.dtype)를 가진 파이프라인을 반환합니다
#### 컴포넌트[[diffusers.DiffusionPipeline.components]]
```python
components()
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L1925)
`self.components` 속성은 추가 메모리를 할당하지 않고 동일한 가중치와 구성으로 다른 파이프라인을 실행하는 데 유용할 수 있습니다.
Returns (`dict`): 파이프라인 초기화에 필요한 모든 모듈을 포함하는 사전입니다.
예:
```py
>>> from diffusers import (
... StableDiffusionPipeline,
... StableDiffusionImg2ImgPipeline,
... StableDiffusionInpaintPipeline,
... )
>>> text2img = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> img2img = StableDiffusionImg2ImgPipeline(**text2img.components)
>>> inpaint = StableDiffusionInpaintPipeline(**text2img.components)
```
#### disable_attention_slicing[[diffusers.DiffusionPipeline.disable_attention_slicing]]
```python
disable_attention_slicing()
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2085)
슬라이스된 어텐션 계산 기능을 비활성화합니다. `enable_attention_slicing`가 이전에 호출된 경우, 어텐션은 한 번에 계산됩니다.
#### disable_xformers_memory_efficient_attention[[diffusers.DiffusionPipeline.disable_xformers_memory_efficient_attention]]
```python
disable_xformers_memory_efficient_attention()
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2024)
[xFormers](https://facebookresearch.github.io/xformers/)에서 메모리 효율적 어텐션을 비활성화합니다.
#### 다운로드[[diffusers.DiffusionPipeline.download]]
```python
download(pretrained_model_name, **kwargs)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L1501)
**매개변수:**
pretrained_model_name (`str` 또는 `os.PathLike`, *선택 사항*) : Hub에 호스팅된 사전 학습된 파이프라인의 문자열 또는 *리포지토리 ID*(예: `CompVis/ldm-text2im-large-256`).
custom_pipeline (`str`, *선택 사항*) : 다음 중 하나일 수 있습니다: - Hub에 호스팅된 사전 학습된 파이프라인의 *리포지토리 ID* 문자열(예: `CompVis/ldm-text2im-large-256`). 해당 리포지토리에는 커스텀 파이프라인을 정의하는 `pipeline.py`라는 파일이 포함되어 있어야 합니다. - GitHub의 [Community](https://github.com/huggingface/diffusers/tree/main/examples/community) 아래에 호스팅된 커뮤니티 파이프라인의 *파일 이름* 문자열. 유효한 파일 이름은 파이프라인 스크립트가 아닌 파일 이름과 일치해야 합니다(`clip_guided_stable_diffusion.py`가 아닌 `clip_guided_stable_diffusion`). 커뮤니티 파이프라인은 항상 GitHub의 현재 `main` 브랜치에서 로드됩니다. - 커스텀 파이프라인을 포함하는 *디렉터리* 경로(`./my_pipeline_directory/`). 해당 디렉터리에는 커스텀 파이프라인을 정의하는 `pipeline.py`라는 파일이 포함되어 있어야 합니다. > [!WARNING] > 🧪 이는 실험적 기능이며 향후 변경될 수 있습니다. 커스텀 파이프라인을 로드하고 만드는 방법에 대한 자세한 내용은 [커뮤니티 파이프라인 기여하기](https://huggingface.co/docs/diffusers/main/en/using-diffusers/contribute_pipeline)를 참고하세요.
force_download (`bool`, *선택 사항*, 기본값 `False`) : 캐시된 버전이 존재하더라도 모델 가중치 및 구성 파일의 (재)다운로드를 강제할지 여부.
proxies (`Dict[str, str]`, *선택*) : 프로토콜 또는 엔드포인트별로 사용할 프록시 서버의 사전입니다. 예를 들어, `{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}`와 같습니다. 프록시는 각 요청에 사용됩니다.
output_loading_info(`bool`, *선택 사항*, 기본값 `False`) : 누락된 키, 예상치 못한 키 및 오류 메시지가 포함된 사전도 함께 반환할지 여부.
local_files_only (`bool`, *선택 사항*, 기본값 `False`) : 로컬 모델 가중치와 구성 파일만 로드할지 여부를 지정합니다. `True`로 설정하면 Hub에서 모델을 다운로드하지 않습니다.
token (`str` 또는 *bool*, *선택 사항*) : 원격 파일에 대한 HTTP bearer 인증으로 사용할 토큰입니다. `True`인 경우, `diffusers-cli login`에서 생성된 토큰(`~/.huggingface`에 저장됨)이 사용됩니다.
revision (`str`, *선택 사항*, 기본값 `"main"`) : 사용할 특정 모델 버전입니다. Git에서 허용하는 브랜치 이름, 태그 이름, 커밋 ID 또는 기타 식별자일 수 있습니다.
custom_revision (`str`, *선택 사항*, 기본값 `"main"`) : 사용할 특정 모델 버전입니다. Hub에서 커스텀 파이프라인을 로드할 때 `revision`과 유사하게 브랜치 이름, 태그 이름 또는 커밋 id일 수 있습니다. GitHub에서 커스텀 파이프라인을 로드할 때는 🤗 Diffusers 버전일 수 있으며, Hub에서 로드하는 경우를 제외하면 기본값은 `"main"`입니다.
mirror (`str`, *선택 사항*) : 중국에서 모델을 다운로드할 때 접근성 문제를 해결하기 위한 미러 소스입니다. 해당 소스의 적시성이나 안전성을 보장하지 않으며, 자세한 내용은 미러 사이트를 참고하세요.
variant (`str`, *선택 사항*) : `"fp16"` 또는 `"ema"`와 같이 지정된 변형 파일 이름에서 가중치를 로드합니다.
use_safetensors (`bool`, *선택 사항*, 기본값 `None`) : `None`으로 설정하면, safetensors 라이브러리가 설치되어 있고 **그리고** safetensors 가중치가 사용 가능한 경우 해당 가중치가 다운로드됩니다. `True`로 설정하면 모델이 safetensors 가중치에서 강제 로드됩니다. `False`로 설정하면 safetensors 가중치가 로드되지 않습니다.
use_onnx (`bool`, *선택 사항*, 기본값 `False`) : `True`로 설정하면 ONNX 가중치가 존재하는 경우 항상 다운로드됩니다. `False`로 설정하면 ONNX 가중치는 절대 다운로드되지 않습니다. 기본적으로 `use_onnx`는 `_is_onnx` 클래스 속성의 기본값을 따르며, 이는 ONNX가 아닌 파이프라인의 경우 `False`, ONNX 파이프라인의 경우 `True`입니다. ONNX 가중치에는 `.onnx` 및 `.pb`로 끝나는 두 가지 파일이 모두 포함됩니다.
trust_remote_code (`bool`, *선택 사항*, 기본값 `False`) : Hub에서 자체 파일로 정의된 사용자 정의 파이프라인 및 구성 요소를 허용할지 여부입니다. 이 옵션은 Hub에 존재하는 코드가 로컬 머신에서 실행되므로, 신뢰할 수 있는 저장소에서만 `True`로 설정해야 하며, 해당 저장소의 코드를 읽은 경우에만 사용해야 합니다.
use_flashpack (`bool`, *선택 사항*, 기본값 `False`) : `True`로 설정하면 FlashPack 가중치가 존재하는 경우 항상 다운로드됩니다. `False`로 설정하면 FlashPack 가중치는 절대 다운로드되지 않습니다.
**반환값:** `os.PathLike`
다운로드된 파이프라인의 경로입니다.
PyTorch diffusion 파이프라인을 사전 학습된 파이프라인 가중치에서 다운로드하고 캐시합니다.
> [!TIP] > 비공개 또는 [게이트된 모델](https://huggingface.co/docs/hub/models-gated#gated-models)을 사용하려면 로그인하세요
hf > auth login
#### enable_attention_slicing[[diffusers.DiffusionPipeline.enable_attention_slicing]]
```python
enable_attention_slicing(slice_size: str | int = 'auto')
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2048)
**매개변수:**
slice_size (`str` 또는 `int`, *선택 사항*, 기본값 `"auto"`) : `"auto"`인 경우 attention heads에 전달되는 입력을 절반으로 줄여 attention을 두 단계로 계산합니다. `"max"`인 경우 한 번에 하나의 슬라이스만 실행하여 최대의 메모리를 절약합니다. 숫자가 제공되면 `attention_head_dim // slice_size`만큼의 슬라이스를 사용합니다. 이 경우 `attention_head_dim`은 `slice_size`의 배수여야 합니다.
슬라이스된 어텐션 계산을 활성화합니다. 이 옵션이 활성화되면 어텐션 모듈은 입력 텐서를 슬라이스로 분할하여 여러 단계에 걸쳐 어텐션을 계산합니다. 어텐션 헤드 하나가 넘는 경우, 각 헤드를 순차적으로 계산합니다. 이는 속도가 약간 감소하는 대신 메모리를 절약하는 데 유용합니다.
> [!WARNING] > ⚠️ 이미 `scaled_dot_product_attention`(SDPA)를 사용 중이라면 attention slicing을 활성화하지 마세요
from PyTorch > 2.0 or xFormers. 이러한 attention 계산은 이미 메모리 효율성이 매우 높아 이 기능을 활성화할 필요가 없습니다. SDPA 또는 xFormers와 함께 attention slicing을 활성화하면 심각한 성능 저하가 발생할 수 있습니다!
예:
```py
>>> import torch
>>> from diffusers import StableDiffusionPipeline
>>> pipe = StableDiffusionPipeline.from_pretrained(
... "stable-diffusion-v1-5/stable-diffusion-v1-5",
... dtype=torch.float16,
... use_safetensors=True,
... )
>>> prompt = "a photo of an astronaut riding a horse on mars"
>>> pipe.enable_attention_slicing()
>>> image = pipe(prompt).images[0]
```
#### enable_group_offload[[diffusers.DiffusionPipeline.enable_group_offload]]
```python
enable_group_offload(onload_device: device, offload_device: device = torch.device(), offload_type: str = 'block_level', num_blocks_per_group: int | None = None, non_blocking: bool = False, use_stream: bool = False, record_stream: bool = False, low_cpu_mem_usage = False, offload_to_disk_path: str | None = None, exclude_modules: str | list[str] | None = None)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L1361)
**매개변수:**
onload_device (`torch.device`) : 모듈 그룹이 로드된 디바이스.
offload_device (`torch.device`, 기본값은 `torch.device("cpu")`) : 모듈 그룹이 오프로드될 장치입니다. 일반적으로 CPU여야 합니다. 기본값은 CPU입니다.
offload_type (`str` 또는 `GroupOffloadingType`, 기본값은 "block_level") : 적용할 오프로딩 유형입니다. "block_level" 또는 "leaf_level" 중 하나여야 합니다. 기본값은 "block_level"입니다.
offload_to_disk_path (`str`, *선택 사항*, 기본값 `None`) : 매개변수가 오프로드될 디렉터리의 경로입니다. 이 옵션을 설정하면 제한된 RAM 환경에서 합리적인 속도-메모리 트레이드오프가 필요한 경우 유용할 수 있습니다.
num_blocks_per_group (`int`, *선택 사항*) : offload_type="block_level"을 사용할 때 그룹당 블록 수입니다. offload_type="block_level"을 사용할 때 필수입니다.
non_blocking (`bool`, 기본값은 `False`) : True인 경우, offloading과 onloading이 non-blocking 데이터 전송으로 수행됩니다.
use_stream (`bool`, 기본값은 `False`) : True인 경우, CUDA 스트림을 사용하여 오프로딩과 온로딩을 비동기적으로 수행합니다. 이는 계산과 데이터 전송을 오버랩하는 데 유용할 수 있습니다.
record_stream (`bool`, 기본값은 `False`) : `use_stream`와 함께 활성화되면, 현재 텐서가 해당 스트림에 의해 사용되었음을 표시합니다. 메모리 사용량이 약간 증가하는 대신 더 빠른 성능을 제공합니다. 자세한 내용은 [PyTorch 공식 문서](https://pytorch.org/docs/stable/generated/torch.Tensor.record_stream.html)를 참조하세요.
low_cpu_mem_usage (`bool`, 기본값은 `False`) : True인 경우, 사전 고정 대신 텐서를 온더플라이로 고정하여 CPU 메모리 사용량을 최소화합니다. 이 옵션은 스트림된 CPU 오프로딩(즉, `use_stream=True`)을 사용할 때만 의미가 있습니다. CPU 메모리가 병목 현상을 일으키는 경우 유용할 수 있지만, 스트림 사용의 이점을 상쇄할 수도 있습니다.
exclude_modules (`Union[str, List[str]]`, 기본값은 `None`) : 오프로딩에서 제외할 모듈 목록.
torch.nn.Module의 내부 레이어에 group offloading을 적용합니다. group offloading이 무엇인지, 그리고 어떤 상황에서 이점이 있는지 이해하려면, 먼저 다른 지원되는 offloading 방식이 어떻게 작동하는지에 대한 배경을 제공해야 합니다.
일반적으로 오프로딩은 두 단계에서 수행됩니다:
- 모듈 수준: Diffusers에서는 `ModelMixin::enable_model_cpu_offload()` 메서드를 사용하여 이를 활성화할 수 있습니다.
각 파이프라인 구성 요소를 CPU로 오프로딩하여 저장하고, 계산이 필요할 때 가속기 디바이스로 온로딩하는 방식으로 작동합니다. 이 방법은 모든 구성 요소를 가속기에 유지하는 것보다 메모리 효율이 높지만, 여전히 메모리 요구량이 상당히 높습니다. 이 방법이 작동하려면 런타임 데이터 타입 기준 모델 크기 + 포워드 패스를 완료하기 위한 가장 큰 중간 활성화 텐서 크기에 해당하는 메모리가 필요합니다.
- Leaf-level: Diffusers에서는 `ModelMixin::enable_sequential_cpu_offload()` 메서드를 사용하여 이를 활성화할 수 있습니다.
works는 계산 그래프의 가장 낮은 리프 레벨 파라미터를 CPU로 오프로딩하여 저장하고, 계산 시 리프만 가속기 디바이스로 온로딩하는 방식으로 동작합니다. 이는 가장 적은 양의 가속기 메모리를 사용하지만, 과도한 디바이스 동기화로 인해 속도가 느려질 수 있습니다.
Group offloading은 두 가지 방법의 중간 단계입니다. 내부 레이어 그룹(`torch.nn.ModuleList` 또는 `torch.nn.Sequential`)을 offload하는 방식으로 동작합니다. 이 방법은 모듈 수준 offloading보다 메모리 사용량이 적습니다. 또한 장치 동기화 횟수가 줄어들어 leaf 수준/순차적 offloading보다 빠릅니다.
CUDA 디바이스에서 비동기 데이터 전송 스트림을 지원하는 경우, 또 다른 지원되는 기능은 순차적 오프로딩과 비교하여 전체 실행 시간을 줄이기 위해 데이터 전송과 계산을 겹치게 하는 능력입니다. 이는 스트림을 사용한 레이어 프리페칭으로 활성화되며, 즉 현재 레이어가 실행되는 동안 다음으로 실행될 레이어가 가속기 디바이스로의 온로딩을 시작합니다 - 이로 인해 메모리 요구량이 약간 증가합니다. 이 구현은 리프 레벨 오프로딩도 지원하지만, 스트림을 사용할 때 훨씬 더 빨라질 수 있습니다.
예:
```python
>>> from diffusers import DiffusionPipeline
>>> import torch
>>> pipe = DiffusionPipeline.from_pretrained("Qwen/Qwen-Image", dtype=torch.bfloat16)
>>> pipe.enable_group_offload(
... onload_device=torch.device("cuda"),
... offload_device=torch.device("cpu"),
... offload_type="leaf_level",
... use_stream=True,
... )
>>> image = pipe("a beautiful sunset").images[0]
```
#### enable_model_cpu_offload[[diffusers.DiffusionPipeline.enable_model_cpu_offload]]
```python
enable_model_cpu_offload(gpu_id: int | None = None, device: typing.Union[torch.device, str] = None)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L1174)
**매개변수:**
gpu_id (`int`, *선택 사항*) : 추론에 사용할 accelerator의 ID입니다. 지정하지 않으면 기본값으로 0이 사용됩니다.
device (`torch.Device` 또는 `str`, *선택 사항*, 기본값 None) : 추론에 사용할 가속기의 PyTorch 장치 유형입니다. 지정하지 않으면 사용 가능한 가속기를 자동으로 감지하여 사용합니다.
accelerate를 사용하여 모든 모델을 CPU로 오프로드하여 성능에 미치는 영향은 적으면서 메모리 사용량을 줄입니다. `enable_sequential_cpu_offload`와 비교하면, 이 메서드는 `forward` 메서드가 호출될 때 한 번에 하나의 모델을 가속기로 이동시키고, 다음 모델이 실행될 때까지 해당 모델이 가속기에 유지됩니다. `enable_sequential_cpu_offload`를 사용하는 경우보다 메모리 절감 효과는 낮지만, `unet`의 반복적 실행 덕분에 성능이 훨씬 좋습니다.
#### enable_sequential_cpu_offload[[diffusers.DiffusionPipeline.enable_sequential_cpu_offload]]
```python
enable_sequential_cpu_offload(gpu_id: int | None = None, device: typing.Union[torch.device, str] = None)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L1293)
**매개변수:**
gpu_id (`int`, *선택 사항*) : 추론에 사용할 accelerator의 ID입니다. 지정하지 않으면 기본값으로 0이 사용됩니다.
device (`torch.Device` 또는 `str`, *선택 사항*, 기본값 None) : 추론에 사용할 가속기의 PyTorch 장치 유형입니다. 지정하지 않으면 사용 가능한 가속기를 자동으로 감지하여 사용합니다.
🤗 Accelerate를 사용하여 모든 모델을 CPU로 오프로드하여 메모리 사용량을 크게 줄입니다. 호출 시 `self._exclude_from_cpu_offload`에 포함된 것을 제외한 모든 `torch.nn.Module` 구성 요소의 상태 딕트가 CPU에 저장된 후 `torch.device('meta')`로 이동되며, 해당 서브모듈의 `forward` 메서드가 호출될 때에만 가속기로 로드됩니다. 오프로딩은 서브모듈 단위로 수행됩니다. `enable_model_cpu_offload`를 사용할 때보다 메모리 절감 효과가 크지만 성능은 낮습니다.
#### enable_xformers_memory_efficient_attention[[diffusers.DiffusionPipeline.enable_xformers_memory_efficient_attention]]
```python
enable_xformers_memory_efficient_attention(attention_op: typing.Optional[typing.Callable] = None)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L1993)
**매개변수:**
attention_op (`Callable`, *선택 사항*) : xFormers의 [`memory_efficient_attention()`](https://facebookresearch.github.io/xformers/components/ops.html#xformers.ops.memory_efficient_attention) 함수에 `op` 인수로 사용될 때 기본 `None` 연산자를 재정의합니다.
[xFormers](https://facebookresearch.github.io/xformers/)에서 메모리 효율적인 어텐션을 활성화합니다. 이 옵션을 활성화하면 추론 시 GPU 메모리 사용량이 감소하고 속도가 향상될 수 있습니다. 학습 시 속도 향상은 보장되지 않습니다.
> [!WARNING] > ⚠️ memory efficient attention과 sliced attention이 모두 활성화된 경우, memory efficient
attention은 > 우선순위를 가집니다.
예:
```py
>>> import torch
>>> from diffusers import DiffusionPipeline
>>> from xformers.ops import MemoryEfficientAttentionFlashAttentionOp
>>> pipe = DiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1", dtype=torch.float16)
>>> pipe = pipe.to("cuda")
>>> pipe.enable_xformers_memory_efficient_attention(attention_op=MemoryEfficientAttentionFlashAttentionOp)
>>> # Workaround for not accepting attention shape using VAE for Flash Attention
>>> pipe.vae.enable_xformers_memory_efficient_attention(attention_op=None)
```
#### from_pipe[[diffusers.DiffusionPipeline.from_pipe]]
```python
from_pipe(pipeline, **kwargs)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2101)
**매개변수:**
pipeline (`DiffusionPipeline`) : 새로운 파이프라인을 생성할 원본 파이프라인.
**반환값:** `DiffusionPipeline`
`pipeline`와 동일한 가중치와 구성을 가진 새로운 파이프라인.
…
예:
```py
>>> from diffusers import StableDiffusionPipeline, StableDiffusionSAGPipeline
>>> pipe = StableDiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> new_pipe = StableDiffusionSAGPipeline.from_pipe(pipe)
```
#### from_pretrained[[diffusers.DiffusionPipeline.from_pretrained]]
```python
from_pretrained(pretrained_model_name_or_path: str | os.PathLike, **kwargs)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L638)
**매개변수:**
pretrained_model_name_or_path (`str` 또는 `os.PathLike`, *선택 사항*) : 다음 중 하나일 수 있습니다. - Hub에 호스팅된 사전 학습된 파이프라인의 *repo id* 문자열(예: `CompVis/ldm-text2im-large-256`). - [save_pretrained()](/docs/diffusers/main/ko/api/pipelines/overview#diffusers.DiffusionPipeline.save_pretrained)를 사용하여 저장된 파이프라인 가중치가 포함된 *디렉터리* 경로(예: `./my_pipeline_directory/`).
dtype (`torch.dtype` 또는 `dict[str, Union[str, torch.dtype]]`, *선택 사항*) : 기본 `torch.dtype`를 재정의하여 다른 dtype로 모델을 로드합니다. 서브모델을 서로 다른 dtype로 로드하려면 `dict`를 전달합니다(예: `{'transformer': torch.bfloat16, 'vae': torch.float16}`). 지정되지 않은 구성 요소의 기본 dtype는 `default`로 설정합니다(예: `{'transformer': torch.bfloat16, 'default': torch.float16}`). 구성 요소가 지정되지 않았고 기본값도 설정되지 않은 경우 `torch.float32`가 사용됩니다.
custom_pipeline (`str`, *선택 사항*) : > [!WARNING] > 🧪 이는 실험적 기능이며 향후 변경될 수 있습니다. 다음 중 하나일 수 있습니다: - Hub에 호스팅된 커스텀 파이프라인의 *repo id* 문자열(예: `hf-internal-testing/diffusers-dummy-pipeline`). 저장소에는 커스텀 파이프라인을 정의하는 pipeline.py라는 파일이 포함되어야 합니다. - [Community](https://github.com/huggingface/diffusers/tree/main/examples/community) 아래 GitHub에 호스팅된 커뮤니티 파이프라인의 *파일 이름* 문자열. 유효한 파일 이름은 파이프라인 스크립트(`clip_guided_stable_diffusion.py`)가 아닌 파일 이름(`clip_guided_stable_diffusion`)과 일치해야 합니다. 커뮤니티 파이프라인은 항상 GitHub의 현재 main 브랜치에서 로드됩니다. - 커스텀 파이프라인을 포함하는 디렉터리 경로(`./my_pipeline_directory/`). 디렉터리에는 커스텀 파이프라인을 정의하는 `pipeline.py`라는 파일이 포함되어야 합니다. 커스텀 파이프라인을 로드하고 만드는 방법에 대한 자세한 내용은 [커스텀 파이프라인 로드 및 추가](https://huggingface.co/docs/diffusers/using-diffusers/custom_pipeline_overview)를 참고하세요.
force_download (`bool`, *선택 사항*, 기본값 `False`) : 캐시된 버전이 존재하더라도 모델 가중치 및 구성 파일의 (재)다운로드를 강제할지 여부.
cache_dir (`Union[str, os.PathLike]`, *선택 사항*) : 표준 캐시를 사용하지 않을 경우, 다운로드된 사전 학습된 모델 구성이 캐시되는 디렉터리의 경로입니다.
proxies (`Dict[str, str]`, *선택*) : 프로토콜 또는 엔드포인트별로 사용할 프록시 서버의 사전입니다. 예를 들어, `{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}`와 같습니다. 프록시는 각 요청에 사용됩니다.
output_loading_info(`bool`, *선택 사항*, 기본값 `False`) : 누락된 키, 예상치 못한 키 및 오류 메시지가 포함된 사전도 함께 반환할지 여부.
local_files_only (`bool`, *선택 사항*, 기본값 `False`) : 로컬 모델 가중치와 구성 파일만 로드할지 여부를 지정합니다. `True`로 설정하면 Hub에서 모델을 다운로드하지 않습니다.
token (`str` 또는 *bool*, *선택 사항*) : 원격 파일에 대한 HTTP bearer 인증으로 사용할 토큰입니다. `True`인 경우, `diffusers-cli login`에서 생성된 토큰(`~/.huggingface`에 저장됨)이 사용됩니다.
revision (`str`, *선택 사항*, 기본값 `"main"`) : 사용할 특정 모델 버전입니다. Git에서 허용하는 브랜치 이름, 태그 이름, 커밋 ID 또는 기타 식별자일 수 있습니다.
custom_revision (`str`, *선택 사항*) : 사용할 특정 모델 버전입니다. Hub에서 커스텀 파이프라인을 로드할 때 `revision`과 유사하게 브랜치 이름, 태그 이름 또는 커밋 ID를 사용할 수 있습니다. 기본값은 최신 안정 버전인 🤗 Diffusers입니다.
mirror (`str`, *선택 사항*) : 중국에서 모델을 다운로드할 때 접근성 문제를 해결하기 위한 미러 소스입니다. 해당 소스의 적시성이나 안전성을 보장하지 않으며, 자세한 내용은 미러 사이트를 참고하세요.
device_map (`str`, *선택 사항*) : 파이프라인의 각 구성 요소를 사용 가능한 장치에 배치하는 방식을 결정하는 전략입니다. 현재 "balanced" `device_map`만 지원됩니다. 자세한 내용은 [여기](https://huggingface.co/docs/diffusers/main/en/tutorials/inference_with_big_models#device-placement)를 확인하세요.
max_memory (`Dict`, *선택 사항*) : 최대 메모리에 대한 디바이스 식별자를 나타내는 사전입니다. 설정되지 않으면 각 GPU의 사용 가능한 최대 메모리와 사용 가능한 CPU RAM이 기본값으로 사용됩니다.
offload_folder (`str` 또는 `os.PathLike`, *선택 사항*) : `"disk"` 값을 포함하는 device_map의 경우, 가중치를 오프로드할 경로입니다.
offload_state_dict (`bool`, *선택 사항*) : `True`인 경우, CPU 상태 사전의 가중치와 체크포인트의 가장 큰 샤드 합이 CPU RAM에 맞지 않을 때 CPU RAM 부족을 방지하기 위해 CPU 상태 사전을 하드 드라이브로 일시적으로 오프로드합니다. 디스크 오프로드가 있는 경우 기본값은 `True`입니다.
low_cpu_mem_usage (`bool`, *선택 사항*, torch 버전이 1.9.0 이상이면 기본값은 `True`, 그 외에는 `False`) : 가중치를 초기화하지 않고 사전 학습된 가중치만 로드하여 모델 로딩 속도를 높입니다. 모델 로딩 시 CPU 메모리(피크 메모리 포함)를 모델 크기의 1배를 초과하지 않도록 시도합니다. PyTorch 1.9.0 이상에서만 지원됩니다. PyTorch의 이전 버전을 사용하는 경우 이 인수를 `True`로 설정하면 오류가 발생합니다.
use_safetensors (`bool`, *선택 사항*, 기본값 `None`) : `None`으로 설정하면, safetensors 라이브러리가 설치되어 있고 **그리고** safetensors 가중치가 사용 가능한 경우 해당 가중치가 다운로드됩니다. `True`로 설정하면 모델이 safetensors 가중치에서 강제 로드됩니다. `False`로 설정하면 safetensors 가중치가 로드되지 않습니다.
use_onnx (`bool`, *선택 사항*, 기본값 `None`) : `True`로 설정하면 ONNX 가중치가 존재하는 경우 항상 다운로드됩니다. `False`로 설정하면 ONNX 가중치는 절대 다운로드되지 않습니다. 기본적으로 `use_onnx`는 `_is_onnx` 클래스 속성의 기본값을 따르며, 이는 ONNX가 아닌 파이프라인의 경우 `False`, ONNX 파이프라인의 경우 `True`입니다. ONNX 가중치에는 `.onnx` 및 `.pb`로 끝나는 두 가지 파일이 모두 포함됩니다.
kwargs (남은 키워드 인수의 사전, *선택 사항*) : 로드 및 저장 가능한 변수(특정 파이프라인 클래스의 파이프라인 구성 요소)를 덮어쓸 수 있습니다. 덮어쓰기된 구성 요소는 파이프라인의 `__init__` 메서드에 직접 전달됩니다. 자세한 내용은 아래 예시를 참조하세요.
variant (`str`, *선택 사항*) : `"fp16"` 또는 `"ema"`와 같이 지정된 변형 파일 이름에서 가중치를 로드합니다.
disable_mmap ('bool', *선택 사항*, 기본값 'False') : Safetensors 모델을 로드할 때 mmap을 비활성화할지 여부입니다. 네트워크 마운트나 하드 드라이브에 모델이 있는 경우, mmap의 seek 동작을 잘 처리하지 못할 수 있으므로 이 옵션을 사용하면 성능이 더 좋아질 수 있습니다.
PyTorch 확산 파이프라인을 사전 학습된 파이프라인 가중치에서 초기화합니다.
파이프라인은 기본적으로 평가 모드(`model.eval()`)로 설정됩니다.
아래와 같은 오류 메시지가 표시되면 다운스트림 작업을 위해 가중치를 미세 조정해야 합니다:
```
Some weights of UNet2DConditionModel were not initialized from the model checkpoint at stable-diffusion-v1-5/stable-diffusion-v1-5 and are newly initialized because the shapes did not match:
- conv_in.weight: found shape torch.Size([320, 4, 3, 3]) in the checkpoint and torch.Size([320, 9, 3, 3]) in the model instantiated
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.
```
> [!TIP] > 비공개 또는 [gated](https://huggingface.co/docs/hub/models-gated#gated-models) 모델을 사용하려면 로그인
`hf > auth login`로
예:
```py
>>> from diffusers import DiffusionPipeline
>>> # Download pipeline from huggingface.co and cache.
>>> pipeline = DiffusionPipeline.from_pretrained("CompVis/ldm-text2im-large-256")
>>> # Download pipeline that requires an authorization token
>>> # For more information on access tokens, please refer to this section
>>> # of the documentation](https://huggingface.co/docs/hub/security-tokens)
>>> pipeline = DiffusionPipeline.from_pretrained("stable-diffusion-v1-5/stable-diffusion-v1-5")
>>> # Use a different scheduler
>>> from diffusers import LMSDiscreteScheduler
>>> scheduler = LMSDiscreteScheduler.from_config(pipeline.scheduler.config)
>>> pipeline.scheduler = scheduler
```
#### maybe_free_model_hooks[[diffusers.DiffusionPipeline.maybe_free_model_hooks]]
```python
maybe_free_model_hooks()
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L1270)
다음과 같은 작업을 수행하는 메서드입니다:
- 모든 구성 요소를 오프로드합니다.
- `enable_model_cpu_offload`을 사용할 때 추가된 모든 모델 훅을 제거한 후 다시 적용합니다. 모델이 오프로드되지 않은 경우 이 함수는 아무 동작도 하지 않습니다.
- `register_hook()`으로 추가된 경우, denoiser 구성 요소의 상태ful diffusers 훅을 초기화합니다.
`enable_model_cpu_offload`를 적용할 때 올바르게 작동하도록 하려면 이 함수를 파이프라인의 `__call__` 함수 끝에 추가하세요.
#### numpy_to_pil[[diffusers.DiffusionPipeline.numpy_to_pil]]
```python
numpy_to_pil(images)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L1963)
NumPy 이미지 또는 이미지 배치를 PIL 이미지로 변환합니다.
#### remove_all_hooks[[diffusers.DiffusionPipeline.remove_all_hooks]]
```python
remove_all_hooks()
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L1165)
`enable_sequential_cpu_offload` 또는 `enable_model_cpu_offload`을 사용할 때 추가된 모든 훅을 제거합니다.
#### reset_device_map[[diffusers.DiffusionPipeline.reset_device_map]]
```python
reset_device_map()
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L1488)
None으로 디바이스 맵(있는 경우)을 초기화합니다.
#### save_pretrained[[diffusers.DiffusionPipeline.save_pretrained]]
```python
save_pretrained(save_directory: str | os.PathLike, safe_serialization: bool = True, variant: str | None = None, max_shard_size: int | str | None = None, push_to_hub: bool = False, use_flashpack: bool = False, **kwargs)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L254)
**매개변수:**
save_directory (`str` 또는 `os.PathLike`) : 파이프라인을 저장할 디렉터리입니다. 존재하지 않으면 생성됩니다.
safe_serialization (`bool`, *선택 사항*, 기본값 `True`) : `safetensors` 또는 `pickle`를 사용한 전통적인 PyTorch 방식으로 모델을 저장할지 여부.
variant (`str`, *선택 사항*) : 지정된 경우, 가중치가 `pytorch_model.<variant>.bin` 형식으로 저장됩니다.
max_shard_size (`int` 또는 `str`, 기본값은 `None`) : 샤딩되기 전 체크포인트의 최대 크기입니다. 샤딩된 각 체크포인트의 크기는 이 크기보다 작아집니다. 문자열로 표현할 경우, 숫자 뒤에 단위(예: `"5GB"`)가 따라야 합니다. 정수로 표현할 경우, 단위는 바이트입니다. 2024년 10월부터 특정 기간이 지난 후 이 제한이 낮아질 수 있으며, 이는 사용자가 `diffusers`의 최신 버전으로 업그레이드할 수 있도록 하기 위한 것입니다. 이는 Hugging Face 생태계의 다른 라이브러리(예: `transformers`, `accelerate`)에서 이 인수의 공통 기본 크기를 설정하기 위한 것입니다.
push_to_hub (`bool`, *선택 사항*, 기본값 `False`) : 모델을 저장한 후 Hugging Face 모델 허브에 푸시할지 여부입니다. `repo_id`를 사용하여 푸시할 저장소를 지정할 수 있습니다(기본값은 네임스페이스의 `save_directory` 이름입니다).
kwargs (`Dict[str, Any]`, *선택*) : [push_to_hub()](/docs/diffusers/main/ko/api/schedulers/overview#diffusers.utils.PushToHubMixin.push_to_hub) 메서드로 전달되는 추가 키워드 인자입니다.
[from_pretrained()](/docs/diffusers/main/ko/api/pipelines/overview#diffusers.DiffusionPipeline.from_pretrained) 클래스 메서드를 사용하여 파이프라인을 쉽게 다시 로드할 수 있습니다. 파이프라인 변수는 해당 클래스가 저장 및 로드 메서드를 모두 구현한 경우에만 저장 및 로드할 수 있습니다. 파이프라인의 모든 저장 가능한 변수를 디렉토리에 저장합니다.
#### diffusers.StableDiffusionMixin.enable_freeu[[diffusers.StableDiffusionMixin.enable_freeu]]
```python
diffusers.StableDiffusionMixin.enable_freeu(s1: float, s2: float, b1: float, b2: float)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2285)
**매개변수:**
s1 (`float`) : 스킵 특징의 기여도를 감쇠시키기 위한 1단계의 스케일링 계수입니다. 이는 강화된 노이즈 제거 과정에서 "과도한 매끄러움 효과(oversmoothing effect)"를 완화하기 위해 수행됩니다.
s2 (`float`) : 스킵 특징의 기여도를 감쇠시키기 위한 2단계의 스케일링 계수입니다. 이는 강화된 노이즈 제거 과정에서 "과도한 매끄러움 효과(oversmoothing effect)"를 완화하기 위해 수행됩니다.
b1 (`float`) : 1단계에서 백본 특징의 기여도를 증폭하기 위한 스케일링 계수.
b2 (`float`) : 2단계에서 백본 특징의 기여도를 증폭하기 위한 스케일링 계수.
https://huggingface.co/papers/2309.11497 에 설명된 FreeU 메커니즘을 활성화합니다.
스케일링 인자 뒤에 붙는 접미사는 해당 인자가 적용되는 단계를 나타냅니다.
Stable Diffusion v1, v2, Stable Diffusion XL과 같은 다양한 파이프라인에서 잘 작동하는 것으로 알려진 값 조합에 대해서는 [공식 저장소](https://github.com/ChenyangSi/FreeU)를 참고하세요.
#### diffusers.StableDiffusionMixin.disable_freeu[[diffusers.StableDiffusionMixin.disable_freeu]]
```python
diffusers.StableDiffusionMixin.disable_freeu()
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/pipelines/pipeline_utils.py#L2307)
활성화된 경우 FreeU 메커니즘을 비활성화합니다.
## PushToHubMixin[[diffusers.utils.PushToHubMixin]]
#### diffusers.utils.PushToHubMixin[[diffusers.utils.PushToHubMixin]]
```python
diffusers.utils.PushToHubMixin()
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/utils/hub_utils.py#L491)
Hugging Face Hub에 모델, 스케줄러 또는 파이프라인을 푸시하기 위한 Mixin입니다.
#### push_to_hub[[diffusers.utils.PushToHubMixin.push_to_hub]]
```python
push_to_hub(repo_id: str, commit_message: str | None = None, private: bool | None = None, token: str | None = None, create_pr: bool = False, safe_serialization: bool = True, variant: str | None = None, subfolder: str | None = None)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/utils/hub_utils.py#L526)
**매개변수:**
repo_id (`str`) : 모델, 스케줄러 또는 파이프라인 파일을 푸시할 저장소의 이름입니다. 조직에 푸시할 경우 조직 이름을 포함해야 합니다. `repo_id`는 로컬 디렉터리의 경로일 수도 있습니다.
commit_message (`str`, *선택 사항*) : push할 때 커밋할 메시지. 기본값은 `"Upload {object}"`입니다.
private (`bool`, *선택 사항*) : 저장소를 비공개로 만들지 여부입니다. `None`(기본값)인 경우, 조직의 기본 설정이 비공개가 아닌 한 저장소는 공개됩니다. 이미 저장소가 존재하면 이 값은 무시됩니다.
token (`str`, *선택 사항*) : 원격 파일에 대한 HTTP bearer 인증으로 사용할 토큰입니다. `hf auth login` 실행 시 생성된 토큰이며 `~/.huggingface`에 저장됩니다.
create_pr (`bool`, *선택 사항*, 기본값 `False`) : 업로드된 파일로 PR을 생성할지 아니면 직접 커밋할지 여부.
safe_serialization (`bool`, *선택 사항*, 기본값 `True`) : 모델 가중치를 `safetensors` 형식으로 변환할지 여부.
variant (`str`, *선택 사항*) : 지정된 경우, 가중치가 `pytorch_model.<variant>.bin` 형식으로 저장됩니다.
모델, 스케줄러 또는 파이프라인 파일을 🤗 Hugging Face Hub에 업로드합니다.
예:
```python
from diffusers import UNet2DConditionModel
unet = UNet2DConditionModel.from_pretrained("stabilityai/stable-diffusion-2", subfolder="unet")
# Push the `unet` to your namespace with the name "my-finetuned-unet".
unet.push_to_hub("my-finetuned-unet")
# Push the `unet` to an organization with the name "my-finetuned-unet".
unet.push_to_hub("your-org/my-finetuned-unet")
```
## 콜백[[diffusers.callbacks.PipelineCallback]]
#### diffusers.callbacks.PipelineCallback[[diffusers.callbacks.PipelineCallback]]
```python
diffusers.callbacks.PipelineCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/callbacks.py#L7)
파이프라인에서 사용되는 모든 공식 콜백의 베이스 클래스입니다. 이 클래스는 사용자 정의 콜백을 구현하기 위한 구조를 제공하며, 모든 콜백이 일관된 인터페이스를 갖도록 보장합니다.
다음과 같이 구현하세요: `tensor_inputs`: 이 메서드는 콜백에 특화된 텐서 입력 목록을 반환해야 합니다. 파이프라인 클래스의 `._callback_tensor_inputs` 속성에 나열된 변수만 포함할 수 있습니다. `callback_fn`: 이 메서드는 콜백의 핵심 기능을 정의합니다.
#### diffusers.callbacks.SDCFGCutoffCallback[[diffusers.callbacks.SDCFGCutoffCallback]]
```python
diffusers.callbacks.SDCFGCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/callbacks.py#L69)
Stable Diffusion 파이프라인용 콜백 함수입니다. 특정 단계 수( `cutoff_step_ratio` 또는 `cutoff_step_index`로 설정) 이후에 이 콜백은 CFG를 비활성화합니다.
Note: 이 콜백은 카utoff 단계 이후 `_guidance_scale` 속성을 0.0으로 변경하여 파이프라인을 변경합니다.
#### diffusers.callbacks.SDXLCFGCutoffCallback[[diffusers.callbacks.SDXLCFGCutoffCallback]]
```python
diffusers.callbacks.SDXLCFGCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/callbacks.py#L98)
기본 Stable Diffusion XL 파이프라인의 콜백 함수입니다. 특정 단계 수(이 값은 `cutoff_step_ratio` 또는 `cutoff_step_index`로 설정됨) 이후에 이 콜백은 CFG를 비활성화합니다.
Note: 이 콜백은 카utoff 단계 이후 `_guidance_scale` 속성을 0.0으로 변경하여 파이프라인을 변경합니다.
#### diffusers.callbacks.SDXLControlnetCFGCutoffCallback[[diffusers.callbacks.SDXLControlnetCFGCutoffCallback]]
```python
diffusers.callbacks.SDXLControlnetCFGCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/callbacks.py#L140)
Controlnet Stable Diffusion XL 파이프라인용 콜백 함수입니다. 특정 단계 수(이 값은 `cutoff_step_ratio` 또는 `cutoff_step_index`로 설정됨) 이후에 이 콜백은 CFG를 비활성화합니다.
Note: 이 콜백은 카utoff 단계 이후 `_guidance_scale` 속성을 0.0으로 변경하여 파이프라인을 변경합니다.
#### diffusers.callbacks.IPAdapterScaleCutoffCallback[[diffusers.callbacks.IPAdapterScaleCutoffCallback]]
```python
diffusers.callbacks.IPAdapterScaleCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/callbacks.py#L188)
`IPAdapterMixin`을 상속하는 모든 파이프라인에 대한 콜백 함수입니다. 특정 단계 수(이 값은 `cutoff_step_ratio` 또는 `cutoff_step_index`로 설정됨) 이후에 이 콜백은 IP Adapter 스케일을 `0.0`으로 설정합니다.
Note: 이 콜백은 cutoff 단계 이후 scale을 0.0으로 설정하여 IP Adapter attention processors를 변경합니다.
#### diffusers.callbacks.SD3CFGCutoffCallback[[diffusers.callbacks.SD3CFGCutoffCallback]]
```python
diffusers.callbacks.SD3CFGCutoffCallback(cutoff_step_ratio = 1.0, cutoff_step_index = None)
```
[소스](https://github.com/huggingface/diffusers/blob/main/src/diffusers/callbacks.py#L212)
Stable Diffusion 3 파이프라인용 콜백 함수입니다. 특정 단계 수(이것은 `cutoff_step_ratio` 또는 `cutoff_step_index`로 설정됨) 이후에 이 콜백은 CFG를 비활성화합니다.
Note: 이 콜백은 카utoff 단계 이후 `_guidance_scale` 속성을 0.0으로 변경하여 파이프라인을 변경합니다.

Xet Storage Details

Size:
49.3 kB
·
Xet hash:
0b5ce3e16a8d6b078dd1923e8344e6bdbde13a34cf45098f4345496fd7b27032

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.