2 puan yazan GN⁺ 2024-12-13 | 1 yorum | WhatsApp'ta paylaş
  • ChatGPT klonunun uygulanması

    • Bu program, GPT-2'nin bağımlılıksız bir uygulamasıdır.
    • TensorFlow dosyalarından ağırlık matrislerini ve BPE dosyalarını yükler, girdiyi basit bir byte pair encoder ile tokenize eder.
    • Temel bir lineer cebir paketini uygular, transformer mimarisini tanımlar, transformer inference işlemini yürütür ve çıktıyı BPE decoder ile token'lardan geri çevirir.
    • Yaklaşık 3000 baytlık C ile yazılmıştır.
    • Verimli biçimde optimize edilmiştir; GPT-2 Small modeli modern cihazlarda birkaç saniye içinde yanıt verebilir.
    • KV caching ve verimli matris çarpımı algoritmaları uygular.
  • Program yapısı

    • Temel matris matematiği kütüphanesi (700 bayt)
    • Hızlı matris çarpımı (300 bayt)
    • Sinir ağı katmanları (300 bayt)
    • Transformer modeli (600 bayt)
    • Byte pair encoding (400 bayt)
    • Girdi/çıktı (200 bayt)
    • Ağırlık yükleme (300 bayt)
    • Byte pair encoding yükleme (300 bayt)
  • ChatGPT ve transformer arka planı

    • ChatGPT, bir dil modeliyle konuşmayı mümkün kılan bir uygulamadır.
    • GPT-4 en yeni modeldir ve oldukça etkileyicidir.
    • Bu C programı, ChatGPT'nin çalışma şeklini 2019'daki daha zayıf bir model olan GPT-2'yi kullanarak uygular.
    • GPT-2, sabit boyutlu bir kelime dizisini girdi olarak alıp bir sonraki kelimeyi tahmin eden bir transformer'dır.
  • C kodunun açıklaması

    • Matris matematiğine başlamak (700 bayt)

      • Sinir ağları matris işlemlerinden oluşur.
      • En minimal matris tanımını kullanarak bir matris kütüphanesi kurar.
      • Ortak mantığı meta-rutinlere ayırmak için makrolar kullanır.
    • Hızlı matris çarpımı (300 bayt)

      • Temel matris çarpımı üç döngü kullanılarak uygulanır.
      • Bellek ve cache'in çalışma biçimi sayesinde aynı belleği tekrar tekrar okuyup yazmak daha hızlıdır.
    • Sinir ağı katmanları (300 bayt)

      • Transformer'ı yazmak için bazı özel sinir ağı katmanları tanımlanır.
      • GELU aktivasyon fonksiyonu ve causal attention için gereken alt üçgen ayarlama fonksiyonu gibi bileşenler uygulanır.
    • Transformer mimarisi (600 bayt)

      • Transformer 600 baytta uygulanır.
      • Her katmanda key, query ve value hesaplanır, attention matrisi oluşturulur ve sonuçlar birleştirilir.
    • Byte pair encoding (400 bayt)

      • Dil modeli sabit boyutlu girdi gerektirdiği için token üretmek amacıyla kelime parçaları kullanılır.
      • Verilen bir kelimeyi tek tek karakterlere ayırır ve bitişik token çiftlerini birleştirir.
    • Ağırlık yükleme (300 bayt)

      • Sinir ağının ağırlıkları diskten yüklenir.
      • Ağırlıklar 32 bit kayan noktalı sayılar olarak serileştirilmiştir.
    • Byte pair encoding yükleme (300 bayt)

      • Byte pair encoding sözlüğü diskten yüklenir.
      • Dosya biçimi, byte pair encoding listesinden oluşur.
  • Sonuç

    • Makine öğrenimindeki onlarca yıllık ilerleme birkaç bin bayta sıkıştırılabilir.
    • Gerçek model ağırlıkları hariç her şeyi içeren basit bir sinir ağı örneğidir.

1 yorum

 
GN⁺ 2024-12-13
Hacker News görüşleri
  • GPT-2 kullanarak bir arkadaşla sohbeti simüle ettiğimde eğlenceliydi ve bazen şaşırtıcı derecede isabetliydi. GPT-2 ile GPT-3 arasındaki büyük sıçramanın daha büyük modelden mi, daha fazla veriden mi, yoksa her ikisinden mi kaynaklandığını merak ediyorum. RLHF büyük fark yaratıyor, ancak temel GPT-3 modeli de yeterli örnek verildiğinde oldukça kullanışlıydı

  • Basit bir sinir ağının aslında ne kadar basit olabileceğini gösteren iyi bir örnek. Yapay zeka, para kazanmak için kullandığımız kara büyü

  • Kodu çalıştırmadım ama küçük boyutundan etkilendim. İlk ELISA programı bundan daha büyüktü. Son 4 yılda bunu bayt düzeyinde sığdırabilmiş olmamız etkileyici. Sihirin nerede olduğuna dair bir ipucu varsa açıklanmasını isterim. Bunun GELU fonksiyonu mu yoksa bir bash betiğiyle indirilen model mi olduğunu merak ediyorum

  • GPT-2 sevdiğim bir masal yazdı. Bağlantı: The Princess, the Fairy Godmother, and the Chest

  • GPT-2'nin gerçekten sohbet için kullanılabilecek şekilde ayarlanıp ayarlanmadığını merak ediyorum. Değilse buna ChatGPT klonu demenin biraz zorlayıcı olduğunu düşünüyorum

  • LISP her zaman C'den daha iyi değildir. Bu seferlik kabul. Kod bağlantısını kaçırdıysanız burada: C-Chat-GPT-2

  • Hangi donanımda çalışabildiğini merak ediyorum. huggingface'in kuantize ağırlıklarının kullanılıp kullanılamayacağını ve özellikle hangi sorunlara ya da sorgulara uygun olduğunu da merak ediyorum

  • Bugünlerde gptscript kullanarak kendi ChatGPT'nizi kolayca hayata geçirebilirsiniz. Bağlantı: gptscript

  • C makrolarının düzenli ifadelerle nasıl benzer olduğunu anlamıyorum. C makroları kelimeleri eşleştirip başka metinlerle değiştirir. Düzenli ifadeler ise görece karmaşık desenlerle metni eşleştirir ve kendi başına metin değiştirmez

  • Bunu yerelde çalıştırıp bu GP2'nin nasıl bir çıktı ürettiğine bakan biri oldu mu merak ediyorum