LLM(Large Language Models)Nedir? Büyük Dil Modellerine Kısa Bir Giriş

Barış Güleç
Kodcular
Published in
9 min readDec 9, 2023

Merhaba! Bu yazımda size yapay zeka dünyasının son zamanlarda yükselişe geçen bir alanı konuşmak istiyorum. LLM, “Large Language Model”ın kısaltmasıdır ve yapay zeka alanında kullanılan büyük ölçekli dil modellerini ifade eder. Bu modeller, devasa miktarda veriyle eğitilerek dil anlama, üretme ve çeşitli dil işleme görevlerini gerçekleştirebilen yapay zeka sistemleridir. Bu yazıyı yazarken Tesla’nın yapay zekâ ve otonom sürüş yöneticisi olan Andrej Karpathy’nin hazırladığı bir videodan yararlandım.

LLM aslında 2 dosyadan olusur.

  1. Parametreler.
  2. Bu parametreleri calıstırmak icin gerekli 500 satırlık bir kod.

Örnek olarak Meta’nın yayınladığı açık kaynak olan llama-2–70b’ye göz atalım. Bu model 70 milyar parametreli. Parametre dediğimiz şey ise aslında nöral ağın ağırlıklarıdır. Yani bu dil modelinde 70 milyar parametre var ve bunların her biri 2 byte olarak saklanır. Dolayısıyla bu parametre dosyasının boyutu 140GB. 2 byte olmasının sebebi ise veri türü olarak float16 kullanması. Bu iki dosyayı çalıştıracak bir ortamda internet bağlantısına gerek olmadan kullanabiliriz.

Llama-2–70b özelinde konuşacak olursak,

  1. Öncelikle internetten yaklaşık 10TB boyutunda metin verisi derliyoruz. Bu veri toplama işlemini web tarayıcılarıyla gerçekleştirebiliriz. Bir robot aracılığıyla interneti tarayarak verileri topluyoruz.
  2. Daha sonra en az 6000 adet GPU alıp internetten topladığımız bu 10TB’lık veriyi sıkıştırarak, daha küçük boyutta bir zip dosyasına benzer bir formata dönüştürüyoruz. Bu işlem yaklaşık olarak 2 milyon dolar ve 12 gün sürebiliyor. Bahsettiğim parametreler, internet verilerinin sıkıştırılmış hali. Ve 2 milyon dolar harcayarak 12 gün boyunca bu verileri sıkıştırdığınızda elde edilen sonuç, 140 GB’lık bir parametre dosyası oluyor. Gördüğünüz gibi, bu örnekteki sıkıştırma oranı yaklaşık 100 katı. Ancak oluşturulan bu parametre dosyası bir zip dosyası değil çünkü zip dosyaları genellikle “lossless compression (kayıpsız sıkıştırma)” türündedir. Yani orijinal veriden herhangi bir kayıp olmadan sıkıştırılabilir. Ancak dil modellerindeki sıkıştırma “kayıplı sıkıştırma”dır. Yani bu parametreler içinde orijinal verinin birebir kopyası saklanmaz. Sam Altman, GPT-4'ün 100 milyon dolardan fazla GPU maliyeti olduğunu belirtmişti bir söyleşisinde. Bazı iddialara göre ise GPT-4'ün 1 trilyon parametreye sahip olduğu söyleniyor. Ancak tüm bunlar spekülasyon. OpenAI, GPT-4'ün eğitim sürecini açıklamadığı için tam rakamları bilemiyoruz.

Bir modeli eğitmek, verileri yapay zekadaki bir göreve öğretmek için kullanma sürecidir. Model, bu verileri kullanarak parametrelerini ayarlar ve sorunları çözmeyi öğrenir.

Nöral Ağlara Giriş

Nöronal sinir ağı esasen bir sonraki kelimeyi tahmin etmek için çalışıyor. Daha önce oluşturduğumuz parametrelerle beslenen bu nöronal ağların temel işlevi, bir sonraki kelimeyi öngörmektir. Siz bu ağa bir dizi kelime girişi sağlayabilirsiniz; örneğin, ‘cat’, ‘sat’, ‘on’, ‘a’ dizisini kullanalım. Bu parametreler nöronal ağ içerisinde dağıtılmış bir yapıda bulunmakta ve en basit anlatımla, çalışan nöronlar birbirleriyle bağlantılıdır. Bu nöronlar bir şekilde aktive olur ve bu kelime dizisini takip edebilecek muhtemel bir kelimeyi tahmin etme süreci başlar, ardından bir çıktı sunulur. Bu örnekte ağ, ‘mat’ kelimesinin dizideki bir sonraki kelime olarak gelme olasılığını %97 ihtimalle en yüksek sonuç olarak belirler ve bu nedenle bunu nihai çıktı olarak sunar. Özetlemek gerekirse, nöronal ağın burada gerçekleştirdiği temel işlem, bir sonraki kelimenin ne olabileceğini tahmin etmektir. (Türkçe bir örnek olarak, dal kalkar kartal .. örneğini düşünebiliriz. Sonraki gelecek kelime yüksek ihtimalle sarkar olacak)

Bir diğer önemli husus, LLM (Large Language Models) modellerinin bazen gerçek dışı bilgiler ‘halüsine’ etmeleridir. Aşağıda verdiğim örnekte, LLM modelimiz ‘blacknose dace’ hakkında Wikipedia tarzında bir metin üretmiş. Ancak bu örnekteki bilgiler modelin eğitim setinde mevcut değil. Yine de, modelin sağladığı bilgilerin çoğunun doğru olduğunu fark edebiliyoruz. Bu, demek oluyor ki, ağ bu balık türünü ‘tanıyor’, onun hakkında epeyce bilgiye sahip. Eğitildiği veri setlerinden bazı kalıpları ve benzerlikleri çıkartarak doğru sonuçlar üretebiliyor. Ve en ilginç yanı, sunulan bilginin %100 doğruluğundan asla tam olarak emin olamazsınız.

Peki, bir yapay sinir ağı, kendisine verilen kelime dizisini nasıl takip ederek bir sonraki kelimeyi tahmin edebilir?

İşte zorlukların başladığı yer burası.

Ekranınızda gördüğünüz şematik diyagram, bir TNN, yani Transformer Neural Network mimarisini gösteriyor.

Bu ağ hakkında dikkat çekici bir nokta, yapısını ve her bir aşamasında gerçekleşen matematiksel işlemleri ayrıntılı olarak bilmemizdir.

Ağın içinde milyarlarca parametre bulunuyor ve bu parametreleri nasıl optimize edeceğimizi anlamış durumdayız. Zamanla parametreleri en iyi hale getirecek süreçleri kavramış bulunmaktayız. Ancak, bu milyarlarca parametrenin tam olarak ne iş yaptığı konusunda bir belirsizlik söz konusu. Bir sonraki tahmini nasıl daha iyi yapacağımızı biliyoruz ancak parametrelerin tahmin sürecinde nasıl birbirleriyle etkileşim içinde olduğunu anlama konusunda eksikliklerimiz var.

Bu parametreler, sinir ağının içinde bir tür bilgi veritabanı işlevi görür, fakat bu veritabanı kusursuz değildir ve bize bazen tuhaf sonuçlar sunabilir.

Bir örnek vermek gerekirse, ChatGPT’ye “Tom Cruise’un annesi kim?” diye sorduğunuzda size doğru bir şekilde “Mary Lee Pfeiffer” yanıtını verecektir. Ancak “Mary Lee Pfeiffer’ın oğlu kim?” diye sorduğunuzda “bilmiyorum” yanıtını alabilirsiniz. Bu duruma “reversal curse” ismi verilir ve gösteriyor ki ağın bilgisi bazen tek yönlü olabilir ve istikrarsız sonuçlara yol açabilir.

Dolayısıyla, parametrelerin ağdaki işleyişi ve ağın tüm bileşenlerinin birlikte nasıl çalıştığı tam anlaşılamamıştır. Ancak sonuçları değerlendirerek ve optimize ederek GPT-1, GPT-2 gibi modeller geliştirmiş bulunuyoruz.

Sonuç olarak, LLM’leri anlaşılamayan, insan yapımı eserler olarak tanımlayabiliriz. Geleneksel mühendislik ürünleri gibi değiller; yani nasıl çalıştığını her yönüyle anladığımız bir otomobil gibi değil. Bunlar, çok sayıda optimizasyon aşamasından süzülerek ortaya çıkmış sinir ağları ve işleyiş mekanizmalarını tam olarak kavrayabilmiş değiliz.

“Interpretability” yani “Yorumlanabilirlik” ise, bu parametrelerin ve sinir ağının bileşenlerinin birlikte nasıl çalıştıklarını anlamaya çalışan bir araştırma alanıdır. Fakat dediğim gibi, sinir ağının iç yapısı büyük ölçüde bir gizemini korumaktadır.

Asistanı Eğitme ( Fine — Tuning)

Fine-tuning, bir yapay zeka modelinin belirli bir uygulama alanında daha iyi performans göstermesini sağlamak için o alana özel veri setleriyle ilave eğitim yapılmasını ifade eder. Mesela, geniş bir dil anlayışına sahip bir yapay zeka modeli, tıp alanında kullanılmak üzere tıbbi terimlerle ve metinlerle eğitilebilir. Böylece model, genel dil işleme becerilerinin yanı sıra tıbbi dili anlama ve o alanla ilgili soruları yanıtlama konusunda da uzmanlaşır. Bu süreç ile model, belirli bir konu alanında daha doğru ve relevan bilgi sağlayacak şekilde ayarlanır.

GPT gibi evrensel bir dil modeli fine-tuning ile çeşitli disiplinlere has terminolojiyi ve konseptleri öğrenerek, yazılım geliştirme, hukuk veya mali danışmanlık gibi spesifik görevlerde daha verimli hale getirilebilir. Örneğin, bir GPT modeli yazılım geliştiricilere yardımcı olacak şekilde programlama dilleri, kod yapısı ve algoritmaları anlamak üzere özelleştirilebilir.

Fine-tuning işlemi sayesinde, bu model kod hataları bulma, programlama önerileri yapma veya algoritma sorunlarını çözme gibi özel görevlerde insan benzeri yardım sunabilir.

Bu yaklaşım, modelin daha önceden sahip olduğu genel bilgi ve yeterliliklere ek olarak, derinlemesine ve detaylı bilgi gerektiren alanlarda da güçlü sonuçlar almasını mümkün kılar. Fine-tuning ile geliştirilen model, hem genel bağlamı anlamada yetkinlik gösterir hem de alanında daha doğru ve kişiselleştirilmiş yanıtlar sunabilir.

LLM Nasıl Eğitilir?

Large Language Models (LLM) eğitim sürecini en basit şekilde ifade edersek, üç ana adımda özetleyebiliriz

İNDİR, EĞİT, ÖZEL INSTRUCTIONS YAZ

  1. İndir: İlk olarak, geniş çapta dil verilerini içeren veri setlerini toplayın ve modelinizin eğitimi için hazır bir hale getirin.
  2. Eğit: İkinci adımda, modelinizi bu veri setleri üzerinde eğiterek dilin genel yapısını, gramerini ve kullanımını öğrenmesini sağlayın.
  3. Özel Talimatlar Yaz: Son olarak, modelinizi bir alana özelleştirmek için özel talimatlar ve rehberler yazın. Bu şekilde model, belirli görevleri yerine getirirken daha doğru ve etkili olacaktır.

Fotoğrafta gördüğünüz Pre-Training ve Fine-Tuning kavramlarını biraz açmaya çalışayım.

Pretraining (Önsel Eğitim):

Bu aşama, genel dil anlama yeteneği kazandırmak için geniş bir veri kümesi üzerinde gerçekleştirilir. Model, genellikle büyük metin kümeleri (örneğin, internetteki milyonlarca makale, kitaplar veya sosyal medya verileri) ile önceden eğitilir. Bu süreçte, model dil yapısını, kelime ilişkilerini, cümle yapılarını anlama gibi genel dil özelliklerini öğrenir.

Fine-tuning (Spesifik Eğitim):

Bu aşama ise önsel eğitimden elde edilen genel bilgiyi, belirli bir görev veya alan için daha spesifik hale getirmek üzere yapılır. Örneğin, bu genel dil modeli daha sonra özel bir alan için (örneğin, tıp, hukuk veya finans gibi) daha iyi performans gösterebilmesi için ilgili alana özgü veri setleriyle veya görevleriyle eğitilir. Bu sayede, genel dil modeli özel alandaki terminoloji, bağlamlar veya gereksinimlerle daha uyumlu hale gelir ve belirli bir alandaki görevleri daha iyi gerçekleştirebilir hale gelir.

Beynimizin İki Farklı Düşünme Tarzı: System 1 ve System 2

İnsan beyni, karmaşık ve çeşitli düşünme biçimlerine sahiptir. Bu biçimler sıklıkla “System 1” ve “System 2” olarak iki ayrı sistem şeklinde tanımlanır. Nobel ödüllü psikolog Daniel Kahneman’ın “Thinking, Fast and Slow kitabında derinlemesine ele aldığı bu kavramlar, bizim nasıl düşündüğümüzü ve karar verdiğimiz süreçleri anlamamıza yardımcı olur.

System 1, hızlı, otomatik ve çaba gerektirmeyen düşünceler ve kararlar için kullanılan sezgisel sistemdir. Örneğin, yüz ifadesinden birinin mutlu olduğunu anlamak ya da basit bir matematik işlemi gibi görevler System 1 tarafından yönetilir. Bu sistem, birçok günlük işlevin hızlı ve verimli bir şekilde yürütülmesini sağlar.

Buna karşın, System 2 daha yavaş, daha bilinçli, çaba gerektiren ve analitik düşünmeyi içeren işlemlerden sorumludur. Kritik düşünme, karmaşık kararlar verme ve zor problemleri çözmek gibi durumlarda devreye girer. System 2, bizi dikkatli düşünmeye ve bir durumu ayrıntılı bir şekilde değerlendirmeye zorlar.

Large Language Models (LLM) gibi yapay zeka sistemleri bu insan düşünce sistemleri arasındaki ilişkiden esinlenmiştir. Modern LLM’ler, büyük ölçüde System 1 benzeri işlevsellik gösterirler çünkü hızlı ve otomatik olarak kelime ve cümle oluşturma yeteneklerine sahiptirler; verilen girdilere dayalı olarak anında dil üretimi yapabilirler. Ancak, bu modeller hala System 2 tarzı düşünmeyi tam olarak emüle edemezler; yani, gerçek insanlar gibi karmaşık analizler yapma veya derinlemesine mantıklı düşünme yetenekleri sınırlıdır.

Örneğin, modern bir LLM hızlı ve etkili bir şekilde metin oluşturabilir, ancak verilen bir problemi analiz ederken insan seviyesinde stratejik düşünme ve derin anlam çıkarma yeteneğine sahip değildir. İlerleyen yapay zeka araştırmaları, LLM’lerin System 2 tarzı işlevleri daha iyi taklit edebilmesi için devam etmektedir, ama şu an için bu sistemlerin sağladığı sezgisel ve yüzeyel düzeyde cevap verme becerisi, insan düşüncesinin karmaşıklığı ve çeşitliliği karşısında yine de sınırlı kalıyor.

Yapay zekanın sonraki nesillerinin, hem System 1 benzeri spontan ve doğaçlama yeteneklerini hem de System 2 benzeri kritik ve derinlemesine düşünme becerilerini entegre edebilme kapasitesine ulaşması, bilim insanları ve mühendisler için hala ulaşılması gereken bir hedeftir. Bu entegrasyon gerçekleştiğinde, yapay zeka sistemlerinin insan zekasının analitik ve sezgisel tarafları arasında daha iyi bir köprü kurabilecek ve gerçek dünyadaki problemlere daha bütünsel yaklaşımlar sunabileceği öngörülmektedir.

Alpha Go

AlphaGo Google DeepMind tarafından geliştirilen Go oyununu oynayan bir program. Ekim 2015'te, 19x19'luk tahtada profesyonel bir go oyuncusunu avantaj verilmeden yenen ilk bilgisayar programı olmayı başardı. Peki bunun hikayesine kısa bir göz atalım mı?

İlk olarak, insanların oyun hamlelerini analiz ederek ve binlerce oyunu inceleyerek Go oyununu öğrendi. Ama halen insanları bu oyunda yenemiyordu. Daha sonra ise kendi kendine oynayarak ve tecrübelerinden öğrenerek kendini geliştirdi. Bir diğer deyişle self-improvement yöntemini kullandı ve bu sayede insan zekasını yendi.

Yapay zeka sistemlerinde kullanılan pek çok öğrenme metodolojisi, bir tür ödül (reward) veya ceza (punishment) sistemine dayanır. Bu sistemler, belirli bir görevi başarmak için nasıl davranacaklarını öğrenirken, yapılan hamlelerin sonuçlarına dayalı olarak bir ödül fonksiyonuyla çalışırlar.

AlphaGo gibi sistemlerde de benzer bir mekanizma vardır. AlphaGo’nun eğitimi, bir tür ödül fonksiyonu kullanarak gerçekleşir. Algoritma, Go oyununda başarılı veya başarısız olmayı değerlendirmek için bir ödül fonksiyonu kullanır. Bu fonksiyon, hamlelerin oyunun sonucuna etkisini değerlendirir ve sistemi yönlendiren bir geribildirim (feedback) sağlar.

GPT Store ve LLM OS konularına buradaki yazımda değinmiştim. Eğer isterseniz göz gezdirebilirsiniz. Andrej geri kalanında prompt injection ve jailbreak metotlarından bahsediyor. Bunları da ayrı bir yazı olarak paylaşmaya çalışacağım. Okuduğunuz ve zaman ayırdığınız için çok teşekkür ederim.

--

--

Barış Güleç
Kodcular

AI Engineer Intern in Barcelona | Computer Engineering Student 3/4 | Researcher | CookieAI | Google Core Team Member