CUDA отображает индексы документов
CUDA-тренер знает, какой документ он отобрал
Каждый этап обучения извлекает последовательность из бинарного .btok, который содержит много документов один за другим. CUDA регистрирует индекс документа вместе с потерями: шаг 47213, источник=gutenberg, документ=128407, потери=2.81. Проксси собирает эти отчеты и поддерживает множество уникальных индексов документов, виденных на источнике.
Из счетов в покрытие
Покрытие источника = уникальные_документы_видены / n_docs. Несколько примеров:
| Источник | n_docs | уникально видено | покрытие |
|---|---|---|---|
| gutenberg | 512,000 | 154,000 | 30.1% |
| hermes3-general | 67,395 | 47,176 | 70.0% |
| dictionary | 88,000 | 88,000 | 100.0% |
| synthetic-chat | 1,400 | 1,400 | 100.0% |
Малые источники быстро насыщаются. Большые источники опускаются ниже 50% на недели. Бонус за покрытие стимулирует бандита посетить документы, которые он еще не просмотрел в источнике.
Формула бонуса
Бонус за покрытие линейно увеличивается от 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%, бонуса не применяется.
Вычисление бонуса
Два разных сигнала свежести
Одная цель, разная детализация
ANDREA имеет два механизма, предотвращающих переобучение на одном источнике. Они кажутся схожими; они измеряют разные вещи.
Штраф за эпоху. Отслеживает общее переизвлечение. Когда lifetime_pulls / n_docs > 1.0, источник теоретически обошел каждый документ хотя бы один раз. Штраф = 1 / (1 + epochs). Источник синтетического чата с 1,4 тыс. документов и 5,6 тыс. жизненных извлечений (эпох = 4) получает штраф 1/5 = 0.2x. Эпохи сохраняются при перезапусках; они никогда не устаревают.
Бонус за покрытие. Отслеживает свежесть на уровне документа в источнике. CUDA отображает индексы документов; прокси сохраняет множество для каждого источника. Истоки ниже 50% покрытия уникальных документов могут получить до 1.3x. Бонус за покрытие стимулирует исследование хвоста источника; штраф за эпоху наказывает истощение его.
Почему оба важны
| Сигнал | Отслеживает | Направление | Лимит | Сохраняется при перезапусках |
|---|---|---|---|---|
| Штраф за эпоху | общее переизвлечение | уменьшает | 1/(1+e) | да |
| Бонус за покрытие | свежесть на уровне документа | увеличивает | 1.3x | да |
500-тысячный источник gutenberg может оставаться ниже 50% покрытия на протяжении всего 200-тысячного обучения, никогда не приближаясь к эпохе = 1. Штраф за эпоху игнорирует это; бонус за покрытие активно тянет бандит к неисследованным 70% хвосту gutenberg.
С другой стороны, 1,4-тысячный источник синтетического чата насыщает покрытие (100%) в течение нескольких тысяч извлечений; бонус за покрытие остается на 1.0x, в то время как штраф за эпоху растет.
Различать два
Что дает бонус за покрытие АНДРЕЕ
Провал, который он предотвращает
Без отслеживания на уровне документов агент, выбирающий на основе вознаграждения за шаг, выбирает .btok последовательности жадно. Корпус Гутенберга размером в 500 тыс. документов содержит несколько тысяч последовательностей с низким кросс-энтропией (согласованное предложение, распространенная лексика). Агент, выбирающий только на основе вознаграждения, возвращается к этим последовательностям снова и снова, потому что они продолжают производить сильные сигналы вознаграждения.
Результат: корпус размером в 500 тыс. документов будет отобран через, возможно, 2-5 тыс. уникальных последовательностей в течение 200 тыс. тренировочных шагов. Модель запоминает эти последовательности, не видя остальные. Вместе с тем, емкость не используется, а покрытие остается ниже 1%.
Что дает бонус за покрытие
1.3x при 0% покрытии, уменьшаясь до 1.0x при 50%. Эта подсказка распространяется через выбор UCB1: руки с низким покрытием остаются конкурентоспособными даже тогда, когда их вознаграждение за вытаскивание уменьшается. Агент исследует хвост по своему усмотрению, а не случайно.
Во время 200-тыс. тренировочного шага на корпусе Гутенберга размером в 500 тыс. документов бонус за покрытие обычно повышает фактическое покрытие с ~3% (без бонуса) до ~25-30% (с бонусом). То же количество вычислений - восьми до десяти раз больше документов, касающихся.
Где живет отслеживание
| Компонент | Ответственность |
|---|---|
microgpt_cuda.cu | Отчеты о индексе документа на каждом тренировочном шаге |
training_proxy.py | Удерживает множество seen_docs для каждого источника |
training_proxy.py | Вычисляет покрытие, применяет бонус к вознаграждению агента |
training_proxy.py | Сохраняет seen_docs в .state.json при перезагрузке |