Hacker’ın Dil Modeli Rehberi [Video]
(youtube.com)- Jeremy Howard, dil modellerini teoriden çok kod öncelikli bir yaklaşımla ele alıyor; OpenAI API’den yerel açık kaynak modellere kadar gerçek kullanım akışını gözden geçiriyor
- Dil modelleri kelimeleri değil tokenları tahmin eder; ön eğitim, komut ayarlama ve RLHF süreçlerinden geçerek soru yanıtlama ve görev yürütmeye daha uygun hale gelir
- GPT-4, Eylül 2023 itibarıyla güçlü bir seçenek; ancak kendisi, URL’ler ve bilgi kesme tarihinden sonraki bilgiler konusunda zayıf, ayrıca custom instructions yanıt kalitesini ciddi biçimde etkiliyor
- OpenAI API konuşma durumunu saklamadığı için her seferinde tüm konuşma geçmişini göndermek gerekir; fonksiyon çağrılarıyla Python çalıştırma gibi araçlar eklenebilir
- Yerel çalıştırma Hugging Face Transformers, Llama 2, GPTQ quantization, RAG, Axolotl fine-tuning, MLC ve llama.cpp gibi seçeneklerle mümkün; ancak GPU, prompt biçimi ve değerlendirme sınırlamaları da beraberinde gelir
Dil modelleri token tahmin eden sıkıştırma sistemleridir
- Dil modelleri, bir cümlenin sonraki kelimesini tahmin ederek ya da eksik kelimeyi tamamlayarak çalışır
- Örnek olarak OpenAI’nin
text-davinci-003modeline “panda breeding facility” ve “live frogs” içeren bir cümle verilip devamındaki cümle üretilir nat.devüzerinde çeşitli dil modelleri denenebilir ve sonraki token adaylarının olasılıkları görülebilir
- Örnek olarak OpenAI’nin
- Gerçek tahmin birimi kelime değil tokendır
- Token; tam kelime, kelime parçası, noktalama işareti, sayı vb. olabilir
tiktokenkullanarak bir metni GPT serisi modellerle aynı tokenizer ile token ID dizisine encode edip tekrar decode edebilirsiniz- Örnekte “they are splashing”, boşlukları da içeren kelime parçalarına ayrılır
- Ön eğitim, bir sinir ağını internet belgeleri veya Wikipedia cümlelerinde sonraki kelimeyi doğru tahmin edecek şekilde eğitme sürecidir
- Örnek olarak “The Birds” Wikipedia cümlesinde Alfred’den sonra Hitchcock’u tahmin etme türü bir eğitim kullanılır
- İyi bir sonraki kelime tahmini yapmak için modelin nesneler, zaman, filmler, yönetmenler ve kişi adları gibi dünya bilgisini içeride öğrenmesi gerekir
- Howard, sonraki kelime tahminini bir sıkıştırma biçimi olarak görüyor
- Sonraki kelimeyi iyi tahmin edebilmek için çok miktarda bilginin sinir ağı parametreleri içinde sıkıştırılması gerekir
- Sıkıştırma ile zekâ arasındaki ilişki uzun zamandır tartışılan bir fikirdir
Ön eğitimden komut ayarlamaya ve RLHF’ye uzanan akış
- Howard, ULMFiT’i dil modellerinden yararlanma yaklaşımının temel fikri olarak ele alıyor
- ULMFiT, Howard’ın 2017’de geliştirdiği bir algoritmadır; 2018 başında Sebastian Ruder ile birlikte makale haline getirilmiştir
- Orijinal örnek, Wikipedia ile bir dil modelini önceden eğitme yöntemiydi
- Eğitim akışı üç aşamaya ayrılır
- Dil modeli ön eğitimi: Sonraki kelime tahmini yoluyla genel bilgi öğrenilir
- Dil modeli fine-tuning’i: Nihai göreve daha yakın belgelerle yeniden sonraki kelime tahmini öğrenilir
- Sınıflandırıcı fine-tuning’i: Model nihai göreve göre ayarlanır
- Modern dil modellerinde ikinci aşama çoğunlukla komut ayarlama biçiminde kullanılır
- Model, sorular, talimatlar, istekler ve bunlara verilen yanıt verileriyle ayarlanır
- Örnek veri kümeleri olarak
OpenOrcaveFLAN collectionanılır - OpenOrca yaklaşık 4 GB soru, bağlam ve yanıt verisi içerir
- Üçüncü aşamada sıklıkla RLHF kullanılır
- İnsanlar veya daha iyi bir model, birden çok yanıt arasından daha iyi olanı seçer
- Örnek olarak “kariyer tutkusunu yeniden kazanmak için 5 fikir” gibi bir soruya verilen iki yanıtı karşılaştırma yöntemi gösterilir
- “Dil modeli” ifadesi bağlama göre yalnızca ön eğitimden geçmiş modeli, komut ayarlı modeli veya RLHF’den de geçmiş modeli ifade edebilir
- Saf ön eğitimli modeller tek başına genellikle düşük faydaya sahiptir; fine-tuning ile kullanılabilirlikleri artar
- Howard, günümüzde yalnızca komut ayarlamanın yeterli olup olmayacağına dair tartışmaların da bulunduğunu söylüyor
GPT-4’ü iyi kullanma yolları ve sınırları
- Howard, Eylül 2023 itibarıyla GPT-4’ü en iyi dil modeli olarak güçlü biçimde öneriyor
- ChatGPT’de aylık 20 dolar ödeyerek GPT-4’ü yoğun biçimde kullanmak mümkün
- OpenAI API ise ayrı bir token bazlı ücretlendirme yapısına sahip
- GPT-4’ün akıl yürütemediği iddiaları için, makalelerdeki veya internetteki bazı örnekleri doğrudan denediğinde çoğu zaman doğru bildiğini belirtiyor
- Mabel’in hayatta olup olmadığı zamanlaması, Sally ve kardeşleri, bardak-yüksük-elmas konumu gibi problemler örnek olarak geçiyor
- Howard, internette GPT-4’ün yapamadığı söylenen örnekler kontrol edildiğinde çoğunlukla aslında yapabildiğinin görüldüğünü söylüyor
- Model her zaman doğru cevabı vermek üzere eğitilmiş bir sistem değildir
- Ön eğitim, en olası sonraki kelimeyi tahmin etme sürecidir; internette kurgu, şaka ve yanlış ifadeler de çoktur
- RLHF’de daha kendinden emin yanıtlar tercih edilmiş olabilir ve değerlendiriciler yanlış yanıtları yeterince ayırt edememiş olabilir
- custom instructions yanıt kalitesini artırmaya yardımcı olur
- “İyi akıl yürütür”, “doğru cevap olmayabilir ise bunu söyle”, “önce arka plan bağlamını birkaç cümleyle açıkla” gibi talimatlar her sorgunun başına eklenebilir
- Model kelime kelime üretir ve ürettiği içeriği yeniden girdiye dahil eder; dolayısıyla daha fazla kelime üretirse daha fazla hesaplama yapabilir
VVile başlandığında kısa yanıt verme gibi kişisel kurallar da örnek olarak kullanılır
- GPT-4’ün de net sınırları vardır
- Modelin kendisinin nasıl eğitildiği veya bağlam uzunluğunun ne olduğu gibi bilgileri eğitim aşamasında öğrenme fırsatı yoktu
- URL içeriklerini iyi bilmez; sorulduğunda uydurabilir
- GPT-4’ün ön eğitim bilgisi Eylül 2021’e kadardır
- Tanıdık klasik bulmacaları biraz değiştirirseniz eski kalıplara kapılıp yanlış yanıt verebilir
- Lahana, keçi ve kurt nehirden geçirme bulmacasında kısıtların değiştirildiği bir örnek kullanılır
- Yanlış yanıt verdikten sonra sohbetle düzeltmeye çalışmak sürekli hataya yol açabilir; bunun yerine sohbetteki edit özelliğiyle önceki prompt’u düzeltmek daha iyidir
OpenAI API ve fonksiyon çağrılarıyla araç ekleme
- OpenAI API, dil modellerini Python gibi ortamlardan programatik olarak çağırmayı sağlar
pip install openaisonrasıChatCompletion.createilegpt-3.5-turbogibi modellerin çağrıldığı bir örnek kullanılırsystemmesajı, ChatGPT’deki custom instructions’a benzer bir rol oynar- Örnekte “Aussie slang ve benzetmeler kullanan bir Aussie LLM” şeklinde bir system prompt’u verilerek “What is money?” sorulur
- API konuşmalarında sunucuda kalıcı durum saklanmaz
- Takip sorusu sorarken tüm konuşma geçmişini yeniden göndermek gerekir
- Kullanıcı önceki assistant yanıtını istediği gibi değiştirip koysa bile model o konuşma geçmişine dayanarak yanıtı sürdürür
- Örnekte assistant’ın “money is like kangaroos” dediği varsayılıp bu benzetmeyi sürdürerek açıklaması istenir
- Maliyet, modele ve token sayısına göre değişir
- Token sayısı ortalama olarak kelime sayısından biraz fazladır; yaklaşık 1⅓ token 1 kelimeye karşılık gelir
- Örnekte GPT-3.5 için
0.0015dolar, GPT-4 için0.03dolar düzeyinde bir fiyat farkından söz edilir - Yaklaşık 150 token’lık bir yanıt GPT-3.5’te yaklaşık
0.0003dolar olarak hesaplanır - OpenAI usage sayfasından kullanım miktarı kontrol edilebilir
- İlk API hesaplarında rate limit düşük olabilir
- İlk 48 saatte ücretsiz kullanıcılar veya ücretli kullanıcılar için dakikada 3 istek gibi düşük sınırlar örnek olarak verilir
- Rate limit hatası alınırsa
retry-afterdeğerini okuyup bekledikten sonra yeniden deneyen Python kodu gerekir
- function calling kullanarak modele kullanabileceği araçlar bildirilebilir
- Python fonksiyonunun kendisi geçirilmez; JSON schema ile fonksiyon adı, açıklaması ve parametreleri bildirilir
- Fonksiyon açıklaması olan docstring, modelin aracın amacını anlamasında temel bilgidir
sumsfonksiyonu örneğinde model 6+3 sonucunu doğrudan vermek yerine fonksiyon çağrısı adını ve argümanlarını döndürürpythonfonksiyonu araç olarak sunulursa 12 faktöriyelini hesaplamak için kod üretir; kullanıcı onayladıktan sonra çalıştırılıp sonuç tekrar konuşmaya eklenebilir- Bu yöntemle Jupyter içinde basit bir kod yorumlayıcı doğrudan oluşturulabilir
Yerel modeller, RAG ve fine-tuning seçenekleri
- Yerelde dil modeli kullanmak için genellikle GPU gerekir
- Kaggle, iki eski GPU bağlı notebook’lar sağlayabilir
- Colab daha iyi GPU ve daha fazla RAM sağlayabilir; aylık abonelikle seçenekler artar
- RunPod, Lambda Labs, Vast.ai gibi GPU kiralama seçenekleri anılır
- Hassas işler “tanımadığınız birinin bilgisayarında” çalıştırmaya uygun değildir
- GPU seçiminde hesaplama gücünden çok bellek hızı ve kapasitesi önemlidir
- İkinci el GTX 3090’ın eBay’de yaklaşık 700 dolar seviyesinde olduğu belirtilir
- RTX 4090 daha yeni bir GPU’dur ama dil modelleri için 3090’dan belirgin biçimde daha iyi değildir
- 24 GB birçok iş için yeterli olmayabilir; bu yüzden iki adet 3090 yaklaşık 1.500 dolarlık bir seçenek olarak sunulur
- 48 GB RAM’li A6000 yaklaşık 5.000 dolar düzeyindedir
- Bol RAM’li Mac’ler, özellikle M2 Ultra, mevcut modelleri çalıştırmak için fena değildir ama Nvidia kartlardan yavaştır
- Hugging Face ekosistemi, yerel model denemelerinde merkezi araç olarak kullanılır
Transformersile Hugging Face’te yayınlanan ön eğitimli ve fine-tuned modeller yüklenebilir- Liderlik tabloları referans olabilir; ancak gerçek kullanılabilirlikle iyi örtüşmeyebilir ve benchmark verilerinin eğitim setine karışması şeklinde leakage sorunu olabilir
- Tipik kişisel GPU ortamında 70B yerine 13B veya 7B modeller daha gerçekçidir
- Llama 2 ailesi ve quantization başlıca örnekler olarak kullanılır
- Meta’nın
Llama 2 7Bmodeli yalnızca ön eğitimden geçmiş bir modeldir; komut ayarlama veya RLHF olmadığı için doğrudan soru yanıtlama için uygun değildir - 7B modeli 16-bit olarak yüklemek yalnızca ağırlıklar için yaklaşık 14 GB gerektirir
- 8-bit’e cast etmek belleği azaltabilir ama yavaş olabilir
bfloat16daha hızlıdır ancak daha fazla RAM gerektirirGPTQquantization modelleri daha düşük hassasiyetle optimize edilmiştir; bellek aktarımı azalır ve örnekte 13B GPTQ model bile 7B’den hızlı çalışırTheBloke, popüler modelleri GPTQ ile optimize edip Hugging Face’e yükleyen kişi olarak anılır
- Meta’nın
- Komut ayarlı modellerde prompt biçimini mutlaka tutturmak gerekir
Stable Belugagibi Llama 2 tabanlı komut ayarlı modellerde model sayfasındaki prompt biçimi aynen kullanılmalıdırOpenOrca Platypus 13B GPTQiçin de ayrı prompt biçimi kontrol edilip fonksiyon olarak oluşturulur- Biçim doğru olduğunda “Who is Jeremy Howard?” gibi sorularda daha iyi yanıtlar alınabilir; ancak yine de halüsinasyon kalabilir
- RAG, güncel bilgilerden veya özel belgelerden yararlanma yöntemidir
- Soruya yardımcı olacak belgeler aranır ve bu belgeler bağlam olarak eklenerek modelin yanıtlaması sağlanır
- Jeremy Howard Wikipedia sayfasındaki 613 kelime bağlam olarak eklendiğinde, 100 kelimelik daha doğru bir biyografiye yakın yanıt üretir
sentence-transformers, belgeleri ve soruları embedding vektörlerine dönüştürür; benzerliği hesaplayarak ilgili belgeleri seçebilir- Belgeler binlerce veya milyonlarca adetse önceden embedding üretmek için vektör veritabanı kullanılır
H2O GPT, yerelde PDF yükleyip RAG yapan açık kaynak bir örnektir- Takip sorularında arama modeli önceki bağlamı bilmiyorsa alakasız belgeler bulabilir; buna dikkat etmek gerekir
- Fine-tuning, modelin kendi davranışını değiştirme yöntemidir
- Örnek veri kümesi veritabanı şeması, doğal dilde soru ve doğru SQL’i içerir
- Hugging Face
datasetskütüphanesiyle veri kümesi yüklenir Axolotlkullanılarak Llama 2 örneği kopyalanır ve SQL için YAML yapılandırması hazırlanıp eğitim yapılıraccelerate launch axolotlkomutuyla yaklaşık 1 saatlik eğitimden sonraq_lora_outdizini oluşturulurQ, quantize;LoRAise daha küçük model ve daha küçük GPU ile eğitimi kolaylaştıran bir tekniktir- Eğitimden sonra şema ve soru verildiğinde
SELECT count(hosts), theme ... GROUP BY themebiçiminde doğru SQL üretir
- Mac ve diğer runtime seçenekleri de vardır
MLC, iPhone, Android ve web tarayıcısı gibi ortamlarda dil modeli çalıştırabilen bir projedir- Mac’te quantize edilmiş 7B model çalıştırılıp “What is the meaning of life?” sorusuna yanıt verdiği ve yaklaşık 9.6 tokens/s elde edildiği örnek gösterilir
llama.cpp,ggufbiçimini kullanır ve Python wrapper ile de çağrılabilir- Nvidia GPU ve Python’a aşinaysanız PyTorch ve Hugging Face ekosistemini kullanmak daha iyidir
- Dil modeli geliştirme ortamı hızla değişiyor ve hâlâ erken aşamada; bu yüzden kurulum ve edge case’ler zorlu, ancak Python programcıları için ilginç bir dönem
- fast.ai Discord’un
generativekanalında soru sorabilir veya deneyim paylaşabilirsiniz
- fast.ai Discord’un
1 yorum
Hacker News yorumları
Bunu az önce yayımladım, şimdiden HN'e düştüğünü görünce şaşırdım.
Bu video için epey heyecanlıyım. 90 dakikalık sunumun içine aklıma gelen temel bilgilerin mümkün olduğunca çoğunu sığdırmaya çalıştım; hedefim de geliştiriciler “LLM'ler hakkında bilmem gereken her şeyi anlat” diye sorduğunda tek bir yeri gösterebilmekti.
Yine de mutlaka atladığım ya da yeterince net olmayan noktalar olabilir. Bu ilk deneme ve bir gün bunu tam bir derse genişletmeyi planlıyorum; bu yüzden videoyu izledikten sonra aklınızda kalan soruları ya da ele alınması gerektiğini düşündüğünüz kavramları paylaşırsanız sevinirim.
Yakında uyumam gerekiyor; Avustralya'da saat geç olduğu için sabaha kadar soruların çoğuna yanıt veremeyebilirim. Yine de uyanınca bu sayfaya mutlaka bakacağım ve yarın YouTube açıklamasına ilgili makale bağlantılarını da ekleyeceğim.
Etik ya da politika meselelerini ele almadım. Önemsiz oldukları için değil, bu sunumda tamamen teknik meselelere odaklanmaya karar verdiğim için.
Harikaydı. Videoyla birlikte bakılacak notebook burada: https://github.com/fastai/lm-hackers/blob/main/lm-hackers.ip...
Projenin yapısı da iyiydi. OpenAI API hack'leme, OpenAI functions ile yapılmış Code Interpreter benzeri bir şey, Hugging Face modeliyle yerel LLM çalıştırma ve son 10 dakikada metin-SQL modeli oluşturmak için bir ince ayar örneği var.
Video için teşekkürler. Şimdiye kadar gördüğüm LLM kullanım eğitimleri arasında en iyisiydi.
https://youtu.be/jkrNMKz9pWU?si=Dvz-Hs4InJXNozhi&t=3278 adresinde yerel modeller ve GPT-4 için uygun kullanım senaryolarından bahsederken “ince ayar ile çözmem gereken problem türünde özellikle güçlü bir model oluşturabilirim ve bu gibi durumlarda GPT-4'ten daha iyi performans elde etmek de gayet mümkün” diyor.
Bununla ilgili bir süredir düşündüğüm bir fikir var. Arkasında birden fazla “küçük” model, örneğin 7 milyar parametreli modeller bulunan bir chatbot hayal edilebilir. Her model belirli bir görev için ince ayarlanmış olsa, böyle bir sistem GPT-4'ü geçebilir mi?
Kabaca fikir şu: Bağlamı/prompt'u bir “yönlendirici modele” gönderiyorsunuz; bu model hangi uzman modelin en iyi yanıtı verebileceğine ya da tamamlayabileceğine karar veriyor. Ardından sistem bağlamı/prompt'u ilgili uzman modele aktarıp yanıtını döndürüyor. Uygun bir uzman model yoksa genel talimat ayarlı, genel amaçlı bir LLM kullanılıyor.
Belirli bir görev için ince ayarlanmış küçük bir model teorik olarak GPT-4'ten iyi olabiliyorsa, böyle küçük modellerden oluşan bir küme de toplamda GPT-4'ü aşamaz mı diye düşünüyorum.
Video burada [1] https://sambanova.ai/launch2023
Biraz aşağı inince HuggingFace'in GPU'larında çalışan 180 milyar parametreli Falcon modeliyle karşılaştırıyorlar. MoE sonuçları yalnızca kalite olarak benzer değil, aynı zamanda inanılmaz hızlı ve neredeyse anında geliyor. Uzman modelleri değiştirebilmek ya da yeni verilerle yeniden eğitebilmek de büyük bir avantaj; daha monolitik 180 milyar parametreli bir modelde bunun kolay olmayacağı açık.
Tüm bu akımı başlatan makaleyi yazan kişinin videosu olması da etkileyici.
Harika bir video, iş yerinde de paylaştım. Pratik açıdan, bildiğim kadarıyla bu konuya dair en kapsamlı giriş materyali olabilir.
Özellikle “GPT'nin X'i yapamadığını söyleyen viral yazılar yeniden üretilemiyor” bölümü hoşuma gitti. Umarım çevremdeki insanların bu teknolojiye bakarken eleştirel düşünmeyi öğrenmesine yardımcı olur.
Harika bir video. İleride kullanabileceğim birkaç yeni püf noktası öğrendim.
Sadece bir şeyler denemek bile yeni kullanım alanları keşfetmenizi sağlıyor.
Kısa süre önce bunun iyi bir örneğini yaşadım. Adreslerin bulunduğu bir elektronik tabloyu harita katmanı olarak kullanmak için GeoJSON'a çevirmem gerekiyordu; çok üşengeç bir ruh halindeydim, bu yüzden ChatGPT'nin ne kadar iyi yapacağını görmek istedim.
İlk adımda bir enlem/boylam çifti verip derece/dakika formatını ondalık sayıya çevirmesini istedim; hesaplama adımlarını sorunsuz gösterdi. Sonra tüm enlem/boylam sütunlarını verip hesaplama adımlarını göstermemesini söyledim; çıktıyı da düzgün verdi.
Ardından yer tutucular içeren örnek bir JSON yapısı oluşturdum ve veriyi vereceğimi, yer tutucuları sütun adlarıyla doldurmasını söyledim. Veriyi yapıştırınca JSON'u kusursuz biçimde oluşturdu.
İlginç olan, ayrıca talimat vermeden enlem/boylam dönüşümünü yeniden yapması ve benim bahsetmediğim id özelliğini de artırmasıydı. Epey etkileyiciydi.
Jeremy hayranlık duyduğum biri ve Queensland'de doğup yaşayan biri olarak dünya çapında yeteneklerin gerçekten etrafımızda her yerde bulunduğunu hatırlatıyor.
Elbette her alanda böyle pek çok insan vardır, ama Jeremy tanıdığım ve derin saygı duyduğum kişilerden biri.