Introduction
GGUF üzerine hazırladığım bu sunumda amacım, herhangi bir Büyük Dil Modelinin nasıl etkili ve bilinçli kullanılabileceğini göstermekti. Başlangıçta belirli kişiler için hazırlanmış ancak o zaman faydalı olmamış olan bu sunumun, bugün sizler için yararlı olacağını umuyorum. Not: Video içeriği Türkçedir.
Videonun Amacı
Bu video tamamen yeni başlayanlar veya alana yeni girenler için tasarlandı. Ele alınan ana soru "Büyük Dil Modellerini kendi amaçlarım için nasıl kullanabilirim diye düşünebilirim?" Bu videonun amacı yeni başlayanlar için giriş niteliğinde bir kaynak olmak ve bu teknolojiyle tanışmalarını sağlamak.
Eğer bu videoyu izlerken veya izledikten sonra teknoloji ile pratik yapmaz, araştırma yapmaz veya deneyim yaşamazsanız, temel tanışıklık sağlamanın ötesinde size pek yardımcı olmayacaktır. Bu video sadece teknolojinin uygulanışını değil, teknolojinin kendisini de yüzeysel düzeyde açıklamayı amaçlar.
Ön Koşullar
Büyük Dil Modelleri ile AI destekli bir uygulama yapmak zor değildir. Programlama bilmenize bile gerek yok, ancak programlama prensiplerini anlamanız gerekiyor.
İngilizce bilgisi faydalı ancak gerekli değil. Orta veya ileri düzey bilgisayar okuryazarlığına sahip olmak faydalı. Bir sunucu makinenize ihtiyacınız olacak (ben Mac Studio M2 Ultra 64GB RAM'ime uzaktan bağlandım). Bu sunum için sunucumda oobabooga text-generation-webui ve miniconda kuruluydu.
Büyük Dil Modelleri: Ne Oldukları ve Ne Olmadıkları
Büyük Dil Modelleri (LLM'ler) nispeten basit ve anlaşılması kolay bir mimariye sahiptir. Yeni bir teknoloji değiller - modern formları 2017'de "Attention is all you need" makalesinde Transformers kütüphanesinin tanıtılmasıyla ortaya çıktı.
LLM'ler bir yapay zeka türüdür, ancak yapay zeka mutlaka Büyük Dil Modelleri anlamına gelmez. Akıllı ChatBot'lar değildirler, ne de her şeyi kusursuz yapabilen mükemmel varlıklardır.
Sayısız kapalı kaynak (ChatGPT) ve açık kaynak modeller (DialoGPT, BLOOM, Command-R-Plus, LLaMa, Mistral, Qwen, Gemma) vardır, yani sadece bir LLM veya bir LLM türü yoktur. Daha fazla bilgi için: https://huggingface.co/docs/transformers/index
Büyük Dil Modeli Nasıl Eğitilir: Ön-Eğitim ve İnce-Ayar
Tüm eğitim türleri kısa, hazır kod parçacıkları ve sayısız kütüphane ile yapılabilir (LLaMa.c, Unsloth, LLaMa Factory). Yakın zamana kadar eğitim llama.cpp ile CPU'da bile yapılabiliyordu, ancak günümüzde güçlü ekran kartları tüm eğitim türleri için gerekli.
LLM eğitimi iki bölüme ayrılır: Ön-Eğitim ve İnce-Ayar. Ön-Eğitim aşaması genel kullanım ve projeler için hem gereksiz hem de pahalı (finansal ve hesaplama açısından) olarak görülür. Bu nedenle İnce-Ayar tercih edilir - küçük ölçekte eğitim sürecidir, Ön-Eğitim ise sıfırdan tam eğitimdir.
Ön-Eğitim'de kullanılan veri İnce-Ayar verisinden farklıdır. Ön-Eğitim dil ve dil yapısını öğrenmek için ham metin kullanır, İnce-Ayar ise formatlanmış veri kullanır. Çoğu uygulamanın hiçbirine ihtiyacı olmayabilir. Ön-Eğitim bilgi için, İnce-Ayar stil içindir. Bilgi ve bazen stil daha sonra RAG (Retrieval Augmented Generation) gibi tekniklerle enjekte edilebilir.
GGUF: Neden Bu Format?
GGUF formatının diğer formatlara göre önemli avantajları vardır. GGUF tabanlı Büyük Dil Modelleri tek dosyadır, kolayca taşınabilir ve indirilebilir. GGUF dosyaları quantize edildiği için ana model dosyalarından daha hafiftir.
Birçok alışılmadık quantization seçeneği mevcuttur (sadece 8 ve 4 değil, Q8_0, Q4_K_M, IQ3_XS, Q6_K, vb.). Ekran kartı gerektirmezler (olursa daha hızlı çalışırlar), bu nedenle her yerde kabul edilebilir hızlarda çalışırlar. Windows, macOS ve Linux dahil çoklu platform desteği vardır.
GGUF: Temel Bilgiler
GGUF, Apple Silicon çipleri için tasarlanmış ancak diğer ARM çipleri, Intel işlemciler ve benzer ortamlarda da çalışan llama.cpp programının format adıdır. Bu sunumda backend olarak text-webgen-ui kullanacağız.
Anlaşılması gereken temel terimler:
- model: "AI" veya "Büyük Dil Modeli" varlığına verdiğimiz isim
- n-gpu-layers: Ekran kartına yüklenen katman sayısı
- n_ctx: "Context length" olarak da bilinir - modelin işleyebileceği maksimum girdi ve çıktı uzunluğu
- cpu: Sadece işlemci kullanımını zorlar, ekran kartı yok (daha yavaş ama işlevsel)
Bunlar herhangi bir durum için deneyim tabanlı temellerdir. Özel ihtiyaçlarınız farklı terimler ve uygulamalar gerektirebilir. Daha fazla bilgi: https://github.com/oobabooga/text-generation-webui/wiki/04-%E2%80%90-Model-Tab
GGUF: Model Seçim Stratejisi
Uygulamamız için nasıl bir Büyük Dil Modeli seçeriz? Modelin kendisine ve amacımıza karar vermemiz gerekir.
Model Türleri:
- Multimodal: Görüntü işleme yetenekli modeller (LLaMa 3.2)
- Instruct: Kutudan çıktığı gibi insan benzeri iletişime hazır modeller
- Pretrained: Belirli kullanım durumları için ince ayar gerektiren modeller
Temel Değerlendirmeler:
- Context Boyutu (n_ctx): Toplam girdi ve çıktı uzunluğu kapasitesi
- Quantization: Kalite vs. hız ve uyumluluk (Q8 = en yüksek kalite, Q2 = en düşük)
Hızlı başlangıç için: LLaMa 3 serisi (3.1 ve 3.2) günümüzde yaygın kullanılır, geniş kitlelere hitap eder ve çeşitli boyutlarda gelir. Q4_K_M quantization yaygın olarak tercih edilir.
Genel Terminoloji
LLM'leri anlamak için gerekli terimler, GGUF'a özel değil:
Parametre Sayısı (Boyut): Çeşitlilik seviyeleri olarak düşünün - su, şişe suyu, pembe etiketli su, kırmızı kapaklı pembe etiketli su gibi.
Önemli İlkeler:
- LLM sahnesindeki yeni modeller gelişen teknikler nedeniyle genellikle daha iyi performans gösterir
- Alan çok hızlı ilerler
- Yeni her zaman daha iyi demek değildir!
- Parametre sayısı model kalitesini etkiler: Yeni LLaMa 3.2 3B, yeni Mistral 123B kalitesine ulaşamaz
- Quantization türü model karmaşıklığını ve tutarlılığını etkiler
- LLM'ler eğitim verilerinde olmayan şeyleri "bilemezler" - yeni bilgi için RAG gibi diğer teknikler gerekir
Uygulama için Teknik Temel Bilgiler
Bu detayları anladıktan sonra uygulama amaçları için çok daha fazla bilmemize gerek yok.
Temel Teknik Terimler:
- Token: Kolay anlaşılması için hece olarak düşünün, ama tam olarak o değil
- max_new_tokens: Modelin yanıtlayabileceği token sayısı (text-webgen-ui bunu 4096 ile sınırlar)
Gelişmiş Parametreler (sofistike kullanım için): temperature, top_p, top_k, typical_p, min_p, repetition_penalty, frequency_penalty, presence_penalty. Bunların genel kullanım ve uygulamalar için gerekli olmadığını düşünüyorum, ancak LLM'nin nasıl metin ürettiğini etkilerler.
Büyük Dil Modelleri: ChatBot'ların Ötesinde
Büyük Dil Modellerinin kullanımı ChatBot'larla sınırlı değildir. Doğru araçlar ve teknolojik gelişmelerle insanlar gibi davranabilir ve insan benzeri görevler gerçekleştirebilirler.
Chain of Thought, daha sofistike akıl yürütmeyi mümkün kılan böyle bir gelişmedir.
Görev Örnekleri:
- Konuşma geçmişi ile: Müşteri hizmetleri temsilcileri
- Konuşma geçmişi olmadan: Kalite kontrol, içerik yönetimi ve moderasyon
Potansiyel uygulamalar basit soru-cevap etkileşimlerinin çok ötesine uzanır ve karmaşık, hedef odaklı AI yardımı için olanaklar açar.