- g1 adalah prototipe awal yang menggunakan Llama-3.1 70B dan strategi prompt di Groq untuk menghasilkan rantai penalaran mirip o1 di mana LLM “berpikir” langkah demi langkah
- Tidak seperti OpenAI o1, semua token penalaran ditampilkan kepada pengguna, dan meskipun menggunakan model open source, ini bukan replika penuh atau perbandingan langsung dengan o1, melainkan eksperimen penalaran berbasis prompt
- Pada setiap langkah, model memilih apakah akan lanjut ke langkah penalaran berikutnya atau memberikan jawaban akhir, dan dirancang untuk mengembalikan judul serta isi tiap langkah dalam format JSON
- Prompt meminta minimal 3 langkah, eksplorasi alternatif, pemeriksaan kemungkinan kesalahan sendiri, dan penggunaan minimal 3 metode; pada masalah Strawberry, performanya menunjukkan akurasi sekitar 70% (n=10) dibanding Llama-3.1-70B tanpa prompt 0% dan ChatGPT-4o 30%
- Dalam pengujian awal, akurasi pada soal logika sederhana berada di kisaran 60~80%, tetapi akurasinya belum dievaluasi secara resmi dan g1 juga belum sempurna
Masalah yang ingin diselesaikan g1
- g1 adalah prototipe awal yang bertujuan meningkatkan kemampuan penalaran LLM hanya dengan strategi prompt
- Tujuannya adalah membuat LLM menyelesaikan soal logika yang biasanya sulit dengan rantai penalaran mirip o1
- Perbedaannya dengan OpenAI o1 dijelaskan secara eksplisit
- g1 menampilkan semua token penalaran kepada pengguna
- g1 menggunakan model open source
- g1 bukan replika penuh atau perbandingan performa dengan o1
- OpenAI o1 menggunakan reinforcement learning skala besar untuk melatih penalaran Chain of Thought dan mencapai performa mutakhir pada masalah kompleks setingkat doktoral
Cara kerja
- g1, berbasis Llama3.1-70b, menghasilkan rantai penalaran yang mendekati Chain of Thought dinamis
- Setiap langkah penalaran ditampilkan kepada pengguna dan setiap langkah diberi judul
- Pada tiap langkah, model memilih salah satu dari dua opsi
- Lanjut ke langkah penalaran berikutnya
- Memberikan jawaban akhir
- Prompt sistem berisi instruksi agar model bernalar lebih baik
- Menjelajahi jawaban alternatif
- Menurunkan jawaban dengan minimal 3 metode
- Mempertanyakan solusi draf sebelumnya
- Mempertimbangkan keterbatasan LLM
Strategi prompt
- Prompt memberikan peran kepada model sebagai expert AI assistant yang menjelaskan reasoning langkah demi langkah
- Setiap langkah harus dijawab dalam format JSON dengan kunci
title,content,next_action- Nilai
next_actionadalahcontinueataufinal_answer
- Nilai
- Instruksi yang ditekankan dengan huruf besar digunakan untuk meningkatkan kepatuhan terhadap prompt
- Gunakan sebanyak mungkin langkah penalaran, tetapi minimal 3 langkah
- Sadarilah apa yang bisa dan tidak bisa dilakukan sebagai LLM
- Jelajahi jawaban alternatif, dan pertimbangkan titik-titik di mana penalaran sendiri bisa salah
- Saat mengatakan akan meninjau ulang, benar-benar tinjau ulang dengan pendekatan lain
- Turunkan jawaban dengan minimal 3 metode
- Gunakan praktik terbaik
- Setelah menambahkan masalah sebagai pesan pengguna, generasi dimulai dengan memasukkan kalimat pembuka standar sebagai pesan assistant
Contoh dan hasil awal
- g1 menangani masalah Strawberry seperti “berapa banyak huruf R dalam strawberry?” yang merupakan soal logika sederhana namun sulit diselesaikan tanpa prompt
- Angka awal untuk masalah tersebut disajikan
- g1: akurasi sekitar 70%, n=10
- Llama-3.1-70B tanpa prompt: akurasi 0%
- ChatGPT-4o: akurasi 30%
- Dalam pengujian awal, g1 menyelesaikan soal logika sederhana yang biasanya sulit bagi LLM dengan akurasi 60~80%
- Akurasinya belum dievaluasi secara resmi
- Contoh soal mencakup
How many Rs are in strawberry?danWhich is larger, .9 or .11?
Cara menjalankan dan fork terkait
- Prosedur menjalankan UI Streamlit
python3 -m venv venvsource venv/bin/activatepip3 install -r requirements.txtexport GROQ_API_KEY=gsk...streamlit run app.py
- Prosedur menjalankan UI Gradio
cd gradiopip3 install -r requirements.txtpython3 app.py
- Fork dan demo terkait
- Hugging Face Spaces Demo
- Mult1: menghasilkan rantai penalaran mirip o1 menggunakan beberapa penyedia AI
- thinkR: mengimplementasikan Chain of Thought mirip o1 dengan LLM lokal di R
1 komentar
Komentar Hacker News
Ini sama sekali tidak tepat dan cukup melenceng. Ini hanya menjalankan chain of thought di dalam loop.
Tree of Thoughts adalah metode yang lebih canggih; lihat makalahnya di https://arxiv.org/pdf/2305.10601
Sudah ada petunjuk sejak lama bahwa OpenAI melakukan pencarian pohon, dan perekrutan Noam Brown serta karya-karyanya sebelumnya semuanya mengarah ke sana. Q tampaknya jelas merupakan pencarian pohon seperti A*. Membuat pohon dengan sesuatu seperti CoT lalu mencari solusi optimal di dalamnya itulah penalaran Sistem 2
Menyuruh model berpikir langkah demi langkah tidak akan membuka penalaran seperti o1. Ini trik lama yang bahkan dipakai pada GPT-3 pada 2020, dan kalau memang sesederhana itu, OpenAI tidak akan butuh waktu selama ini untuk merilisnya.
Selain itu, sebagian prompt bisa berdampak sebaliknya. Instruksi seperti “sadari keterbatasanmu sebagai LLM dan apa yang bisa/tidak bisa kamu lakukan” berpotensi membuat model terlalu berhati-hati dan menghasilkan penolakan yang keliru, karena LLM juga tidak benar-benar memahami batasannya sendiri.
DeepMind lebih berfokus pada riset dan publikasi makalah, tetapi dalam lingkungan kompetitif di mana OpenAI dan Anthropic bisa mengambil hasil makalah lalu tidak mengembalikan apa pun ke komunitas riset, itu menjadi posisi yang merugikan.
Mungkin mereka memperluasnya menjadi pohon selama pelatihan untuk mempelajari penalaran yang lebih tangguh, tetapi pada waktu inferensi pada akhirnya ini kembali menjadi model Transformer biasa.
Gagasan seperti “menulis semuanya dengan huruf kapital untuk menekankan pentingnya instruksi dan meningkatkan kepatuhan prompt” masih terasa sangat lucu.
Saya jadi penasaran apakah orang pertama yang menyalakan AGI akan menyadari bahwa mengatakan “nyawa hewan peliharaanku bergantung pada jawaban ini” dengan HURUF KAPITAL membuat keandalan LLM melewati ambang batas.
Inovasi o1 bukan chain of thought itu sendiri. Inovasinya ada pada mengajarkan model agar mahir melakukan CoT dengan umpan balik manusia berskala besar, alih-alih sekadar berpura-pura.
Prompt engineering saja tidak akan mencapai performa o1.
Namun orang yang membicarakan topik STEM umumnya bisa jadi lebih cerdas, dan banyak juga siswa dengan nilai rendah yang bertanya soal PR. Untuk mendapatkan output dengan kecerdasan lebih tinggi, mungkin perlu lebih banyak mengkritik dan menyingkirkan cacat pada jawaban berkecerdasan rendah serta lebih menyukai jawaban berkecerdasan tinggi. Atau bisa juga melatihnya lebih kuat pada buku teks dan sebagainya. Kuncinya adalah bagaimana menolak kesalahan, dan apakah akan melatihnya dengan data sintetis yang dihasilkan tanpa penalaran yang keliru.
Bisa saja tanpa kita ketahui o1 sedang dijalankan dengan model routing dan prompt engineering.
Jika sebenarnya hanya memakai prompt engineering dan beberapa kali inferensi, mereka pasti ingin menjaga itu sebagai rahasia kompetitif sambil mengarahkan developer open-source ke arah yang salah atau membuat mereka terus menebak cara mereplikasi Q-Star.
Ini tampak seperti CoT umum yang sudah digunakan cukup lama. o1 jauh lebih baik memanfaatkan chain of thought karena telah dilatih dengan reinforcement learning menggunakan kebijakan yang tidak diketahui.
Kelihatannya bagus. Saya juga mengerjakan hal serupa di optillm: https://github.com/codelion/optillm
Bisa dilakukan dengan LLM apa pun, dan dapat memakai berbagai teknik optimisasi seperti Monte Carlo tree search, plansearch, moa, termasuk cot_reflection.
Saya selalu mencari definisi “penalaran”. Menurut saya, kalau menemukan definisi yang bagus, kita bisa membangun sistem yang memecahkan “penalaran” dengan menggabungkan pemikiran ala LLM yang kabur dan algoritma klasik.
Masalah-masalah yang tidak bisa dinalar LLM, seperti perencanaan, menghitung huruf, dan penalaran deduktif, mudah bagi algoritma klasik. Kita memerlukan cara untuk membagi proses berpikir menjadi dua bagian dan menjalankan tiap bagian pada model yang sesuai.
Dua abad lalu belum ada komputer, jadi semuanya harus dilakukan manusia. Kita harus mencapai level itu dulu sebelum mengeluarkan kode.
Saya mengubahnya agar berjalan 100% lokal dengan ollama:8b: https://github.com/punnerud/g1
Readme belum saya perbarui.
Sebagai catatan, ini hanya system prompt, bukan model yang di-fine-tune.
“Prompt: Mana yang lebih besar, .9 atau .11?”
“Hasil: .9 lebih besar daripada .11”
Akhirnya penghalang semantic versioning berhasil ditembus.
Untuk iseng, saya mem-fork proyek ini agar bisa menjalankan Llama-3.1 7B atau model lain secara lokal dengan Ollama.
Ia tidak bisa menjawab masalah strawberry, tetapi bisa mengetahui bahwa 0.9 lebih besar.
https://github.com/esoltys/o1lama