g1 - สร้างเชนการให้เหตุผลคล้าย o1 โดยใช้ Llama-3.1 70B บน Groq
(github.com/bklieger-groq)- g1 เป็นโปรโตไทป์ระยะแรกที่ใช้ Llama-3.1 70B บน Groq ร่วมกับกลยุทธ์การพรอมป์ เพื่อสร้าง เชนการให้เหตุผลคล้าย o1 ที่ทำให้ LLM “คิด” ทีละขั้นตอน
- ต่างจาก OpenAI o1 ตรงที่แสดง โทเค็นการให้เหตุผล ทั้งหมดให้ผู้ใช้เห็น และแม้จะใช้โมเดลโอเพนซอร์ส แต่ไม่ใช่การทำสำเนา o1 ทั้งหมดหรือการเปรียบเทียบโดยตรง หากเป็นการทดลองการให้เหตุผลแบบอาศัยพรอมป์
- ในแต่ละขั้น โมเดลจะเลือกว่าจะไปยังขั้นการให้เหตุผลถัดไปหรือให้คำตอบสุดท้าย และออกแบบให้ส่งคืนชื่อเรื่องและเนื้อหาของแต่ละขั้นในรูปแบบ JSON
- พรอมป์กำหนดให้มีอย่างน้อย 3 ขั้นขึ้นไป สำรวจทางเลือก ตรวจสอบความเป็นไปได้ที่ตนเองจะผิดพลาด และใช้วิธีอย่างน้อย 3 แบบ โดยในปัญหา Strawberry ทำความแม่นยำได้ประมาณ 70% (n=10) เทียบกับ Llama-3.1-70B แบบเดี่ยวที่ไม่มีพรอมป์ 0% และ ChatGPT-4o 30%
- ในการทดสอบระยะแรก ทำความแม่นยำได้ 60~80% กับปัญหาตรรกะง่าย ๆ แต่ความแม่นยำยังไม่ได้รับ การประเมินอย่างเป็นทางการ และ g1 ก็ยังไม่สมบูรณ์แบบ
ปัญหาที่ g1 ต้องการแก้
- g1 เป็นโปรโตไทป์ระยะแรกที่พยายามปรับปรุงความสามารถในการให้เหตุผลของ LLM ด้วยกลยุทธ์การพรอมป์เพียงอย่างเดียว
- เป้าหมายคือทำให้ LLM แก้ปัญหาตรรกะที่โดยทั่วไปมักยากสำหรับมัน ด้วย เชนการให้เหตุผลคล้าย o1
- มีการระบุความแตกต่างจาก OpenAI o1 ไว้อย่างชัดเจน
- g1 แสดงโทเค็นการให้เหตุผลทั้งหมดให้ผู้ใช้เห็น
- g1 ใช้โมเดลโอเพนซอร์ส
- g1 ไม่ใช่การทำสำเนา o1 ทั้งหมดหรือการเปรียบเทียบประสิทธิภาพ
- OpenAI o1 เป็นแนวทางที่เรียนรู้การให้เหตุผลแบบ Chain of Thought ด้วย reinforcement learning ขนาดใหญ่ เพื่อให้ได้ประสิทธิภาพระดับแนวหน้าในปัญหาซับซ้อนระดับปริญญาเอก
วิธีการทำงาน
- g1 สร้างเชนการให้เหตุผลที่ใกล้เคียงกับ dynamic Chain of Thought โดยอิงจาก Llama3.1-70b
- แต่ละขั้นของการให้เหตุผลจะแสดงให้ผู้ใช้เห็น และมีชื่อเรื่องกำกับในแต่ละขั้น
- โมเดลจะเลือกหนึ่งในสองอย่างในแต่ละขั้น
- ดำเนินต่อไปยังขั้นการให้เหตุผลถัดไป
- ให้คำตอบสุดท้าย
- system prompt มีคำสั่งที่ช่วยให้โมเดลให้เหตุผลได้ดีขึ้น
- สำรวจคำตอบทางเลือก
- หาคำตอบด้วยอย่างน้อย 3 วิธี
- ตั้งคำถามต่อแนวทางแก้ฉบับร่างก่อนหน้า
- พิจารณาข้อจำกัดของ LLM
กลยุทธ์การพรอมป์
- พรอมป์กำหนดบทบาทให้โมเดลเป็น AI assistant ผู้เชี่ยวชาญที่อธิบาย reasoning แบบเป็นขั้นตอน
- แต่ละขั้นต้องตอบกลับใน รูปแบบ JSON ที่มีคีย์
title,content,next_action- ค่า
next_actionคือcontinueหรือfinal_answer
- ค่า
- พยายามเพิ่มการปฏิบัติตามพรอมป์ด้วยคำสั่งที่เน้นด้วยตัวพิมพ์ใหญ่
- ใช้ขั้นการให้เหตุผลให้มากที่สุดเท่าที่เป็นไปได้ แต่ใช้ขั้นต่ำ 3 ขั้น
- ตระหนักว่าในฐานะ LLM อะไรทำได้และอะไรทำไม่ได้
- สำรวจคำตอบทางเลือก และพิจารณาจุดที่การให้เหตุผลของตนอาจผิดได้
- เมื่อบอกว่าจะทบทวนใหม่ ให้ทบทวนด้วยแนวทางอื่นจริง ๆ
- หาคำตอบด้วยอย่างน้อย 3 วิธี
- ใช้แนวปฏิบัติที่ดี
- หลังจากเพิ่มโจทย์เป็นข้อความของผู้ใช้แล้ว จะใส่ประโยคเริ่มต้นมาตรฐานเป็นข้อความของ assistant เพื่อให้การสร้างเริ่มต้นขึ้น
ตัวอย่างและผลลัพธ์ระยะแรก
- g1 จัดการกับปัญหาตรรกะง่าย ๆ ที่แก้ได้ยากหากไม่มีพรอมป์ เช่น ปัญหา Strawberry อย่าง “ในคำว่า strawberry มีตัว R กี่ตัว?”
- มีการนำเสนอตัวเลขระยะแรกของปัญหานี้
- g1: ความแม่นยำประมาณ 70%, n=10
- Llama-3.1-70B ไม่มีพรอมป์: ความแม่นยำ 0%
- ChatGPT-4o: ความแม่นยำ 30%
- ในการทดสอบระยะแรก g1 แก้ปัญหาตรรกะง่าย ๆ ที่โดยทั่วไป LLM มักทำได้ยาก ด้วยความแม่นยำ 60~80%
- ความแม่นยำยัง ไม่ได้รับการประเมินอย่างเป็นทางการ
- ตัวอย่างโจทย์ที่รวมอยู่คือ
How many Rs are in strawberry?และWhich is larger, .9 or .11?
วิธีรันและฟอร์กที่เกี่ยวข้อง
- ขั้นตอนรัน Streamlit UI
python3 -m venv venvsource venv/bin/activatepip3 install -r requirements.txtexport GROQ_API_KEY=gsk...streamlit run app.py
- ขั้นตอนรัน Gradio UI
cd gradiopip3 install -r requirements.txtpython3 app.py
- ฟอร์กและเดโมที่เกี่ยวข้อง
- Hugging Face Spaces Demo
- Mult1: สร้างเชนการให้เหตุผลคล้าย o1 โดยใช้ผู้ให้บริการ AI หลายราย
- thinkR: สร้าง Chain of Thought คล้าย o1 ด้วย LLM โลคัลใน R
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เรื่องนี้ไม่ถูกเลย และค่อนข้างหลุดประเด็นด้วย เป็นแค่ระดับเอา chain of thought มาวนในลูป
Tree of Thoughts เป็นวิธีที่ซับซ้อนกว่านั้น ดู paper ได้ที่ https://arxiv.org/pdf/2305.10601
มีเบาะแสมานานแล้วว่า OpenAI ทำ tree search และการจ้าง Noam Brown รวมถึงผลงานในอดีตของเขาก็ชี้ไปทางนั้นทั้งหมด Q ดูชัดเจนว่าเป็น tree search แบบ A* การสร้าง tree ด้วยอะไรอย่าง CoT แล้วค้นหาคำตอบที่ดีที่สุดในนั้น นั่นแหละคือ การให้เหตุผลแบบ System 2
การบอกให้โมเดลคิดทีละขั้นไม่ได้ปลดล็อก การให้เหตุผลแบบ o1 ออกมา นี่เป็นทริกเก่าที่ใช้กับ GPT-3 ตั้งแต่ปี 2020 แล้ว และถ้ามันง่ายขนาดนั้น OpenAI คงไม่ใช้เวลานานขนาดนี้กว่าจะเปิดตัว
แถมบางส่วนของ prompt อาจให้ผลตรงข้ามได้ด้วย คำสั่งอย่าง “ให้ตระหนักถึงข้อจำกัดของตนในฐานะ LLM และสิ่งที่ทำได้/ทำไม่ได้” นั้น LLM ไม่ได้รู้ข้อจำกัดของตัวเองดีอยู่แล้ว จึงอาจทำให้โมเดลระมัดระวังเกินไปและเกิด การปฏิเสธที่ผิดพลาด ได้มาก
DeepMind โฟกัสกับงานวิจัยและการเผยแพร่ paper มากกว่า แต่ในสภาพการแข่งขันที่ OpenAI และ Anthropic สามารถเอาผลงานใน paper ไปใช้โดยไม่คืนอะไรให้ชุมชนนักวิจัยเลย แบบนี้ก็เสียเปรียบ
เป็นไปได้ว่าระหว่างการฝึกจะขยายด้วย tree เพื่อเรียนรู้การให้เหตุผลที่แข็งแรงขึ้น แต่ตอน inference สุดท้ายก็ลงเอยเป็น โมเดล Transformer ทั่วไป
แนวคิดแบบ “เขียนเป็นตัวพิมพ์ใหญ่ทั้งหมดเพื่อเน้นความสำคัญของคำสั่งและเพิ่มการทำตาม prompt” ยังตลกมากอยู่ดี
นึกสงสัยว่า คนที่ทำให้ AGI ทำงานเป็นคนแรกอาจเป็นคนที่รู้ว่า ถ้าพูดเป็น ตัวพิมพ์ใหญ่ ว่า “ชีวิตสัตว์เลี้ยงของฉันขึ้นอยู่กับคำตอบนี้” ความน่าเชื่อถือของ LLM จะข้าม threshold ได้หรือเปล่า
นวัตกรรมของ o1 ไม่ใช่ chain of thought เอง แต่อยู่ที่การสอนโมเดลด้วย human feedback ขนาดใหญ่ ให้ทำ CoT ได้ดี แทนที่จะแค่แกล้งทำเหมือนว่าทำได้
แค่ prompt engineering อย่างเดียวไปไม่ถึงประสิทธิภาพของ o1
อย่างไรก็ตาม คนที่พูดเรื่อง STEM โดยทั่วไปอาจมีสติปัญญาค่อนข้างสูง และก็มีนักเรียนคะแนนต่ำจำนวนมากที่มาถามการบ้านปะปนอยู่ด้วย หากต้องการ output ที่มีสติปัญญาสูงขึ้น อาจต้องวิจารณ์และคัดข้อบกพร่องของคำตอบที่สติปัญญาต่ำจำนวนมากออก แล้วทำให้โมเดลชอบคำตอบที่สติปัญญาสูง หรืออาจฝึกกับตำราเรียนให้หนักขึ้นก็ได้ ประเด็นสำคัญคือจะปฏิเสธข้อผิดพลาดอย่างไร และจะฝึกด้วย ข้อมูลสังเคราะห์ ที่สร้างขึ้นโดยไม่มีการให้เหตุผลที่ผิดพลาดหรือไม่
อาจเป็นไปได้ว่า o1 กำลังทำงานด้วย model routing และ prompt engineering โดยที่เราไม่รู้ก็ได้
ถ้ามันเป็นแค่การใช้ prompt engineering กับการ inference หลายรอบ พวกเขาก็คงอยากเก็บไว้เป็นความลับในการแข่งขัน พร้อมกับส่งนักพัฒนาโอเพนซอร์สไปผิดทาง หรือทำให้คนยังคาดเดาต่อไปว่าจะลอกเลียน Q-Star ได้อย่างไร
นี่ดูเหมือน CoT ทั่วไปที่ใช้กันมาพักหนึ่งแล้ว o1 ใช้ chain of thought ได้ดีกว่ามากเพราะผ่าน reinforcement learning ด้วยนโยบายที่ไม่เปิดเผย
ดูโอเคนะ ผมก็ทำงานคล้าย ๆ กันใน optillm: https://github.com/codelion/optillm
ทำได้กับ LLM อะไรก็ได้ และใช้ เทคนิค optimization ได้หลายแบบ เช่น Monte Carlo tree search, plansearch, moa รวมถึง cot_reflection
ผมมองหาคำนิยามของ “การให้เหตุผล” อยู่เสมอ ถ้าหานิยามดี ๆ ได้ ผมคิดว่าเราจะสร้างระบบที่แก้ “การให้เหตุผล” ได้ โดยผสานความคิดแบบ LLM ที่พร่ามัวเข้ากับอัลกอริทึมคลาสสิก
ปัญหาที่ LLM ให้เหตุผลไม่ได้ เช่น การวางแผน การนับตัวอักษร และการให้เหตุผลแบบนิรนัย เป็นเรื่องง่ายสำหรับอัลกอริทึมคลาสสิก เราต้องมีวิธีแบ่งกระบวนการคิดออกเป็นสองส่วน แล้วรันแต่ละส่วนในโมเดลที่เหมาะสม
เมื่อ 2 ศตวรรษก่อนยังไม่มีคอมพิวเตอร์ ทุกอย่างจึงต้องให้มนุษย์ทำ ก่อนจะหยิบโค้ดออกมา เราต้องไปให้ถึงระดับนั้นก่อน
ผมแก้ให้รันแบบ โลคัล 100% ด้วย ollama:8b แล้ว: https://github.com/punnerud/g1
Readme ยังไม่ได้อัปเดต
ขอเสริมว่านี่เป็นแค่ system prompt ไม่ใช่โมเดลที่ fine-tune แล้ว
“prompt: ระหว่าง .9 กับ .11 อันไหนมากกว่า?”
“ผลลัพธ์: .9 มากกว่า .11”
ในที่สุดก็ทำลาย กำแพง semantic version ได้แล้ว
ทำเล่น ๆ เลย fork โปรเจกต์แล้วทำให้รัน Llama-3.1 7B หรือโมเดลอื่น ๆ ผ่าน Ollama แบบโลคัลได้
มันตอบโจทย์ strawberry ไม่ได้ แต่รู้ได้ว่า 0.9 มากกว่า
https://github.com/esoltys/o1lama