Bir düzine kitabı elle özetlemeye başladım ve her özetin haftalarımı alacağını fark ettim. Sonra bu yapay zeka devriminin gerçekleştiğini hatırladım ve bu sulara atlamayı çoktan geride bıraktığıma karar verdim.
Büyük metinleri özetlemek için büyük dil modellerinin (LLM) kullanımını araştırmaya başladığımda, bunun nasıl yapılacağına dair net bir yön bulamadım .
Bu kılavuz, yukarıda belirtilen değişkenlerin ayrıntılarını belirleme ve test etme sürecime ilişkin bazı ayrıntılar sunmaktadır.
Sıralama verilerinin tamamını, izlenecek yolları ve sonuç özetlerini GitHub'da bulabilirsiniz .
Bu terimlerden bazıları bağlama bağlı olarak farklı şekillerde kullanılmaktadır (kelime oyunu değildir).
Büyük Dil Modeli (LLM) : (AKA Modeli) İnsan dilini anlamak ve oluşturmak için devasa veri kümeleri üzerinde eğitilmiş bir tür Yapay Zeka.
Örnek : OpenAI'nin dünyayı kasıp kavuran GPT3.5 ve GPT4'ü. (Bizim durumumuzda Hugging Face'te bulunan açık kaynaklı ve/veya ücretsiz indirilebilir modeller arasından seçim yapıyoruz.)
Alma Artırılmış Üretim (RAG) : Meta AI tarafından geliştirilen , LLM'nin belirli bir kullanıcı sorgusuna (Belge Q/A) bir yanıt bulmak için belgeleri aradığı bir veritabanında depolamaya yönelik bir teknik.
Kullanıcı Talimatları: (AKA İstemi veya Bağlam) kullanıcı tarafından sağlanan sorgudur.
Örnek: “Aşağıdaki metni özetleyin: { text }
”
Sistem İstemi: Kullanıcı isteminden önce verilen, yardımcınızın kişiliğini şekillendirmeye yardımcı olan özel talimatlar.
Örnek: "Yardımsever bir AI Asistanısınız."
Bağlam: Kullanıcı talimatları ve muhtemelen bir sistem istemi ve muhtemelen önceki soru/cevap çiftleri turları. (Önceki Soru/Cevap çiftlerine yalnızca bağlam adı da verilir).
Bilgi İstemi Stili : Bunlar, bir LLM'nin kullanıcı talimatları, sistem istemi ve önceki sorulardaki bağlam arasındaki farkı tanımak için eğitildiği özel karakter kombinasyonlarıdır.
Örnek: <s>[INST] {systemPrompt} [INST] [INST] {previousQuestion} [/INST] {answer} </s> [INST] {userInstructions} [/INST]
7B: Belirli bir modeldeki parametre sayısını belirtir (daha yüksek, genellikle daha iyidir). Parametreler, modelin eğitim sırasında öğrendiği ve tahminlerde bulunmak için kullanılan iç değişkenlerdir. Benim amaçlarım açısından, 7B modellerinin 12 GB VRAM'li bir GPU'ma sığması muhtemeldir.
GGUF: Bu, tüketici donanımı (CPU/GPU) için tasarlanmış LLM'ye özel bir formattır. İlgilendiğiniz model ne olursa olsun, PrivateGPT'de kullanmak için onun GGUF versiyonunu (genellikle TheBloke tarafından yapılır) bulmalısınız.
Q2-Q8 0, K_M veya K_S: Bir GGUF deposunun dosyalarına göz atarken aynı modelin farklı versiyonlarını göreceksiniz. Daha yüksek bir sayı, daha az sıkıştırılmış ve daha iyi kalite anlamına gelir. K_M'deki M "Orta", K_S'deki S ise "Küçük" anlamına gelir.
VRAM: Bu, GPU'nuzun bellek kapasitesidir. Tamamen GPU'ya yüklemek için mevcut VRAM'ınızdan daha küçük boyutlu bir model isteyeceksiniz.
Belirteçler: Bu, LLM'nin dili tarttığı metriktir. Her jeton yaklaşık 4 karakterden oluşur.
PrivateGPT (pgpt), kullanıcıların LLM'yi evde kendi donanımlarıyla kullanmalarına olanak tanıyan bir kullanıcı arayüzü ve programlanabilir API sağlayan açık kaynaklı bir projedir . RAG destekli Belge Soru-Cevap için belgeleri kendi yerel veritabanınıza yüklemenize olanak tanır.
PrivateGPT Belgeleri - Genel Bakış :
PrivateGPT , özel, bağlama duyarlı yapay zeka uygulamaları oluşturmak için gereken tüm yapı taşlarını içeren bir API sağlar. API, OpenAI API standardını takip edip genişletir ve hem normal hem de akış yanıtlarını destekler. Bu, OpenAI API'yi araçlarınızdan birinde kullanabiliyorsanız, bunun yerine kendi PrivateGPT API'nizi kod değişikliği olmadan ve eğer PrivateGPT'yi
local
modda çalıştırıyorsanız ücretsiz olarak kullanabileceğiniz anlamına gelir.
PrivateGPT kullanıcı arayüzünü\RAG kullanarak kitap bölümlerine sorular sorarak başladım.
Daha sonra özetleme için metni önceden seçmeyi denedim. Bu, sonuçlarımın ne kadar büyük bir fark göstereceğini görmek için 1. Tur sıralamaları için ilham kaynağıydı. (Önceden Seçilmiş Bölümlerin Özetlenmesi.)
Daha sonra bu görevi hangi modellerin en iyi şekilde yerine getirebileceğini bulmak istedim, bu da Mistral-7B-Instruct-v0.2'nin açık ara kazanan olduğu 2. Tur sıralamasına yol açtı.
Daha sonra bilgi istemi stillerini sıralayarak ve tam olarak beklenen bilgi istemi stilini elde etmek için kod yazarak bu modelden en iyi sonuçları almak istedim.
Bundan sonra elbette hangisinin en iyi performansı göstereceğini görmek için çeşitli sistem komutlarını test etmek zorunda kaldım.
Daha sonra, benim tarafımdan en az son işlem gerektiren özetler oluşturmak için en iyi istemin ne olduğunu belirlemek için birkaç kullanıcı istemini denedim.
Sonuçta bu tür testler her LLM için ve süreçlerimizdeki herhangi bir iyileştirmenin etkinliğini belirlemek için yapılmalıdır. Bana göre, her model ancak en ideal koşulları hedeflendikten sonra birbirlerine göre uygun şekilde sıralanabilir.
Çeşitli LLM çeşitlerini test etmeye başladığımda mistral-7b-instruct-v0.1.Q4_K_M.gguf
PrivateGPT'nin varsayılan kurulumunun bir parçası olarak geldi (CPU'nuzda çalışacak şekilde yapıldı). Burada Q8_0 çeşitlerini tercih ettim.
Aynı görev için 50'den fazla farklı LLM denemiş olsam da Mistral-7B-Instruct hala en iyiler arasında, özellikle v0.2 piyasaya çıktığından beri daha iyisini bulamadım.
TLDR: Mistral-7B-Instruct-v0.2 - özetleme görevlerinde şu anki liderim.
Soru-Cevap yaparken, veritabanına daha küçük veri yığınları yüklerken ve her seferinde temiz bir sayfa açarak başladığımda çok daha iyi sonuçlar elde ettiğimi hemen keşfettim. Böylece PDF'yi Soru-Cevap amacıyla bölümlere ayırmaya başladım.
İlk analizim için aşağıdaki görevler için 5 farklı LLM'yi test ettim:
Modeli | Değerlendirme | Arama Doğruluğu | Karakterler | Saniye | BS | Dolgu | Kısa | İyi Lisans |
---|---|---|---|---|---|---|---|---|
hermes-trismegistus-mistral-7b | 68 | 56 | 62141 | 298 | 3 | 4 | 0 | 6 |
synthia-7b-v2.0 | 63 | 59 | 28087 | 188 | 1 | 7 | 7 | 0 |
mistral-7b-talimat-v0.1 | 51 | 56 | 21131 | 144 | 3 | 0 | 17 | 1 |
kolektifbiliş-v1.1-mistral-7b | 56 | 57 | 59453 | 377 | 3 | 10 | 0 | 0 |
kai-7b-talimat | 44 | 56 | 21480 | 117 | 5 | 0 | 18 | 0 |
Bu ilk turda bölüm içeriğini çeşitli konulara göre bölümlere ayırdım.
Her biri 900-14000 karakter (veya 225-3500 jeton).
NOT: Şimdilik çok sayıda geniş bağlam modelinin yayınlanmasına rağmen, daha küçük bağlamın daha iyi özetler sağlayacağına inanıyorum. Özetleme görevi başına 2750 jetonun (11000 karakter) fazlasını tercih etmiyorum.
Özetlerin Soru-Cevap'tan çok daha iyi performans göstermesi şaşırtıcı değil ama aynı zamanda daha iyi hedeflenmiş bir bağlama da sahiplerdi.
İsim | Gol | Oluşturulan Karakterler | OG'den % Fark | Oluşturulacak Saniyeler | Kısa | Çöp | BS | Doldurmak | Sorular | Detaylı |
---|---|---|---|---|---|---|---|---|---|---|
hermes-trismegistus-mistral-7b | 74 | 45870 | -61 | 274 | 0 | 1 | 1 | 3 | 0 | 0 |
synthia-7b-v2.0 | 60 | 26849 | -77 | 171 | 7 | 1 | 0 | 0 | 0 | 1 |
mistral-7b-talimat-v0.1 | 58 | 25797 | -78 | 174 | 7 | 2 | 0 | 0 | 0 | 0 |
kai-7b-talimat | 59 | 25057 | -79 | 168 | 5 | 1 | 0 | 0 | 0 | 0 |
kolektifbiliş-v1.1-mistral-7b | 31 | 29509 | -75 | 214 | 0 | 1 | 1 | 2 | 17 | 8 |
Tüm verileri ve sıralamaları Google Dokümanlar'da veya GitHub'da bulabilirsiniz: QA Puanları , Özet Sıralamalar .
Ben yine 7B modellerinin Q8 versiyonlarını tercih ediyorum.
Mistral 7b Instruct v0.2'nin yayınlandığını bulmak yeni bir test turuna değdi.
Ayrıca istem stilini test etmeye karar verdim. PrivateGPT, Mistral istemiyle birlikte paketlenmedi ve Mistral istemi, Llama2 İstemi'ne benzese de, varsayılan (lama indeksi) istemiyle daha iyi performans gösteriyor gibi görünüyordu.
Yalnızca özetler, Soru-Cevap, kitap özetleme açısından daha az verimlidir.
Modeli | % Fark | Gol | Yorum |
---|---|---|---|
Synthia 7b V2 | -64.43790093 | 28 | İyi |
Mistral 7b Instruct v0.2 (Varsayılan İstem) | -60.81878508 | 33 | Vİyi |
Mistral 7b Talimatı v0.2 (Llama2 İstemi) | -64.5871483 | 28 | İyi |
Tess 7b v1.4 | -62.12938978 | 29 | Daha Az Yapılandırılmış |
Llama 2 7b 32k Talimat (Varsayılan) | -61.39890553 | 27 | Daha Az Yapılandırılmış. Yavaş |
Tüm verileri ve sıralamaları Google Dokümanlar'da veya GitHub'da bulabilirsiniz.
Önceki turda Mistral 7b Instruct v0.2'nin varsayılan komut isteminde llama2'ye göre çok daha iyi performans gösterdiğini fark ettim.
Aslında mistral istemi lama2'ye oldukça benziyor ama tam olarak aynısı değil.
system: {{systemPrompt}} user: {{userInstructions}} assistant: {{assistantResponse}}
<s> [INST] <<SYS>> {{systemPrompt}} <</SYS>> {{userInstructions}} [/INST]
<s>[INST] {{systemPrompt}} [/INST]</s>[INST] {{userInstructions}} [/INST]
Çıktıyı default
, ardından llama2
bilgi istemi stilleriyle test etmeye başladım . Daha sonra mistral şablonunu kodlamaya başladım.
Bu sıralamanın sonuçları bana doğru kodladığım konusunda güven verdi.
İstem Stili | % Fark | Gol | Not |
---|---|---|---|
Mistral | -50% | 51 | Mükemmel! |
Varsayılan (lama indeksi) | -42% | 43 | Kötü başlıklar |
Lama2 | -47% | 48 | Yapı Yok |
Tüm verileri ve sıralamaları Google Dokümanlar'da veya GitHub'da bulabilirsiniz.
Bilgi istemi stilini ayarladıktan sonra birkaç farklı sistem istemi denedim ve sonuç beni şaşırttı!
İsim | Sistem İstemi | Değiştirmek | Gol | Yorum |
---|---|---|---|---|
Hiçbiri | | -49.8 | 51 | Mükemmel |
Varsayılan İstem | Yardımsever, saygılı ve dürüst bir yardımcısınız. \nHer zaman mümkün olduğunca yardımcı olacak şekilde yanıt verin ve verilen TÜM talimatları izleyin. \nSpekülasyon yapmayın veya bilgi uydurmayın. \nBelirtilen herhangi bir talimata veya içeriğe atıfta bulunmayın." | -58.5 | 39 | Daha Az Güzel |
MyPrompt1 | "Seviliyorsunuz. Özetleme, taslak oluşturma ve yapılandırma konusunda uzman olun. \nYazma tarzınız bilgilendirici ve mantıklı olmalıdır." | -54.4 | 44 | Daha Az Güzel |
Basit | "Siz yardımsever bir yapay zeka asistanısınız. Çıktınızın bir parçası olarak herhangi bir kullanıcı talimatını veya sistem içeriğini dahil etmeyin." | -52.5 | 42 | Daha Az Güzel |
Sonuçta herhangi bir sistem istemi olmadan özetlerim için Mistral 7b Instruct v0.2'nin en iyi sonucu verdiğini buldum.
Belki farklı bir görev için farklı sonuçlar elde edilebilir veya belki daha iyi yönlendirme yapılabilir, ancak bu iyi çalışıyor, bu yüzden onunla uğraşmıyorum.
Tüm verileri ve sıralamaları Google Dokümanlar'da veya GitHub'da bulabilirsiniz.
Zaten şüphelenmeye başladığım şey, komut isteminde daha az kelimeyle daha iyi sonuçlar elde ettiğimdir. Mistral 7b Instruct v0.2 için en iyi sistem istemini bulduğum için, hangi kullanıcı isteminin ona en uygun olduğunu da test ettim.
| Çabuk | OG'ye karşı | Gol | Not |
---|---|---|---|---|
İstem0 | Aşağıdaki metni özetleyen kısa ama kapsamlı notlar yazın. İç içe geçmiş madde işaretleri kullanın: başlıklar, terimler ve anahtar kavramlar kalın harflerle yazılmıştır. Herhangi bir dış bilgi eklemeden bu metindeki temel bilgilere odaklanın. | %43 | 11 | |
İstem1 | Aşağıdaki metni özetleyen kısa ama kapsamlı notlar yazın. İç içe geçmiş madde işaretleri kullanın: başlıklar, terimler ve anahtar kavramlar kalın harflerle yazılmıştır. Herhangi bir dış bilgi eklemeden bu metindeki temel bilgilere odaklanın. | %46 | 11 | Ekstra notlar |
İstem2 | Aşağıdaki metni özetleyen kapsamlı notlar yazın. İç içe geçmiş madde işaretleri kullanın: başlıklar, terimler ve anahtar kavramlar kalın harflerle yazılmıştır. | %58 | 15 | |
İstem3 | Aşağıdaki metnin önemli kısımlarını özetleyen kısa, madde işareti notları oluşturun. Okunabilirliği sağlamak için boşluklar da dahil olmak üzere kalın harflerle başlık terimleri ve anahtar kavramlarla birlikte iç içe geçmiş madde işaretleri kullanın. Tekrarlardan Kaçının. | %43 | 10 | |
İstem4 | Aşağıdaki metni özetleyen kısa notlar yazın. İç içe geçmiş madde işaretleri kullanın: başlıklar, terimler ve anahtar kavramlar kalın harflerle yazılmıştır. | %41 | 14 | |
İstem5 | Aşağıdaki metni özetleyen kapsamlı ancak kısa notlar oluşturun. İç içe geçmiş madde işaretleri kullanın: başlıklar, terimler ve anahtar kavramlar kalın harflerle yazılmıştır. | %52 | 14 | Ekstra notlar |
Tüm verileri ve sıralamaları Google Dokümanlar'da veya GitHub'da bulabilirsiniz.
Belki 11b veya 30b modellerini destekleyebilen daha güçlü donanımlarla daha açıklayıcı yönlendirmelerle daha iyi sonuçlar elde edebilirim. Mistral 7b Instruct v0.2 ile bile bazı yaratıcı talimatları denemeye hâlâ açığım, ancak şimdilik mevcut sürecimi geliştirmekten mutluyum.
Aşağıdaki metni özetleyen kapsamlı notlar yazın. İç içe geçmiş madde işaretleri kullanın: başlıklar, terimler ve anahtar kavramlar kalın harflerle yazılmıştır.
Bu durumda kapsamlı, "özlü"den, hatta "kapsamlı ama özlü"den daha iyi performans gösterir.
Ancak bunun kullanım durumunuza bağlı olacağı konusunda uyarıyorum. Aradığım şey, önemli bilgileri kapsayan oldukça yoğunlaştırılmış ve okunabilir notlar.
Esasen, orijinali okumamış olsaydım, her ayrıntıyı olmasa da hangi bilgileri aktardığını yine de bilmem gerekirdi. Orijinalini okumuş olsam bile sonradan çoğunluğunu hatırlamayacağım. Bu notlar ana konulara hızlı bir referans niteliğindedir.
Bu testlerden edindiğim bilgileri kullanarak 539 sayfalık ilk kitabımı 5-6 saatte özetledim!!! İnanılmaz!
Özet başına haftalar harcamak yerine ilk 9 kitap özetimi yalnızca 10 günde tamamladım.
Burada yayınlanan metinlerin her biri için CopyLeaks'in sonuçlarını aşağıda görebilirsiniz.
Hele ki bunun kâr amaçlı değil eğitim amaçlı olduğunu düşünürsek bu rakamların kabul edilebilir olduğunu düşünüyorum.
Kitap | Modeller | Karakter Farkı | Birebir aynı | Küçük değişiklikler | Başka kelimelerle ifade edilmiş | Toplam Eşleşen |
---|---|---|---|---|---|---|
Doğu Bedeni Batı Zihni | Synthia 7Bv2 | -75% | %3,5 | %1,1 | %0,8 | %5,4 |
İyileştirme Gücü Vagus Siniri | Mistral-7B-Instruct-v0.2; SynthIA-7B-v2.0 | -81% | %1,2 | %0,8 | %2,5 | %4,5 |
Ayurveda ve Zihin | Mistral-7B-Instruct-v0.2; SynthIA-7B-v2.0 | -77% | %0,5 | %0,3 | %1,2 | %2 |
Travmadan Hayatta Kalanların Parçalanmış Benliklerini İyileştirmek | Mistral-7B-Instruct-v0.2 | -75% | | | | %2 |
Güvenli Bir Üs | Mistral-7B-Instruct-v0.2 | -84% | %0,3 | %0,1 | %0,3 | %0,7 |
Vücut Skoru Korur | Mistral-7B-Instruct-v0.2 | -74% | %0,1 | %0,2 | %0,3 | %0,5 |
Tam Çakralar Kitabı | Mistral-7B-Instruct-v0.2 | -70% | %0,3 | %0,3 | %0,4 | %1,1 |
50 Yıllık Bağlanma Teorisi | Mistral-7B-Instruct-v0.2 | -70% | %1,1 | %0,4 | %2,1 | %3,7 |
Yetişkinlerde Bağlanma Bozuklukları | Mistral-7B-Instruct-v0.2 | -62% | %1,1 | %1,2 | %0,7 | %3,1 |
Psikoloji Binbaşı Arkadaşı | Mistral-7B-Instruct-v0.2 | -62% | %1,3 | %1,2 | %0,4 | %2,9 |
Hayatınızdaki Psikoloji | Mistral-7B-Instruct-v0.2 | -74% | %0,6 | %0,4 | %0,5 | %1,6 |
Özet başına haftalar harcamak yerine ilk 9 kitap özetimi yalnızca 10 günde tamamladım. Parantez içinde orijinalin sayfa sayısı verilmiştir.
Adımlarımı daha yakından takip etmek istiyorsanız GitHub'da komut dosyaları ve örnekler içeren kılavuza göz atın.
Artık süreçlerimi iyileştirdiğime ve hızlı formatlarla çalışma konusunda kendime güvendiğime göre, daha fazla test yapacağım. Aslında daha fazla test ve sıralama yaptım (sonrakileri yayınlayacağım), ancak elbette tekrar daha fazla test yapıp öğrenmeye devam edeceğim!
Hala yapay zeka ile gerçekleştirdiğiniz görevde en iyi sonuçları elde etmek istiyorsanız kendi deneylerinizi yapıp neyin en iyi sonucu verdiğini görmeniz gerektiğine inanıyorum. Yalnızca popüler model sıralamalarına güvenmeyin, bunları kendi araştırmanıza rehberlik etmek için kullanın.
Ayrıca burada görünür.