PEFT documentation

FRoD: Dönel Dereceler ile Tam Sıralı Verimli İnce Ayar

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

FRoD: Dönel Dereceler ile Tam Sıralı Verimli İnce Ayar

FRoD, paylaşılan tam-rank bir taban ile seyreltilmiş öğrenilebilir rotasyonel dereceleri birleştiren parametre-verimli bir ince ayar yöntemidir. Adaptör güncellemesi, sabit projeksiyon tensörleri ve eğitilebilir katsayılar aracılığıyla ifade edilir; bu da FRoD'ün eğitilen parametre sayısını düşük tutarken tam-rank güncellemeler uygulamasına olanak tanır.

Makale: Full-Rank Efficient Fine-Tuning with Rotational Degrees.

Adaptör parametrelerini kaydetirken, FrodConfig üzerinde save_projection=False olarak ayarlayarak projeksiyon tensörlerini depolamaktan kaçınılabilir. Bu durumda, projeksiyonlar temel model ağırlıklarından ve projection_prng_key içindeki sabit rastgele tohumdan geri yüklenir. Bu, kontrol noktası boyutunu azaltır ancak kontrol noktası yükleme işleminin yeniden üretim detaylarından bağımsız olması için varsayılan değer save_projection=True'dür.

LoRA'ya kıyasla FRoD, yalnızca köşegen katsayılarını ve seyrek bir köşegen dışı rotasyon katsayıları kümesini eğiterek, uyarlanan her doğrusal katmanda tam sıralı bir güncelleme ifade edebilir. Bu, düşük sıralı bir güncellemenin çok kısıtlayıcı olduğu durumlarda faydalı olabilir. Bunun bedeli, FRoD'ün adaptör enjeksiyonu sırasında temel ağırlıklardan sabit projeksiyon tensörlerini hesaplamasıdır; bu da kurulumu daha maliyetli hale getirir ve uygulamanın LoRA'ya kıyasla daha az yaygın desteklenmesine yol açar.

Büyük modellerde, FRoD adaptörleri enjekte etmeden önce hedef modül kategorileri üzerinde matris ayrıştırmaları çalıştırdığı için projeksiyon başlatma işlemi yavaş olabilir. Varsayılan olarak bir ilerleme çubuğu gösterilir ve FrodConfig(progressbar=False) ile devre dışı bırakılabilir.

Bellek kısıtlı eğitim için, runtime_offload_base_weight=True parametresi, aktif FRoD yolunun bunlara ihtiyaç duymadığı durumlarda hedef temel ağırlıkları CPU'da tutar. Bu, PEFT yöntemlerinin genellikle modeli taşıdıktan ve ileri geçişleri gerçekleştirdikten sonra tüm temel parametreleri hızlandırıcıda tuttuğu için isteğe bağlıdır.

FRoD şu anda aşağıdaki kısıta sahiptir:

  • Yalnızca nn.Linear ve transformers.pytorch_utils.Conv1D katmanları desteklenir.

Hızlı Başlangıç

from transformers import AutoModelForSequenceClassification

from peft import FrodConfig, TaskType, get_peft_model

model = AutoModelForSequenceClassification.from_pretrained("google-bert/bert-base-uncased", num_labels=2)

peft_config = FrodConfig(
    task_type=TaskType.SEQ_CLS,
    target_modules=["query", "value"],
    modules_to_save=["classifier"],
    sparse_rate=0.02,
    frod_dropout=0.0,
    runtime_offload_base_weight=True,
)

model = get_peft_model(model, peft_config)
model.print_healthcheck()

FrodConfig

sınıf peft.FrodConfig

< >

( 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: Optional[Union[list[str], str]] = Noneprojection_prng_key: int = 0save_projection: bool = Truefrod_dropout: float = 0.0fan_in_fan_out: bool = Falsebias: str = 'none'modules_to_save: Optional[list[str]] = Noneinit_weights: bool = Truelayers_to_transform: Optional[Union[list[int], int]] = Nonelayers_pattern: Optional[Union[list[str], str]] = Nonesparse_rate: float = 0.01regularization_alpha: float = 0.001progressbar: bool = Trueruntime_offload_base_weight: bool = False )

Parametreler

  • target_modules (Union[List[str], str]) — FRoD'nin uygulanacağı modüllerin adları. Yalnızca lineer katmanlar desteklenir.
  • projection_prng_key (int) — Seyrek FRoD COO desenini başlatırken kullanılan rastgele tohum.
  • save_projection (bool) — State dict içinde FRoD projeksiyon tensörlerinin kaydedilip kaydedilmeyeceğini belirtir. Bu, checkpoint boyutunu artırır ancak adapter yeniden yükleme işleminin yerel önbellek yeniden oluşturulmasından bağımsız olmasını sağlar. Varsayılan değer True'dir.
  • frod_dropout (float) — FRoD katmanları için dropout olasılığı.
  • 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 saklayan Conv1D kullanır ve bu nedenle bu değer True olarak ayarlanmalıdır.
  • bias (str) — FRoD için sapma türü. ‘none’, ‘all’ veya ‘frod_only’ olabilir. ‘all’ veya ‘frod_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 (List[str]) — Son kontrol noktasında kaydedilecek ve eğitilebilir olarak ayarlanacak, FRoD katmanlarından ayrı modüllerin listesi.
  • init_weights (bool) — FRoD 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, FRoD dönüşümleri bu listede belirtilen katman indekslerine uygulanır. Tek bir tamsayı geçirilirse, FRoD dönüşümleri bu indeksteki katmana uygulanır.
  • layers_pattern (Optional[Union[List[str], str]]) — Katman desen adı, yalnızca layers_to_transform None'den farklıysa kullanılır. Bu, genellikle 'layers' veya 'h' olarak adlandırılan modelin nn.ModuleList'ini hedeflemelidir.
  • sparse_rate (float) — Seyrek eğitilebilir rotasyon matrisindeki çapraz olmayan girdilerin oranı. Daha yüksek değerler kapasiteyi ve eğitilebilir parametre sayısını artırır; daha düşük değerler daha az maliyetlidir. Varsayılan değer 0.01'dir.
  • regularization_alpha (float) — Taban ağırlıklardan ortak taban oluşturulurken kullanılan küçük pozitif değer. Aynı kategorideki katmanların korele ağırlıkları olması durumunda matris tersini kararlı hale getirir. Varsayılan değeri 1e-3'tür.
  • progressbar (bool) — FRoD projeksiyonları oluşturulurken bir ilerleme çubuğu gösterilip gösterilmeyeceğini belirtir. Hedef modül kategorileri üzerinde matris ayrıştırmaları çalıştırıldığı için büyük modellerde projeksiyon başlatma işlemi yavaş olabilir. Varsayılan değer True'dur.
  • runtime_offload_base_weight (bool) — Aktif FRoD yolunun bunlara ihtiyacı olmadığında hedef temel ağırlıkların CPU'da tutulup tutulmayacağı. FRoD, uyarlanmış ağırlığı doğrudan yeniden oluşturduğundan bu, GPU belleğini azaltabilir; ancak modelin taşınmasından veya ileri çalıştırma (forward) işleminin ardından tüm temel parametrelerin hızlandırıcıda (accelerator) kalması gerektiğine dair standart PEFT sözleşmesini değiştirir. Varsayılan değer False'dir.

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

Makale: https://doi.org/10.1609/aaai.v40i31.39813.

FrodModel

sınıf peft.FrodModel

< >

( 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