g1 - Groq’ta Llama-3.1 70B kullanarak o1 benzeri akıl yürütme zinciri oluşturma
(github.com/bklieger-groq)- g1, Groq’ta Llama-3.1 70B ve bir prompt stratejisi kullanarak LLM’in adım adım “düşünmesini” sağlayan o1 benzeri akıl yürütme zincirleri üreten erken aşama bir prototiptir
- OpenAI o1’den farklı olarak tüm akıl yürütme token’larını kullanıcıya gösterir; açık kaynak model kullanır, ancak o1’in tam bir kopyası ya da doğrudan karşılaştırması değil, prompt tabanlı bir akıl yürütme deneyidir
- Her adımda model, bir sonraki akıl yürütme adımına devam etmeyi mi yoksa nihai yanıtı vermeyi mi seçecek şekilde tasarlanmıştır; her adımda başlık ve içerik JSON olarak döndürülür
- Prompt; en az 3 adım, alternatifleri araştırma, kendi hata olasılığını kontrol etme ve en az 3 farklı yöntem kullanma şartı koşar; Strawberry probleminde tek başına Llama-3.1-70B’nin %0, ChatGPT-4o’nun %30 doğruluğuna karşı yaklaşık %70 doğruluk (n=10) göstermiştir
- İlk testlerde basit mantık problemlerinde %60~80 doğruluk gösterse de doğruluk henüz resmî olarak değerlendirilmemiştir ve g1 de kusursuz değildir
g1’in çözmeye çalıştığı problem
- g1, yalnızca prompt stratejisiyle LLM’in akıl yürütme yeteneğini geliştirmeyi amaçlayan erken aşama bir prototiptir
- Hedef, LLM’lerin genelde zorlandığı mantık problemlerini o1 benzeri akıl yürütme zinciri ile çözmesini sağlamaktır
- OpenAI o1’den farkları açıkça belirtilmiştir
- g1 tüm akıl yürütme token’larını kullanıcıya gösterir
- g1 açık kaynak model kullanır
- g1, o1’in tam bir kopyası veya performans karşılaştırması değildir
- OpenAI o1, büyük ölçekli pekiştirmeli öğrenmeyle Chain of Thought akıl yürütmesini öğrenerek karmaşık doktora düzeyi problemlerde en ileri performansa ulaşan bir yaklaşımdır
Çalışma şekli
- g1, Llama3.1-70b temelinde dinamik Chain of Thought’a yakın bir akıl yürütme zinciri üretir
- Her akıl yürütme adımı kullanıcıya gösterilir ve her adımın bir başlığı vardır
- Model her adımda iki seçenekten birini seçer
- Bir sonraki akıl yürütme adımıyla devam etmek
- Nihai yanıtı sunmak
- Sistem prompt’u, modelin daha iyi akıl yürütmesini sağlamaya yönelik talimatlar içerir
- Alternatif yanıtları araştırma
- Yanıtı en az 3 farklı yöntemle çıkarma
- Önceki taslak çözümleri sorgulama
- LLM’in sınırlamalarını dikkate alma
Prompt stratejisi
- Prompt, modele adım adım reasoning açıklayan uzman bir AI assistant rolü verir
- Her adım
title,content,next_actionanahtarlarına sahip JSON formatında yanıtlanmalıdırnext_actiondeğericontinueveyafinal_answerolur
- Büyük harflerle vurgulanan talimatlarla prompt’a uyumu artırmaya çalışır
- Mümkün olduğunca çok akıl yürütme adımı kullan, ancak en az 3 adım kullan
- Bir LLM olarak nelerin mümkün ve nelerin imkânsız olduğunu fark et
- Alternatif yanıtları araştır ve kendi akıl yürütmenin yanlış olabileceği noktaları dikkate al
- Yeniden gözden geçirdiğini söylediğinde gerçekten farklı bir yaklaşımla yeniden gözden geçir
- Yanıtı en az 3 farklı yöntemle çıkar
- En iyi uygulamaları kullan
- Problem kullanıcı mesajı olarak eklendikten sonra, üretimin başlaması için assistant mesajı olarak standart bir başlangıç cümlesi koyulur
Örnekler ve ilk sonuçlar
- g1, “strawberry’de kaç tane R var?” gibi prompt olmadan çözmesi zor olan basit mantık problemlerini ele alır
- Bu problem için ilk sayılar paylaşılmıştır
- g1: yaklaşık %70 doğruluk, n=10
- Llama-3.1-70B promptsuz: %0 doğruluk
- ChatGPT-4o: %30 doğruluk
- İlk testlerde g1, LLM’lerin genelde zorlandığı basit mantık problemlerini %60~80 doğrulukla çözmüştür
- Doğruluk henüz resmî olarak değerlendirilmemiştir
- Örnek problemler arasında
How many Rs are in strawberry?veWhich is larger, .9 or .11?yer alır
Çalıştırma yöntemi ve ilgili fork’lar
- Streamlit UI çalıştırma adımları
python3 -m venv venvsource venv/bin/activatepip3 install -r requirements.txtexport GROQ_API_KEY=gsk...streamlit run app.py
- Gradio UI çalıştırma adımları
cd gradiopip3 install -r requirements.txtpython3 app.py
- İlgili fork’lar ve demolar
- Hugging Face Spaces Demo
- Mult1: Birden fazla AI sağlayıcısı kullanarak o1 benzeri akıl yürütme zincirleri üretir
- thinkR: R’de yerel LLM ile o1 benzeri Chain of Thought uygular
1 yorum
Hacker News yorumları
Bu hiç doğru değil ve epey alakasız. Döngü içinde düşünce zinciri çalıştırmaktan ibaret.
Tree of Thoughts daha sofistike bir yöntem; makale için bkz. https://arxiv.org/pdf/2305.10601
OpenAI’ın uzun süredir ağaç araması yaptığına dair ipuçları vardı; Noam Brown’ı işe alması ve onun önceki çalışmaları da hep bu yöne işaret ediyordu. Q açıkça A* benzeri bir ağaç araması gibi görünüyor. CoT gibi bir şeyle ağaç oluşturup içinde en iyi çözümü aramak, tam olarak Sistem 2 akıl yürütmedir.
Modele adım adım düşünmesini söylemek o1 benzeri akıl yürütmeyi açmaz. Bu, 2020’de GPT-3 için de kullanılan eski bir numaraydı; bu kadar basit olsaydı OpenAI’ın yayınlamak için bu kadar beklemesi gerekmezdi.
Üstelik prompt’un bazı bölümleri ters etki yaratabilir. “Bir LLM olarak sınırlarının ve yapabildiklerinin/yapamadıklarının farkında ol” gibi talimatlar, LLM’in kendi sınırlarını gerçekten iyi bilmemesi nedeniyle modeli aşırı temkinli hale getirip hatalı retler üretme olasılığını artırır.
DeepMind araştırmaya ve makale yayımlamaya daha çok odaklanıyor; ama OpenAI ve Anthropic’in makale sonuçlarını alıp kullanabildiği, araştırma topluluğuna ise hiçbir şey geri vermeyebildiği bir rekabet ortamında bu dezavantaj.
Eğitim sırasında daha sağlam akıl yürütme öğrenmesi için ağaçlarla genişletmiş olabilirler; ancak çıkarım zamanında iş nihayetinde sıradan bir Transformer modeline varıyor.
“Talimatın önemini vurgulayıp prompt’a uyumu artırmak için her şeyi büyük harfle yazıyoruz” tarzı fikir hâlâ bana çok komik geliyor.
AGI’yi ilk çalıştıran kişinin “evcil hayvanımın hayatı cevaba bağlı” diye BÜYÜK HARFLE söyleyince LLM güvenilirliğinin eşiği aştığını fark etmesi gibi bir şey mi olacak merak ediyorum.
o1’in yeniliği düşünce zincirinin kendisi değil. Sadece öyle yapıyormuş gibi davranmak yerine, modelin CoT’yi iyi yapmasını büyük ölçekli insan geri bildirimiyle öğretmiş olmalarında.
Sadece prompt mühendisliğiyle o1 performansına ulaşılamaz.
Gerçi STEM konularında konuşan insanlar genelde daha zeki olabilir; ödev soran düşük notlu öğrenciler de çokça karışıma dahil. Daha yüksek zekâda çıktılar elde etmek için, daha düşük zekâlı yanıtların kusurlarını daha çok eleştirip elemek ve yüksek zekâlı yanıtları tercih etmek gerekebilir. Ya da ders kitapları vb. üzerinde daha güçlü eğitmek de bir yol. Hataların nasıl reddedileceği, hatalı akıl yürütme içermeden üretilmiş sentetik veriyle eğitim yapılıp yapılmayacağı da kritik.
Biz farkında olmadan o1’i model yönlendirme ve prompt mühendisliğiyle çalıştırıyor olabilirler.
Eğer mesele sadece prompt mühendisliği ve birden çok çıkarım çalıştırmaksa, bunu rekabet sırrı olarak tutup açık kaynak geliştiricileri yanlış yöne göndermek ya da Q-Star’ı nasıl kopyalayacaklarını sürekli tahmin ettirmek isterler.
Bu, bir süredir kullanılan genel CoT gibi görünüyor. o1, bilinmeyen bir politikayla pekiştirmeli öğrenme yaptığı için düşünce zincirinden çok daha iyi yararlanıyor.
Fena görünmüyor. Ben de optillm’de benzer bir çalışma yaptım: https://github.com/codelion/optillm
Herhangi bir LLM ile yapılabilir; cot_reflection dahil Monte Carlo ağaç araması, plansearch, moa gibi çeşitli optimizasyon teknikleri kullanılabilir.
Sürekli “akıl yürütme”nin tanımını arıyorum. İyi bir tanım bulursam, bulanık LLM tarzı düşünceyi klasik algoritmalarla birleştirip “akıl yürütme”yi çözen bir sistem yapılabileceğini düşünüyorum.
Planlama, harf sayma, tümdengelimli akıl yürütme gibi LLM’lerin akıl yürütemediği problemler klasik algoritmalar için kolay. Düşünme sürecini iki parçaya ayırıp her parçayı uygun modelde çalıştıracak bir yönteme ihtiyaç var.
2 yüzyıl önce bilgisayar yoktu, dolayısıyla her şeyi insanların yapması gerekiyordu. Kodu devreye almadan önce önce o seviyeye ulaşmak gerekir.
ollama:8b ile %100 yerel çalışacak şekilde değiştirdim: https://github.com/punnerud/g1
Readme’yi henüz güncellemedim.
Bilgi olsun, bu yalnızca bir sistem prompt’u; ince ayarlı bir model değil.
“Prompt: .9 ile .11’den hangisi daha büyük?”
“Sonuç: .9, .11’den büyüktür”
Sonunda semantik sürümleme bariyerini aştık.
Eğlencesine projeyi fork’layıp Llama-3.1 7B veya başka modelleri Ollama ile yerelde çalıştıracak hale getirdim.
strawberry problemini doğru çözemiyor ama 0.9’un daha büyük olduğunu anlayabiliyor.
https://github.com/esoltys/o1lama