Projelere dön

Yapay zekâ / Makine öğrenmesi / Akademik araştırma

MiniGPT-M4

Transformer bileşenlerini görünür kılan, özel BPE tokenizer ve Apple Silicon eğitim deneyleri içeren küçük ölçekli dil modeli araştırması.

Araştırma
  • Python
  • PyTorch
  • NumPy
  • Byte-level BPE
  • Apple MPS

Kategori için özgün kod tabanlı illüstrasyon; ürün ekran görüntüsü değildir.

Genel bakış

MiniGPT-M4, hazır bir model API’si kullanmak yerine decoder-only bir Transformer’ın temel parçalarını PyTorch ile kuran eğitim ve araştırma projesi. Tokenizer, veri hazırlama, nedensel attention, ağırlık paylaşımı ve üretim aynı kod tabanında incelenebiliyor. Apple MPS ile yerel eğitim yolu ve ayrı arşivlenmiş diyalog ince ayar deneyleri bulunuyor; eğitim verileri ve çalıştırılabilir model ağırlıkları depoya dahil değil.

Problem ve amaç

Dil modeli davranışını anlamak için yalnızca bir inference uç noktasını kullanmak yeterli olmuyor. Tokenların hazırlanması, gelecek tokenların attention içinde gizlenmesi, hedeflerin bir adım kaydırılması ve sohbet kaybının maskelenmesi gibi ayrıntılar sonuca doğrudan etki ediyor. Küçük donanımda deney yapmak da model boyutları ile veri ve eğitim bütçesini birlikte ele almayı gerektiriyor.

Çalışmadaki rolüm

Model mimarisi, tokenizer ve yerel eğitim deneylerinin yazılım geliştirmesi.

Çözüm yaklaşımı

Proje, byte-level BPE kodlamasını token/pozisyon embedding’leri, pre-LayerNorm bloklar ve GELU ileri besleme katmanlarıyla birleştiriyor. Çıkış projeksiyonu token embedding ağırlığını paylaşıyor; eğitim assistant-only hedeflerde -100 maskelemesini destekliyor. Varsayılan yapı 2.048 token sözlüğü, 256 token bağlam, 384 embedding boyutu, 8 katman ve 6 attention head kullanıyor. Eğitim ile checkpoint tabanlı üretim ayrı giriş noktalarına sahip; diyalog deneyleri ana pretraining yolundan ayrı tutuluyor.

Uygulama ayrıntıları

Token akışının veri sözleşmesi

TokenDataset, eğitim ve validation dosyalarını uint16 NumPy memmap olarak açıyor; her batch için rastgele başlangıçlar seçip girdiyi ve bir token ileri kaydırılmış hedefi aynı pencereden üretiyor. Böylece ham metnin yeniden işlenmesi eğitim döngüsünden ayrılıyor ve dosyanın tamamını tek bir Python nesnesine yüklemek gerekmiyor. Model girdileri PyTorch için int64’e çevriliyor. Bu tasarımın önemli şartı tokenizer sözlüğü, dosya kodlaması ve checkpoint boyutlarının uyumlu tutulması; veri dosyasının varlığı tek başına bu uyumu kanıtlamıyor.

Eğitim döngüsünde görünür kontrol noktaları

train.py, AdamW optimizasyonunu doğrusal warmup ve cosine learning-rate decay ile birleştiriyor. Gradient clipping, periyodik train/validation loss tahmini ve örnek üretimi aynı koşunun farklı gözlem noktalarını oluşturuyor. Checkpoint dosyası model ve optimizer state’ini, adım numarasını ve validation loss bilgisini kaydediyor. Bunlar deneyin izlenmesini kolaylaştıran yazılım mekanizmaları; bir ayarın kodda bulunması o eğitimin tamamlandığını veya modelin kaliteli yanıt ürettiğini göstermiyor. Veri revizyonu, tokenizer ve koşu konfigürasyonu ayrıca kaydedilmeli.

Üretim sırasında bağlam ve örnekleme

MiniGPT.generate her yeni token için yalnızca modelin bağlam sınırı içindeki son tokenları kullanıyor. Son pozisyondaki logits, temperature ile ölçekleniyor; top-k seçilmişse daha düşük olasılıklı seçenekler maskeleniyor ve sonraki token multinomial örneklemeyle ekleniyor. Böylece üretim davranışı model forward geçişinden ayrı incelenebiliyor. Sabit bağlam penceresi yerel deneyi basitleştirirken uzun metnin eski bölümlerini dışarıda bırakıyor. Bu uygulamada KV-cache temelli hızlandırma iddiası veya ölçülmüş üretim hızına dayanan performans sonucu sunulmuyor.

Mimari akış

01

Metin hazırlama ve byte-level BPE tokenizer

02

uint16 token dosyaları ve kaydırılmış hedef batch’leri

03

Token/pozisyon embedding’leri ve nedensel Transformer blokları

04

Paylaşılan LM head, kayıp ve optimizasyon

05

Uyumlu checkpoint ile autoregressive üretim

Kaynak açıklamalarından türetilmiş kavramsal akış; bir uygulama ekran görüntüsü değildir.

Temel bileşenler

  • Özel byte-level BPE tokenizer
  • Pre-LayerNorm, residual bağlantılar ve nedensel attention
  • Embedding ile çıkış katmanı arasında ağırlık paylaşımı
  • Apple MPS / CPU çalışma yolu
  • Arşivlenmiş DailyDialog ve SmolTalk ince ayar deneyleri

Teknik zorluklar

  • Tokenizer, veri dosyası ve checkpoint boyutlarının uyumunu korumak.
  • Rastgele pencere örneklemesi ile sohbet bağlamı ve assistant hedeflerini doğru ilişkilendirmek.
  • Hazırlanmış veri miktarı ile gerçekten işlenen eğitim tokenlarını ayırmak.

Mühendislik tercihleri

  • Küçük varsayılan yapı ve MPS desteğiyle yerel deneylere odaklanıldı.
  • Ana pretraining yolu ve tarihsel SFT denemeleri ayrı tutuldu.
  • Bileşen doğruluğu, eğitim kalitesinden bağımsız sentetik sözleşmelerle değerlendirildi.

Test ve doğrulama

  • Açık #8 PR’sindeki dört CPU sözleşme testi geçmiş doğrulamada geçti: nedensellik, ağırlık/kayıp, Unicode tokenizer ve batch hizası.
  • Veri gerektiren dört eski tanı modülü ayrı kopyada sentetik tokenlarla çalıştı; gerçek pretraining veya checkpoint kalitesi yeniden üretilmedi.

Çıktılar

  • Modelin attention, tokenizer, veri ve üretim bileşenleri okunabilir ayrı modüllerde mevcut.
  • Tarihsel 115.706.628 hazırlanmış token ile tarif edilen koşunun 40.960.000 token pozisyonu birbirinden ayrıldı; ikisi de yeni eğitim sonucu değil.

Sınırlar ve mevcut durum

  • Eğitilmiş ağırlıklar ve eğitim korpusu dahil değil.
  • Tarihsel loss 1,3553 bağımsız olarak doğrulanmış bir benchmark değil.
  • Genel talimat takibi veya olgusal doğruluk için doğrulama yok.
  • Yeni test ve deney açıklamaları açık #8 PR’sinde; ana dala henüz birleşmedi.

Teknik anlatım açık iyileştirme PR’sindeki belgeleri de esas alır. PR’nin ana dala birleştirildiği veya ürünün yayımlandığı anlamına gelmez.

Kaynaklar ve dokümantasyon

GitHub’da kaynak

Bağlantılı çalışmalar