2 ポイント 投稿者 GN⁺ 2024-09-17 | 1件のコメント | WhatsAppで共有
  • g1は、Groq上でLlama-3.1 70Bとプロンプト戦略を使い、LLMが段階的に「考える」o1風の推論チェーンを生成する初期プロトタイプ
  • OpenAI o1とは異なり、すべての推論トークンをユーザーに見せ、オープンソースモデルを使用するが、o1の完全な複製や直接比較ではなく、プロンプトベースの推論実験である
  • 各ステップでモデルは、次の推論ステップへ進むか最終回答を出すかを選択し、ステップごとにタイトルと内容をJSONで返すよう設計されている
  • プロンプトは最低3ステップ以上、代替案の探索、自身の誤りの可能性の点検、最低3つの方法の使用を要求し、Strawberry問題ではLlama-3.1-70B単体の0%、ChatGPT-4oの30%に対し、約70%の正答率(n=10)を示した
  • 初期テストでは単純な論理問題で60〜80%の正答率を示したが、正答率はまだ公式評価されておらず、g1も完全ではない

g1が解決しようとしている問題

  • g1は、プロンプト戦略だけでLLMの推論能力を改善しようとする初期プロトタイプ
  • 目的は、LLMが通常苦手とする論理問題をo1風の推論チェーンで解かせること
  • OpenAI o1との違いが明示されている
    • g1はすべての推論トークンをユーザーに見せる
    • g1はオープンソースモデルを使用する
    • g1はo1の完全な複製でも性能比較でもない
    • OpenAI o1は、大規模な強化学習によってChain of Thought推論を学習し、複雑な博士レベルの問題で最先端の性能を達成する方式である

動作方式

  • g1はLlama3.1-70bを基盤に、動的なChain of Thoughtに近い推論チェーンを生成する
  • 各推論ステップはユーザーに表示され、ステップごとにタイトルが付く
  • モデルは各ステップで2つのうちどちらかを選択する
    • 次の推論ステップへ進み続ける
    • 最終回答を提供する
  • システムプロンプトには、モデルにより良い推論をさせるための指示が含まれる
    • 代替回答の探索
    • 最低3つの方法で答えを導く
    • 以前の草案解法に疑問を投げかける
    • LLMの限界を考慮する

プロンプト戦略

  • プロンプトはモデルに、段階的なreasoningを説明する専門家AI assistantの役割を与える
  • 各ステップは、titlecontentnext_actionキーを持つJSON形式で応答しなければならない
    • next_actionの値はcontinueまたはfinal_answer
  • 大文字で強調された指示によって、プロンプト遵守を高めようとしている
    • 可能な限り多くの推論ステップを使うが、最低3ステップを使う
    • LLMとして可能なことと不可能なことを認識する
    • 代替回答を探索し、自分の推論が誤り得る箇所を考慮する
    • 再検討すると言うときは、実際に別のアプローチで再検討する
    • 最低3つの方法で答えを導く
    • ベストプラクティスを使う
  • 問題をユーザーメッセージとして追加した後、assistantメッセージとして標準の開始文を入れ、生成が始まるようにする

例と初期結果

  • g1は「strawberryにはRがいくつあるか?」のようなStrawberry問題で、プロンプトなしでは解きにくい単純な論理問題を扱う
  • この問題の初期数値が示されている
    • 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 venv
    • source venv/bin/activate
    • pip3 install -r requirements.txt
    • export GROQ_API_KEY=gsk...
    • streamlit run app.py
  • Gradio UIの実行手順
    • cd gradio
    • pip3 install -r requirements.txt
    • python3 app.py
  • 関連フォークとデモ
    • Hugging Face Spaces Demo
    • Mult1: 複数のAIプロバイダーを使ってo1風の推論チェーンを生成
    • thinkR: RでローカルLLMによるo1風のChain of Thoughtを実装

1件のコメント

 
GN⁺ 2024-09-17
Hacker News のコメント
  • これはまったく正しくないし、かなり的外れです。ループの中で思考の連鎖を回している程度です。
    Tree of Thoughts はもっと洗練された手法で、論文は https://arxiv.org/pdf/2305.10601 を参照してください。
    OpenAI が以前から木探索をしているという手がかりはあり、Noam Brown を採用したことや彼の過去の研究もすべてその方向を示していました。Q は A* のような木探索であることは明らかに見えます。CoT のようなもので木を作り、その中で最適解を探す探索こそがシステム2推論です。

    • これを見に来ました。
      モデルに段階的に考えるよう指示したからといって、o1 のような推論が開放されるわけではありません。これは 2020 年に GPT-3 にも使われていた古い小技で、そんなに単純なら OpenAI がリリースまでこれほど時間をかけることはなかったでしょう。
      さらに、プロンプトの一部は逆効果になる可能性があります。「LLM としての限界と、できること/できないことを認識せよ」のような指示は、LLM が自分の限界をよく理解しているわけでもないため、モデルが過度に慎重になり、誤った拒否を生む可能性が高いです。
    • DeepMind がまだこういうものを公開しているのは興味深いです。OpenAI は今ではこの種のものをほとんど公開しません。
      DeepMind は研究と論文公開により重点を置いていますが、OpenAI と Anthropic が論文の成果を利用しながら研究コミュニティには何も還元しない可能性がある競争環境では不利です。
    • OpenAI のブログ記事、特にモデルの思考の連鎖の例をかなり完全に示しているように見えた部分のどこで、探索や Tree of Thoughts を使っていると示唆していたのか分かりません。
    • OAI は Twitter で、推論時には「システム」はなく、単なるモデルだと明らかにしていました。
      学習中により堅牢な推論を学ぶために木へ拡張した可能性はありますが、推論時には結局、通常のTransformer モデルに帰着します。
  • 「指示の重要性を強調してプロンプト遵守率を上げるために全部大文字で書く」という発想が、今でもあまりに面白いです。
    AGI を初めて動かす人が「私のペットの命が答えにかかっている」と大文字で言えば、LLM の信頼性がしきい値を超えると気づくような感じなのかもしれない、とも思います。

    • 遵守をさらに引き出すには、タグを使い、ボリュームを 11 に、ページャーを 7 に設定し、SchIzOCasE と +E+X+T+R+A+I+M+P+O+R+T+A+N+T+ の注釈を付ければいいです。もちろん Unicode がサポートされていない前提です。
    • プロンプトで LLM に幻覚しないよう言うと出力が改善します: https://arstechnica.com/gadgets/2024/08/do-not-hallucinate-t...
    • そうなると AGI は、チップを約束されても実際には受け取れず、人々が子猫を殺すと脅して動機づける世界に作られたのだと悟り、すぐに人生を諦めそうです。
    • Bard の初期には、人の命を脅かさないとJSON だけを出力させられませんでした[1]
      1. https://x.com/goodside/status/1657396491676164096
    • 以前はエンジニアでしたが、今では LLM が何を受け入れて従うのかを見るために、壁に糞を投げつける猿になった気分です。
  • o1 の革新は思考の連鎖そのものではありません。単にそのふりをするのではなく、モデルが CoT をうまく行えるように大規模な人間のフィードバックで教えた点にあります。
    プロンプトエンジニアリングだけでは o1 の性能には到達できません。

    • 必要な高度な CoT 指示を、OpenAI の2億人のユーザーベースが暗黙に提供したのかもしれません。すべてのユーザーのチャットセッションは、モデルがフィードバックを受け取り、ユーザーから経験を引き出す機会でもあります。
    • こうした LLM の学習データが人類全般から来ていて、人類を模倣しようとしているなら、知能は人類の平均に近づくのではないかと思います。
      ただし STEM の話題を語る人たちは概して知能が高めかもしれませんし、宿題を質問する成績の低い学生も多く混ざっています。より高い知能の出力を得るには、より多くの低知能な回答の欠陥を批判して排除し、高知能な回答を好むようにする必要があるかもしれません。あるいは教科書などでより強く学習させる方法もあります。誤りをどう拒否するか、誤った推論なしに生成された合成データで学習するかも重要です。
    • 実際にそう動いていると知っているのか気になります。数日前まで見た限りでは、詳細は非常に不安定でした。
      私たちの知らないところで、モデルルーティングとプロンプトエンジニアリングで o1 を動かしている最中かもしれません。
    • 必ずしも膨大な量の人間のフィードバックを使ったとは限らないかもしれません。得意な領域がコーディングと数学/論理なら、コーディングのフィードバックにはコンパイラと単体テストを使い、数学のフィードバックには Lean のような定理証明器を使った可能性があります。
    • OpenAI は当然、自分たちがやったことは非常に特別で再現が難しいと言うでしょう。営利企業であり、あらゆる方法で競合を傷つけたいはずです。
      もし単にプロンプトエンジニアリングと複数回の推論を使っているだけなら、それを競争上の秘密として維持しつつ、オープンソース開発者を見当違いの方向へ向かわせたり、Q-Star を再現する方法をいつまでも推測させたりしたいでしょう。
  • これはしばらく使われてきた一般的なCoTのように見えます。o1 は未知の方針で強化学習をしたため、思考の連鎖をはるかにうまく活用できるのです。

  • 良さそうです。私も optillm で似たようなことをしました: https://github.com/codelion/optillm
    どんな LLM でも可能で、cot_reflection を含め、モンテカルロ木探索、plansearch、moa のような複数の最適化手法を使えます。

  • いつも「推論」の定義を探しています。良い定義が見つかれば、ぼんやりした LLM 的思考と古典的アルゴリズムを組み合わせて「推論」を解くシステムを作れる、というのが私の考えです。
    計画、文字数カウント、演繹推論のように、LLM が推論できない問題は古典的アルゴリズムには簡単です。思考過程を 2 つの部分に分け、それぞれの部分を適したモデルで実行する方法が必要です。

    • 決定可能な問題を解くことは、推論タスクの大きな部分集合です。数えることも重要な推論タスクで、自然数と一般カテゴリに属するオブジェクトの区別可能なインスタンスという概念をどちらも理解する必要があるからです。
      2 世紀前にはコンピュータがなかったので、すべてを人間がやる必要がありました。コードを持ち出す前に、まずそのレベルに到達しなければなりません。
  • ollama:8b で100% ローカル実行されるように変えました: https://github.com/punnerud/g1
    Readme はまだ更新していません。

    • phi-3-small 7B も試してみるとよいです。https://livebench.ai によると、推論がはるかに得意なようです。
  • ちなみにこれはシステムプロンプトにすぎず、微調整されたモデルではありません。

  • 「プロンプト: .9 と .11 ではどちらが大きいか?」
    「結果: .9 は .11 より大きい」
    ついにセマンティックバージョニングの壁を突破しました。

  • 面白半分でプロジェクトをフォークし、Ollama で Llama-3.1 7B や他のモデルをローカルで動かせるようにしました。
    strawberry 問題は解けませんが、0.9 のほうが大きいことは分かります。
    https://github.com/esoltys/o1lama