English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

ゲスト
1 / ?

CUDAが報告するドキュメントインデックス

CUDAトレーナーはどのドキュメントをサンプリングしたかを知っています

各トレーニングステップは、多数のドキュメントを端から端まで詰め込んだ.btokバイナリからシーケンスを引き出します。CUDAは損失とともにドキュメントインデックスを記録します:step 47213, source=gutenberg, doc=128407, loss=2.81。プロキシがこれらのレポートを収集し、ソースごとの見られたユニークなドキュメントインデックスのセットを維持します。


カウントからカバレッジへ

ソースのカバレッジ = unique_docs_seen / n_docs。いくつかの例:


ソースn_docsunique seenカバレッジ
gutenberg512,000154,00030.1%
hermes3-general67,39547,17670.0%
dictionary88,00088,000100.0%
synthetic-chat1,4001,400100.0%

小さなソースはすぐに飽和します。大きなソースは数週間50%を下回って漂います。カバレッジボーナスは、ソース内でまだサンプリングしていないドキュメントを訪れるバンディットを報酬します。


Coverage bonus per source


ボーナス計算式

カバレッジボーナスは、0%カバレッジで1.3倍から50%カバレッジで1.0倍まで線形にスケーリングし、50%を超えると1.0倍で平坦になります:


if coverage < 0.5:
bonus = 1.0 + 0.3 * (1.0 - coverage / 0.5)
else:
bonus = 1.0

カバレッジが0%のソースは1.3倍、カバレッジが25%のソースは1.15倍、カバレッジが50%のソースは1.0倍になります。50%を超えるとボーナスは適用されません。

ボーナスを計算する

gutenbergのカバレッジが30%、hermes3-generalのカバレッジが70%のラン。ソースごとにカバレッジボーナス乗数を計算せよ。計算過程を示せ。

2つの異なる新鮮さシグナル

同じ目標、異なる粒度

ANDREAには、単一のソースに対する過剰トレーニングを防ぐ2つのメカニズムがあります。それらは似ていますが、異なるものを測定します。


Epoch penalty. 集計された過剰引き出しを追跡します。lifetime_pulls / n_docs > 1.0 の場合、ソースは理論上すべてのドキュメントを少なくとも1回以上回っています。Penalty = 1 / (1 + epochs)。1.4Kドキュメントの synthetic-chat ソースで lifetime pulls が 5,600(epochs = 4)の場合、penalty 1/5 = 0.2x となります。Epoch カウントは再起動時も持続し、決して減衰しません。


Coverage bonus. ソース内の各ドキュメントの新鮮さを追跡します。CUDA はドキュメントインデックスを報告し、proxy はソースごとにセットを維持します。ユニークドキュメントの50%未満のカバレッジのソースは最大1.3x を獲得します。Coverage はソースの末尾を探求することを報酬とし、epoch penalty はそれを枯渇させることを罰します。


両方が重要な理由


シグナル追跡項目方向上限再起動間で持続
Epoch penaltyaggregate over-pullingreduces1/(1+e)yes
Coverage bonusper-doc freshnessboosts1.3xyes

500Kドキュメントのgutenbergソースは、200Kのトレーニング実行全体で50%のカバレッジを下回り続け、epoch=1に決して近づきません。Epoch penaltyはこれを無視しますが、coverage bonusはbanditをgutenbergの未探索の70%テールに向かって積極的に引き寄せます。


逆に、1.4Kの合成チャットソースは数千回のpull以内でカバレッジ(100%)に飽和します。coverage bonusは1.0xのままで、epoch penaltyが増加します。

区別する

トレーニング中の2つのソースを想像してください:ソースAは1,400ドキュメントと8,400回の生涯プル。ソースBは500,000ドキュメントと80,000回の生涯プル;プロキシはBについてこれまでに75,000のユニークなドキュメントインデックスをログしています。各ソースのbandit weightを支配するシグナル(epoch penaltyまたはcoverage bonus)はどれで、なぜですか?

Coverage BonusがANDREAに与えるもの

それが防ぐ失敗モード

ドキュメントレベルの追跡がない場合、ステップごとの報酬を選択するバンディットは .btok シーケンスを貪欲に選択します。500KドキュメントのGutenbergコーパスには、低いクロスエントロピーのシーケンス(一貫した散文、共通の語彙)が数千あります。報酬のみのバンディットは、それらのシーケンスに繰り返し戻り、強い報酬信号を継続的に生成するためです。


結果:500Kドキュメントのコーパスは、200Kトレーニングステップで約2K-5Kの異なるシーケンスにしかサンプリングされません。モデルはそのシーケンスを記憶し、他の部分を一切見ません。容量が無駄にされ、カバレッジが1%未満で停滞します。


カバレッジボーナスがもたらすもの

0%カバレッジで1.3倍、50%で1.0倍にスケールダウンします。この後押しはUCB1選択に伝播し、低カバレッジのアームは1回ごとの報酬が低下しても競争力を保ちます。バンディットは偶然ではなく設計によりテールを探索します。


500KドキュメントのGutenbergコーパスでの200Kステップ実行で、カバレッジボーナスは通常、観測カバレッジを~3%(ボーナスなし)から~25-30%(ボーナスあり)に引き上げます。同じ計算量で、触れられるドキュメント数が8〜10倍になります。


トラッキングが格納されている場所


コンポーネント責任
microgpt_cuda.cu各トレーニングステップごとにドキュメントインデックスを報告
training_proxy.pyソースごとにseen_docsセットを維持
training_proxy.pyカバレッジを計算し、バンディトリワードにボーナスを適用
training_proxy.pyseen_docs を再起動時も .state.json に永続化

具体的なエンジニアリング選択に接続する

ANDREA-120M のトレーニングからカバレッジボーナスを削除したと仮定してください。グーテンベルクアーム(500K+ ドキュメント)に対して、200Kステップの実行で起こる具体的な結果を1つ予測してください。カバレッジパーセンテージ、ドキュメント多様性、または下流のサンプル品質のいずれかを参照してください。