Large Language Model (LLM) Nedir? —# 101

What is Large Language Model(LLM)? #101— AI Series

Leonidas Gorgo
11 min read1 hour ago
Large Language Model

Large Language Model — Büyük Dil Modelleri ile ilgili bir yazı yazmanın yapay zekayı anlamak ve anlatabilmek adına önemli bir yer teşkil ettiğini düşündüğümden beri (-ki temeli bu bunu bir şekilde anlamamız gerekiyor :) nasıl anlatmam gerektiği ile ilgili kafamda oturmayan şeyler vardı açıkçası benim için ve dünya içinde yeni bir konu, bu noktada araştırmalarımı biraz derinleştirmek istedim açıkçası. Andrej Karpathy araştırmaları ve kendini ifade etme tarzı onun yapay zeka toplulukları için yapay zeka firmalarından daha fazla emek dökmesi ve gerçekten iyi bir referans olduğuna inancım; bilgisayar ve veri bilimleri adına Türkçe içerik üretme çabamla birleşince, biraz daha beni körükledi açıkçası umarım sizler içinde faydalı bir yazı olur.

Bu konuyu üç ana kısıma ayıracak olursak;

  • Büyük dil model nedir — what is LLM? — #101
  • Büyük dil modellerinin geleceği — future of LLM — #102
  • Büyük dil modellerinin güvenliği — LLM security — #103

Large Language Model

Large Language Model — Büyük dil modelli ve ya modellerinin ne olduğu ile başlayacak olursak.

Aslında iki temel dosya üzerinde oluşur. Birinci dosya bu parametrelerin olduğu dosya ve o parametreleri yorumlayan kaynak kodu dosyası.

Meta-AI’nin açık kaynak olarak yayınlamış olduğu llama-2–70b büyük dil modelli.

Örnek olarak aldığımız bu modelde;

Serisi llama olan bu modelin 2. yenilemesi ve bu serinin 70 milyar parametreli büyük dil modeli(llama-2–70b).

yani bu dil modelinin llama serisi 3. yenilemesi 10 milyar parametreli olanı 35 miyar olanı, 5 milyar, 12 milyar …vb olanları da mevcut.

Bu model Meta-AI tarafından açık olarak yayınlanmıştır. Böylelikle herkes kendi başına çok kolay bir şekilde bu modeli çalıştırabilecek yada yorumlanabilecekken, ChatGPT türü bir input prompt destekli bir web arayüzü ile kullanılan OpenAI tarafından yayınlanan ve model mimarisi hiç bir şekilde erişemediğiniz bir yapıdan farklı olan ve sadece iki dosyadan oluşan llama-2–70b büyük dil modeline erişiminiz var ve bu erişim o modelin çalışma prensipleri anlama ve yorumlayabilme en azından arkasında dönen dolapları bilmemize olanak sağlıyor.

Parametre dediğimiz şey ise aslında nöral ağın ağırlıklarıdır. Bu örnek 70 milyar parametreli bir model ve bu parametrelerin her biri 2 byte olarak depolanıyor bu nedenle 70 milyar x 2 byte = 140 GB ortalama bir değer çıkıyor yani dosyanın boyutu 140 GB. 2 byte olmasının sebebi ise veri türü olarak float16 kullanması.

Bu parametreler ve bu kod parçası (c, python…vb) ile birlikte her hangi bir başka bir şeye hatta internete bile ihtiyaç duymadan çalıştırabilirsiniz.

Peki her şey bu kadar kolay mı?

Bu iki dosyayı al eğitilmiş parametrelerle başka hiç bir şeye ihtiyaç duymadan çalıştır, peki birde buz dağının görünmeyen yüzü; Bu parametreler nereden ve nasıl elde ediliyor? Bu dilin eğitim sürecinden kastımız ne?

Onları eğitmek daha karmaşıktır. Bunu tüm dijital veriyi etiketleyip sıkıştırmak gibi düşünün.

Training them is more involved. Think of it like compressing the internet.

Open source bir kaynak olan örneğimizde en azından neyin nasıl olduğuna dair bir fikir sahibi en azından olabiliyoruz ve eğitimi sürecinde ki gereksinimlerini anlayabiliyoruz.

Yukarıdaki resimdeki llama-2–70b için verilen örnek eğitim senaryosu için;

  • Yaklaşık İnternet’ten 10 TB boyutunda bir veri derlediğimiz düşününün. Bu veriyi vereceğimiz yada istediğimiz parametreler ışığında toplayan bir bot programla saatler içinde kaba haliyle toplamamız mümkün.
  • Daha sonra bu örnekte olduğu gibi 10 TB internetten topladığımız dummy text veriyi içe geçecek şekilde ilişkilendirerek eğitmemiz gerekiyor. Bu bir nevi sıkıştırma gibi bu eğitim ve Meta-AI bu eğitimin (6,000 GPUs for 12 days, ~$2M~1e24 FLOPS) en az 6000 GPUs işlem gücü ile sıkıştırılarak işlenmesinin 12 gün ve 2 milyon dolara harcanarak ortaya çıktığını söylüyor. Bu 140 GB’lık parametre dosyasının oluşması bu kadar maliyet ve efor isteyen bir durum. Ancak oluşan bu yorumlanarak sıkıştırılmış ve orijinal halinden neredeyse 100 kat daha küçük hale getirilmiş dosya bir zip dosyası tutarlığına(lossless compression — kayıpsız sıkıştırma) sahip değildir. Bir zip dosyası, 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.

Neural Network — Nöral Ağlar

neural network

Daha önce oluşturduğumuz parametrelerle beslenen bu Neural network — Nöral ağların temel işlevi, bir sonraki veriyi ö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.)

Nöral ağların bir kısma problemi de budur. Doğru cevap mı yoksa olası en yüksek zorunlu cevap mı?

Sonraki kelime tahmini nöral sistemi zorlar ve bazen mantıklı değildir, bir sonraki kelimeyi tahmin etmenin çok basit bir şey olduğunu düşünebilirsiniz, aslında çok ciddi bir hedef, nöral ağ sizi dünya hakkında daha çok öğrenmeye zorluyor.

Wikipedia’ dan her hangi bir rastgele alınmış bir sayfayı inceleyelim. Bu sayfa Ruth Handler hakkında ve nöral ağ gibi olmayı düşünelim size bir miktar kelime verildi ve bir sonraki kelimeyi tahmin etmeye çalışıyoruz ve bu durumda burada çok fazla bilgi içeren içerek kelimeleri kırmızı ile işaretliyorum. Bu nedenle amacınız bir sonraki kelimeyi tahmin etmekse muhtemelen parametreleriniz Ruth Handler hakkında bilmeniz gereken bu bilgilerin çoğunu öğrenmek için onun ne zaman doğduğunu ve ne zaman öldüğünü, kim olduğunu, ne yaptığını …vb şeylerle bir sonraki kelimeyi tahmin etmek ve bu bir sonraki kelimeyi tahmin için aslında tonlarca şey öğreniyorsunuz ve bu bilgileri ağırlıklarına göre sıkıştırıyoruz.

Model çıkarım sürecinin aslında çok basitçe ele aldık ana çıkarımız modelden bir örnek alıp sonra geriye doğru besleriz bir sonraki kelimeyi alıp tekrar beslemeye devam ederiz böylece süreci yenileyebiliriz.

Nöral ağ internet içindeki gezen belgeleri hayal eder :)

Örnekle açıklamak gerekirse bir nöral ağ alın ve çalıştırın ve çıkarım yapmaya başlayın bir nebze ağın web sayfalarını hayal ettiğini ve bu ağın bu sayfalardan eğitildiğini bu ağın metinler üzerinde eğitim aldığını unutmayın. Sağda örnek bir java kodu rüyası, ortadakinde bir amazon ürünü rüyası ve son olarak bir Wikipedia sayfası rüyası olarak düşünün. Eğitimini almış olduğu nöral ağ sanki halüsinasyon görmüş gibi her şeyi tekrar ediyor. Örneğin ISBN numarası muhtemelen var olmadığını düşünmekte fayda var ISBN iki nokta üst üsteden sonra gelen numaranın kabaca uzunlukta bir sayı olduğunu biliyor ve bunun gibi makul görünen her şeyi koyuyor, eğitim veri kümesini ayırıyor. Java kodu içinde benzer bir türevini yapıyor.

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.

Nasıl çalışıyor?

Transformer Neural Network Mimarisi Şeması

Resimde gördüğünüz şema Transformer Neural Network mimarisinin bir şeması. Bu şemadaki her şeyi matematiksel olarak tüm ayrıntıları ile anlıyoruz, tam olarak hangi matematiksel işlemlerin yapıldığını biliyoruz. Bu işin ne kadar tuhaf yanı olarak gözükse de sorun şu 100 milyar parametre tüm sinir ağı boyunca dağılmış durumda ve yani temel olarak bu parametrelerden inşa edilmiş parametreler tüm sinir ağının her ucunda tekrarlanacağı şekilde tekrarları mevcut ve tek bildiğimiz bunların nasıl ayarlanacağı. Bir sonraki kelime tahmin görevinde ise ağı bir bütün olarak daha iyi hale getirmek için parametreleri yinelemeli olarak tekrar ayarlıyoruz, böylelikle parametreleri nasıl optimize edeceğimizi biliyoruz. Bir sonraki kelimeyi tahmin etmek için bunları zaman içinde nasıl ayarlamak gerektiğini biliyoruz. Ancak bu 100 kelime ile başlasaydık 100 milyardan fazla parametre ile karşı karşıya kalacağımızı ve sonra olası en iyi kelime tahmininde ise bu sayının giderek küçüleceği varsayımından emin olup olamayacağını bilemiyoruz.

Çok ünlü bir örnekle devam edecek olursak.

ChatGPT 4 : Tom Cruise’ nin annesi kim ? diye sorarsanız.

Aldığınız cevap: Marry Lee Pfeiffer olacaktır.

ChatGPT 4: Marry Lee Pfeiffer’in oğlu kim? diye sorarsanız.

Aldığınız cevap: Bilmiyorum olacaktır.

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.

Bu bilginin tek boyutlu ve depolandığı gibi olmadığını ve ona belirli bir soru sorduğunuz da tüm farklı yollardan erişebilmeniz gerektiğini düşünmeniz gerekiyor. Tuhaf olan ise bu durumda tek gözlemleyebildiğimiz şeyin ise çalışıp çalışmadığı olduğu.

Sonuç olarak, LLM’leri anlaşılamayan, insan yapımı eserler olarak tanımlayabiliriz.

Nöral ağlar bir mühendislik disiplininde oluşturabileceğiniz başka hiç bir şeye benzemiyorlar. Tıpkı tüm parçalarını anladığımız bir araba gibi değiller, uzun bir optimizasyon sürecinden gelen sinir ağları var bu tam nasıl çalıştıklarını anlamadığımız bu durumu nasıl ifade edebileceğimizi düşünüyorsak yorumlanabilirlik — interpretability veya mekanik yorumlanabilirlik diye bir bilimsel alan ile açıklamak mümkün.

Peki spesifik alanlarda yada işlerde yapay zekayı her seferinde ayni model seti(yani tüm internet) ile tekrar tekrar eğitmek ne kadar mantıklı olabilir. Örneğin sağlık alanıyla ilgili bir yapay zeka modeli oluşturmak isteseydik sanat yada inşaat ile kısmı eğitmek mantıklı mı? Bu giderek bir sorun haline geliyor ve gereksiz kaynak kullanımına yol açıyor.

Fine-tuning (deep learning) into an Assistant

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.

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.

Temel olarak kısa ve aklıma gelen bilgileri yazmaya çalıştım, hatalarım ve yanlışlarım için şimdiden çok özür diler, vakit ayırıp okuduğunuz içinde teşekkür ederim.

--

--

Leonidas Gorgo

@leo#rm -rf ./ | echo "Principal Full Stack Engineer " | echo "We are an army of dreamers, and that's why we're invincible. Subcomandate Marcos"