PEFT documentation
GraLoRA
GraLoRA
Granular Low-Rank Adaptation (GraLoRA), kuantizasyondaki bilinen sorunlardan elde edilen içgörülere dayanarak, düşük rütbeli uyarlamanın ifade yeteneğini artırırken aykırı değerlere karşı dayanıklılığı geliştirmek üzere tasarlanmış bir PEFT yöntemidir.

Standart LoRA'nın tüm özellik alanına tek bir düşük rütbeli adaptör uygulamasının aksine, GraLoRA yapılandırılmış ve ince taneli bir uyarlama şeması sunar. Uyarlama alanını bir ızgaraya böler daha küçük, bağımsız adaptör çiftleri, her biri girdi ve çıktı boyutlarının yerelleştirilmiş bir alt kümesinden sorumludur. Sonuç olarak, her adaptör, orijinal LoRA adaptörüne kıyasla her iki boyutta da kat daha küçük bir alt uzayda çalışır.
Bu ince taneli ayrıştırma, uzamsal olarak yerelleştirilmiş ve bağlama duyarlı güncellemeleri mümkün kılarak ek parametre veya hesaplama maliyeti olmadan temsil kapasitesini etkili bir şekilde artırır. GraLoRA, aşırı aktivasyonların etkisini daha küçük alt uzaylarda izole ederek adaptasyon sırasında gradyan bozulmasını azaltır ve kanal arası dengeyi korur.
Makalenin özeti şudur:
Düşük Sıralı Uyarlaması (LoRA), üretken modellerin parametre verimli ince ayar (PEFT) işlemi için popüler bir yöntemdir; sadeliği ve etkinliği nedeniyle değer görür. Son zamanlardaki iyileştirmelere rağmen LoRA, darboğaz genişletildiğinde aşırı öğrenme (overfitting) sorunu gibi temel bir kısıtlamadan muzdarip olmaya devam etmektedir. En iyi performansını 32–64 sıralarında gösterse de, daha yüksek sıralarda doğruluğu duraksar veya düşer ve tam ince ayar (FFT) performansının hâlâ gerisinde kalır. Temel nedeni, LoRA’nın yapısal darboğazı olarak belirledik; bu darboğaz, ilgili olmayan giriş kanallarına gradyan iç içe geçmesine (gradient entanglement) neden olarak gradyan yayılımını bozmaktadır. Bu sorunu çözmek için, ağırlık matrislerini alt bloklara bölen ve her birinin kendi düşük sıralı adaptörüne sahip olduğu yeni bir yapı olan Granüler Düşük Sıralı Uyarlaması (GraLoRA)’nı sunuyoruz. İhmal edilebilir hesaplama veya depolama maliyetiyle GraLoRA, LoRA’nın kısıtlamalarını aşarak temsil kapasitesini etkin biçimde artırır ve FFT davranışına daha yakın bir yaklaşım sağlar. Kod üretimi, ortak duygu çıkarımı, matematiksel çıkarım, genel dil anlama ve görüntü üretimi kriterlerinde yapılan deneyler, GraLoRA’nın tutarlı bir şekilde LoRA ve diğer baz çizgilerden üstün performans gösterdiğini ve HumanEval+ üzerinde Pass@1’de +8,5%’e varan mutlak kazanç elde ettiğini göstermektedir. Bu iyileştirmeler, model boyutları ve sıralama ayarları arasında geçerliliğini koruduğundan GraLoRA, PEFT için ölçeklenebilir ve sağlam bir çözüm olmaktadır.
Karma performans değerlendirmesi genel bakış
API
GraloraConfig
sınıf peft.GraloraConfig
< 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 = Falser: int = 32hybrid_r: int = 0target_modules: list[str] | str | None = Nonealpha: int = 64gralora_dropout: float = 0.0gralora_k: int = 2fan_in_fan_out: bool = Falsebias: str = 'none'modules_to_save: list[str] | None = Noneinit_weights: bool = Truelayers_to_transform: list[int] | int | None = Nonelayers_pattern: str | None = None )
Parametreler
- r (
int) — GraLoRA dikkat boyutu, GraLoRA adaptörünün rütbesini belirler. GraLoRA adaptörünün toplam parametre sayısı, aynı rütbe r'ye sahip LoRA ile aynıdır, ancak ifade gücü gralora_k ile çarpılır. - hybrid_r (
int) — Hybrid GraLoRA rank, Hybrid GraLoRA yöntemi kullanıldığında vanilla LoRA yöntemine ayrılan rank'ı belirler. GraLoRA ve vanilla LoRA'nın birleşimi olan Hybrid GraLoRA, hybrid_r > 0 olduğunda kullanılabilir hale gelir. GraLoRA adaptörünün parametre sayısı r + hybrid_r'dir. - target_modules (
Union[List[str], str]) — GraLoRA ile değiştirilecek modül adlarının listesi veya modül adlarının regex ifadesi. Örneğin, [‘q’, ‘v’] veya ‘.decoder.(SelfAttention|EncDecAttention).*(q|v)$‘. Bu, ayrıca tüm lineer/Conv1D katmanlarını (model bir PreTrainedModel ise, çıktı katmanı hariç) eşleştiren ‘all-linear’ joker karakteri de olabilir. Belirtilmezse, modüller model mimarisine göre seçilir. Mimari bilinmiyorsa bir hata oluşturulur — bu durumda hedef modülleri manuel olarak belirtmelisiniz. - alpha (
int) — GraLoRA alfası. GraLoRA alfası, GraLoRA adaptörü için ölçekleme katsayısıdır. Ölçek, alpha / (r + hybrid_r) olur. - gralora_dropout (
float) — GraLoRA dropout, GraLoRA adaptörü için dropout olasılığıdır. Aşırı öğrenmeyi önlemek ve GraLoRA adaptörünün genelleme performansını artırmak için kullanılır. - gralora_k (
int) — GraLoRA k, GraLoRA adaptöründeki alt blok sayısını belirler. GraLoRA adaptörünün geçerli olması için r derecesinin gralora_k'ya bölünebilir olması gerekir. Toplam parametre sayısı, gralora_k'den bağımsız olarak korunur. GraLoRA adaptörünün tüm derecesi gralora_k kadar artırılırken, her bir alt bloğun derecesi gralora_k kadar azaltılır. Derece 32 veya daha düşükse gralora_k=2, derece 64 veya daha yüksekse gralora_k=4 önerilir. - fan_in_fan_out (
bool) — Değiştirilecek katman ağırlıkları (fan_in, fan_out) biçiminde saklıyorsa bunu True olarak ayarlayın. Örneğin, gpt-2 ağırlıkları (fan_in, fan_out) biçiminde saklayanConv1Dkullanır ve bu nedenle bu değerTrueolarak ayarlanmalıdır. - bias (
str) — gralora için sapma türü. ‘none’, ‘all’ veya ‘gralora_only’ olabilir. ‘all’ veya ‘gralora_only’ seçilirse, ilgili sapmalar eğitim sırasında güncellenir. Bu, adaptörler devre dışı bırakılsa bile, modelin adaptasyon olmadan temel modelin üreteceğiyle aynı çıktıyı üretmeyeceği anlamına gelir. - modules_to_save (
Optional[list[str]]) — gralora katmanları dışında, eğitilebilir olarak ayarlanacak ve nihai checkpoint'te kaydedilecek modüllerin listesi. Örneğin, Sınıflandırma (Sequence Classification) veya Token Sınıflandırma görevlerinde, son katman olanclassifier/scorerastgele başlatıldığı için eğitilebilir olmalı ve kaydedilmelidir. - init_weights (
bool) — GraLoRA katmanlarının ağırlıklarının varsayılan başlatma yöntemiyle başlatılıp başlatılmayacağını belirtir. Bu ayarı, ne yaptığınızı tam olarak biliyorsanız değiştirin. - layers_to_transform (
Union[List[int], int]) — Dönüştürülecek katman indeksleri. Bu argüman belirtilirse, PEFT yalnızca bu listede belirtilen katman indekslerini dönüştürür. Tek bir tamsayı geçirilirse, PEFT yalnızca bu indeksteki katmanı dönüştürür. Bu, yalnızca target_modules bir str listesi olduğunda çalışır. - layers_pattern (
Optional[Union[List[str], str]]) — Katman desen adı, yalnızcalayers_to_transformNone'den farklıysa ve katman deseni ortak katman desenlerinde yer almıyorsa kullanılır. Bu, yalnızca target_modules bir str listesi olduğunda çalışır. Bu, genellikle'layers'veya'h'olarak adlandırılan modelinnn.ModuleListhedeflenmelidir.
Bu, bir GraloraModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır.
GraloraModel
sınıf peft.GraloraModel
< source >( modelpeft_config: Union[PeftConfig, dict[str, PeftConfig]]adapter_name: strlow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None ) → torch.nn.Module
Parametreler
- model (PreTrainedModel) — Uyarlanacak model.
- config (GraloraConfig) — Gralora modelinin yapılandırması.
- adapter_name (
str) — Adaptörün adı, varsayılan olarak"default"'tır.
Dönüş değeri
torch.nn.Module
Gralora modeli.
Önceden eğitilmiş bir transformers modelinden Vektör tabanlı Rastgele Matris Adaptasyonu (Gralora) modeli oluşturur.
Örnek:
>>> from transformers import AutoModelForCausalLM
>>> from peft import GraloraConfig, get_peft_model
>>> base_model = AutoModelForCausalLM.from_pretrained("facebook/opt-125m")
>>> config = GraloraConfig(r=128)
>>> model = get_peft_model(base_model, config)Öznitelikler:
- model (PreTrainedModel) — Uyarlanacak model.
- peft_config (GraloraConfig): Gralora modelinin yapılandırması.