PEFT documentation

GLoRA

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

GLoRA

일반화된 저순위 적응(GLoRA)은 LoRA 및 관련 접근법을 일반화한 PEFT 방법입니다. GLoRA는 업데이트를 구성 가능한 경로(A, B, C, D, E)로 분해하며, 각 경로는 경로에 따라 저순위, 벡터, 상수 또는 비활성화된 매개변수화를 사용할 수 있습니다.

각 경로는 네 가지 매개변수화 모드 중 하나를 지원합니다. 이들은 매개변수 개수와 표현력(업데이트가 얼마나 풍부할 수 있는지) 사이의 트레이드오프를 제공합니다:

  • "lora": 저순위 분해(표준 LoRA와 유사). r * (out + in)개의 매개변수를 사용하며 rank-r 보정을 표현할 수 있습니다. 표현력이 가장 높고 매개변수도 가장 많습니다.
  • "vector": 단일 벡터(예: shape (out, 1))로, 행렬 전체에 브로드캐스트됩니다. O(out)개의 매개변수를 사용하며, 채널별 스케일링 또는 시프트만 가능합니다.
  • "constant": 모든 요소에 걸쳐 공유되는 단일 스칼라. 1개의 매개변수를 사용하며 학습 가능한 옵션 중 표현력이 가장 낮습니다.
  • "none": 학습 가능한 매개변수가 없는 제로; 해당 경로를 완전히 비활성화합니다.

모든 경로가 모든 모드를 지원하지는 않습니다(예: config_D_E는 "lora"를 지원하지 않음). 더 많은 경로에서 "lora"를 선택하면 용량과 학습 가능한 매개변수가 증가하며, "vector", "constant", 또는 "none"을 선택하면 둘 다 감소합니다.

GLoRA는 구조화된 업데이트 패턴을 실험하고 단일 레이어에서 여러 적응 메커니즘을 결합하려는 연구 및 고급 애플리케이션에서 특히 유용합니다.

고수준에서 GLoRA는 동결된 선형 레이어를 다음과 같이 수정합니다: Weff=W0+W0⊙A+B W_{\mathrm{eff}} = W_0 + W_0 \odot A + B beff=b0+b0⊙D+E+W0C b_{\mathrm{eff}} = b_0 + b_0 \odot D + E + W_0 C

각 경로는 독립적으로 매개변수화됩니다.

GloraConfig

클래스 peft.GloraConfig

< >

( 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: list[str] | str | None = Nonebias: str = 'none'modules_to_save: list[str] | None = Noneconfig_A_B: typing.Literal['lora', 'vector', 'constant', 'none'] = 'lora'config_C: typing.Literal['lora', 'vector', 'none'] = 'lora'config_D_E: typing.Literal['vector', 'constant', 'none'] = 'constant'init_weights: bool = True )

매개변수

  • r (int) — 설정이 lora로 지정된 경우 사용되는 저랭크 분해의 랭크.
  • target_modules (Optional[Union[List[str], str]]) — Glora를 적용할 모듈의 이름들입니다.
  • config_A_B (str) — A와 B 행렬(가중치 곱셈 및 덧셈 보정)에 대한 파라미터화. 유효한 값: lora, vector, constant, none.
  • config_C (str) — C 행렬의 매개변수화(가중치-바이어 결합: b += W0 @ C). 유효한 값: lora, vector, none.
  • config_D_E (str) — D와 E 스칼라(편차 곱셈 및 덧셈 보정)의 매개변수화입니다. D와 E는 행렬이 아닌 편차 크기의 벡터이므로 lora를 지원하지 않습니다. 유효한 값: vector, constant, none.
  • init_weights (bool) — True(기본값)인 경우, GLoRA를 no-op(제로)으로 초기화합니다. False인 경우, 어댑터가 no-op이 되지 않도록 kaiming 초기화를 사용합니다.

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

Glora는 동결된 선형 레이어 W0를 다음과 같이 수정합니다: W_eff = W0 + W0 * A + B 및 b_eff = b0 + b0 * D + E + W0 @ C.

각 행렬(A, B, C, D, E)은 독립적으로 매개변수화될 수 있습니다. config 값은 사용되는 매개변수의 수와 표현할 수 있는 형태를 제어합니다:

  • lora: Xd @ Xu 형태의 저순위 분해로, 차원은 각각 (out, r)와 (r, in)입니다. r * (out + in)개의 매개변수를 사용하며, 임의의 rank-r 보정을 표현할 수 있습니다. 표준 LoRA와 동일합니다.
  • vector: (out, 1) 모양의 단일 열 벡터로, 전체 행렬에 걸쳐 브로드캐스트됩니다. out개의 매개변수를 사용하며 출력 채널별 스케일링 또는 시프트만 수행합니다.
  • constant: 모든 요소에 공유되는 단일 스칼라. 1개의 매개변수를 사용하며, 제약이 가장 강합니다.
  • none: 0으로 설정하여 학습 가능한 파라미터가 없도록 합니다. 해당 경로를 사실상 비활성화합니다.

주요 구성 옵션

  • r: 경로가 "lora"로 설정된 경우 사용되는 Rank (기본값: 8).
  • target_modules: 적응할 모듈 이름의 목록 또는 정규식 (예: ["q_proj", "v_proj"]).
  • config_A_B: A와 B의 경로 유형 (“lora”, “vector”, “constant”, “none”).
  • config_C: C의 경로 유형 (“lora”, “vector”, “none”).
  • config_D_E: D와 E의 경로 유형 (“constant”, “vector”, “none”).
  • bias: Bias 처리 방식("none", "all" 또는 "glora_only").
  • init_weights: True(기본값)인 경우 GLoRA는 no-op으로 초기화됩니다. False인 경우 kaiming 초기화를 사용합니다.

참고:

  • config_D_E는 "lora"를 지원하지 않습니다.
  • 지원되는 모델 유형에서는 target_modules를 생략할 수 있습니다(PEFT 기본 매핑이 사용됩니다).

GloraModel

class peft.GloraModel

< >

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

Generalized Low Rank Adapter (GLoRA) 모델을 사전 학습된 transformers 모델에서 생성합니다.

  • 기본 모델을 래핑하고 지정된 모듈에 GLoRA 어댑터를 주입합니다.
  • 여러 어댑터, 어댑터 전환, 병합/병합 해제, 혼합 배치 추론을 지원합니다.
  • 어댑터 관리를 위해 set_adapter, merge_and_unload 및 관련 메서드를 사용합니다.

GloraLayer와 GloraLinear

class peft.tuners.glora.GloraLayer

< >

( base_layer: nn.Module**kwargs )

class peft.tuners.glora.GloraLinear

< >

( base_layer: nn.Moduleadapter_name: strconfig**kwargs )

밀집 ~torch.nn.Linear base_layer를 감싸는 GLoRA 어댑터.

  • GloraLayer는 일반화된 저순위 적응의 핵심 로직으로, 여러 어댑터와 유연한 경로 구성을 지원합니다.
  • GloraLinear은 GLoRA를 지원하는 nn.Linear의 대체 구현입니다.
  • GLoRA는 현재 일반 torch.nn.Linear 베이스 레이어만 지원합니다.

사용 예시

from transformers import AutoModelForCausalLM
from peft import GloraConfig, get_peft_model

model = AutoModelForCausalLM.from_pretrained("your-model-id")
glora_config = GloraConfig(
    r=8,
    target_modules=["q_proj", "v_proj"],
    config_A_B="lora",
    config_C="vector",
    config_D_E="constant",
    task_type="CAUSAL_LM",
)
model = get_peft_model(model, glora_config)
model.print_healthcheck()

# Switch adapters, merge, etc.
model.set_adapter("default")
model.merge_and_unload()

The input is a single word "Notes". 참고

  • GLoRA는 LoRA의 초집합입니다: 모든 경로를 “lora”로 설정하면 표준 LoRA를 복원합니다.
  • 새로운 적응 전략을 실험하기 위해 A/B/C/D/E에 서로 다른 경로 유형을 사용할 수 있습니다.
  • GLoRA는 모든 표준 PEFT 어댑터 관리 기능(추가, 삭제, 전환, 병합 등)을 지원합니다.

참고

Update on GitHub