Transformers documentation
PEFT
PEFT
PeftAdapterMixin은 Transformers에서 어댑터를 관리하기 위한 PEFT 라이브러리의 함수를 제공합니다. 이 mixin은 프롬프트 학습이 아닌 모든 PEFT 방법(LoRA, IA3, AdaLoRA 등)을 지원합니다. 프롬프트 튜닝 방법(프롬프트 튜닝, 프롬프트 학습)은 torch 모듈에 주입할 수 없으므로 지원되지 않습니다.
PEFT 라이브러리에서 지원하는 어댑터 가중치를 로드하고 사용하는 데 필요한 모든 함수를 포함하는 클래스입니다. 어댑터와 트랜스포머 기반 모델에 이를 주입하는 방법에 대한 자세한 내용은 PEFT 라이브러리 문서(https://huggingface.co/docs/peft/index)를 참고하세요.
현재 지원되는 PEFT 방법은 모두 프롬프트 학습이 아닌 방법(LoRA, IA³ 등)입니다. 프롬프트 튜닝, 프롬프트 학습과 같은 다른 PEFT 모델은 이러한 어댑터가 torch 모듈에 “주입(inject)”될 수 없으므로 지원 범위에서 제외됩니다. 이러한 방법을 사용하려면 PEFT 라이브러리의 사용 가이드를 참조하세요.
이 mixin을 사용하면 올바른 PEFT 버전(>= 0.20.0)이 설치되어 있으면 다음을 수행할 수 있습니다:
- 로컬 경로 또는 원격 Hub 저장소에 저장된 어댑터를 로드하고 모델에 주입합니다
- 모델에 새로운 어댑터를 연결하고 Trainer를 사용하거나 직접 학습합니다.
- 여러 어댑터를 연결하고 반복적으로 활성화/비활성화하기
- 모델의 모든 어댑터를 활성화/비활성화합니다.
- 활성 어댑터의
state_dict를 가져옵니다.
load_adapter
< source >( peft_model_id: str | None = Noneadapter_name: str | None = Nonepeft_config: dict[str, typing.Any] | None = Noneadapter_state_dict: dict[str, 'torch.Tensor'] | None = Nonelow_cpu_mem_usage: bool = Falseis_trainable: bool = Falsehotswap: typing.Union[bool, typing.Literal['auto']] = 'auto'local_files_only: bool = Falseadapter_kwargs: dict[str, typing.Any] | None = Noneload_config: typing.Optional[ForwardRef('LoadStateDictConfig')] = None**kwargs )
매개변수
- peft_model_id (
str, 선택) — Hub에서 찾을 모델의 식별자 또는 저장된 어댑터 설정 파일과 어댑터 가중치에 대한 로컬 경로 - adapter_name (
str, 선택 사항) — 사용할 어댑터 이름입니다. 설정하지 않으면 “default” 이름을 사용합니다. - load_config (
LoadStateDictConfig, 선택 사항) — 어댑터 가중치를 가져올 때 재사용할 로드 구성입니다. 일반적으로from_pretrained에서 가져옵니다. - kwargs (
dict[str, Any], 선택) — 키워드 인수로 전달되는 추가LoadStateDictConfig필드. - peft_config (
dict[str, Any], 선택) — 추가할 어댑터의 설정입니다. 지원되는 어댑터는 프롬프트 학습이 아닌 모든 설정(LoRA, IA³ 등)입니다. 사용자가 PEFT 상태 딕셔너리를 직접 전달하는 경우에 이 인수가 사용됩니다. - adapter_state_dict (
dict[str, torch.Tensor], 선택) — 로드할 어댑터의 state dict입니다. 사용자가 PEFT state dict를 직접 전달하는 경우에 이 인수가 사용됩니다. - low_cpu_mem_usage (
bool, 선택, 기본값False) — PEFT 어댑터를 로드할 때 메모리 사용량을 줄입니다. 로드 과정도 빨라집니다. - is_trainable (
bool, 선택 사항, 기본값False) — 어댑터가 학습 가능해야 하는지 여부입니다.False인 경우 어댑터가 고정(frozen)되어 추론에만 사용할 수 있습니다. - hotswap — (
"auto"또는bool, 선택 사항, 기본값은"auto") 기존 (LoRA) 어댑터를 새로 로드한 어댑터로 제자리에서 교체할지 여부입니다. 즉, 추가 어댑터를 로드하는 대신 기존 어댑터의 가중치를 새 어댑터의 가중치로 대체합니다. 이는 더 빠르고 메모리 효율적일 수 있습니다. 그러나 hotswapping의 주요 이점은 모델이 torch.compile로 컴파일된 경우, 새 어댑터를 로드할 때 모델의 재컴파일이 필요하지 않다는 점입니다. hotswapping을 사용할 때 전달하는adapter_name는 이미 로드된 어댑터의 이름이어야 합니다.새 어댑터와 기존 어댑터의 rank와/또는 LoRA alpha(즉, scaling)가 서로 다른 경우, 어댑터를 로드하기 전에 추가 메서드를 호출해야 합니다:
파일 또는 원격 Hub 폴더에서 어댑터 가중치를 로드합니다. 어댑터와 PEFT 메서드에 익숙하지 않다면, PEFT 공식 문서에서 더 자세히 알아보세요: https://huggingface.co/docs/peft
어댑터 가중치를 로드하려면 백엔드로 PEFT가 설치되어 있어야 합니다.
add_adapter
< source >( adapter_configadapter_name: str | None = None )
어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT 공식 문서에서 더 자세히 읽어보시길 권합니다: https://huggingface.co/docs/peft
학습을 위해 현재 모델에 새로운 어댑터를 추가합니다. 어댑터 이름이 전달되지 않으면, PEFT 라이브러리의 관례를 따르는 기본 이름이 어댑터에 할당됩니다(PEFT에서는 기본 어댑터 이름으로 "default"를 사용합니다).
새로 추가된 어댑터는 자동으로 활성화되지 않습니다. 활성화하려면 model.set_adapter를 사용하세요.
set_adapter
< source >( adapter_name: list[str] | str )
어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT 공식 문서에서 더 자세히 읽어보시길 권합니다: https://huggingface.co/docs/peft
…
어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT 공식 문서에서 더 자세히 읽어보시길 권합니다: https://huggingface.co/docs/peft
모델에 연결된 모든 어댑터를 비활성화합니다. 이렇게 하면 기본 모델만으로 추론이 수행됩니다.
어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT 공식 문서에서 더 자세히 읽어보시길 권합니다: https://huggingface.co/docs/peft
모델에 연결된 어댑터를 활성화합니다.
enable_peft_hotswap
< source >( target_rank: int = 128check_compiled: typing.Literal['error', 'warn', 'ignore'] = 'error' )
rank가 다른 PEFT 어댑터를 핫스왑할 수 있는 기능을 활성화합니다. 모델이 컴파일된 경우 재컴파일을 트리거하지 않고도 핫스왑할 수 있습니다.
현재 hotswapping은 LoRA만 지원합니다.
이 메서드를 호출하는 것은 어댑터를 핫스왑할 때, 그리고 모델이 컴파일된 경우 또는 로드된 어댑터의 랭크가 서로 다른 경우에만 필요합니다. 모든 랭크가 동일하고 모델이 컴파일되지 않은 경우, 이 메서드를 먼저 호출하지 않아도 핫스왑이 정상적으로 작동합니다.
어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT 공식 문서에서 더 자세히 읽어보시길 권합니다: https://huggingface.co/docs/peft
모델의 현재 활성 어댑터를 가져옵니다. 멀티 어댑터 추론(여러 어댑터를 조합하여 추론을 수행하는 경우)에서는 사용자가 적절히 처리할 수 있도록 모든 활성 어댑터의 목록을 반환합니다.
이전 PEFT 버전(멀티 어댑터 추론을 지원하지 않는 버전)에서는 module.active_adapter가 단일 문자열을 반환합니다.
get_adapter_state_dict
< source >( adapter_name: str | None = Nonestate_dict: dict | None = None )
어댑터와 PEFT 방법에 익숙하지 않으시다면, PEFT 공식 문서에서 더 자세히 읽어보시길 권합니다: https://huggingface.co/docs/peft
지정된 adapter_name 어댑터의 가중치 텐서만 포함해야 하는 어댑터 상태 딕셔너리를 가져옵니다. adapter_name이 전달되지 않으면 활성 어댑터가 사용됩니다.
delete_adapter
< source >( adapter_names: list[str] | str )
기저 모델에서 PEFT 어댑터를 삭제합니다.