Diffusers documentation

PEFT

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

PEFT

Diffusers는 PeftAdapterMixin 클래스를 통해 PEFT 라이브러리로 LoRA와 같은 어댑터를 로드하는 것을 지원합니다. 이를 통해 Diffusers의 UNet2DConditionModel, SD3Transformer2DModel과 같은 모델링 클래스가 어댑터와 함께 작동할 수 있습니다.

Diffusers에서 추론을 위해 PEFT를 사용하는 방법에 대한 개요는 Inference with PEFT 튜토리얼을 참고하세요.

PeftAdapterMixin

class diffusers.loaders.PeftAdapterMixin

< >

( )

PEFT 라이브러리에서 지원하는 어댑터 가중치를 로드하고 사용하는 데 필요한 모든 함수를 포함하는 클래스입니다. 어댑터 및 기본 모델에 이를 주입하는 방법에 대한 자세한 내용은 PEFT 문서를 참고하세요.

최신 버전의 PEFT를 설치하고 이 mixin을 사용하여 다음을 수행합니다:

  • 모델에 새로운 어댑터를 연결합니다.
  • 여러 어댑터를 연결하고 반복적으로 활성화/비활성화합니다.
  • 모델의 모든 어댑터를 활성화/비활성화합니다.
  • 활성 어댑터 목록을 가져옵니다.

active_adapters

< >

( )

모델의 현재 활성 어댑터 목록을 가져옵니다.

어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT 문서에서 더 자세히 읽어보시기를 권합니다.

add_adapter

< >

( adapter_configadapter_name: str = 'default' )

매개변수

  • adapter_config ([~peft.PeftConfig]) — 추가할 어댑터의 구성입니다. 지원되는 어댑터는 non-prefix tuning 및 adaption prompt 방법입니다.
  • adapter_name (str, 선택 사항, 기본값 "default") — 추가할 어댑터의 이름입니다. 이름을 전달하지 않으면 어댑터에 기본 이름이 할당됩니다.

학습을 위해 현재 모델에 새로운 어댑터를 추가합니다. 어댑터 이름이 전달되지 않으면 PEFT 라이브러리의 명명 규칙을 따르는 기본 이름이 어댑터에 할당됩니다.

어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT 문서에서 더 자세히 읽어보시길 권해드립니다.

delete_adapters

< >

( adapter_names: list[str] | str )

매개변수

  • adapter_names (list[str, str]) — 삭제할 어댑터의 이름(단일 문자열 또는 문자열 목록).

adapter의 LoRA 레이어를 기반 모델에서 삭제합니다.

예:

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

< >

( )

모델에 연결된 모든 어댑터를 비활성화하고 기본 모델만으로 추론하도록 전환합니다.

어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT 문서에서 더 자세히 읽어보시기를 권합니다.

disable_lora

< >

( )

기저 모델의 활성 LoRA 레이어를 비활성화합니다.

예:

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

< >

( )

모델에 연결된 어댑터를 활성화합니다. 모델은 self.active_adapters()를 사용하여 활성화할 어댑터 목록을 가져옵니다.

어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT 문서에서 더 자세히 읽어보시기를 권합니다.

enable_lora

< >

( )

기저 모델의 활성 LoRA 레이어를 활성화합니다.

예:

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

< >

( target_rank: int = 128check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error' )

매개변수

  • target_rank (int, 선택 사항, 기본값 128) — 로드될 모든 어댑터 중 가장 높은 랭크입니다.
  • check_compiled (str, 선택 사항, 기본값은 "error") — 모델이 이미 컴파일된 경우를 처리하는 방법입니다. 일반적으로 이 상황을 피해야 합니다. 옵션은 다음과 같습니다:
    • “error” (기본값): 오류를 발생시킵니다
    • “warn”: 경고를 출력합니다
    • “ignore”: 아무 작업도 수행하지 않음

LoRA 어댑터의 핫스왑을 가능하게 합니다.

…

load_lora_adapter

< >

( pretrained_model_name_or_path_or_dictprefix = 'transformer'hotswap: bool = False**kwargs )

매개변수

  • pretrained_model_name_or_path_or_dict (str 또는 os.PathLike 또는 dict) — 다음 중 하나일 수 있습니다:
    • Hub에 호스팅된 사전 학습 모델의 model id 문자열(예: google/ddpm-celebahq-256).
    • ./my_model_directory와 같이 ModelMixin.save_pretrained()로 저장된 모델 가중치를 포함하는 디렉터리의 경로
    • torch 상태 사전입니다.
  • 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]) — 안정적인 학습과 underflow 방지를 위해 사용되는 network alpha 값입니다. 이 값은 kohya-ss trainer 스크립트의 --network_alpha 옵션과 동일한 의미를 가집니다. 이 링크를 참조하세요.
  • low_cpu_mem_usage (bool, 선택) — 무작위 가중치를 초기화하지 않고 사전 학습된 LoRA 가중치만 로드하여 모델 로딩 속도를 높입니다.
  • hotswap — (bool, 선택 사항) 기본값은 False. 기존 (LoRA) 어댑터를 새로 로드한 어댑터로 제자리에서 교체할지 여부입니다. 즉, 추가 어댑터를 로드하는 대신 기존 어댑터의 가중치를 새 어댑터의 가중치로 대체합니다. 이는 더 빠르고 메모리 효율적일 수 있습니다. 그러나 hotswapping의 주요 이점은 모델이 torch.compile로 컴파일된 경우, 새 어댑터를 로드할 때 모델의 재컴파일이 필요하지 않다는 점입니다. hotswapping을 사용할 때 전달하는 adapter_name 는 이미 로드된 어댑터의 이름이어야 합니다.

    새 어댑터와 기존 어댑터의 랭크와/또는 LoRA 알파(즉, 스케일링)가 서로 다른 경우, 어댑터를 로드하기 전에 추가 메서드를 호출해야 합니다:

LoRA 어댑터를 기본 모델에 로드합니다.

save_lora_adapter

< >

( save_directoryadapter_name: str = 'default'upcast_before_saving: bool = Falsesafe_serialization: bool = Trueweight_name: str | None = None )

매개변수

  • 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

< >

( adapter_name: str | list[str] )

매개변수

  • adapter_name (str | list[str])) — 설정할 어댑터 목록 또는 단일 어댑터인 경우의 어댑터 이름.

모델이 해당 어댑터만 사용하도록 강제하여 특정 어댑터를 설정하고, 다른 어댑터는 비활성화합니다.

어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT 문서에서 더 자세히 읽어보시기를 권합니다.

set_adapters

< >

( adapter_names: list[str] | strweights: float | dict | list[float] | list[dict] | list[None] | None = None )

매개변수

  • adapter_names (list[str] 또는 str) — 사용할 어댑터의 이름입니다.
  • weights (Union[List[float], float], 선택 사항) — UNet과 함께 사용할 어댑터의 가중치입니다. None인 경우 모든 어댑터의 가중치는 1.0으로 설정됩니다.

확산 네트워크(예: unet, transformer 등)에서 사용할 현재 활성 어댑터를 설정합니다.

예:

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])
Update on GitHub