PEFT documentation

모델

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

and get access to the augmented documentation experience

to get started

모델

PeftModel은 PEFT 방법을 적용할 기본 Transformer 모델과 구성을 지정하기 위한 기본 모델 클래스입니다. 기본 PeftModel에는 Hub에서 모델을 로드하고 저장하는 메서드가 포함되어 있습니다.

PeftModel

클래스 peft.PeftModel

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'autocast_adapter_dtype: bool = Truelow_cpu_mem_usage: bool = False )

매개변수

  • model (torch.nn.Module) — 적응할 기본 모델, 일반적으로 Transformers 모델입니다.
  • peft_config (PeftConfig) — Peft 모델의 구성입니다.
  • adapter_name (str, 선택 사항) — 어댑터의 이름이며, 기본값은 "default"입니다.
  • autocast_adapter_dtype (bool, 선택 사항, 기본값 True) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16과 bfloat16으로 된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 미칩니다. False로 설정하면 dtype는 해당 레이어의 dtype와 동일하게 유지됩니다.
  • low_cpu_mem_usage (bool, optional, 기본값은 False) — meta device에 빈 어댑터 가중치를 생성합니다. 로딩 프로세스를 가속하는 데 유용합니다.

    > 학습용 새 PEFT 어댑터를 생성할 때 low_cpu_mem_usage=True를 사용하지 마세요.

다양한 Peft 방법을 포함하는 기본 모델.

속성:

  • base_model (torch.nn.Module) — Peft에 사용되는 기본 transformer 모델입니다.
  • peft_config (PeftConfig) — Peft 모델의 구성입니다.
  • modules_to_save (list of str) — 모델을 저장할 때 저장할 서브 모듈 이름 목록입니다.
  • prompt_encoder (PromptEncoder) — PromptLearningConfig를 사용하는 경우 Peft에 사용되는 프롬프트 인코더입니다.
  • prompt_tokens (torch.Tensor) — PromptLearningConfig를 사용하는 경우 Peft에 사용되는 가상 프롬프트 토큰입니다.
  • transformer_backbone_name (str) — PromptLearningConfig를 사용하는 경우, 기본 모델의 transformer backbone 이름입니다.
  • word_embeddings (torch.nn.Embedding) — PromptLearningConfig를 사용하는 경우, 기본 모델의 transformer backbone의 단어 임베딩

add_adapter

< >

( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )

매개변수

  • adapter_name (str) — 추가할 어댑터의 이름입니다.
  • peft_config (PeftConfig) — 추가할 어댑터의 구성입니다.
  • low_cpu_mem_usage (bool, optional, 기본값 False) — 메타 디바이스에 빈 어댑터 가중치를 생성합니다. 저장된 어댑터를 로드할 때 프로세스를 가속하는 데 유용합니다. 학습을 위해 새로운 PEFT 어댑터를 생성할 때는 이 옵션을 사용하지 마세요.
  • autocast_adapter_dtype (bool, 선택 사항, 기본값 True) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16과 bfloat16으로 설정된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 미칩니다. False로 설정하면 dtype는 해당 레이어의 dtype와 동일하게 유지됩니다.

전달된 구성에 따라 모델에 어댑터를 추가합니다.

이 어댑터는 학습되지 않았습니다. 학습된 어댑터를 로드하려면 PeftModel.load_adapter()를 확인하세요.

새로운 어댑터의 이름은 고유해야 합니다.

새로운 어댑터는 자동으로 활성 어댑터로 설정되지 않습니다. 활성 어댑터를 설정하려면 PeftModel.set_adapter()를 사용하세요.

create_or_update_model_card

< >

( output_dir: str )

peft에 대한 정보를 포함하도록 모델 카드를 업데이트하거나 생성합니다:

  1. peft 라이브러리 태그를 추가합니다
  2. peft 버전을 추가합니다
  3. base model 정보를 추가합니다
  4. 사용된 경우 양자화 정보를 추가합니다

delete_adapter

< >

( adapter_name: str )

매개변수

  • adapter_name (str) — 삭제할 어댑터의 이름.

기존 어댑터를 삭제합니다.

disable_adapter

< >

( )

어댑터 모듈을 비활성화하는 컨텍스트 매니저입니다. 이를 사용하여 베이스 모델에서 추론을 실행합니다.

예:

>>> with model.disable_adapter():
...     model(inputs)

forward

< >

( *args: Any**kwargs: Any )

모델의 순전파(forward pass).

from_pretrained

< >

( model: torch.nn.Modulemodel_id: Union[str, os.PathLike]adapter_name: str = 'default'is_trainable: bool = Falseconfig: Optional[PeftConfig] = Noneautocast_adapter_dtype: bool = Trueephemeral_gpu_offload: bool = Falselow_cpu_mem_usage: bool = Falsekey_mapping: Optional[dict[str, str]] = None**kwargs: Any )

매개변수

  • model (torch.nn.Module) — 적응할 모델입니다. 🤗 Transformers 모델의 경우, 모델은 from_pretrained로 초기화되어야 합니다.
  • model_id (str 또는 os.PathLike) — 사용할 PEFT 구성의 이름입니다. 다음 중 하나일 수 있습니다:
    • Hugging Face Hub의 모델 저장소에 호스팅된 PEFT 구성의 model id인 문자열입니다.
    • save_pretrained 메서드를 사용하여 저장된 PEFT 구성 파일이 포함된 디렉토리의 경로 (./my_peft_config_directory/).
  • adapter_name (str, 선택 사항, 기본값 "default") — 로드할 어댑터의 이름입니다. 여러 어댑터를 로드할 때 유용합니다.
  • is_trainable (bool, 선택 사항, 기본값 False) — 어댑터가 학습 가능해야 하는지 여부입니다. False인 경우 어댑터가 고정(frozen)되어 추론에만 사용할 수 있습니다.
  • config (PeftConfig, 선택 사항) — 자동으로 로드된 구성 대신 사용할 구성 객체입니다. 이 구성 객체는 model_id 및 kwargs와 상호 배타적입니다. from_pretrained를 호출하기 전에 구성이 이미 로드된 경우 유용합니다.
  • autocast_adapter_dtype (bool, 선택 사항, 기본값 True) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16과 bfloat16으로 설정된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 미칩니다. False로 설정하면 dtype는 해당 레이어의 dtype와 동일하게 유지됩니다.
  • ephemeral_gpu_offload (bool, 선택 사항) — 부분적으로 로드된 모듈에 대해 일시적 GPU 오프로딩을 사용할지 여부입니다. 기본값은 False입니다. 모델의 일부 또는 어댑터와 같은 구성 요소가 필요할 때까지 CPU 메모리에 유지되는 경우에 유용합니다. 소량의 데이터에 대해 비용이 높은 연산을 수행하는 대신, 데이터가 필요할 때 GPU로 전송되고, 연산이 수행된 후 결과가 다시 CPU 메모리로 이동합니다. 이로 인해 순간적인 VRAM 오버헤드가 약간 발생하지만, 특정 상황에서 수 배 이상의 속도 향상을 가져옵니다.
  • low_cpu_mem_usage (bool, optional, 기본값 False) — 저장된 가중치를 로드하기 전에 meta device에 빈 어댑터 가중치를 생성합니다. 프로세스를 가속하는 데 유용합니다.
  • key_mapping (dict, 선택 사항, 기본값 None) — state_dict를 로드하기 전에 적용되는 PEFT state_dict 키의 추가 매핑입니다. 이 매핑이 적용되면 PEFT 전용 "base_model.model" 접두사가 먼저 제거되고 어댑터 이름(예: "default")은 아직 삽입되지 않은 상태입니다. 이 인수를 전달할 때 자신이 무엇을 하고 있는지 정확히 알고 있을 때만 사용하세요.
  • kwargs — (optional): 특정 PEFT 구성 클래스로 전달되는 추가 키워드 인수입니다. 여기에는 torch_device (str, optional)이 포함됩니다: 어댑터를 로드할 디바이스입니다(load_adapter[PeftModel.load_adapter]로 전달됨). None인 경우 디바이스가 추론됩니다.

pretrained model과 로드된 PEFT 가중치에서 PEFT 모델을 인스턴스화합니다.

model이 인플레이스로 수정될 수 있다는 점에 유의하세요.

get_base_model

< >

( )

기본 모델을 반환합니다.

get_layer_status

< >

( ) → listpeft.peft_model.TunerLayerStatus

반환값

listpeft.peft_model.TunerLayerStatus

각 어댑터 레이어의 상태를 포함하는 dataclass 목록입니다.

모델의 각 어댑터 레이어 상태를 가져옵니다.

이 메서드는 TunerLayerStatus dataclass 인스턴스의 목록을 반환하며, 각 인스턴스는 다음 속성을 포함합니다:

  • name (str): 어댑터 레이어의 이름, 예: model.encoder.block.0.layer.0.SelfAttention.q.
  • module_type (str): 어댑터 레이어의 유형, 예: lora.Linear.
  • enabled (bool): 어댑터 레이어가 활성화되어 있는지 여부.
  • active_adapters (list[str]): 활성화된 어댑터의 이름(있는 경우), 예: ["default"].
  • merged_adapters (list[str]): 병합된 어댑터의 이름(있는 경우), 예: ["default"].
  • available_adapters (list[str]): 사용 가능한 어댑터의 이름 목록, 예: ["default"].
  • quantization_backend (str 또는 None): 양자화 백엔드의 이름, 예: "bnb 4bit", 양자화되지 않은 경우 None.

get_model_status

< >

( ) → peft.peft_model.TunerModelStatus

반환값

peft.peft_model.TunerModelStatus

모델의 상태를 포함하는 dataclass입니다.

모델의 튜너 상태를 가져옵니다.

이 메서드는 다음 속성을 포함하는 TunerModelStatus dataclass 인스턴스를 반환합니다:

  • base_model_type (str): 베이스 모델의 유형, 예: T5Model.
  • adapter_model_type (str): 어댑터 모델의 유형, 예: LoraModel.
  • peft_types (dict[str, str]): 어댑터 이름에서 어댑터 유형으로의 매핑입니다. 예: {"default": "LORA"}.
  • trainable_params (int): 모델의 학습 가능 매개변수 개수입니다.
  • total_params (int): 모델의 전체 파라미터 수.
  • num_adapter_layers (int): 모델의 어댑터 레이어 수입니다.
  • enabled (bool, Literal["irregular"]): 모든 어댑터 레이어가 활성화되어 있는지 여부입니다. 일부만 활성화되고 일부는 비활성화되어 있으면 "irregular"가 됩니다. 이는 모델이 일관되지 않은 상태에 있으며 예상대로 작동하지 않을 수 있음을 의미합니다.
  • active_adapters (list[str], Literal["irregular"]): 활성 어댑터의 이름입니다. 모든 레이어에서 활성 어댑터가 일치하지 않으면 "irregular"가 반환되며, 이는 모델이 일관되지 않은 상태에 있어 예상대로 작동하지 않을 수 있음을 의미합니다.
  • merged_adapters (list[str], Literal["irregular"]): 병합된 어댑터의 이름입니다. 병합된 어댑터가 모든 레이어에서 일관되지 않은 경우, 이는 "irregular"가 되며, 모델이 일관되지 않은 상태에 있고 예상대로 작동하지 않을 수 있음을 의미합니다.
  • available_adapters (list[str]): 사용 가능한 어댑터의 이름 목록, 예: ["default"].
  • quantization_backend (str, None, Literal["irregular"]): 양자화 백엔드의 이름입니다. 예를 들어 "bnb 4bit"이며, 양자화되지 않은 경우 None입니다. 모든 레이어에서 백엔드가 일관되지 않으면 "irregular"가 됩니다.

get_nb_trainable_parameters

< >

( )

모델의 학습 가능한 매개변수 수와 전체 매개변수 수를 반환합니다.

get_prompt

< >

( batch_size: inttask_ids: Optional[torch.Tensor] = Nonemax_cache_len: Optional[int] = None )

Peft에 사용할 가상 프롬프트를 반환합니다. 프롬프트 학습 방법을 사용하는 경우에만 적용됩니다.

get_prompt_embedding_to_save

< >

( adapter_name: str )

모델을 저장할 때 저장할 프롬프트 임베딩을 반환합니다. 프롬프트 학습 방법을 사용하는 경우에만 적용됩니다.

healthcheck

< >

( min_trainable_params: int = 1max_trainable_params_percent = 50 )

매개변수

  • min_trainable_params (int, 선택 사항, 기본값=1) — 기대되는 최소 매개변수 수입니다. 이보다 적은 매개변수가 발견되면 오류로 보고됩니다.
  • max_trainable_params_percent (int, 선택 사항, 기본값=50) — 학습이 가능한 매개변수의 최대 백분율입니다. 이 값보다 많은 매개변수가 발견되면 경고로 보고됩니다.

학습 전에 의심스러운 어댑터 상태를 가진 이 모델을 확인하세요.

이 함수는 모델 및 레이어 상태 API를 요약하며, 어댑터 상태 불일치, 병합된 어댑터, 비현실적인 학습 가능 매개변수 수에 대한 조사 결과를 포함합니다. 학습 루프, 옵티마이저, 데이터셋은 검증하지 않습니다. 모델에서 불일치가 발견되면, 예를 들어 동일한 어댑터에서 일부 레이어는 활성화되고 일부 레이어는 비활성화된 경우와 같이 상태가 "irregular"로 보고됩니다. 이는 거의 항상 무언가 잘못되었음을 의미하며, 모델의 일부 속성을 실수로 잘못 변경하지 않았는지 확인해야 합니다.

검사 과정에서 의심스러운 항목이 발견되면 "findings" 필드에 보고됩니다. "findings"" 목록이 비어 있다는 것은 의심스러운 어댑터 상태가 감지되지 않았다는 의미이지, 학습 실행이 반드시 성공한다는 보장은 아닙니다.

load_adapter

< >

( model_id: Union[str, os.PathLike]adapter_name: stris_trainable: bool = Falsetorch_device: Optional[str] = Noneautocast_adapter_dtype: bool = Trueephemeral_gpu_offload: bool = Falselow_cpu_mem_usage: bool = Falsekey_mapping: Optional[dict[str, str]] = None**kwargs: Any )

매개변수

  • model_id (str 또는 os.PathLike) — 사용할 PEFT 구성의 이름입니다. 다음 중 하나일 수 있습니다:
    • Hugging Face Hub의 모델 저장소에 호스팅된 PEFT 구성의 model id인 문자열입니다.
    • save_pretrained 메서드를 사용하여 저장된 PEFT 구성 파일이 포함된 디렉토리의 경로 (./my_peft_config_directory/).
  • adapter_name (str) — 추가할 어댑터의 이름입니다.
  • is_trainable (bool, 선택 사항, 기본값 False) — 어댑터가 학습 가능해야 하는지 여부입니다. False인 경우 어댑터가 고정(frozen)되어 추론에만 사용할 수 있습니다.
  • torch_device (str, 선택 사항, 기본값 None) — 어댑터를 로드할 디바이스입니다. None인 경우 디바이스가 추론됩니다.
  • autocast_adapter_dtype (bool, 선택 사항, 기본값 True) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16과 bfloat16으로 설정된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 미칩니다. False로 설정하면 dtype는 해당 레이어의 dtype와 동일하게 유지됩니다.
  • ephemeral_gpu_offload (bool, 선택 사항, 기본값 False) — 부분적으로 로드된 모듈에 대해 일시적 GPU 오프로딩을 사용할지 여부입니다. 기본값은 False입니다.
  • low_cpu_mem_usage (bool, optional, 기본값 False) — 저장된 가중치를 로드하기 전에 meta device에 빈 어댑터 가중치를 생성합니다. 프로세스를 가속하는 데 유용합니다.
  • key_mapping (dict, 선택 사항, 기본값 None) — state_dict를 로드하기 전에 적용되는 PEFT state_dict 키의 추가 매핑입니다. 이 매핑이 적용되면 PEFT 전용 "base_model.model" 접두사가 먼저 제거되고 어댑터 이름(예: "default")은 아직 삽입되지 않은 상태입니다. 이 인수를 전달할 때 자신이 무엇을 하고 있는지 정확히 알고 있을 때만 사용하세요.
  • kwargs — (optional): 어댑터 로딩 방식을 수정하기 위한 추가 인자, 예: Hugging Face Hub의 토큰.

학습된 어댑터를 모델에 로드합니다.

새로운 어댑터의 이름은 고유해야 합니다.

새로운 어댑터는 자동으로 활성 어댑터로 설정되지 않습니다. 활성 어댑터를 설정하려면 PeftModel.set_adapter()를 사용하세요.

prepare_model_for_gradient_checkpointing

< >

( model: PreTrainedModel )

필요한 경우 모델을 그래디언트 체크포인트링을 위해 준비합니다

print_healthcheck

< >

( sink = <built-in function print>min_trainable_params: int = 1max_trainable_params_percent = 50**kwargs )

매개변수

  • sink (callable, 선택 사항, 기본값=print) — 출력을 인쇄하기 위해 호출되는 함수입니다. 기본적으로 내장 print 함수를 사용하지만, logger.info와 같은 다른 함수도 사용할 수 있습니다.
  • min_trainable_params (int, 선택 사항, 기본값=1) — 기대되는 최소 매개변수 수입니다. 이보다 적은 매개변수가 발견되면 오류로 보고됩니다.
  • max_trainable_params_percent (int, 선택 사항, 기본값=50) — 학습이 가능한 매개변수의 최대 백분율입니다. 이 값보다 많은 매개변수가 발견되면 경고로 보고됩니다.
  • kwargs — 추가 키워드 인수는 format_healthcheck으로 전달됩니다.

컴팩트하고 사람이 읽기 쉬운 헬스체크 보고서를 출력합니다.

출력은 PEFT 모델의 상태를 요약하며, 일관되지 않은 어댑터 상태, 병합된 어댑터, 비현실적인 학습 가능 매개변수 수에 대한 조사 결과를 포함합니다. 학습 루프, 옵티마이저, 데이터셋은 검증하지 않습니다. 모델에서 불일치가 발견되면, 예를 들어 동일한 어댑터에서 일부 레이어는 활성화되고 일부 레이어는 비활성화된 경우와 같이 상태가 "irregular"로 보고됩니다. 이는 거의 항상 무언가 잘못되었음을 의미하며, 모델의 일부 속성을 실수로 잘못 변경하지 않았는지 확인해야 합니다.

문제가 감지된 경우, 마지막 섹션의 “findings” 아래에 표시됩니다. 문제가 감지되지 않았더라도 학습 실행이 반드시 성공한다는 보장은 없습니다.

print_trainable_parameters

< >

( )

모델의 학습 가능한 매개변수 수를 출력합니다.

Note: print_trainable_parameters()은 get_nb_trainable_parameters()를 사용하며, 이는 huggingface/transformers의 num_parameters(only_trainable=True)와 다릅니다. get_nb_trainable_parameters()는 수정된 backbone transformer 모델을 포함하는 Peft Model의 (trainable parameters, all parameters)를 반환합니다. LoRA와 같은 기법의 경우, backbone transformer 모델이 LoRA 모듈로 in place로 수정됩니다. 그러나 prompt tuning의 경우, backbone transformer 모델은 수정되지 않습니다. num_parameters(only_trainable=True)는 backbone transformer 모델의 trainable parameters 수를 반환하며, 이는 다를 수 있습니다.

save_pretrained

< >

( save_directory: strsafe_serialization: bool = Trueselected_adapters: Optional[list[str]] = Nonesave_embedding_layers: Union[str, bool] = 'auto'is_main_process: bool = Truepath_initial_model_for_weight_conversion: Optional[str] = None**kwargs: Any )

매개변수

  • save_directory (str) — 어댑터 모델 및 구성 파일이 저장될 디렉터리(존재하지 않으면 생성됩니다).
  • safe_serialization (bool, 선택 사항) — 어댑터 파일을 safetensors 형식으로 저장할지 여부이며, 기본값은 True입니다.
  • selected_adapters (List[str], 선택 사항) — 저장할 어댑터 목록입니다. None인 경우 모든 어댑터가 기본값으로 사용됩니다.
  • save_embedding_layers (Union[bool, str], 선택 사항, 기본값 "auto") — True인 경우 어댑터 가중치 외에도 임베딩 레이어를 저장합니다. auto인 경우 사용 가능한 경우 config의 target_modules에서 일반적인 임베딩 레이어 peft.utils.other.EMBEDDING_LAYER_NAMES를 확인하고 부울 플래그를 자동으로 설정합니다. 이 기능은 🤗 transformers 모델에서만 작동합니다.
  • is_main_process (bool, 선택 사항) — 이 메서드를 호출하는 프로세스가 메인 프로세스인지 여부입니다. 기본값은 True입니다. 메인 프로세스가 아닌 경우 체크포인트를 저장하지 않으며, 이는 다중 디바이스 설정(예: DDP)에서 중요합니다.
  • path_initial_model_for_weight_conversion (str, 선택 사항) — 모델을 PiSSA/CorDA/OLoRA로 초기화한 후, 학습을 수행하기 전에 얻은 초기화된 어댑터의 경로입니다. path_initial_model_for_weight_conversion가 None이 아닌 경우, 파인튜닝 전후의 어댑터 차이를 계산합니다. 이 차이는 표준 LoRA 어댑터의 매개변수로 표현할 수 있습니다. PiSSA 및 관련 방법과 달리, 이 변환된 어댑터를 사용하면 베이스 모델에 변경 사항이 필요하지 않으므로 LoRA 어댑터와 여러 PiSSA/CorDA/OLoRA 어댑터를 함께 사용하는 것이 편리하며, 임의의 어댑터를 활성화하거나 비활성화할 수 있습니다. rslora를 rank_pattern 또는 alpha_pattern과 함께 사용하는 경우 이 변환은 지원되지 않습니다. 자세한 내용은 peft.tuners.lora.LoraModel.subtract_mutated_init()을 참조하세요.
  • kwargs (추가 키워드 인자, 선택 사항) — push_to_hub 메서드로 전달되는 추가 키워드 인자입니다.

이 함수는 어댑터 모델과 어댑터 구성 파일을 디렉토리에 저장하여 PeftModel.from_pretrained() 클래스 메서드를 사용해 다시 로드할 수 있게 하고, PeftModel.push_to_hub() 메서드에서도 사용할 수 있게 합니다.

set_adapter

< >

( adapter_name: strinference_mode: bool = False )

매개변수

  • adapter_name (str) — 활성으로 설정할 어댑터의 이름입니다. 어댑터는 먼저 로드되어야 합니다.
  • inference_mode (bool, 선택 사항) — 활성화된 어댑터를 동결할지 여부(즉, requires_grad=False). 기본값은 False입니다.

활성 어댑터를 설정합니다.

모든 PEFT 방법이 여러 개의 활성 어댑터를 지원하지 않으므로 한 번에 하나의 어댑터만 활성화할 수 있습니다. 지원되는 방법에서 여러 어댑터를 활성화하려면 model.base_model.set_adapter(adapter_names)를 사용하세요.

또한, 이 함수는 inference_mode가 True가 아닌 한, 지정된 어댑터를 학습 가능하도록 설정합니다(즉, requires_grad=True).

set_requires_grad

< >

( adapter_names: str | Sequence[str]requires_grad: bool = True )

매개변수

  • adapter_names (str 또는 Sequence[str]) — 활성화/비활성화할 그래디언트를 가진 어댑터의 이름입니다.
  • requires_grad (bool, 선택 사항) — 활성화(True, 기본값) 또는 비활성화(False) 여부를 지정합니다.

지정된 어댑터에 대해 그라디언트를 활성화하거나 비활성화합니다.

Note: prompt tuning와 같은 프롬프트 학습 방식은 지원하지 않습니다.

supports_lora_conversion

< >

( adapter_name: str = 'default' )

이 모델의 어댑터를 LoRA로 변환할 수 있는지 여부

일반적으로 PEFT 방법이 가산적(additive)인 경우, 즉 W’ = W_base + delta_weight인 경우 이 방식이 작동합니다.

PeftModelForSequenceClassification

시퀀스 분류 작업을 위한 PeftModel입니다.

class peft.PeftModelForSequenceClassification

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

매개변수

  • model (PreTrainedModel) — 기본 transformer 모델.
  • peft_config (PeftConfig) — Peft 설정입니다.
  • adapter_name (str, 선택 사항) — 어댑터의 이름이며, 기본값은 "default"입니다.
  • autocast_adapter_dtype (bool, 선택 사항, 기본값 True) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16과 bfloat16으로 된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 미칩니다. False로 설정하면 dtype는 해당 레이어의 dtype와 동일하게 유지됩니다.

시퀀스 분류 작업을 위한 Peft 모델.

속성:

  • config (PretrainedConfig) — 기본 모델의 구성 객체입니다.
  • cls_layer_name (str) — 분류 레이어의 이름.

예:

>>> from transformers import AutoModelForSequenceClassification
>>> from peft import PeftModelForSequenceClassification, get_peft_config

>>> config = {
...     "peft_type": "PREFIX_TUNING",
...     "task_type": "SEQ_CLS",
...     "inference_mode": False,
...     "num_virtual_tokens": 20,
...     "token_dim": 768,
...     "num_transformer_submodules": 1,
...     "num_attention_heads": 12,
...     "num_layers": 12,
...     "encoder_hidden_size": 768,
...     "prefix_projection": False,
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForSequenceClassification.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForSequenceClassification(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 370178 || all params: 108680450 || trainable%: 0.3406113979101117

PeftModelForTokenClassification

토큰 분류 작업을 위한 PeftModel입니다.

class peft.PeftModelForTokenClassification

< >

( model: torch.nn.Modulepeft_config: PeftConfig = Noneadapter_name: str = 'default'**kwargs )

매개변수

  • model (PreTrainedModel) — 기본 transformer 모델.
  • peft_config (PeftConfig) — Peft 설정입니다.
  • adapter_name (str, 선택 사항) — 어댑터의 이름이며, 기본값은 "default"입니다.
  • autocast_adapter_dtype (bool, 선택 사항, 기본값 True) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16과 bfloat16으로 된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 미칩니다. False로 설정하면 dtype는 해당 레이어의 dtype와 동일하게 유지됩니다.

토큰 분류 작업을 위한 Peft 모델.

속성:

  • config (PretrainedConfig) — 기본 모델의 구성 객체입니다.
  • cls_layer_name (str) — 분류 레이어의 이름.

예:

>>> from transformers import AutoModelForTokenClassification
>>> from peft import PeftModelForTokenClassification, get_peft_config

>>> config = {
...     "peft_type": "PREFIX_TUNING",
...     "task_type": "TOKEN_CLS",
...     "inference_mode": False,
...     "num_virtual_tokens": 20,
...     "token_dim": 768,
...     "num_transformer_submodules": 1,
...     "num_attention_heads": 12,
...     "num_layers": 12,
...     "encoder_hidden_size": 768,
...     "prefix_projection": False,
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForTokenClassification.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForTokenClassification(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 370178 || all params: 108680450 || trainable%: 0.3406113979101117

add_adapter

< >

( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )

매개변수

  • adapter_name (str) — 추가할 어댑터의 이름입니다.
  • peft_config (PeftConfig) — 추가할 어댑터의 구성입니다.
  • low_cpu_mem_usage (bool, optional, 기본값 False) — 메타 디바이스에 빈 어댑터 가중치를 생성합니다. 저장된 어댑터를 로드할 때 프로세스를 가속하는 데 유용합니다. 학습을 위해 새로운 PEFT 어댑터를 생성할 때는 이 옵션을 사용하지 마세요.
  • autocast_adapter_dtype (bool, 선택 사항, 기본값 True) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16과 bfloat16으로 설정된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 미칩니다. False로 설정하면 dtype는 해당 레이어의 dtype와 동일하게 유지됩니다.

전달된 구성에 따라 모델에 어댑터를 추가합니다.

이 어댑터는 학습되지 않았습니다. 학습된 어댑터를 로드하려면 PeftModel.load_adapter()를 확인하세요.

새로운 어댑터의 이름은 고유해야 합니다.

새로운 어댑터는 자동으로 활성 어댑터로 설정되지 않습니다. 활성 어댑터를 설정하려면 PeftModel.set_adapter()를 사용하세요.

PeftModelForCausalLM

causal language modeling을 위한 PeftModel입니다.

클래스 peft.PeftModelForCausalLM

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

매개변수

  • model (PreTrainedModel) — 기본 transformer 모델.
  • peft_config (PeftConfig) — Peft 설정입니다.
  • adapter_name (str, 선택 사항) — 어댑터의 이름이며, 기본값은 "default"입니다.
  • autocast_adapter_dtype (bool, 선택 사항, 기본값 True) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16과 bfloat16으로 된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 미칩니다. False로 설정하면 dtype는 해당 레이어의 dtype와 동일하게 유지됩니다.

causal language modeling을 위한 Peft 모델.

예:

>>> from transformers import AutoModelForCausalLM
>>> from peft import PeftModelForCausalLM, get_peft_config

>>> config = {
...     "peft_type": "PREFIX_TUNING",
...     "task_type": "CAUSAL_LM",
...     "inference_mode": False,
...     "num_virtual_tokens": 20,
...     "token_dim": 1280,
...     "num_transformer_submodules": 1,
...     "num_attention_heads": 20,
...     "num_layers": 36,
...     "encoder_hidden_size": 1280,
...     "prefix_projection": False,
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForCausalLM.from_pretrained("gpt2-large")
>>> peft_model = PeftModelForCausalLM(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 1843200 || all params: 775873280 || trainable%: 0.23756456724479544

PeftModelForSeq2SeqLM

시퀀스-투-시퀀스 언어 모델링을 위한 PeftModel입니다.

참고: 입력 토큰은 제공하지만 decoder 입력 토큰을 명시적으로 제공하지 않으면, shift_tokens_right()를 사용하여 입력 토큰을 한 단계 오른쪽으로 이동시켜 decoder 입력 토큰을 자동으로 생성합니다.

클래스 peft.PeftModelForSeq2SeqLM

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

매개변수

  • model (PreTrainedModel) — 기본 transformer 모델.
  • peft_config (PeftConfig) — Peft 설정입니다.
  • adapter_name (str, 선택 사항) — 어댑터의 이름이며, 기본값은 "default"입니다.
  • autocast_adapter_dtype (bool, 선택 사항, 기본값 True) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16과 bfloat16으로 된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 미칩니다. False로 설정하면 dtype는 해당 레이어의 dtype와 동일하게 유지됩니다.

시퀀스-투-시퀀스 언어 모델링을 위한 Peft 모델.

예:

>>> from transformers import AutoModelForSeq2SeqLM
>>> from peft import PeftModelForSeq2SeqLM, get_peft_config

>>> config = {
...     "peft_type": "LORA",
...     "task_type": "SEQ_2_SEQ_LM",
...     "inference_mode": False,
...     "r": 8,
...     "target_modules": ["q", "v"],
...     "lora_alpha": 32,
...     "lora_dropout": 0.1,
...     "fan_in_fan_out": False,
...     "bias": "none",
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForSeq2SeqLM.from_pretrained("t5-base")
>>> peft_model = PeftModelForSeq2SeqLM(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 884736 || all params: 223843584 || trainable%: 0.3952474242013566

PeftModelForQuestionAnswering

질문 답변을 위한 PeftModel입니다.

class peft.PeftModelForQuestionAnswering

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

매개변수

  • model (PreTrainedModel) — 기본 transformer 모델.
  • peft_config (PeftConfig) — Peft 설정입니다.
  • adapter_name (str, 선택 사항) — 어댑터의 이름이며, 기본값은 "default"입니다.
  • autocast_adapter_dtype (bool, 선택 사항, 기본값 True) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16과 bfloat16으로 된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 미칩니다. False로 설정하면 dtype는 해당 레이어의 dtype와 동일하게 유지됩니다.

추출형 질의응답을 위한 Peft 모델.

속성:

  • config (PretrainedConfig) — 기본 모델의 구성 객체입니다.
  • cls_layer_name (str) — 분류 레이어의 이름.

예:

>>> from transformers import AutoModelForQuestionAnswering
>>> from peft import PeftModelForQuestionAnswering, get_peft_config

>>> config = {
...     "peft_type": "LORA",
...     "task_type": "QUESTION_ANS",
...     "inference_mode": False,
...     "r": 16,
...     "target_modules": ["query", "value"],
...     "lora_alpha": 32,
...     "lora_dropout": 0.05,
...     "fan_in_fan_out": False,
...     "bias": "none",
... }

>>> peft_config = get_peft_config(config)
>>> model = AutoModelForQuestionAnswering.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForQuestionAnswering(model, peft_config)
>>> peft_model.print_trainable_parameters()
trainable params: 592900 || all params: 108312580 || trainable%: 0.5473971721475013

add_adapter

< >

( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )

매개변수

  • adapter_name (str) — 추가할 어댑터의 이름입니다.
  • peft_config (PeftConfig) — 추가할 어댑터의 구성입니다.
  • low_cpu_mem_usage (bool, optional, 기본값 False) — 메타 디바이스에 빈 어댑터 가중치를 생성합니다. 저장된 어댑터를 로드할 때 프로세스를 가속하는 데 유용합니다. 학습을 위해 새로운 PEFT 어댑터를 생성할 때는 이 옵션을 사용하지 마세요.
  • autocast_adapter_dtype (bool, 선택 사항, 기본값 True) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16과 bfloat16으로 설정된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 미칩니다. False로 설정하면 dtype는 해당 레이어의 dtype와 동일하게 유지됩니다.

전달된 구성에 따라 모델에 어댑터를 추가합니다.

이 어댑터는 학습되지 않았습니다. 학습된 어댑터를 로드하려면 PeftModel.load_adapter()를 확인하세요.

새로운 어댑터의 이름은 고유해야 합니다.

새로운 어댑터는 자동으로 활성 어댑터로 설정되지 않습니다. 활성 어댑터를 설정하려면 PeftModel.set_adapter()를 사용하세요.

PeftModelForFeatureExtraction

Transformer 모델에서 특징/임베딩을 추출하기 위한 PeftModel입니다.

class peft.PeftModelForFeatureExtraction

< >

( model: torch.nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'**kwargs )

매개변수

  • model (PreTrainedModel) — 기본 transformer 모델.
  • peft_config (PeftConfig) — Peft 설정입니다.
  • adapter_name (str, 선택 사항) — 어댑터의 이름이며, 기본값은 "default"입니다.
  • autocast_adapter_dtype (bool, 선택 사항, 기본값 True) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16과 bfloat16으로 된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 미칩니다. False로 설정하면 dtype는 해당 레이어의 dtype와 동일하게 유지됩니다.

transformer 모델에서 특징/임베딩을 추출하기 위한 Peft 모델

속성:

  • config (PretrainedConfig) — 기본 모델의 구성 객체입니다.

예:

>>> from transformers import AutoModel
>>> from peft import PeftModelForFeatureExtraction, get_peft_config

>>> config = {
...     "peft_type": "LORA",
...     "task_type": "FEATURE_EXTRACTION",
...     "inference_mode": False,
...     "r": 16,
...     "target_modules": ["query", "value"],
...     "lora_alpha": 32,
...     "lora_dropout": 0.05,
...     "fan_in_fan_out": False,
...     "bias": "none",
... }
>>> peft_config = get_peft_config(config)
>>> model = AutoModel.from_pretrained("bert-base-cased")
>>> peft_model = PeftModelForFeatureExtraction(model, peft_config)
>>> peft_model.print_trainable_parameters()

PeftMixedModel

서로 다른 어댑터 유형(예: LoRA와 LoHa)을 혼합하기 위한 PeftModel입니다.

클래스 peft.PeftMixedModel

< >

( model: nn.Modulepeft_config: PeftConfigadapter_name: str = 'default' )

매개변수

  • model (torch.nn.Module) — 튜닝할 모델.
  • config (PeftConfig) — 튜닝할 모델의 설정입니다. 어댑터 유형이 호환되어야 합니다.
  • adapter_name (str, optional, 기본값 "default") — 첫 번째 어댑터의 이름입니다.
  • low_cpu_mem_usage (bool, optional, 기본값 False) — 메타 디바이스에 빈 어댑터 가중치를 생성합니다. 로딩 프로세스를 가속하는 데 유용합니다.

추론을 위해 서로 다른 유형의 어댑터를 혼합하여 로드하는 PeftMixedModel.

이 클래스는 로드/저장을 지원하지 않으며, 일반적으로 직접 초기화하지 않아야 합니다. 대신 get_peft_model을 mixed=True 인수를 사용하여 사용하세요.

> Mixed adapter types 가이드를 읽어 서 서로 다른 adapter type을 사용하는 방법에 대해 자세히 알아보세요.

예:

>>> base_model = ...  # load the base model, e.g. from transformers
>>> peft_model = PeftMixedModel.from_pretrained(base_model, path_to_adapter1, "adapter1").eval()
>>> peft_model.load_adapter(path_to_adapter2, "adapter2")
>>> peft_model.set_adapter(["adapter1", "adapter2"])  # activate both adapters
>>> peft_model(data)  # forward pass using both adapters

add_adapter

< >

( adapter_name: strpeft_config: PeftConfiglow_cpu_mem_usage: bool = Falseautocast_adapter_dtype: bool = True )

매개변수

  • adapter_name (str) — 추가할 어댑터의 이름입니다.
  • peft_config (PeftConfig) — 추가할 어댑터의 구성입니다.
  • low_cpu_mem_usage (bool, optional, 기본값은 False) — 메타 디바이스에 빈 어댑터 가중치를 생성합니다. 저장된 어댑터를 로드할 때 프로세스를 가속하는 데 유용합니다.

    > 학습을 위해 새로운 PEFT 어댑터를 생성할 때 low_cpu_mem_usage=True를 사용하지 마세요(학습은 테스트되지 않았으며, 일반적으로 PeftMixedModel에 대해 권장되지 않습니다).

  • autocast_adapter_dtype (bool, 선택 사항, 기본값 True) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16과 bfloat16으로 설정된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 미칩니다. False로 설정하면 dtype는 해당 레이어의 dtype와 동일하게 유지됩니다.

전달된 구성에 따라 모델에 어댑터를 추가합니다.

이 어댑터는 학습되지 않았습니다. 학습된 어댑터를 로드하려면 PeftModel.load_adapter()를 확인하세요.

새로운 어댑터의 이름은 고유해야 합니다.

새로운 어댑터는 자동으로 활성 어댑터로 설정되지 않습니다. 활성 어댑터를 설정하려면 PeftModel.set_adapter()를 사용하세요.

disable_adapter

< >

( )

어댑터 모듈을 비활성화합니다.

forward

< >

( *args: Any**kwargs: Any )

모델의 순전파(forward pass).

from_pretrained

< >

( model: nn.Modulemodel_id: str | os.PathLikeadapter_name: str = 'default'is_trainable: bool = Falseconfig: Optional[PeftConfig] = None**kwargs: Any )

매개변수

  • model (nn.Module) — 적응할 모델.
  • model_id (str 또는 os.PathLike) — 사용할 PEFT 구성의 이름입니다. 다음 중 하나일 수 있습니다:
    • Hugging Face Hub의 모델 저장소에 호스팅된 PEFT 구성의 model id인 문자열입니다.
    • save_pretrained 메서드를 사용하여 저장된 PEFT 구성 파일이 포함된 디렉토리의 경로 (./my_peft_config_directory/).
  • adapter_name (str, 선택 사항, 기본값 "default") — 로드할 어댑터의 이름입니다. 여러 어댑터를 로드할 때 유용합니다.
  • is_trainable (bool, 선택 사항, 기본값 False) — 어댑터가 학습 가능해야 하는지 여부입니다. False인 경우 어댑터는 고정되어 추론에 사용됩니다.
  • config (PeftConfig, 선택 사항) — 자동으로 로드된 구성 대신 사용할 구성 객체입니다. 이 구성 객체는 model_id 및 kwargs와 상호 배타적입니다. from_pretrained를 호출하기 전에 구성이 이미 로드된 경우 유용합니다.
  • low_cpu_mem_usage (bool, optional, 기본값 False) — 저장된 가중치를 로드하기 전에 meta device에 빈 어댑터 가중치를 생성합니다. 프로세스를 가속하는 데 유용합니다.
  • kwargs — (optional): 특정 PEFT 구성 클래스로 전달되는 추가 키워드 인자.

pretrained model과 로드된 PEFT 가중치에서 PEFT 혼합 모델을 인스턴스화합니다.

model이 인플레이스로 수정될 수 있다는 점에 유의하세요.

generate

< >

( *args: Any**kwargs: Any )

출력을 생성합니다.

get_nb_trainable_parameters

< >

( )

모델의 학습 가능한 매개변수 수와 전체 매개변수 수를 반환합니다.

load_adapter

< >

( model_id: stradapter_name: str*args: Any**kwargs: Any )

매개변수

  • adapter_name (str) — 추가할 어댑터의 이름입니다.
  • peft_config (PeftConfig) — 추가할 어댑터의 구성입니다.
  • is_trainable (bool, 선택 사항, 기본값 False) — 어댑터가 학습 가능해야 하는지 여부입니다. False인 경우 어댑터가 고정(frozen)되어 추론에만 사용할 수 있습니다.
  • torch_device (str, 선택 사항, 기본값 None) — 어댑터를 로드할 디바이스입니다. None인 경우 디바이스가 추론됩니다.
  • autocast_adapter_dtype (bool, 선택 사항, 기본값 True) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16과 bfloat16으로 된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 미칩니다.
  • ephemeral_gpu_offload (bool, 선택 사항, 기본값 False) — 부분적으로 로드된 모듈에 대해 일시적 GPU 오프로딩을 사용할지 여부입니다. 기본값은 False입니다.
  • low_cpu_mem_usage (bool, optional, 기본값 False) — 저장된 가중치를 로드하기 전에 meta device에 빈 어댑터 가중치를 생성합니다. 프로세스를 가속하는 데 유용합니다.
  • kwargs — (optional): 어댑터 로딩 방식을 수정하기 위한 추가 인자, 예: Hugging Face Hub의 토큰.

학습된 어댑터를 모델에 로드합니다.

새로운 어댑터의 이름은 고유해야 합니다.

새로운 어댑터는 자동으로 활성 어댑터로 설정되지 않습니다. 활성 어댑터를 설정하려면 PeftModel.set_adapter()를 사용하세요.

merge_and_unload

< >

( *args: Any**kwargs: Any )

매개변수

  • progressbar (bool) — unload 및 merge 과정을 나타내는 progressbar를 표시할지 여부
  • safe_merge (bool) — 어댑터 가중에 잠재적인 Nan이 있는지 확인하기 위한 안전 병합 체크를 활성화할지 여부
  • adapter_names (List[str], 선택 사항) — 병합할 어댑터 이름 목록입니다. None인 경우 모든 활성 어댑터가 병합됩니다. 기본값은 None입니다.

이 메서드는 어댑터 레이어를 베이스 모델에 병합합니다. 이는 베이스 모델을 독립적인 모델로 사용하려는 경우에 필요합니다.

print_trainable_parameters

< >

( )

모델의 학습 가능한 매개변수 수를 출력합니다.

Note: print_trainable_parameters()은 get_nb_trainable_parameters()를 사용하며, 이는 huggingface/transformers의 num_parameters(only_trainable=True)와 다릅니다. get_nb_trainable_parameters()는 수정된 backbone transformer 모델을 포함하는 Peft Model의 (trainable parameters, all parameters)를 반환합니다. LoRA와 같은 기법의 경우, backbone transformer 모델이 LoRA 모듈로 in place로 수정됩니다. 그러나 prompt tuning의 경우, backbone transformer 모델은 수정되지 않습니다. num_parameters(only_trainable=True)는 backbone transformer 모델의 trainable parameters 수를 반환하며, 이는 다를 수 있습니다.

set_adapter

< >

( adapter_name: Union[str, list[str]]inference_mode: bool = False )

매개변수

  • adapter_name (str, list[str]) — 활성으로 설정할 어댑터의 이름
  • inference_mode (bool, optional) — 활성화된 어댑터를 고정(frozen)할지 여부(즉, requires_grad=False). 기본값은 False입니다.

모델의 활성 어댑터를 설정합니다.

포워드 패스 중 어댑터가 적용되는 순서는 이 함수에 전달된 순서와 다를 수 있습니다. 대신, 포워드 패스 중 적용 순서는 모델에 어댑터가 로드된 순서에 의해 결정됩니다. 활성 어댑터는 포워드 패스 중 어떤 어댑터가 활성화되는지만 결정할 뿐, 적용 순서는 결정하지 않습니다.

또한, 이 함수는 inference_mode가 True가 아닌 한, 지정된 어댑터를 학습 가능하도록 설정합니다(즉, requires_grad=True).

unload

< >

( *args: Any**kwargs: Any )

어댑터 모듈을 병합하지 않고 모두 제거하여 기본 모델을 가져옵니다. 이는 원래의 기본 모델을 반환합니다.

유틸리티

peft.cast_mixed_precision_params

< >

( model: torch.nn.Moduledtype: torch.dtype )

매개변수

  • model (torch.nn.Module) — 비학습 가능(non-trainable) 매개변수를 캐스팅할 모델.
  • dtype (torch.dtype) — 학습이 불가능한 매개변수를 변환할 dtype입니다. dtype은 torch.float16 또는

모델의 모든 학습 불가능(non-trainable) 매개변수를 주어진 dtype으로 변환합니다. dtype은 수행 중인 혼합 정밀도(mixed-precision) 학습에 따라 torch.float16 또는 torch.bfloat16일 수 있습니다. 학습 가능한 매개변수는 전체 정밀도(full precision)로 변환됩니다. 이는 학습 불가능한 매개변수에 반 정밀도(half-precision) dtype를 사용하여 PEFT 방법을 사용할 때 GPU 메모리 사용량을 줄이는 것을 목적으로 합니다. 학습 가능한 매개변수를 전체 정밀도로 유지하면 자동 혼합 정밀도(automatic mixed-precision) 학습을 사용할 때 학습 안정성이 유지됩니다.

torch.bfloat16를 수행 중인 혼합 정밀도 학습에 따라

peft.get_peft_model

< >

( model: nn.Modulepeft_config: PeftConfigadapter_name: str = 'default'mixed: bool = Falseautocast_adapter_dtype: bool = Truerevision: Optional[str] = Nonelow_cpu_mem_usage: bool = False )

매개변수

  • model (torch.nn.Module) — 래핑할 모델. 일반적으로 Transformers 모델이지만, 작업별 기능(peft_config.task_type)을 사용하려면 Transformers 규약을 따르는 모델이어야 하므로, nn.Module라면 어떤 것이든 사용할 수 있습니다.
  • peft_config (PeftConfig) — Peft 모델의 매개변수를 포함하는 구성 객체입니다.
  • adapter_name (str, optional, 기본값 "default") — 주입할 어댑터의 이름입니다. 제공되지 않으면 기본 어댑터 이름이 사용됩니다.
  • mixed (bool, optional, 기본값 False) — 서로 다른 (호환되는) 어댑터 유형을 혼합하는 것을 허용할지 여부입니다.
  • autocast_adapter_dtype (bool, 선택 사항) — 어댑터 dtype를 자동 변환할지 여부입니다. 기본값은 True입니다. 현재 이 옵션은 안정적인 학습에 일반적으로 필요하기 때문에 float16 또는 bfloat16으로 설정된 어댑터 가중치만 float32로 변환하며, 일부 PEFT 튜너에만 영향을 줍니다.
  • revision (str, optional, 기본값 main) — 베이스 모델의 revision입니다. 이 값이 설정되지 않으면 저장된 peft 모델은 베이스 모델의 main revision을 로드합니다.
  • low_cpu_mem_usage (bool, optional, 기본값 False) — 메타 디바이스에 빈 어댑터 가중치를 생성합니다. 로딩 프로세스를 가속하는 데 유용합니다. 모델을 학습할 계획이라면, 학습 시작 전에 어댑터 가중치가 다른 가중치로 교체되지 않는 한 이 설정을 False로 유지하세요.

model과 config에서 Peft 모델 객체를 반환하며, 모델은 인플레이스(in-place)로 수정됩니다.

peft.inject_adapter_in_model

< >

( peft_config: PeftConfigmodel: torch.nn.Moduleadapter_name: str = 'default'low_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )

매개변수

  • peft_config (PeftConfig) — PEFT 모델의 매개변수를 포함하는 구성 객체.
  • model (torch.nn.Module) — 어댑터가 주입될 입력 모델입니다.
  • adapter_name (str, optional, 기본값 "default") — 주입할 어댑터의 이름입니다. 제공되지 않으면 기본 어댑터 이름이 사용됩니다.
  • low_cpu_mem_usage (bool, optional, 기본값 False) — 메타 디바이스에 빈 어댑터 가중치를 생성합니다. 로딩 프로세스를 가속하는 데 유용합니다.
  • state_dict (dict, 선택 사항, 기본값 None) — 여기에 state_dict가 전달되면, state_dict의 항목을 기반으로 어댑터가 주입됩니다. PEFT 메서드의 정확한 target_modules가 알려지지 않은 경우, 예를 들어 메타 데이터 없이 체크포인트가 생성된 경우 등에 유용할 수 있습니다. state_dict의 값은 사용되지 않으며, 어댑팅해야 할 올바른 레이어를 결정하는 데 키만 사용됩니다.

PEFT 레이어를 생성하고 모델을 인플레이스(in-place)로 주입합니다.

현재 API는 프롬프트 학습 방법, 어댑션 프롬프트, 또는 여러 대상 레이어 간에 어댑터 상태를 공유하는 튜너를 지원하지 않습니다. 후자의 경우 get_peft_model()을 사용하세요.

이 함수는 get_peft_model()과 유사하지만 PeftModel 인스턴스를 반환하지 않습니다. 대신 전달된 모델의 원래 인스턴스가 변경된 상태로 반환됩니다.

peft.get_peft_model_state_dict

< >

( modelstate_dict = Noneadapter_name: str = 'default'unwrap_compiled: bool = Falsesave_embedding_layers: bool | Literal['auto'] = 'auto' )

매개변수

  • model (PeftModel) — Peft 모델입니다. torch.nn.DistributedDataParallel, DeepSpeed 또는 FSDP를 사용하는 경우, 모델은 기반 모델/언랩핑된 모델(즉, model.module)이어야 합니다.
  • state_dict (dict, 선택 사항, 기본값 None) — 모델의 state dict입니다. 제공되지 않으면 전달된 모델의 state dict가 사용됩니다.
  • adapter_name (str, 선택 사항, 기본값 "default") — 상태 딕을 반환할 어댑터의 이름입니다.
  • unwrap_compiled (bool, 선택 사항, 기본값 False) — torch.compile이 사용된 경우 모델을 unwrap할지 여부입니다.
  • save_embedding_layers (Union[bool, str], , 선택 사항, 기본값 auto) — True인 경우 어댑터 가중치 외에 임베딩 레이어도 저장합니다. auto인 경우 사용 가능한 경우 config의 target_modules에서 일반적인 임베딩 레이어 peft.utils.other.EMBEDDING_LAYER_NAMES를 확인합니다. 이를 기반으로 불리언 플래그를 설정합니다. 이 기능은 🤗 transformers 모델에서만 작동합니다.

PEFT 모델의 주어진 어댑터의 state dict를 가져옵니다.

이것은 PEFT 매개변수만 포함하며, 기본 모델의 매개변수는 포함하지 않습니다. 따라서 반환되는 state_dict는 일반적으로 전체 모델 크기보다 작습니다. 전체 state_dict를 가져오려면 model.state_dict()를 호출하면 됩니다.

어댑터 이름은 로드 시 변경할 수 있는 임의의 이름이므로 state_dict에서 제거된다는 점에 유의하세요. 예를 들어 어댑터 이름이 'default'이고 원래 키가 'model.q_proj.lora_A.default.weight'인 경우, 반환되는 키는 'model.q_proj.lora_A.weight'가 됩니다. 가중치를 로드할 때 어댑터 이름을 처리하려면 이 함수를 set_peft_model_state_dict()와 함께 사용하세요.

peft.prepare_model_for_kbit_training

< >

( modeluse_gradient_checkpointing = Truegradient_checkpointing_kwargs = Noneauto_clear_cache = True )

매개변수

  • model (transformers.PreTrainedModel) — transformers에서 로드된 모델
  • use_gradient_checkpointing (bool, 선택 사항, 기본값 True) — True인 경우, backward pass 속도가 느려지는 대신 메모리를 절약하기 위해 gradient checkpointing을 사용합니다.
  • gradient_checkpointing_kwargs (dict, 선택 사항, 기본값 None) — 그라디언트 체크포인트링 함수에 전달할 키워드 인수입니다. 해당 메서드에 전달할 수 있는 인수에 대한 자세한 내용은 torch.utils.checkpoint.checkpoint의 문서를 참조하세요. 이 기능은 최신 transformers 버전(> 4.34.1)에서만 사용할 수 있습니다.
  • auto_clear_cache (bool, 선택 사항, 기본값 True) — 파라미터를 fp32로 업캐스팅한 후 accelerator 캐시를 비울지 여부입니다. 이는 캐싱 할당기가 점유하고 있는 메모리를 해제하며, 호스트와 accelerator 메모리를 공유하는 장치에서 특히 유용합니다. 이 단계를 건너뛰려면 False로 설정하세요.

이 메서드는 transformers 모델에서만 작동한다는 점에 유의하세요.

이 메서드는 학습을 실행하기 전에 모델을 준비하는 전체 프로토콜을 래핑합니다. 여기에는 다음이 포함됩니다: 1- layernorm을 fp32로 캐스팅 2- 출력 임베딩 레이어가 grads를 요구하도록 설정 3- lm head의 fp32로 업캐스팅 추가 4- 학습 중에 업데이트되지 않도록 베이스 모델 레이어를 동결

peft.get_layer_status

< >

( model: torch.nn.Module ) → listpeft.peft_model.TunerLayerStatus

매개변수

  • model ([Union[~PeftModel, ~transformers.PreTrainedModel, nn.Module]]) — 어댑터 레이어 상태를 가져올 모델입니다.

반환값

listpeft.peft_model.TunerLayerStatus

각 어댑터 레이어의 상태를 포함하는 dataclass 목록입니다.

모델의 각 어댑터 레이어 상태를 가져옵니다.

이 함수는 TunerLayerStatus dataclass 인스턴스의 목록을 반환하며, 각 인스턴스는 다음 속성을 포함합니다:

  • name (str): 어댑터 레이어의 이름, 예: model.encoder.block.0.layer.0.SelfAttention.q.
  • module_type (str): 어댑터 레이어의 유형, 예: lora.Linear.
  • enabled (bool): 어댑터 레이어가 활성화되어 있는지 여부.
  • active_adapters (list[str]): 활성화된 어댑터의 이름(있는 경우), 예: ["default"].
  • merged_adapters (list[str]): 병합된 어댑터의 이름(있는 경우), 예: ["default"].
  • requires_grad : dict[str, bool | Literal[“irregular”]] 각 어댑터 모듈의 매개변수에 대한 requires_grad 상태입니다. 이상적으로는 True 또는 False여야 합니다. 모든 매개변수에 걸쳐 requires_grad 상태가 일관되지 않으면 값은 "irregular"로 설정됩니다.
  • available_adapters (list[str]): 사용 가능한 어댑터의 이름 목록, 예: ["default"].
  • devices (dict[str, list[str]]): 주어진 어댑터의 파라미터가 저장된 장치, 예: ["cuda","xpu"].
  • quantization_backend (str 또는 None): 양자화 백엔드의 이름, 예: "bnb 4bit", 양자화되지 않은 경우 None.

peft.get_model_status

< >

( model: torch.nn.Module ) → peft.peft_model.TunerModelStatus

매개변수

  • model ([Union[~PeftModel, ~transformers.PreTrainedModel, nn.Module]]) — 어댑터 레이어 상태를 가져올 모델입니다.

반환값

peft.peft_model.TunerModelStatus

모델의 상태를 포함하는 dataclass입니다.

모델의 튜너 상태를 가져옵니다.

이 함수는 다음 속성을 포함하는 TunerModelStatus dataclass 인스턴스를 반환합니다:

  • base_model_type (str): 베이스 모델의 유형, 예: T5Model.
  • adapter_model_type (str): 어댑터 모델의 유형, 예: LoraModel.
  • peft_types (dict[str, str]): 어댑터 이름에서 어댑터 유형으로의 매핑입니다. 예: {"default": "LORA"}.
  • trainable_params (int): 모델의 학습 가능 매개변수 개수입니다.
  • total_params (int): 모델의 전체 파라미터 수.
  • num_adapter_layers (int): 모델의 어댑터 레이어 수입니다.
  • enabled (bool, Literal["irregular"]): 모든 어댑터 레이어가 활성화되어 있는지 여부입니다. 일부만 활성화되고 일부는 비활성화되어 있으면 이 값은 "irregular"가 됩니다. 이는 모델이 일관되지 않은 상태에 있으며 예상대로 작동하지 않을 수 있음을 의미합니다.
  • active_adapters (list[str], Literal["irregular"]): 활성 어댑터의 이름입니다. 모든 레이어에서 활성 어댑터가 일치하지 않으면 "irregular"가 반환되며, 이는 모델이 일관되지 않은 상태에 있어 예상대로 작동하지 않을 수 있음을 의미합니다.
  • merged_adapters (list[str], Literal["irregular"]): 병합된 어댑터의 이름입니다. 병합된 어댑터가 모든 레이어에서 일관되지 않은 경우, 이는 "irregular"가 되며, 모델이 일관되지 않은 상태에 있고 예상대로 작동하지 않을 수 있음을 의미합니다.
  • requires_grad (dict[str, bool | Literal["irregular"]]): 해당 어댑터의 모든 어댑터 레이어에서 requires_grad가 True 또는 False로 설정되어 있는지 여부입니다. 값이 혼합되어 있으면 "irregular"로 설정되며, 이는 모델이 일관되지 않은 상태에 있어 예상대로 작동하지 않을 수 있음을 의미합니다.
  • available_adapters (list[str]): 사용 가능한 어댑터의 이름 목록, 예: ["default"].
  • devices (dict[str, list[str]]): 주어진 어댑터의 파라미터가 저장된 장치, 예: ["cuda","xpu"].
  • quantization_backend (str, None, Literal["irregular"]): 양자화 백엔드의 이름입니다. 예를 들어 "bnb 4bit"이며, 양자화되지 않은 경우 None입니다. 모든 레이어에서 백엔드가 일관되지 않으면 "irregular"가 됩니다.
Update on GitHub