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


Формула бонусу

Бонус покриття лінійно масштабується від 1.3x при 0% покритті до 1.0x при 50% покритті, потім залишається на рівні 1.0x вище 50%:


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

Джерело з покриттям 0% отримує 1.3x; джерело з 25% — 1.15x; джерело з 50% падає до 1.0x. Понад 50% бонус не застосовується.

Обчислити бонус

Запуск з покриттям gutenberg 30% та hermes3-general 70%. Обчисліть множник бонусу покриття для кожного джерела. Покажіть обчислення.

Два різні сигнали свіжості

Така сама мета, різна деталізація

ANDREA має два механізми, які запобігають перенавчанню на одному джерелі. Вони звучать подібно; вони вимірюють різні речі.


Штраф за епоху. Відстежує загальне надмірне витягування. Коли lifetime_pulls / n_docs > 1.0, джерело теоретично обійшло кожен документ принаймні раз. Штраф = 1 / (1 + epochs). Джерело synthetic-chat з 1.4K документів при 5,600 lifetime pulls (epochs = 4) отримує штраф 1/5 = 0.2x. Лічильники епох зберігаються між перезапусками; вони ніколи не зменшуються.


Бонус за покриття. Відстежує свіжість кожного документа в джерелі. CUDA повідомляє індекси документів; проксі підтримує набір для кожного джерела. Джерела з покриттям менше 50% унікальних документів отримують до 1.3x. Покриття винагороджує дослідження хвоста джерела; штраф за епоху карає за його вичерпання.


Чому обидва важливі


СигналВідстежуєНапрямокКапЗберігається при перезапуску
Штраф епохиагреговане надмірне витягуваннязменшує1/(1+e)так
Бонус покриттясвіжість на документпідвищує1.3xтак

Джерело gutenberg з 500K документів може залишатися нижче 50% покриття протягом усього тренування на 200K, не наближаючись до епохи=1. Штраф епохи ігнорує його; бонус покриття активно тягне бандита до нерозвіданої 70% хвоста gutenberg.


Навпаки, синтетичне джерело чату з 1.4K насичує покриття (100%) за кілька тисяч витягувань; бонус покриття залишається на 1.0x, тоді як штраф епохи зростає.

Розрізніть ці два

Уявіть два джерела посеред тренування: джерело A має 1,400 документів та 8,400 lifetime pulls. Джерело B має 500,000 документів та 80,000 lifetime pulls; проксі зафіксував 75,000 унікальних індексів документів для B досі. Який сигнал (штраф за епоху чи бонус за покриття) керує вагою бандита для кожного джерела, та чому?

Що купує бонус за покриття для ANDREA

Режим відмови, який він запобігає

Без відстеження на рівні документа бандит, що обирає на основі винагороди за крок, жадібно вибирає послідовності .btok. Корпус gutenberg з 500K документів містить кілька тисяч послідовностей з низькою крос-ентропією (послідовна проза, поширена лексика). Бандит тільки на винагороду неодноразово повертається до цих послідовностей, оскільки вони постійно генерують сильні сигнали винагороди.


Результат: корпус з 500K документів семплюється по ~2K-5K унікальних послідовностей за 200K кроків тренування. Модель запам’ятовує ці послідовності, так і не побачивши решту. Ємність витрачається даремно; покриття застрягає нижче 1%.


Що купує бонус покриття

1.3x при 0% покритті, що масштабується до 1.0x при 50%. Цей поштовх поширюється через відбір UCB1: руки з низьким покриттям залишаються конкурентними, навіть коли їхня винагорода за витягування падає. Бандит досліджує хвіст за дизайном, а не випадково.


За 200K-крокового запуску на 500K-документному gutenberg бонус покриття зазвичай підвищує спостережуване покриття з ~3% (без бонусу) до ~25-30% (з бонусом). Той самий обчислювальний ресурс, у 8-10 разів більше документов охоплено.


Де зберігається відстеження


КомпонентВідповідальність
microgpt_cuda.cuЗвітує індекс документа на кожен крок тренування
training_proxy.pyПідтримує набір seen_docs для кожного джерела
training_proxy.pyОбчислює покриття, застосовує бонус до винагороди бандита
training_proxy.pyЗберігає seen_docs у .state.json між перезапусками

Підключення до конкретного інженерного вибору

Припустіть, що ви видалили бонус за покриття з тренування ANDREA-120M. Передбачте одну конкретну наслідок для гілки gutenberg зокрема (яка має 500K+ документів) протягом 200K-крокового запуску. Посилайтеся на відсоток покриття, різноманітність документів або якість зразків на下游.