PEFT documentation
GLoRA
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-rdü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:
her yol bağımsız olarak parametrelenir.
GloraConfig
sınıf peft.GloraConfig
< 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 = 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ırmaloraolarak 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çinloradesteklenmez. 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çimlerindeXd @ 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.outparametre 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.Falseise, kaiming başlatması kullanılır.
Notlar:
config_D_E,"lora"desteklemez.- Desteklenen model türleri için
target_modulesatlanabilir (PEFT varsayılan eşlemeleri kullanılır).
GloraModel
sınıf peft.GloraModel
< source >( 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_unloadve ilgili yöntemleri kullanın.
GloraLayer ve GloraLinear
sınıf peft.tuners.glora.GloraLinear
< source >( 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 sahipnn.Lineariçin doğrudan yer değiştirilebilir bir alternatiftir.- GLoRA şu anda düz
torch.nn.Lineartaban 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.