昨夜、私はnanochat d32にイチゴ(または同様のバリエーション)の「r」を数える方法を教えました。これはnanochatに機能を追加する方法の良い/楽しい例になると思い、ここに完全なガイドを書きました。 これは、この種の問題を求めるユーザーの例と、アシスタントからの理想的な解決策を生成する新しい合成タスク「SpellingBee」を介して行われます。次に、これらをミッドトレイン/SFT で微調整して LLM に機能を与えるか、さらに RL でトレーニングしてより堅牢にします。特にモデルサイズが小さい場合、正しく理解すべき詳細はたくさんあり、ガイドはそれらを順を追って説明します。簡単な概要として: - ユーザーのプロンプト/クエリの多様性を確保する必要があります - 特に nanochat のような小規模なモデルの場合、LLM のタスクを簡単にするために、トークン化の詳細に細心の注意を払う必要があります。特に、空白に注意する必要があり、推論計算を部分解の多くのトークンに分散させる必要があります:最初に単語を引用符で標準化し、次に(トークンを分割するために)スペルアウトし、次に反復して明示的なカウンターを保持します。 - 私はモデルに、手動の方法(頭の中の暗算)と、nanochatがアクセスできるPythonインタープリターのツールの使用の2つの別々の方法でモデルを解くことを奨励しています。これは少し「煙と鏡」です、なぜなら、すべてのソリューションATMは間違いなく「きれい」だからです。タスクを調整して間違いをシミュレートし、例で回復を示すか、RL を実行することができます。ほとんどの場合、両方の組み合わせが最も効果的であり、前者が RL の事前として機能し、RL に作業できるものを与えます。 nanochatがはるかに大きなモデルだったら、この機能がある時点でより簡単に「飛び出す」ことを期待したり、期待したりするでしょう。しかし、nanochat d32の「脳」は~ミツバチほどの大きさであるため、イチゴのrを数えたい場合は、モデルがそれをより早く学習するように促すために、データでそれを過剰に表現してそれを行う必要があります。しかし、それはうまくいきます!:)