PEFT documentation
Llama-Adapter
Llama-Adapter

Llama-Adapter는 Llama를 지시 따르기 모델로 전환하기 위해 특별히 설계된 PEFT 방법입니다. Llama 모델은 동결되며, 입력 지시 토큰 앞에 접두사로 붙은 적응 프롬프트 세트만 학습됩니다. 모델에 삽입된 무작위 초기화 모듈이 모델의 기존 지식을 일부 잃게 만들 수 있으므로, Llama-Adapter는 제로 게이팅을 사용한 제로 초기화 어텐션을 통해 지시 프롬프트를 모델에 점진적으로 추가합니다.
해당 논문의 초록은 다음과 같습니다:
LLaMA-Adapter를 소개합니다. 이는 LLaMA를 지시 따르기 모델로 효율적으로 파인튜닝하기 위한 경량 적응 방법입니다. 52K개의 셀프 인스트럭트 데모를 사용하여, LLaMA-Adapter는 동결된 LLaMA 7B 모델에 학습 가능한 파라미터 1.2M만 도입하며, 8개의 A100 GPU에서 파인튜닝에 1시간 미만의 비용이 듭니다. 구체적으로, 학습 가능한 적응 프롬프트 세트를 채택하여 더 높은 트랜스포머 레이어에서 입력 텍스트 토큰 앞에 붙입니다. 그런 다음, 제로 게이팅을 가진 제로 초기화 어텐션 메커니즘을 제안하여, 사전 학습된 지식을 효과적으로 보존하면서 새로운 지시 단서를 LLaMA에 적응적으로 주입합니다. 효율적인 훈련을 통해, LLaMA-Adapter는 7B 파라미터를 완전히 파인튜닝한 Alpaca와 비교할 수 있는 고품질 응답을 생성합니다. 또한, 우리의 접근법은 이미지와 같은 멀티모달 입력으로 쉽게 확장되어 이미지 조건부 LLaMA를 만들 수 있으며, 이는 ScienceQA에서 우수한 추론 능력을 달성합니다. 코드는 https://github.com/ZrrSkywalker/LLaMA-Adapter에서 공개합니다.
벤치마크 개요
API
AdaptionPromptConfig
클래스 peft.AdaptionPromptConfig
< source >( 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 = Falsetarget_modules: str = Noneadapter_len: int = Noneadapter_layers: int = None )
AdaptionPromptModel의 구성을 저장합니다.
AdaptionPromptModel
https://huggingface.co/papers/2303.16199에 설명된 대로 어댑션 프롬프트를 구현합니다.
상위 L개의 attention 모듈은 원래 모듈을 감싸되, 가중치 게이트(제로 초기화를 위해)를 가진 학습 가능한 프롬프트를 삽입하는 AdaptedAttention 모듈로 대체됩니다.
멀티 어댑터 패턴에 대한 참고 사항:
- 어댑터 이름으로 인덱싱된 AdaptedAttention 모듈의 사전(딕셔너리)을 유지하여 서로 다른 어댑터의 상태를 저장합니다.
- 어댑터를 전환할 때마다 현재 활성화된 어댑터의 모듈을 모델에서 제거하고 사전에 저장한 뒤, 새 어댑터의 모듈로 교체합니다.
- 중복되고 잠재적으로 일관성이 없는 상태를 피하기 위해, 현재 활성화된 어댑터는 항상 사전에서 제거됩니다.
- 어댑터를 비활성화하면 모듈이 모델에서 제거됩니다.
name 및 config가 주어진 어댑터를 추가합니다.
지정된 이름의 어댑터를 삭제합니다.
AdaptedAttention 모듈을 교체하여 어댑터 레이어를 비활성화합니다.
캐시된 AdaptedAttention 모듈을 교체하여 어댑터 레이어를 활성화합니다.
지정된 이름의 어댑터를 사용하도록 모델을 설정합니다.