PEFT documentation

Polytropon

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

Polytropon

Polytropon은 인벤토리에 다양한 LoRA 어댑터를 포함하는 멀티태스크 모델입니다. 이 모델은 라우팅 함수를 통해 인벤토리에서 올바른 어댑터 조합을 학습하여, 특정 작업에 가장 적합한 모듈의 부분 집합을 선택합니다. PEFT는 Polytropon에 대해 Multi-Head Adapter Routing (MHR)도 지원합니다. MHR은 어댑터 헤드를 더 세밀하게 결합하여 라우팅 함수를 기반으로 개선합니다. 어댑터 헤드는 서로 겹치지 않는 블록으로 분리되고, 각 블록마다 다른 라우팅 함수가 학습되어 표현력이 높아집니다.

멀티태스크 학습에서 모듈형 스킬 결합
Cross-Task Generalization을 위한 Multi-Head Adapter Routing

해당 논문의 초록은 다음과 같습니다:

모듈형 설계는 신경 모델이 지식의 다양한 측면을 분리하고 재조합하여 새로운 작업에 대해 보다 체계적으로 일반화하도록 장려합니다. 본 연구에서는 각 작업이 (상대적으로 작은) 인벤토리에서 잠재적 이산 스킬의 부분 집합과 연관된다고 가정합니다. 이에 따라 스킬은 매개변수 효율적(희소 / 저순위) 모델 매개변수화에 대응합니다. 이러한 스킬과 작업-스킬 할당 행렬을 함께 학습함으로써, 각 작업에 대한 네트워크는 활성 스킬의 매개변수 평균으로 인스턴스화됩니다. 작업 간 스킬의 자명한하지 않은 소프트 분할을 선호하기 위해, 인디언 버펫 프로세스 사전 분포와 이중 속도 학습률과 같은 일련의 유도 편향을 실험했습니다. 잠재 스킬 모델은 두 가지 주요 설정에서 평가했습니다: 1) BabyAI 플랫폼의 8개 레벨에서 기반 지시 따르기를 위한 멀티태스크 강화 학습; 2) 160개의 NLP 작업으로 구성된 벤치마크인 CrossFit에서 사전 학습된 텍스트-텍스트 생성 모델의 소수 샷 적응. 완전히 공유된 매개변수, 작업별 매개변수, 또는 작업 간에 지식이 얽혀 있는 조건부 생성 매개변수를 사용하는 베이스라인과 비교할 때, 네트워크의 모듈형 설계가 강화 학습에서의 샘플 효율성과 감독 학습에서의 소수 샷 일반화를 크게 향상시킨다는 것을 발견했습니다. 또한, 이산 스킬이 명시적인 작업 계층 구조를 제공함으로써 해석 가능성을 어떻게 돕는지 보여줍니다.

먼저 학습 없이 라우팅을 시도해 보고 싶다면 Arrow LoRA 변형을 확인해 보세요.

API

PolyConfig

클래스 peft.PolyConfig

< >

( task_type: Optional[Union[str, TaskType]] = Nonepeft_type: Optional[Union[str, PeftType]] = Noneauto_mapping: Optional[dict] = Nonepeft_version: Optional[str] = Nonebase_model_name_or_path: Optional[str] = Nonerevision: Optional[str] = Noneinference_mode: bool = Falser: int = 8target_modules: Optional[Union[list[str], str]] = Noneexclude_modules: Optional[Union[list[str], str]] = Nonemodules_to_save: Optional[list[str]] = Noneinit_weights: bool = Truepoly_type: Literal['poly'] = 'poly'n_tasks: int = 1n_skills: int = 4n_splits: int = 1 )

매개변수

  • r (int) — Poly의 각 Lora의 Attention 차원.
  • target_modules (Union[List[str],str]) — Poly를 적용할 모듈의 이름들.
  • exclude_modules (Optional[Union[List[str], str]]) — 어댑터를 적용하지 않을 모듈의 이름입니다. 문자열을 전달하면 정규식 매칭이 수행됩니다. 문자열 목록을 전달하면 정확한 매칭이 수행되거나, 모듈 이름이 전달된 문자열 중 하나로 끝나는지 확인됩니다.
  • modules_to_save (List[str]) — Poly 레이어를 제외한 최종 체크포인트에 저장할 학습 가능 모듈 목록
  • init_weights (bool) — Poly 가중치 초기화를 수행할지 여부.
  • poly_type (Literal["poly"]) — 사용할 Poly 모듈의 변형입니다. 현재 “poly”만 지원됩니다.
  • n_tasks (int) — 멀티태스킹 시나리오에서 작업의 수.
  • n_skills (int) — 각 Poly 레이어의 스킬(LoRA) 수입니다.
  • n_splits (int) — Poly 레이어의 각 LoRA 내부의 분할 수. 1보다 큰 값은 Multi-Head Routing(MHR) 사용임을 나타냅니다.

이것은 PolyModel의 구성을 저장하기 위한 구성 클래스입니다.

PolyModel

class peft.PolyModel

< >

( modelpeft_config: Union[PeftConfig, dict[str, PeftConfig]]adapter_name: strlow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )

Update on GitHub