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%인 실행. 각 소스에 대한 커버리지 보너스 배율을 계산하세요. 계산 과정을 보여주세요.

두 개의 뚜렷한 신선도 신호

동일한 목표, 다른 세분화

ANDREA는 단일 소스에 대한 과도한 훈련을 방지하는 두 가지 메커니즘을 가지고 있습니다. 이들은 비슷하게 들리지만; 서로 다른 것을 측정합니다.


Epoch penalty. 누적 과도 인출을 추적합니다. lifetime_pulls / n_docs > 1.0일 때, 소스는 이론적으로 모든 문서를 적어도 한 번 이상 순회한 것입니다. Penalty = 1 / (1 + epochs). 1.4K 문서 synthetic-chat 소스가 5,600 lifetime pulls (epochs = 4)에서 penalty 1/5 = 0.2x를 받습니다. Epoch 카운트는 재시작 시에도 지속되며; 절대 감소하지 않습니다.


Coverage bonus. 소스 내 문서별 신선도를 추적합니다. CUDA는 doc indices를 보고; proxy는 소스별 세트를 유지합니다. 고유 문서의 50% 미만 커버리지를 가진 소스는 최대 1.3x를 받습니다. Coverage는 소스의 꼬리를 탐색하는 것을 보상하고; epoch penalty는 소스를 소진하는 것을 처벌합니다.


Why Both Matter


신호추적 대상방향상한재시작 시 지속 여부
에포크 패널티집계 과도 인출감소1/(1+e)
커버리지 보너스문서별 신선도증가1.3x

500K 문서 규모의 구텐베르그 소스는 200K 훈련 실행 전체 동안 50% 미만의 커버리지를 유지하면서도 에포크=1에 절대 도달하지 않습니다. 에포크 패널티는 이를 무시하지만, 커버리지 보너스는 밴디트를 구텐베르그의 탐색되지 않은 70% 꼬리 쪽으로 적극적으로 끌어당깁니다.


반대로, 1.4K 합성 채팅 소스는 몇 천 번의 인출 내에 커버리지를 포화(100%)시킵니다; 커버리지 보너스는 1.0x에 머무르는 반면 에포크 패널티는 증가합니다.

구분하기

훈련 중 두 소스를 상상해 보세요: 소스 A는 1,400개 문서 & 8,400 lifetime pulls. 소스 B는 500,000개 문서 & 80,000 lifetime pulls; 프록시는 지금까지 B에 대해 75,000개의 고유 문서 인덱스를 기록했습니다. 각 소스의 bandit weight를 결정하는 신호(epoch penalty 또는 coverage bonus)는 무엇이며, 왜 그런가요?

Coverage Bonus가 ANDREA에게 제공하는 것

그것이 방지하는 실패 모드

문서 수준 추적이 없으면, 단계별 보상에 따라 선택하는 bandit은 .btok 시퀀스를 탐욕적으로 선택합니다. 500K 문서 Gutenberg 코퍼스에는 낮은 교차 엔트로피(일관된 산문, 일반적인 어휘)를 가진 수천 개의 시퀀스가 포함되어 있습니다. 보상만 사용하는 bandit은 강한 보상 신호를 지속적으로 생성하기 때문에 이러한 시퀀스로 반복적으로 돌아갑니다.


결과: 500K 문서 코퍼스는 200K 훈련 단계 동안 약 2K-5K 개의 고유 시퀀스에 걸쳐 샘플링됩니다. 모델은 나머지를 전혀 보지 않고 이러한 시퀀스를 암기합니다. 용량 낭비; 커버리지가 1% 미만으로 멈춥니다.


커버리지 보너스가 제공하는 것

0% 커버리지에서 1.3x, 50%에서 1.0x로 스케일 다운. 이 가벼운 밀어붙임은 UCB1 선택을 통해 전파됩니다: 낮은 커버리지를 가진 arm들은 한 번 당겨서 얻는 보상이 떨어져도 경쟁력을 유지합니다. bandit은 우연히가 아니라 설계상 꼬리를 탐색합니다.


500K 문서 Gutenberg에서 200K 단계 실행 동안, 커버리지 보너스는 일반적으로 관찰된 커버리지를 ~3% (보너스 없음)에서 ~25-30% (보너스 있음)로 높입니다. 동일한 컴퓨트로, 8~10배 더 많은 문서가 터치됩니다.


추적이 존재하는 위치


구성 요소책임
microgpt_cuda.cu훈련 단계당 문서 인덱스 보고
training_proxy.py소스당 seen_docs 집합 유지
training_proxy.py커버리지 계산, bandit 보상에 보너스 적용
training_proxy.pyseen_docs를 재시작 시 .state.json에 지속적으로 저장

구체적인 엔지니어링 선택에 연결하기

ANDREA-120M 훈련에서 coverage bonus를 제거했다고 가정하세요. 구텐베르그 arm(500K+ 문서가 있는)에 대해 200K-step 실행에서 하나의 구체적인 결과를 예측하세요. coverage percentage, document diversity, 또는 downstream sample quality 중 하나를 참조하세요.