PEFT documentation
Llama-Adapter
Llama-Adapter

Llama-Adapter, Llama'yı talimat takibi yapabilen bir modele dönüştürmek için özel olarak tasarlanmış bir PEFT yöntemidir. Llama modeli dondurulur ve yalnızca girdi talimat jetonlarının başına eklenen bir dizi adaptasyon istemi öğrenilir. Modele rastgele başlatılmış modüllerin eklenmesi, modelin mevcut bilgilerinin bir kısmını kaybetmesine neden olabileceğinden, Llama-Adapter, talimat istemlerini modele kademeli olarak eklemek için sıfır başlatılmış dikkati ve sıfır kapılamayı kullanır.
Makalenin özeti şudur:
LLaMA-Adapter'ı sunuyoruz; bu, LLaMA'yı bir talimat takibi modeline verimli bir şekilde ince ayarlamak için hafif bir uyarlama yöntemidir. 52K self-instruct gösterimi kullanarak LLaMA-Adapter, dondurulmuş LLaMA 7B modeli üzerine yalnızca 1,2M öğrenilebilir parametre ekler ve 8 A100 GPU üzerinde ince ayar için bir saatten az bir maliyet gerektirir. Özellikle, bir dizi öğrenilebilir uyarlama istemini (adaption prompt) benimser ve bunları daha yüksek transformer katmanlarında girdi metin token'larının başına ekler. Ardından, sıfır kapılamalı (zero gating) sıfır başlatmalı (zero-init) bir dikkat mekanizması önerilir; bu mekanizma, yeni talimat ipuçlarını LLaMA'ya uyumlu bir şekilde enjekte ederken önceden eğitilmiş bilgisini etkili bir şekilde korur. Verimli eğitimle LLaMA-Adapter, tamamen ince ayarlanmış 7B parametrelere sahip Alpaca ile karşılaştırılabilir yüksek kaliteli yanıtlar üretir. Ayrıca, yaklaşmamız, örneğin görüntüler gibi çok modlu girdilere basitçe genişletilebilir; bu da ScienceQA'da üstün akıl yürütme kapasitesi elde eden görüntü koşullu LLaMA'yı sağlar. Kodumuzu https://github.com/ZrrSkywalker/LLaMA-Adapter adresinde yayınladık.
Karma performans değerlendirmesi genel bakış
API
AdaptionPromptConfig
sınıf peft.AdaptionPromptConfig
< 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: str = Noneadapter_len: int = Noneadapter_layers: int = None )
Bir AdaptionPromptModel yapılandırmasını depolar.
AdaptionPromptModel
https://huggingface.co/papers/2303.16199 makalesinde tanımlandığı gibi uyarlama istemlerini (adaption prompts) uygular.
En üstteki L dikkat modülleri, orijinallerini saran ancak sıfır başlatma için kapılı (gates) eğitilebilir istemler (prompts) ekleyen AdaptedAttention modülleriyle değiştirilir.
Çoklu adaptör deseni hakkında notlar:
- Farklı adaptörlerin durumlarını, adaptör adıyla indekslenen AdaptedAttention modüllerinin bir sözlüğünü tutarak saklarız.
- Her seferinde adaptörleri değiştirdiğimizde, modelden şu anda etkin olan adaptöre ait modülleri kaldırır, bunları sözlükte saklar ve yeni adaptöre ait modüllerle değiştiririz.
- Yinelenen ve potansiyel olarak tutarsız durumları önlemek için, şu anda etkin olan adaptör her zaman sözlükten kaldırılır.
- Eklentinin devre dışı bırakılması, modüllerin modelden kaldırılmasına da neden olur.
Verilen ad ve yapılandırmaya sahip bir adaptör ekleyin.
Verilen ada sahip bir adaptörü siler.
AdaptedAttention modüllerini değiştirerek adaptör katmanlarını devre dışı bırakın.
Önbelleğe alınmış AdaptedAttention modüllerini takas ederek adaptör katmanlarını etkinleştirin.
Modeli, verilen ada sahip adaptörü kullanacak şekilde ayarlayın.