PEFT documentation
Tensor Paralel LoRA Sunumunda İletişim Aşırı Yükünü Ortadan Kaldırmak İçin Blok-Çapraz LoRA
Tensor Paralel LoRA Sunumunda İletişim Aşırı Yükünü Ortadan Kaldırmak İçin Blok-Çapraz LoRA
Block-Diagonal LoRA (BD-LoRA), bazı LoRA faktörlerinin blok diyagonal olmasına kısıtlandığı bir LoRA varyantıdır. Bu, çoklu GPU üzerinde çıkarım (inference) çalıştırılırken iletişim maliyetlerini ortadan kaldırarak daha hızlı sunum (serving) sağlar. Blok diyagonal kısıta rağmen BD-LoRA, benzer parametre sayılarında standart LoRA ile benzer performans gösterir.
BD-LoRA, bir modelin ağırlıklarını birden fazla GPU arasında dağıtmayı ifade eden tensor paralelliği ile birlikte kullanılacak şekilde tasarlanmıştır. Popüler bir dağıtım stratejisi Megatron Sharding Strategy. Birbiri ardına gelen iki lineer katman $W_1$, için (örneğin bir transformer MLP modülündeki yukarı ve aşağı projeksiyonlar) ilk katmanı sütun paraleli (column-parallel) olarak dağıtırız (bunun için LoRA B'nin blok diyagonal olması gerekir) ve ikinci katmanı satır paraleli (row-parallel) olarak dağıtırız (bunun için LoRA A'nın blok diyagonal olması gerekir). Dikkat modülü için bu, Q, K ve V projeksiyonlarını birlikte olarak ve çıkış projeksiyonunu $W_2$ olarak alıp buna göre dağıtım yaparak benzer şekilde elde edilebilir. Bu dağıtım, uyumlu bir çıkarım motorunun her blok diyagonal parçayı farklı bir GPU'ya dağıtmasına olanak tanır ve GPU'lar arasında ara sonuçların iletilmesi ihtiyacını ortadan kaldırır. Aşağıdaki resimde tam dağıtım stratejisini ve bunun nasıl hesaplama çabasını azalttığını görebilirsiniz.
Makale: https://hf.co/papers/2510.23346

Performans, sıra ve parametre sayısı
BD-LoRA, aynı parametre sayısında LoRA ile benzer performans elde eder (aşağıdaki görseli veya peft deposunun kök dizinindeki method_comparison klasörünü inceleyebilirsiniz). Ancak BD-LoRA'daki diğer tüm faktörler blok diyagonal olduğundan, aynı rütbede bir BD-LoRA adaptörü, bir LoRA adaptörüne kıyasla daha az parametreye sahip olacaktır. BD-LoRA'nın performansı, rütbe buna göre artırıldığında ancak rekabetçi hale gelir. Rütbe eşleştirme için örnek kodu, bu örnek defterin sonunda sunuyoruz.

API
BdLoraConfig
sınıf peft.BdLoraConfig
< source >( target_modules_bd_a: Optional[list[str]] = Nonetarget_modules_bd_b: Optional[list[str]] = Nonenblocks: int = 1match_strict: bool = True )
Parametreler
- target_modules_bd_a —
LoRA-A'nın blok diyagonal olduğu modüller. Listedeki her deseni, modül adıyla
pattern is in target_nameüzerinden eşleştirir. Örnek: [‘up_proj’, ‘q_proj’, ‘v_proj’, ‘k_proj’] - target_modules_bd_b —
LoRA-B'nin blok diyagonal olduğu modüller. Listedeki her deseni, modül adıyla
pattern is in target_nameüzerinden eşleştirir. Örnek: [‘out_proj’, ‘down_proj’] - nblocks — Blok köşegenli matrislerdeki blok sayısı
- match_strict — true olarak ayarlanırsa, her target_module'ün ya blok-köşegen LoRA-A ya da LoRA-B içermesini zorunlu kılar ve aksi halde bir hata fırlatır. Modülünüzdeki bazı katmanlar BD-LoRA'dan faydalanmıyorsa, LoRA ve BD-LoRA eğitimini karıştırmak için bunu False olarak ayarlayabilirsiniz.
BD-LoRA (Block-Diagonal LoRA) için yapılandırma. BD-LoRA, çıkarım motorlarında verimli çoklu-LoRA sunumu için kullanılabilecek bir LoRA varyantıdır. Hızlanma, belirli LoRA modüllerinin blok-çapraz (block-diagonal) olarak ayarlanmasıyla GPU'lar arası iletişimin azaltılmasından kaynaklanır.
Hangi LoRA faktörlerinin blok diyagonal olarak ayarlanması gerektiğini belirlemek için şu yönergeleri izleyin:
- Dikkat için,
- LoRA-B blok diyagonal olacak şekilde Q,K,V projeksiyonları
- LoRA-A blok diyagonal olacak çıkış projeksiyonu
- MLP'ler için
- Up, Gate projeksiyonu LoRA-B blok-diyagonal olacak
- LoRA-A blok diyagonaline indirgenen aşağı yönlü projeksiyon
Diğer modüller ve/veya mimariler için, hedef çıkarım motorunuzun koduna bakın. Satır bazlı bölünmüş (row-sharded) modüllerde LoRA-A blok köşegen (block-diagonal) olmalı, sütun bazlı bölünmüş (column-sharded) modüllerde ise LoRA-B blok köşegen olmalıdır.