PEFT documentation
RoAd
RoAd
RoAd, gizli boyut çiftlerine uygulanan küçük bir 2×2 döndürme matrisi (ve isteğe bağlı ölçekleme katsayıları) kümesini öğrenerek büyük dil modellerini uyarlayan parametre-verimli ince ayar tekniğidir. RoAd, eğitilebilir parametrelerin %0,1'inin altında kalmasıyla birlikte diğer PEFT yöntemlerine kıyasla rekabetçi veya üstün performans elde eder. LoRA'nın toplu düşük-rank güncellemelerinin aksine, RoAd'ın seyrek döndürmeleri basit eleman-bazlı işlemlere dönüştürülerek yeniden formüle edilir; bu da aynı batch içinde heterojen istekleri işlerken, yani birden fazla adaptörü eşzamanlı olarak sunarken, önemli ölçüde daha yüksek sunum verimliliği sağlar. Ayrıca RoAd, dağıtık bir değişim müdahale çerçevesine sorunsuz bir şekilde entegre olur ve seyrek 2B döndürmelerini, gizli temsillerin öğrenilmiş alt uzayları içinde görev-özel müdahaleler olarak yorumlar. Bu ortogonal alt uzaylar, çok dilli yetenekler veya talimat takibi gibi birden fazla görev-özel davranışın ek ince ayar olmadan birleştirilmesini sağlayarak LLM'lerde modüler ve yorumlanabilir uyarlamalara olanak tanır.
RoAd ile ince ayar, LoRA veya benzeri yöntemlere kıyasla genellikle daha yüksek bir öğrenme oranı gerektirir; bu oran yaklaşık 1e-3'tür. Şu anda RoAd yalnızca doğrusal katmanları destekler ve bitsandbytes ile kuantize edilmiş modellerde (4-bit veya 8-bit) kullanılabilir.
Aynı batch içinde farklı RoAd adaptörleriyle çıkarım (inference) çalıştırmak için Aynı batch içinde farklı LoRA adaptörleriyle çıkarım bölümüne bakın.
Karma performans değerlendirmesi genel bakış
API
RoadConfig
sınıf peft.RoadConfig
< 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 = Falsevariant: Union[str, RoadVariant] = 'road_1'group_size: int = 64init_weights: bool = Truetarget_modules: Optional[Union[list[str], str]] = Nonemodules_to_save: Optional[list[str]] = None )
Parametreler
- variant (Union[
RoadVariant,str]) — Kullanılacak Road modelinin varyantı. road_1, road_2 veya road_4 olabilir. Daha fazla ayrıntı için makaleye bakın.- road_1: Tüm öğe çiftleri için aynı ölçek ve açıyı kullanır. Bu varyant en düşük parametre sayısına sahiptir, RoAd'ın uygulandığı her katman için çıktı gizli boyutuna eşit sayıda parametre saklar.
- road_2: Her öğe için aynı ölçeği ve açıyı kullanır. Bu varyant, road_1 ile karşılaştırıldığında 2 kat daha fazla parametreye sahiptir.
- road_4: Her öğe için iki farklı ölçek ve açı kullanır. Bu varyant, road_1 ile karşılaştırıldığında 4 kat daha fazla parametreye sahiptir.
- group_size (
int) — Group size, rotasyon için 2B vektörler halinde gruplandırılan öğelerin sayısını tanımlar. Her grup içinde 0. öğe group_size/2 öğesiyle eşleştirilir, ardından 1. öğe group_size/2+1 öğesiyle ve böylece devam eder. Öğelerin sırasız olması nedeniyle bu, model performansını etkilemez; ancak örneğin VLLM kullanıldığında çıkış hızı üzerinde bazı etkileri vardır. En iyi hız için en az 32 veya 64 (varsayılan) group size değeri önerilir. Dikkat edin, model gizli boyutu (tensor paralelliği ile kullanıldığında bölge başına gizli boyut) group_size değerine bölünebilmelidir; bu nedenle çok küçük modellerde bu parametrenin azaltılması gerekebilir. - init_weights (
bool) — RoAd ağırlıklarının başlatılmasının yapılıp yapılmayacağı. - target_modules (
Optional[Union[List[str], str]]) — Uyarlamanın (adapter) uygulanacağı modüllerin adları. Bu parametre belirtilirse, yalnızca belirtilen adlara sahip modüller değiştirilir. Bir dize (string) geçirildiğinde, bir regex eşleşmesi yapılır. Dize listesi geçirildiğinde, tam bir eşleşme yapılır veya modül adının, geçirilen dizelerden herhangi biriyle sona erip ermediği kontrol edilir. Bu parametre ‘all-linear’ olarak belirtilirse, tüm linear/Conv1D modülleri seçilir (model bir PreTrainedModel ise, çıktı katmanı hariç tutulur). Bu parametre belirtilmezse, modüller model mimarisine göre seçilir. Mimari bilinmiyorsa bir hata oluşturulur — bu durumda, hedef modülleri manuel olarak belirtmelisiniz. - modules_to_save (
List[str]) — Son kontrol noktasında kaydedilecek ve eğitilebilir olarak ayarlanacak Road katmanları dışındaki modüllerin listesi.
Bu, bir RoadModel yapılandırmasını depolamak için kullanılan yapılandırma sınıfıdır. RoAd adaptörü https://huggingface.co/papers/2409.00119 adresinde önerilmiştir.
RoadModel
sınıf peft.RoadModel
< source >( modelpeft_config: Union[PeftConfig, dict[str, PeftConfig]]adapter_name: strlow_cpu_mem_usage: bool = Falsestate_dict: Optional[dict[str, torch.Tensor]] = None )