2 điểm bởi GN⁺ 2024-09-17 | 1 bình luận | Chia sẻ qua WhatsApp
  • g1 là một nguyên mẫu ban đầu dùng Llama-3.1 70B trên Groq cùng chiến lược prompt để tạo ra chuỗi suy luận kiểu o1 nơi LLM “suy nghĩ” theo từng bước
  • Khác với OpenAI o1, hệ thống hiển thị cho người dùng toàn bộ token suy luận, sử dụng mô hình mã nguồn mở, nhưng đây không phải bản sao hoàn chỉnh hay so sánh trực tiếp với o1 mà là một thử nghiệm suy luận dựa trên prompt
  • Ở mỗi bước, mô hình sẽ chọn tiếp tục sang bước suy luận kế tiếp hay đưa ra câu trả lời cuối cùng, và được thiết kế để trả về tiêu đề cùng nội dung của từng bước dưới dạng JSON
  • Prompt yêu cầu tối thiểu 3 bước, khám phá phương án thay thế, tự kiểm tra khả năng sai sót và dùng ít nhất 3 cách tiếp cận; trên bài toán Strawberry, hệ thống đạt khoảng 70% độ chính xác (n=10), so với 0% của Llama-3.1-70B chạy đơn lẻ và 30% của ChatGPT-4o
  • Trong các thử nghiệm ban đầu, hệ thống đạt 60–80% độ chính xác trên các bài toán logic đơn giản, nhưng độ chính xác vẫn chưa được đánh giá chính thức và g1 cũng chưa hoàn hảo

Vấn đề mà g1 muốn giải quyết

  • g1 là một nguyên mẫu ban đầu nhằm cải thiện năng lực suy luận của LLM chỉ bằng chiến lược prompt
  • Mục tiêu là khiến LLM giải các bài toán logic mà chúng thường gặp khó bằng chuỗi suy luận kiểu o1
  • Tài liệu nêu rõ những điểm khác với OpenAI o1
    • g1 hiển thị cho người dùng toàn bộ token suy luận
    • g1 sử dụng mô hình mã nguồn mở
    • g1 không phải bản sao hoàn chỉnh hay phép so sánh hiệu năng với o1
    • OpenAI o1 hoạt động bằng cách học suy luận Chain of Thought thông qua huấn luyện tăng cường quy mô lớn để đạt hiệu năng hàng đầu trên các bài toán phức tạp cấp độ tiến sĩ

Cách hoạt động

  • g1 dựa trên Llama3.1-70b để tạo ra chuỗi suy luận gần với Chain of Thought động
  • Mỗi bước suy luận đều được hiển thị cho người dùng và có tiêu đề riêng
  • Ở mỗi bước, mô hình chọn một trong hai hướng
    • Tiếp tục sang bước suy luận tiếp theo
    • Đưa ra câu trả lời cuối cùng
  • Prompt hệ thống chứa các chỉ dẫn giúp mô hình suy luận tốt hơn
    • Khám phá câu trả lời thay thế
    • Suy ra đáp án bằng ít nhất 3 cách
    • Đặt nghi vấn với lời giải nháp trước đó
    • Cân nhắc các giới hạn của LLM

Chiến lược prompt

  • Prompt gán cho mô hình vai trò trợ lý AI chuyên gia giải thích reasoning theo từng bước
  • Mỗi bước phải phản hồi theo định dạng JSON với các khóa title, content, next_action
    • Giá trị của next_actioncontinue hoặc final_answer
  • Các chỉ dẫn được nhấn mạnh bằng chữ in hoa nhằm tăng mức độ tuân thủ prompt
    • Dùng càng nhiều bước suy luận càng tốt nhưng tối thiểu 3 bước
    • Nhận thức được điều gì LLM có thể và không thể làm
    • Khám phá câu trả lời thay thế và xem xét những điểm mà suy luận của chính nó có thể sai
    • Khi nói đang xem xét lại thì phải thực sự xem xét lại bằng cách tiếp cận khác
    • Suy ra đáp án bằng ít nhất 3 cách
    • Sử dụng các thực hành tốt nhất
  • Sau khi thêm bài toán vào tin nhắn người dùng, hệ thống chèn một câu mở đầu tiêu chuẩn vào tin nhắn assistant để bắt đầu quá trình sinh

Ví dụ và kết quả ban đầu

  • g1 xử lý các bài toán logic đơn giản như bài toán Strawberry “có bao nhiêu chữ R trong strawberry?” vốn khó giải nếu không có prompt
  • Các số liệu ban đầu cho bài toán này được nêu như sau
    • g1: khoảng 70% độ chính xác, n=10
    • Llama-3.1-70B không có prompt: 0% độ chính xác
    • ChatGPT-4o: 30% độ chính xác
  • Trong các thử nghiệm ban đầu, g1 giải được những bài toán logic đơn giản mà LLM thường gặp khó với độ chính xác 60–80%
  • Độ chính xác vẫn chưa được đánh giá chính thức
  • Các bài toán ví dụ gồm How many Rs are in strawberry?Which is larger, .9 or .11?

Cách chạy và các fork liên quan

  • Quy trình chạy giao diện Streamlit
    • python3 -m venv venv
    • source venv/bin/activate
    • pip3 install -r requirements.txt
    • export GROQ_API_KEY=gsk...
    • streamlit run app.py
  • Quy trình chạy giao diện Gradio
    • cd gradio
    • pip3 install -r requirements.txt
    • python3 app.py
  • Các fork và bản demo liên quan
    • Hugging Face Spaces Demo
    • Mult1: tạo chuỗi suy luận kiểu o1 bằng nhiều nhà cung cấp AI
    • thinkR: triển khai Chain of Thought kiểu o1 bằng LLM cục bộ trong R

1 bình luận

 
GN⁺ 2024-09-17
Ý kiến trên Hacker News
  • Cái này hoàn toàn không đúng và khá lạc đề. Nó chỉ ở mức chạy chuỗi suy nghĩ trong một vòng lặp
    Tree of Thoughts là phương pháp tinh vi hơn, xem bài báo tại https://arxiv.org/pdf/2305.10601
    Từ lâu đã có dấu hiệu cho thấy OpenAI dùng tìm kiếm trên cây, và việc họ tuyển Noam Brown cùng các công trình trước đây của ông đều chỉ về hướng đó. Q có vẻ rõ ràng là tìm kiếm trên cây kiểu A*. Dựng một cây bằng thứ như CoT rồi tìm nghiệm tối ưu trong đó chính là suy luận hệ 2

    • Tôi vào đây là để đọc đúng điều này
      Bảo mô hình suy nghĩ từng bước không khiến suy luận kiểu o1 tự nhiên xuất hiện. Đây là mẹo cũ đã dùng với GPT-3 từ năm 2020, và nếu đơn giản như vậy thì OpenAI đã không mất ngần ấy thời gian mới phát hành
      Hơn nữa, một phần prompt có thể phản tác dụng. Những chỉ thị như “hãy nhận thức giới hạn của một LLM và điều nó có thể/không thể làm” không có nghĩa là LLM thật sự hiểu rõ giới hạn của mình, nên mô hình có thể trở nên quá dè dặt và tạo ra từ chối sai
    • Điều thú vị là DeepMind vẫn còn công bố những thứ như thế này. OpenAI giờ gần như không còn công bố loại này nữa
      DeepMind tập trung nhiều hơn vào nghiên cứu và công bố bài báo, nhưng trong môi trường cạnh tranh nơi OpenAI và Anthropic có thể lấy kết quả nghiên cứu từ bài báo mà không trả lại gì cho cộng đồng nghiên cứu, đó là một bất lợi
    • Tôi không hiểu trong bài blog của OpenAI, đặc biệt ở những chỗ dường như cho thấy khá đầy đủ ví dụ về chuỗi suy nghĩ của mô hình, đã ám chỉ ở đâu rằng họ dùng tìm kiếm hay Tree of Thoughts
    • OAI đã nói trên Twitter rằng ở thời điểm suy luận thì không có “hệ thống” nào cả, chỉ là mô hình thôi
      Có thể họ đã mở rộng thành cây trong lúc huấn luyện để học suy luận vững hơn, nhưng ở thời điểm suy luận thì rốt cuộc vẫn quy về một mô hình Transformer thông thường
  • Cái kiểu “viết TẤT CẢ bằng chữ in hoa để nhấn mạnh tầm quan trọng của chỉ thị và tăng độ tuân thủ prompt” vẫn buồn cười quá mức
    Tôi cũng tự hỏi liệu người đầu tiên kích hoạt AGI có thể nhận ra rằng chỉ cần nói bằng CHỮ IN HOA kiểu “mạng sống thú cưng của tôi phụ thuộc vào câu trả lời này” là độ tin cậy của LLM sẽ vượt ngưỡng hay không

    • Muốn tăng tuân thủ hơn nữa thì dùng thẻ, chỉnh volume lên 11, pager lên 7, rồi thêm chú thích SchIzOCasE và +E+X+T+R+A+I+M+P+O+R+T+A+N+T+. Tất nhiên là với giả định không hỗ trợ Unicode
    • Nói với LLM trong prompt rằng đừng ảo giác sẽ cải thiện đầu ra: https://arstechnica.com/gadgets/2024/08/do-not-hallucinate-t...
    • Vậy thì AGI có lẽ sẽ nhận ra nó được tạo ra trong một thế giới nơi người ta hứa cho tiền tip rồi không trả, còn người khác thì dọa giết mèo con để tạo động lực, và nó sẽ lập tức từ bỏ cuộc đời
    • Hồi đầu của Bard, phải đe dọa tính mạng con người thì mới khiến nó chỉ xuất JSON được[1]
      1. https://x.com/goodside/status/1657396491676164096
    • Trước đây tôi là kỹ sư, còn giờ cảm giác như đã thành con khỉ ném phân vào tường để xem LLM sẽ tiếp nhận và làm theo cái gì
  • Điểm đột phá của o1 không phải là bản thân chuỗi suy nghĩ. Mà là thay vì chỉ giả vờ như vậy, họ đã dạy mô hình làm CoT tốt bằng lượng lớn phản hồi từ con người
    Chỉ riêng prompt engineering thì không thể đạt đến hiệu năng của o1

    • Có thể chính tệp 200 triệu người dùng của OpenAI đã ngầm cung cấp các chỉ dẫn CoT nâng cao cần thiết. Mọi phiên chat của người dùng cũng là cơ hội để mô hình nhận phản hồi và rút kinh nghiệm từ người dùng
    • Nếu dữ liệu huấn luyện của các LLM như thế này đến từ toàn thể nhân loại và chúng cố bắt chước nhân loại, thì có lẽ trí tuệ sẽ tiến gần mức trung bình của loài người
      Tuy vậy, những người nói về chủ đề STEM thường có xu hướng thông minh hơn, nhưng cũng lẫn nhiều học sinh điểm kém đi hỏi bài tập về nhà. Muốn có đầu ra thông minh hơn, có thể phải phê bình và loại bỏ nhiều câu trả lời kém thông minh hơn, đồng thời ưu tiên câu trả lời thông minh hơn. Hoặc cũng có thể huấn luyện mạnh hơn trên giáo trình và tài liệu tương tự. Vấn đề còn là làm sao từ chối lỗi, hoặc huấn luyện bằng dữ liệu tổng hợp được tạo ra mà không có suy luận sai lỗi
    • Tôi không rõ liệu bạn có biết nó thật sự vận hành như vậy hay không. Cho đến vài ngày trước, những chi tiết đó vẫn rất thiếu ổn định
      Có thể họ đang vận hành o1 bằng định tuyến mô hình và prompt engineering mà chúng ta không hề biết
    • Cũng chưa chắc họ cần dùng lượng phản hồi từ con người khổng lồ. Nếu các lĩnh vực mạnh là lập trình và toán/lô-gic, thì với phản hồi lập trình họ có thể dùng trình biên dịch và unit test, còn với phản hồi toán học thì có thể dùng trình chứng minh định lý như Lean
    • OpenAI tất nhiên sẽ nói rằng việc họ làm là cực kỳ đặc biệt và khó sao chép. Họ là công ty vì lợi nhuận và muốn gây bất lợi cho đối thủ bằng mọi cách có thể
      Nếu thực ra chỉ là prompt engineering và suy luận nhiều lần, thì họ hẳn muốn giữ điều đó như bí mật cạnh tranh, đồng thời đẩy các nhà phát triển mã nguồn mở đi sai hướng hoặc khiến họ tiếp tục đoán mò cách sao chép Q-Star
  • Cái này trông giống CoT thông thường đã được dùng từ khá lâu. o1 tận dụng chuỗi suy nghĩ tốt hơn nhiều vì được huấn luyện tăng cường với một chính sách chưa được biết đến

  • Trông ổn đấy. Tôi cũng đã làm thứ tương tự trong optillm: https://github.com/codelion/optillm
    Có thể dùng với bất kỳ LLM nào, và dùng nhiều kỹ thuật tối ưu hóa như cot_reflection, Monte Carlo tree search, plansearch, moa

  • Tôi luôn đi tìm định nghĩa của “suy luận”. Theo tôi, nếu tìm được một định nghĩa tốt thì có thể xây dựng một hệ thống kết hợp kiểu suy nghĩ mơ hồ của LLM với các thuật toán cổ điển để giải “suy luận”
    Những bài toán mà LLM không suy luận được như lập kế hoạch, đếm ký tự, suy luận diễn dịch thì lại dễ với thuật toán cổ điển. Cần có cách chia quá trình tư duy thành hai phần và chạy mỗi phần trên mô hình phù hợp

    • Giải các bài toán quyết định được là một tập con lớn của các tác vụ suy luận. Việc đếm cũng là một tác vụ suy luận quan trọng, vì nó đòi hỏi phải hiểu cả số tự nhiên lẫn khái niệm các thực thể riêng biệt thuộc về một phạm trù tổng quát
      Hai thế kỷ trước chưa có máy tính nên con người phải tự làm mọi thứ. Trước khi lấy code ra, trước hết phải đạt được mức đó đã
  • Tôi đã sửa để chạy 100% cục bộ bằng ollama:8b: https://github.com/punnerud/g1
    Readme vẫn chưa được cập nhật

    • Có thể nên thử cả phi-3-small 7B. Theo https://livebench.ai thì nó có vẻ suy luận tốt hơn nhiều
  • Nhân tiện, đây chỉ là system prompt, không phải mô hình fine-tune

  • “Prompt: .9 và .11, cái nào lớn hơn?”
    “Kết quả: .9 lớn hơn .11”
    Cuối cùng cũng đã phá được rào cản semantic versioning

  • Cho vui, tôi đã fork dự án để chạy Llama-3.1 7B hoặc các mô hình khác cục bộ bằng Ollama
    Nó không giải được bài toán strawberry, nhưng có thể nhận ra 0.9 lớn hơn
    https://github.com/esoltys/o1lama