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

Genelleştirilmiş Düşük Rütbe Uyarlaması (GLoRA), LoRA ve ilgili yaklaşımları genelleştiren bir PEFT yöntemidir. GLoRA, güncellemeleri yapılandırılabilir yollara (A, B, C, D, E) ayırır; her yol, yola bağlı olarak düşük rütbeli, vektör, sabit veya devre dışı bırakılmış parametrelendirmelerden birini kullanabilir.

Her yol, dört parametrelendirme modundan birini destekler. Bunlar parametre sayısı ile ifade zenginliği (güncellemenin ne kadar kapsamlı olabileceği) arasında bir denge kurar:

  • "lora": Düşük rütbeli ayrıştırma (standart LoRA gibi). r * (out + in) parametre kullanır ve rütbe-r düzeltmelerini ifade edebilir. En yüksek ifade gücüne sahip, en çok parametreye sahiptir.
  • "vector": Tek bir vektör (ör. şekli (out, 1)), matris boyunca yayınlanır. O(out) parametre kullanır; yalnızca kanal başına ölçekleme veya kaydırma yapar.
  • "constant": Tüm öğeler arasında paylaşılan tek bir skaler. 1 parametre kullanır; eğitilebilir seçenekler arasında en az ifade edici olanıdır.
  • "none": Eğitilebilir parametresi olmayan sıfırlar; o yolu tamamen devre dışı bırakır.

Her yol her modu kabul etmez (örneğin, config_D_E "lora" modunu desteklemez). Daha fazla yolda "lora" seçmek kapasiteyi ve eğitilebilir parametre sayısını artırır; "vector", "constant" veya "none" ise her ikisini de azaltır.

GLoRA, yapılandırılmış güncelleme desenleriyle deney yapmak ve tek bir katmanda birden fazla uyarlama mekanizmasını birleştirmek istediğiniz araştırma ve ileri düzey uygulamalar için özellikle faydalıdır.

Genel hatlarıyla GLoRA, dondurulmuş bir doğrusal katmanı şu şekilde değiştirir: 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

her yol bağımsız olarak parametrelenir.

GloraConfig

sınıf 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 )

Parametreler

  • r (int) — Bir yapılandırma lora olarak ayarlandığında kullanılan düşük rütbeli ayrıştırmanın rütbesi.
  • target_modules (Optional[Union[List[str], str]]) — Glora'nın uygulanacağı modüllerin adları.
  • config_A_B (str) — A ve B matrisleri için parametrelendirme (ağırlık çarpımsal ve toplanan düzeltmeleri). Geçerli değerler: lora, vector, constant, none.
  • config_C (str) — C matrisi için parametrelendirme (ağırlık-sapma bağlantısı: b += W0 @ C). Geçerli değerler: lora, vector, none.
  • config_D_E (str) — D ve E skalerleri için parametrelendirme (bias çarpımsal ve eklemeli düzeltmeler). D ve E, matrisler değil bias boyutunda vektörler olduğu için lora desteklenmez. Geçerli değerler: vector, constant, none.
  • init_weights (bool) — True ise (varsayılan), GLoRA'yı bir no-op (sıfırlar) olarak başlatır. False ise, adaptörün bir no-op olmaması için kaiming başlatma kullanılır.

Bu, bir GloraModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır.

Glora, dondurulmuş doğrusal katman W0'ü şu şekilde değiştirir: W_eff = W0 + W0 * A + B ve b_eff = b0 + b0 * D + E + W0 @ C.

Her matris (A, B, C, D, E) bağımsız olarak parametreleştirilebilir. Yapılandırma değerleri, kaç parametrenin kullanılacağını ve bunların hangi şekilleri ifade edebileceğini kontrol eder:

  • lora: (out, r) ve (r, in) biçimlerinde Xd @ Xu şeklinde düşük rütbeli ayrıştırma. r * (out + in) parametre kullanır ve herhangi bir rütbe-r düzeltmesini ifade edebilir. Standart LoRA ile aynıdır.
  • vector: (out, 1) biçiminde tek bir sütun vektörü, tüm matris boyunca yayılır. out parametre kullanır; yalnızca çıktı kanalına göre ölçekleme veya kaydırma yapar.
  • constant: Tüm öğeler arasında paylaşılan tek bir skaler. 1 parametre kullanır; en kısıtlı olanıdır.
  • none: Sıfırlar, eğitilebilir parametre yok. Bu yolu fiilen devre dışı bırakır.

Temel Yapılandırma Seçenekleri

  • r: Bir yol "lora" olarak yapılandırıldığında kullanılan rank (varsayılan: 8).
  • target_modules: Uyarlanacak modül adlarının listesi veya regex'i (ör. ["q_proj", "v_proj"]).
  • config_A_B: A ve B için yol tipi (“lora”, “vector”, “constant”, “none”).
  • config_C: C için yol türü (“lora”, “vector”, “none”).
  • config_D_E: D ve E için yol tipi (“constant”, “vector”, “none”).
  • bias: Sapma işleme ("none", "all" veya "glora_only").
  • init_weights: True (varsayılan) ise, GLoRA bir no-op olarak başlatılır. False ise, kaiming başlatması kullanılır.

Notlar:

  • config_D_E, "lora" desteklemez.
  • Desteklenen model türleri için target_modules atlanabilir (PEFT varsayılan eşlemeleri kullanılır).

GloraModel

sınıf peft.GloraModel

< >

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

Önceden eğitilmiş bir transformers modelinden Generalized Low Rank Adapter (GLoRA) modeli oluşturur.

  • Bir temel modeli sarar ve belirtilen modüllere GLoRA adaptörlerini enjekte eder.
  • Birden çok adaptör, adaptör değiştirme, birleştirme/ayırma ve karışık parti çıkarımını destekler.
  • Adaptör yönetimi için set_adapter, merge_and_unload ve ilgili yöntemleri kullanın.

GloraLayer ve GloraLinear

sınıf peft.tuners.glora.GloraLayer

< >

( base_layer: nn.Module**kwargs )

sınıf peft.tuners.glora.GloraLinear

< >

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

Yoğun bir ~torch.nn.Linear base_layer'ı saran GLoRA adaptörü.

  • GloraLayer, genel düşük rütbeli uyarlama için çekirdek mantıktır ve çoklu adaptörleri ile esnek yol yapılandırmalarını destekler.
  • GloraLinear, GLoRA desteğine sahip nn.Linear için doğrudan yer değiştirilebilir bir alternatiftir.
  • GLoRA şu anda düz torch.nn.Linear taban katmanlarını destekler.

Örnek Kullanım

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()

Notlar

  • GLoRA, LoRA'nın bir üst kümesidir: tüm yolları “lora” olarak ayarlamak standart LoRA'yı geri getirir.
  • Yeni uyarlama stratejilerini denemek için A/B/C/D/E için farklı yol türleri kullanabilirsiniz.
  • GLoRA, tüm standart PEFT adaptör yönetimi özelliklerini (ekleme, silme, değiştirme, birleştirme vb.) destekler.

Bkz.

Update on GitHub