Adapter Tuning (Adapter Eğitimi)

Transformer katmanları arasına eklenen küçük darboğaz (bottleneck) modüllerini eğitip temel model ağırlıklarını donduran parametre-etkin ince ayar yöntemi.

Adapter tuning (adapter eğitimi), önceden eğitilmiş büyük dil ve görü modellerini yeni bir göreve uyarlarken modelin kendi ağırlıklarına hiç dokunmayan, bunun yerine transformer katmanlarının arasına eklenen küçük öğrenilebilir modülleri (adapter) eğiten parametre-etkin ince ayar (PEFT) yöntemidir. Yöntem 2019 yılında Google'dan Houlsby ve arkadaşlarının "Parameter-Efficient Transfer Learning for NLP" çalışmasıyla yaygınlaştı. Bu tasarımda her transformer bloğunun içine, çok başlı dikkat ve ileri besleme alt katmanlarının çıkışına, darboğaz (bottleneck) yapısında iki küçük ağ yerleştirilir. Adapter, gelen d boyutlu gizli vektörü çok daha küçük bir r boyutuna indirir, doğrusal olmayan bir aktivasyondan geçirir, tekrar d boyutuna çıkarır ve sonucu artık (residual) bağlantıyla girişe ekler. Başlangıçta kimlik dönüşümüne yakın davrandığı için eğitim, temel modelin davranışını bozmadan başlar. Eğitim sırasında yalnızca adapter parametreleri ile katman normalizasyonu gibi birkaç küçük bileşen güncellenir; geri kalan yüz milyonlarca ya da milyarlarca ağırlık dondurulur. Houlsby ve ekibi BERT-large ile GLUE deneylerinde, görev başına yalnızca yüzde 3,6 ek parametreyle tam ince ayarın 0,4 puan yakınına ulaştıklarını raporladı. Darboğaz boyutu küçüldükçe bu oran yüzde birin altına iner. Adapter'ların asıl gücü modülerliktir. Her görev için ayrı bir adapter dosyası eğitilir, aynı temel model üzerinde onlarca adapter yan yana saklanır ve çıkarım anında istenen adapter yüklenir. Bu yapı, tek bir model kopyasıyla çok görevli servis kurmayı, hassas görev verisini temel modele işlemeden paylaşmayı ve yeni görev eklerken eski görevlerde felaket unutma yaşamamayı mümkün kılar. AdapterHub platformu, adapters kütüphanesi, MAD-X ve AdapterFusion gibi uzantılarla birlikte çok dilli transfer ve görevler arası bilgi birleştirme için hazır bir ekosistem sunar. LoRA ile karşılaştırıldığında adapter, ağırlık matrislerine düşük rankli bir güncelleme eklemek yerine katman sırasına yeni bir blok sokar; bu nedenle çıkarımda küçük ama ölçülebilir bir gecikme payı vardır ve ağırlıklarla birleştirilemez. Buna karşılık adapter'lar tak-çıkar biçimde bir araya getirilebilir, üst üste istiflenebilir ve dil ile görev bilgisini ayrı modüllerde tutabilir. Gecikmenin kritik olduğu servislerde LoRA, modülerliğin ve paylaşımın öne çıktığı senaryolarda ise adapter tuning daha uygun bir tercihtir.

tune Adapter Tuning Nedir?

Adapter tuning, transformer katmanlarının arasına eklenen küçük sinir ağı modülleri (adapter) üzerinden büyük dil ve görü modellerini göreve uyarlayan parametre-etkin ince ayar (PEFT) yöntemidir. 2019 yılında Houlsby ve ekibinin önerdiği özgün tasarımda her transformer bloğunda iki adapter bulunur: biri çok başlı dikkat alt katmanının, diğeri ileri besleme alt katmanının çıkışına yerleştirilir. Adapter, girdiyi dar bir boyuta indirir, doğrusal olmayan bir dönüşüm uygular, tekrar genişletir ve sonucu artık bağlantıyla girişe ekler. Temel modelin ağırlıkları dondurulduğu için yalnızca adapter parametreleri ile katman normalizasyonu ağırlıkları öğrenilir. Böylece bir görev için gereken yeni parametre miktarı temel modelin küçük bir yüzdesinde kalır; her görev kendi adapter dosyasını taşır ve aynı model kopyası üzerinde istenen adapter anında yüklenip değiştirilebilir.

architecture Çalışma Prensibi: Bottleneck Mimarisi

Adapter modülü üç bileşenden oluşur. Aşağı projeksiyon (down-projection), d boyutlu gizli vektörü çok daha küçük bir r boyutuna indirir; tipik r değerleri 8 ile 256 arasında değişir ve BERT-base için d=768'dir. Ardından GELU ya da ReLU gibi doğrusal olmayan bir aktivasyon uygulanır. Yukarı projeksiyon (up-projection) vektörü yeniden d boyutuna çıkarır ve artık bağlantı orijinal girişi çıkışa toplar. Yukarı projeksiyon sıfıra yakın başlatıldığı için adapter eğitimin başında kimlik dönüşümü gibi davranır; bu başlatma, önceden öğrenilmiş temsillerin ilk adımlarda bozulmasını engeller. Parametre sayısı yaklaşık 2 x d x r artı önyargı terimleridir; d=768 ve r=64 için tek bir adapter modülü yaklaşık 99 bin parametre içerir. Gradyanlar yalnızca adapter parametreleri için hesaplandığından optimizer durumu ve bellek tüketimi tam ince ayara göre belirgin ölçüde küçülür; ancak ileri ve geri geçiş dondurulmuş katmanlardan da geçtiği için hesaplama tamamen ortadan kalkmaz.

compare_arrows PEFT Yöntemleriyle Karşılaştırma

  • check_circle Adapter vs LoRA: LoRA, dikkat ve ileri besleme ağırlık matrislerine düşük rankli bir güncelleme ekler ve eğitim bitince bu güncelleme ana ağırlıklara birleştirilebilir; çıkarımda ek gecikme kalmaz. Adapter ise katman sırasına doğrusal olmayan yeni bir blok sokar; birleştirilemez ve küçük bir gecikme payı taşır, buna karşılık istifleme ve birleştirme (fusion) için daha esnektir.
  • check_circle Adapter vs Prefix-Tuning: Prefix-tuning her katmanın dikkat mekanizmasına öğrenilmiş sanal anahtar ve değer vektörleri ekler; bağlam penceresinin bir kısmını tüketir. Adapter, dizi uzunluğunu değiştirmeden katman çıkışını dönüştürür ve genellikle daha kararlı eğitilir.
  • check_circle Adapter vs Prompt Tuning: Prompt tuning yalnızca giriş gömme katmanına öğrenilebilir token'lar ekler ve küçük modellerde tam ince ayarın gerisinde kalır. Adapter her katmanda müdahale ettiği için daha güçlü bir uyarlama kapasitesi sunar; parametre sayısı da buna paralel olarak daha yüksektir.
  • check_circle Adapter vs Tam İnce Ayar: Tam ince ayar tüm parametreleri günceller ve her görev için modelin tam bir kopyasını saklamayı gerektirir. Adapter, görev başına yüzde birkaç parametreyle benzer doğruluğa ulaşır; depolama, dağıtım ve görevler arası geçiş maliyeti büyük ölçüde düşer.

Adapter Ekosistemi ve Türevleri

hub AdapterHub

Pfeiffer ve ekibinin 2020'de kurduğu platform; topluluk tarafından eğitilmiş yüzlerce görev ve dil adapter'ını paylaşır. Resmi kütüphanesi adapters (eski adıyla adapter-transformers), Hugging Face modelleriyle uyumlu çalışır.

merge AdapterFusion

Birden fazla görev adapter'ını dondurup üzerlerine öğrenilebilir bir dikkat katmanı ekleyerek görevler arası bilgi aktarımı yapan yöntem. Çok görevli öğrenmede tek tek adapter'lardan daha iyi sonuç verir.

translate MAD-X

Dil adapter'ı ile görev adapter'ını ayrı modüllerde tutan çok dilli çerçeve. Hedef dilde etiketli veri olmadan, yalnızca dil adapter'ını değiştirerek sıfır-atış transfer yapılabilir.

compress Compacter ve paralel adapter

Compacter, Kronecker çarpımı ve paylaşılan ağırlıklarla parametre sayısını daha da düşürür. Paralel adapter, modülü katmanın ardına değil yanına yerleştirir; He ve ekibinin 2022 çalışması bu yerleşimin sıralı adapter'dan daha iyi çalışabildiğini gösterdi.

speed AdapterDrop

Rücklé ve ekibinin çıkarım gecikmesini azaltmak için alt katmanlardaki adapter'ları eğitim ve çıkarım sırasında atlayan yöntemi; birden fazla adapter'ın aynı anda servis edildiği senaryolarda hız kazandırır.

work Kullanım Senaryoları

  • check_circle Çok görevli servis: Tek temel model kopyası üzerinde sınıflandırma, çıkarım, çeviri ya da özetleme gibi farklı görevler için ayrı adapter'lar servis edilir; bellek tek model kadar tutulur.
  • check_circle Veri gizliliği ve paylaşım: Adapter dosyaları megabaytlar mertebesindedir ve temel modelden bağımsız paylaşılabilir; hassas görev verisi temel modele işlenmez, yalnızca küçük modül aktarılır.
  • check_circle Sürekli öğrenme: Yeni görev geldiğinde yeni bir adapter eğitilir, eski adapter'lar ve temel model değişmez; böylece eski görevlerde felaket unutma (catastrophic forgetting) yaşanmaz.
  • check_circle Çok dilli ve düşük kaynaklı diller: MAD-X yaklaşımıyla dil adapter'ı ve görev adapter'ı birleştirilir; Türkçe gibi görece az etiketli veriye sahip dillerde, İngilizce eğitilmiş görev adapter'ı dil adapter'ıyla eşlenerek transfer yapılır.

settings Eğitim ve Servis Pratikleri

Adapter eğitirken darboğaz boyutu r ilk ayarlanacak hiperparametredir: küçük r depolamayı düşürür, büyük r kapasiteyi artırır; çoğu görev için 16 ile 64 arası bir başlangıç uygundur. Öğrenme oranı tam ince ayara göre daha yüksek tutulur, çünkü yalnızca küçük bir modül güncellenir; 1e-4 civarı yaygın bir başlangıç noktasıdır. Her katmana adapter koymak zorunlu değildir; Pfeiffer konfigürasyonu yalnızca ileri besleme çıkışına tek adapter yerleştirerek benzer doğruluğu daha az parametreyle yakalar. Serviste adapter'lar temel modelden ayrı dosyalar olarak tutulur ve isteğe göre yüklenir; birden fazla adapter aynı anda bellekte kalabilir. Gecikmeye hassas uygulamalarda alt katmanlardaki adapter'ları atlamak ya da paralel yerleşim seçmek ölçülebilir kazanç getirir. Eğitim öncesi temel modelin dondurulduğunu, yalnızca adapter ve normalizasyon parametrelerinin requires_grad aldığını kontrol etmek en sık atlanan adımdır.

help Sık Sorulan Sorular

  • check_circle Adapter mı LoRA mı seçmeliyim? Gecikme kritikse ve tek görev servis ediyorsanız LoRA daha uygundur; eğitim sonrası ağırlıklara birleştirilir ve ek maliyet bırakmaz. Birden fazla görevi tak-çıkar biçimde yönetmek, adapter'ları birleştirmek ya da dil ve görev bilgisini ayırmak istiyorsanız adapter tuning öne çıkar.
  • check_circle Adapter kaç parametre ekler? Tek bir modül için yaklaşık 2 x d x r; BERT-base (d=768) ve r=64 için modül başına yaklaşık 99 bin, Houlsby konfigürasyonunda katman başına iki modülle 12 katmanda toplam yaklaşık 2,4 milyon parametre, yani temel modelin yaklaşık yüzde ikisi.
  • check_circle Adapter'lar çıkarım hızını etkiler mi? Evet, küçük bir oranda. Sıralı yerleşimde her katmanda ek bir matris çarpımı çifti çalışır; ölçümlerde bu pay genellikle yüzde birkaç düzeyinde kalır. AdapterDrop ile alt katmanlar atlanarak ya da paralel yerleşimle bu maliyet daha da azaltılabilir.
  • check_circle AdapterHub nasıl kullanılır? adapters kütüphanesi kurulduktan sonra bir Hugging Face modeli yüklenir, model.load_adapter() ile hazır adapter çekilir ve model.set_active_adapters() ile etkinleştirilir. Kendi adapter'ınızı eğitmek için model.add_adapter() ve model.train_adapter() çağrıları yeterlidir.
  • check_circle Türkçe modeller için adapter eğitmek mümkün mü? Evet. BERTurk, mBERT, XLM-R ya da Llama ve Qwen tabanlı Türkçe modellere adapter eklenebilir; MAD-X ile Türkçe dil adapter'ı eğitip İngilizce görev adapter'ıyla birleştirmek, etiketli Türkçe veri azken de işe yarar.