Sentence Transformers ile Çoklu Ortam Gövdeleme ve Yeniden Sıralama Modelleri Nasıl Eğitilir?
Bu yazı, Sentence Transformers kütüphanesi kullanılarak metin ve görüntü gibi çoklu ortam verilerini birleştiren gövdeleme (embedding) ve yeniden sıralama (reranker) modellerinin nasıl eğitileceğini ve ince ayar yapılacağını adım adım anlatıyor. Görsel belge erişimi (Visual Document Retrieval) örneği üzerinden, genel amaçlı bir modelin belirli bir görevde nasıl önemli ölçüde iyileştirilebileceği gösteriliyor.
Çoklu Ortam Gövdeleme Modellerine Giriş
Büyük dil modelleri (LLM) ve görsel modeller gibi farklı veri türlerini birleştiren çoklu ortam (multimodal) gövdeleme (embedding) modelleri, metin ve görüntü gibi farklı modaliteleri aynı vektör uzayında temsil edebilir. Sentence Transformers kütüphanesi, bu tür modellerin eğitimi ve ince ayarı için kapsamlı bir altyapı sunar. Bu yazıda, özellikle görsel belge erişimi (Visual Document Retrieval - VDR) görevi üzerinde duruluyor: bir metin sorgusuna en uygun belge sayfasını (görsel olarak) bulma. Genel amaçlı modeller (örneğin Qwen/Qwen3-VL-Embedding-2B) çok çeşitli görevlerde iyi performans gösterse de, belirli bir alana özgü ince ayar yapıldığında çok daha başarılı olabilir. Yazıdaki deneyde, ince ayar sonrası NDCG@10 değeri 0.888'den 0.947'ye yükselmiş ve 4 kata kadar daha büyük modelleri geride bırakmıştır.
Eğitim Bileşenleri
Çoklu ortam gövdeleme modeli eğitimi, metin tabanlı eğitimle aynı temel bileşenleri içerir:
- Model: Eğitilecek veya ince ayar yapılacak çoklu ortam modeli.
- Veri Kümesi (Dataset): Eğitim ve değerlendirme için kullanılan veri.
- Kayıp Fonksiyonu (Loss Function): Model performansını ölçen ve optimizasyonu yönlendiren fonksiyon.
- Eğitim Argümanları (Training Arguments): Eğitim performansını ve izlemeyi etkileyen parametreler.
- Değerlendirici (Evaluator): Eğitim öncesi, sırası ve sonrasında modeli değerlendiren araç.
- Eğitici (Trainer): Model, veri kümesi, kayıp fonksiyonu ve diğer bileşenleri bir araya getiren ana sınıf.
Sentence Transformers, metin ve görüntü gibi farklı modaliteleri işlemek için `Transformer` modülünü kullanır. Model yüklenirken `processor_kwargs` ile görüntü çözünürlüğü gibi ön işleme parametreleri, `model_kwargs` ile ise hassasiyet (precision) ve dikkat mekanizması (attention implementation) gibi model ayarları yapılabilir.
Veri Kümesi ve Kayıp Fonksiyonu
Eğitim için kullanılan veri kümesi, sorgu (query), olumlu görüntü (positive) ve zorlu olumsuz (hard negative) örneklerden oluşan üçlüler halinde düzenlenir. Örnekte, `tomaarsen/llamaindex-vdr-en-train-preprocessed` veri kümesi kullanılmıştır. Bu veri kümesi, İngilizce 53.512 örnek içerir ve her örnekte bir sorgu, bir olumlu görüntü ve dört zorlu olumsuzdan biri bulunur. Eğitimde sadece bir olumsuz kullanılırken, değerlendirmede dört olumsuzun tamamı korunur.
Kayıp fonksiyonu olarak CachedMultipleNegativesRankingLoss tercih edilmiştir. Bu kayıp, her sorgunun olumlu örneğe benzerliğini artırırken, olumsuz örneklere benzerliğini azaltır. Ayrıca, aynı gruptaki (batch) diğer örnekler de olumsuz olarak kullanılır (in-batch negatives). Büyük modellerde bellek sorunlarını önlemek için `mini_batch_size=1` parametresiyle önbelleğe alınmış gradyan (gradient caching) kullanılır. Bunun yanında, MatryoshkaLoss ile model, farklı boyutlardaki gövdelemelerde (embedding) iyi performans gösterecek şekilde eğitilir. Bu sayede, dağıtım sırasında daha küçük boyutlu gövdelemeler kullanılarak hız kazanılabilir.
Eğitim ve Değerlendirme
Eğitim için `SentenceTransformerTrainer` sınıfı kullanılır. Eğitim argümanları arasında `bf16=True` (bfloat16 hassasiyeti), `per_device_train_batch_size=64`, `learning_rate=2e-5` ve `warmup_ratio=0.1` gibi parametreler bulunur. Değerlendirme için `InformationRetrievalEvaluator` kullanılır; bu değerlendirici, metin sorgularını alır, görüntülerden oluşan bir derlem (corpus) içinde arama yapar ve NDCG@10, MAP gibi metrikleri hesaplar.
Eğitim süreci, metin tabanlı eğitimle neredeyse aynıdır. Tek farklar: model yüklenirken görüntü işleme parametrelerinin eklenmesi, kayıp fonksiyonunda `mini_batch_size` ayarı ve değerlendiricide görüntülerin kullanılmasıdır. Eğitim sonucunda, ince ayar yapılmış model (tomaarsen/Qwen3-VL-Embedding-2B-vdr) 0.947 NDCG@10 değerine ulaşarak hem taban modeli hem de 8B parametreli Qwen3-VL-Embedding gibi daha büyük modelleri geride bırakmıştır.
Çoklu Ortam Yeniden Sıralama (Reranker) Modelleri
Sentence Transformers, çoklu ortam yeniden sıralama modellerinin eğitimi için de `CrossEncoderTrainer` ve `BinaryCrossEntropyLoss` gibi araçlar sunar. Bu modeller, bir sorgu ve bir belge çiftini alarak bir uyumluluk puanı üretir. İki temel mimari yaklaşım vardır:
- Any-to-Any + LogitScore: Çoklu ortam dil modeli kullanılarak "1" (eşleşme) ve "0" (eşleşmeme) tokenlerinin log-olasılıkları arasındaki fark hesaplanır.
- Özellik Çıkarımı + Havuzlama + Yoğun Katman: Dil modelinin son tokeninin gizli durumu alınır ve bir yoğun (Dense) katmanla puana dönüştürülür.
Her iki yaklaşım da farklı avantajlar sunar ve Sentence Transformers dokümantasyonunda örnek kodlarla açıklanmıştır.
Neden Önemli?
Bu yazı, çoklu ortam gövdeleme ve yeniden sıralama modellerinin eğitimini uçtan uca, somut bir örnekle ve açık kodlarla anlatması açısından önemlidir. Özellikle görsel belge erişimi gibi gerçek dünya uygulamalarında, genel amaçlı modellerin ince ayar ile nasıl büyük performans artışı sağlayabileceği gösterilmiştir. Ayrıca MatryoshkaLoss ile gövdeleme boyutunun esnek hale getirilmesi, depolama ve hesaplama maliyetlerini düşürürken kaliteyi korumayı mümkün kılar. Bu teknikler, arama motorları, soru-cevap sistemleri ve belge yönetimi gibi birçok alanda kullanılabilir.
Ek kaynaklar arasında metin tabanlı gövdeleme, seyrek gövdeleme (sparse embedding) ve ikili niceleme (binary quantization) gibi ilgili konular da yer alıyor. Sentence Transformers'ın çoklu ortam desteği, yapay zeka uygulamalarının kapsamını genişletmekte ve daha zengin veri türlerini işlemeyi mümkün kılmaktadır.