PEFT documentation
FRoD: Dönel Dereceler ile Tam Sıralı Verimli İnce Ayar
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.Linearvetransformers.pytorch_utils.Conv1Dkatmanları 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
< 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: 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ğerTrue'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 saklayanConv1Dkullanır ve bu nedenle bu değerTrueolarak 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ızcalayers_to_transformNone'den farklıysa kullanılır. Bu, genellikle'layers'veya'h'olarak adlandırılan modelinnn.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ğer0.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ğeri1e-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ğerTrue'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ğerFalse'dir.
Bu, bir FrodModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır.
FrodModel
sınıf peft.FrodModel
< source >( modelpeft_config: Union[PeftConfig, dict[str, PeftConfig]]adapter_name: strlow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )