Buckets:
| # PEFT | |
| Diffusers는 [PeftAdapterMixin](/docs/diffusers/v0.43.0/ko/api/loaders/peft#diffusers.loaders.PeftAdapterMixin) 클래스를 통해 [PEFT](https://huggingface.co/docs/peft/index) 라이브러리로 [LoRA](../../tutorials/using_peft_for_inference)와 같은 어댑터를 로드하는 것을 지원합니다. 이를 통해 Diffusers의 [UNet2DConditionModel](/docs/diffusers/v0.43.0/ko/api/models/unet2d-cond#diffusers.UNet2DConditionModel), [SD3Transformer2DModel](/docs/diffusers/v0.43.0/ko/api/models/sd3_transformer2d#diffusers.SD3Transformer2DModel)과 같은 모델링 클래스가 어댑터와 함께 작동할 수 있습니다. | |
| > [!TIP] | |
| > Diffusers에서 추론을 위해 PEFT를 사용하는 방법에 대한 개요는 [Inference with PEFT](../../tutorials/using_peft_for_inference) 튜토리얼을 참고하세요. | |
| ## PeftAdapterMixin[[diffusers.loaders.PeftAdapterMixin]] | |
| #### diffusers.loaders.PeftAdapterMixin[[diffusers.loaders.PeftAdapterMixin]] | |
| ```python | |
| diffusers.loaders.PeftAdapterMixin() | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/peft.py#L62) | |
| PEFT 라이브러리에서 지원하는 어댑터 가중치를 로드하고 사용하는 데 필요한 모든 함수를 포함하는 클래스입니다. 어댑터 및 기본 모델에 이를 주입하는 방법에 대한 자세한 내용은 PEFT [문서](https://huggingface.co/docs/peft/index)를 참고하세요. | |
| 최신 버전의 PEFT를 설치하고 이 mixin을 사용하여 다음을 수행합니다: | |
| - 모델에 새로운 어댑터를 연결합니다. | |
| - 여러 어댑터를 연결하고 반복적으로 활성화/비활성화합니다. | |
| - 모델의 모든 어댑터를 활성화/비활성화합니다. | |
| - 활성 어댑터 목록을 가져옵니다. | |
| #### active_adapters[[diffusers.loaders.PeftAdapterMixin.active_adapters]] | |
| ```python | |
| active_adapters() | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/peft.py#L652) | |
| 모델의 현재 활성 어댑터 목록을 가져옵니다. | |
| 어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT [문서](https://huggingface.co/docs/peft)에서 더 자세히 읽어보시기를 권합니다. | |
| #### add_adapter[[diffusers.loaders.PeftAdapterMixin.add_adapter]] | |
| ```python | |
| add_adapter(adapter_config, adapter_name: str = 'default') | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/peft.py#L518) | |
| **매개변수:** | |
| adapter_config (`[~peft.PeftConfig]`) : 추가할 어댑터의 구성입니다. 지원되는 어댑터는 non-prefix tuning 및 adaption prompt 방법입니다. | |
| adapter_name (`str`, *선택 사항*, 기본값 `"default"`) : 추가할 어댑터의 이름입니다. 이름을 전달하지 않으면 어댑터에 기본 이름이 할당됩니다. | |
| 학습을 위해 현재 모델에 새로운 어댑터를 추가합니다. 어댑터 이름이 전달되지 않으면 PEFT 라이브러리의 관례를 따르는 기본 이름이 어댑터에 할당됩니다. | |
| 어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT [문서](https://huggingface.co/docs/peft)에서 더 자세히 읽어보시길 권해드립니다. | |
| #### delete_adapters[[diffusers.loaders.PeftAdapterMixin.delete_adapters]] | |
| ```python | |
| delete_adapters(adapter_names: list[str] | str) | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/peft.py#L777) | |
| **매개변수:** | |
| adapter_names (`list[str, str]`) : 삭제할 어댑터의 이름(단일 문자열 또는 문자열 목록). | |
| adapter의 LoRA 레이어를 기반 모델에서 삭제합니다. | |
| 예: | |
| ```py | |
| from diffusers import AutoPipelineForText2Image | |
| import torch | |
| pipeline = AutoPipelineForText2Image.from_pretrained( | |
| "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 | |
| ).to("cuda") | |
| pipeline.load_lora_weights( | |
| "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_names="cinematic" | |
| ) | |
| pipeline.unet.delete_adapters("cinematic") | |
| ``` | |
| #### disable_adapters[[diffusers.loaders.PeftAdapterMixin.disable_adapters]] | |
| ```python | |
| disable_adapters() | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/peft.py#L607) | |
| 모델에 연결된 모든 어댑터를 비활성화하고 기본 모델만으로 추론하도록 전환합니다. | |
| 어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT [문서](https://huggingface.co/docs/peft)에서 더 자세히 읽어보시기를 권합니다. | |
| #### disable_lora[[diffusers.loaders.PeftAdapterMixin.disable_lora]] | |
| ```python | |
| disable_lora() | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/peft.py#L731) | |
| 기저 모델의 활성 LoRA 레이어를 비활성화합니다. | |
| 예: | |
| ```py | |
| from diffusers import AutoPipelineForText2Image | |
| import torch | |
| pipeline = AutoPipelineForText2Image.from_pretrained( | |
| "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 | |
| ).to("cuda") | |
| pipeline.load_lora_weights( | |
| "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic" | |
| ) | |
| pipeline.unet.disable_lora() | |
| ``` | |
| #### enable_adapters[[diffusers.loaders.PeftAdapterMixin.enable_adapters]] | |
| ```python | |
| enable_adapters() | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/peft.py#L629) | |
| 모델에 연결된 어댑터를 활성화합니다. 모델은 `self.active_adapters()`를 사용하여 활성화할 어댑터 목록을 가져옵니다. | |
| 어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT [문서](https://huggingface.co/docs/peft)에서 더 자세히 읽어보시기를 권합니다. | |
| #### enable_lora[[diffusers.loaders.PeftAdapterMixin.enable_lora]] | |
| ```python | |
| enable_lora() | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/peft.py#L754) | |
| 기저 모델의 활성 LoRA 레이어를 활성화합니다. | |
| 예: | |
| ```py | |
| from diffusers import AutoPipelineForText2Image | |
| import torch | |
| pipeline = AutoPipelineForText2Image.from_pretrained( | |
| "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 | |
| ).to("cuda") | |
| pipeline.load_lora_weights( | |
| "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic" | |
| ) | |
| pipeline.unet.enable_lora() | |
| ``` | |
| #### enable_lora_hotswap[[diffusers.loaders.PeftAdapterMixin.enable_lora_hotswap]] | |
| ```python | |
| enable_lora_hotswap(target_rank: int = 128, check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error') | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/peft.py#L815) | |
| **매개변수:** | |
| target_rank (`int`, *선택 사항*, 기본값 `128`) : 로드될 모든 어댑터 중 가장 높은 랭크입니다. | |
| check_compiled (`str`, *선택 사항*, 기본값 `"error"`) : 모델이 이미 컴파일된 경우를 처리하는 방법입니다. 일반적으로 이 상황을 피해야 합니다. 옵션은 다음과 같습니다: - "error" (기본값): 오류를 발생시킵니다 - "warn": 경고를 표시합니다 - "ignore": 아무 동작도 하지 않습니다 | |
| LoRA 어댑터의 핫스왑을 가능하게 합니다. | |
| … | |
| #### load_lora_adapter[[diffusers.loaders.PeftAdapterMixin.load_lora_adapter]] | |
| ```python | |
| load_lora_adapter(pretrained_model_name_or_path_or_dict, prefix = 'transformer', hotswap: bool = False, **kwargs) | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/peft.py#L85) | |
| **매개변수:** | |
| pretrained_model_name_or_path_or_dict (`str` 또는 `os.PathLike` 또는 `dict`) : 다음 중 하나일 수 있습니다: - Hub에 호스팅된 사전 학습 모델의 *model id*(예: `google/ddpm-celebahq-256`) 문자열. - [ModelMixin.save_pretrained()](/docs/diffusers/v0.43.0/ko/api/models/overview#diffusers.ModelMixin.save_pretrained)로 저장된 모델 가중치를 포함하는 *디렉터리* 경로(예: `./my_model_directory`). - [torch state dict](https://pytorch.org/tutorials/beginner/saving_loading_models.html#what-is-a-state-dict). | |
| prefix (`str`, *선택 사항*) : state dict를 필터링할 접두사. | |
| cache_dir (`str | os.PathLike`, *선택 사항*) : 표준 캐시를 사용하지 않을 경우, 다운로드된 사전 학습 모델 구성이 캐시되는 디렉터리의 경로입니다. | |
| force_download (`bool`, *선택 사항*, 기본값 `False`) : 캐시된 버전이 존재하더라도 모델 가중치 및 구성 파일의 (재)다운로드를 강제할지 여부. | |
| proxies (`dict[str, str]`, *선택 사항*) : 프로토콜 또는 엔드포인트별로 사용할 프록시 서버의 사전입니다. 예를 들어, `{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}`와 같습니다. 각 요청에 프록시가 사용됩니다. | |
| local_files_only (`bool`, *선택 사항*, 기본값 `False`) : 로컬 모델 가중치와 구성 파일만 로드할지 여부를 지정합니다. `True`로 설정하면 Hub에서 모델을 다운로드하지 않습니다. | |
| token (`str` 또는 *bool*, *선택 사항*) : 원격 파일에 대한 HTTP bearer 인증으로 사용할 토큰입니다. `True`인 경우, `diffusers-cli login`에서 생성된 토큰(`~/.huggingface`에 저장됨)이 사용됩니다. | |
| revision (`str`, *선택 사항*, 기본값 `"main"`) : 사용할 특정 모델 버전입니다. Git에서 허용하는 브랜치 이름, 태그 이름, 커밋 ID 또는 기타 식별자일 수 있습니다. | |
| subfolder (`str`, *선택 사항*, 기본값 `""`) : Hub 또는 로컬의 더 큰 모델 저장소 내에서 모델 파일의 서브폴더 위치입니다. | |
| network_alphas (`dict[str, float]`) : 안정된 학습과 언더플로우 방지를 위해 사용되는 네트워크 알파 값입니다. 이 값은 kohya-ss 트레이너 스크립트의 `--network_alpha` 옵션과 동일한 의미를 가집니다. [이 링크](https://github.com/darkstorm2150/sd-scripts/blob/main/docs/train_network_README-en.md#execute-learning)를 참조하세요. | |
| low_cpu_mem_usage (`bool`, *선택 사항*) : 무작위 가중치를 초기화하지 않고 사전 학습된 LoRA 가중치만 로드하여 모델 로딩 속도를 높입니다. | |
| hotswap : (`bool`, *선택 사항*) 기본값은 `False`입니다. 기존 (LoRA) 어댑터를 새로 로드한 어댑터로 제자리에서 교체할지 여부입니다. 즉, 추가 어댑터를 로드하는 대신 기존 어댑터의 가중치를 새 어댑터의 가중치로 대체합니다. 이는 더 빠르고 메모리 효율적일 수 있습니다. 그러나 핫스왑의 주요 이점은 모델이 torch.compile로 컴파일된 경우, 새 어댑터를 로드할 때 모델의 재컴파일이 필요하지 않다는 점입니다. 핫스왑을 사용할 때 전달하는 `adapter_name`은 이미 로드된 어댑터의 이름이어야 합니다. 새 어댑터와 기존 어댑터의 랭크와/또는 LoRA 알파(즉, 스케일링)가 다른 경우, 어댑터를 로드하기 전에 추가 메서드를 호출해야 합니다: ```py pipeline = ... # load diffusers pipeline max_rank = ... # the highest rank among all LoRAs that you want to load # call *before* compiling and loading the LoRA adapter pipeline.enable_lora_hotswap(target_rank=max_rank) pipeline.load_lora_weights(file_name) # optionally compile the model now ``` 텍스트 인코더의 어댑터 핫스왑은 아직 지원되지 않습니다. 이 기법에는 몇 가지 추가 제한 사항이 있으며, 여기에서 문서화되어 있습니다: https://huggingface.co/docs/peft/main/en/package_reference/hotswap | |
| metadata : LoRA 어댑터 메타데이터. 제공된 경우, state dict를 통해 추론된 메타데이터는 `LoraConfig` 초기화에 사용되지 않습니다. | |
| LoRA 어댑터를 기본 모델에 로드합니다. | |
| #### save_lora_adapter[[diffusers.loaders.PeftAdapterMixin.save_lora_adapter]] | |
| ```python | |
| save_lora_adapter(save_directory, adapter_name: str = 'default', upcast_before_saving: bool = False, safe_serialization: bool = True, weight_name: str | None = None) | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/peft.py#L394) | |
| **매개변수:** | |
| save_directory (`str` 또는 `os.PathLike`) : LoRA 파라미터를 저장할 디렉터리입니다. 존재하지 않으면 생성됩니다. | |
| adapter_name : (`str`, 기본값 "default"): 직렬화할 어댑터의 이름입니다. 기본 모델에 여러 개의 어댑터가 로드된 경우 유용합니다. | |
| upcast_before_saving (`bool`, 기본값 `False`) : 직렬화 전에 기본 모델을 `torch.float32`로 변환할지 여부. | |
| safe_serialization (`bool`, *선택 사항*, 기본값 `True`) : `safetensors` 또는 `pickle`를 사용한 전통적인 PyTorch 방식으로 모델을 저장할지 여부. | |
| weight_name : (`str`, *선택 사항*, 기본값 `None`): state dict를 직렬화할 파일의 이름. | |
| 기저 모델에 해당하는 LoRA 매개변수를 저장합니다. | |
| #### set_adapter[[diffusers.loaders.PeftAdapterMixin.set_adapter]] | |
| ```python | |
| set_adapter(adapter_name: str | list[str]) | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/peft.py#L558) | |
| **매개변수:** | |
| adapter_name (str | list[str])) : 설정할 어댑터 목록 또는 단일 어댑터인 경우의 어댑터 이름. | |
| 모델이 해당 어댑터만 사용하도록 강제하여 특정 어댑터를 설정하고, 다른 어댑터는 비활성화합니다. | |
| 어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT [문서](https://huggingface.co/docs/peft)에서 더 자세히 읽어보시기를 권합니다. | |
| #### set_adapters[[diffusers.loaders.PeftAdapterMixin.set_adapters]] | |
| ```python | |
| set_adapters(adapter_names: list[str] | str, weights: float | dict | list[float] | list[dict] | list[None] | None = None) | |
| ``` | |
| [소스](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/loaders/peft.py#L462) | |
| **매개변수:** | |
| adapter_names (`list[str]` 또는 `str`) : 사용할 어댑터의 이름들. | |
| weights (`Union[List[float], float]`, *선택 사항*) : UNet과 함께 사용할 어댑터 가중치입니다. `None`인 경우 모든 어댑터의 가중치는 `1.0`으로 설정됩니다. | |
| 확산 네트워크(예: unet, transformer 등)에서 사용할 현재 활성 어댑터를 설정합니다. | |
| 예: | |
| ```py | |
| from diffusers import AutoPipelineForText2Image | |
| import torch | |
| pipeline = AutoPipelineForText2Image.from_pretrained( | |
| "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16 | |
| ).to("cuda") | |
| pipeline.load_lora_weights( | |
| "jbilcke-hf/sdxl-cinematic-1", weight_name="pytorch_lora_weights.safetensors", adapter_name="cinematic" | |
| ) | |
| pipeline.load_lora_weights("nerijs/pixel-art-xl", weight_name="pixel-art-xl.safetensors", adapter_name="pixel") | |
| pipeline.unet.set_adapters(["cinematic", "pixel"], weights=[0.5, 0.5]) | |
| ``` | |
Xet Storage Details
- Size:
- 14.9 kB
- Xet hash:
- 444a68b263489c3a05faaf1a0d3024a204668e1164c2a6c85f03473969a53041
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.