v1의 교훈: 손실은 괜찮아 보이지만 출력은 쓰레기
경고의 이야기
ANDREA-120M v1은 110K 스텝에서 EMA 손실 3.43에 도달했습니다. 이는 무작위 확률(ln(8449) = 9.04)보다 훨씬 낮았습니다. 숫자는 존경스러워 보였습니다. 샘플은 그렇지 않았습니다.
step 80K: region region region region region region region
step 110K: ''''' ''''' '' ''' '' ''' '''?' ''' ' '' '' '
step 140K: games, games, games, games, games, games
step 165K: Budy Budy Budy Budy Budy Budy Budy Budy
v1에는 샘플 모니터링이 연결되어 있지 않았습니다. 모델은 80K 스텝부터 반복 루프 쓰레기를 생성했으며, 누군가가 알아차리기 전까지 85K 스텝 더 훈련이 계속되었습니다. 출력물을 아무도 읽지 않아 10+ 일의 컴퓨트가 낭비되었습니다.
손실이 숨기는 것
크로스-엔트로피 손실은 모델이 다음 토큰에 대해 얼마나 놀라는지를 측정합니다. region region region region을 출력하는 모델은 자신의 출력에 놀라지 않습니다(항상 같은 단어를 예측했기 때문입니다). 수치적 손실은 낮은 상태를 유지하면서 의미적 품질이 붕괴될 수 있습니다.
v2 수정
sample_every = 100 스텝마다. 420개의 자유 형식 토큰 생성. 일관성 기반 조기 중지: 빅그램 다양성, 트리그램 다양성, 영어 단어 존재 여부, 문자 다양성(0-100 스케일)으로 각 샘플 점수화. 5개 연속 샘플이 30점 미만이면 자동 중지. v1에서 백테스트: 132K 스텝에서 트리거되어 3.8일을 절약했을 것.
샘플 읽기는 선택 사항이 아닙니다. 샘플 읽기가 손실이 의미가 있는지 알 수 있는 방법입니다.
손실 vs 샘플 품질
ppl = exp(loss)
변환
Cross-entropy 손실은 nats 단위로 보고합니다. Perplexity는 모델이 각 단계에서 고려하는 등확률 토큰의 동등한 수를 보고합니다. 변환: ppl = exp(loss).
8449토큰 어휘에 대한 무작위: loss = ln(8449) = 9.04, ppl = 8449. 완벽하게 암기된 예측: loss = 0, ppl = 1.
참고 표
| loss | ppl | 읽기 |
|---|---|---|
| 9.04 | 8449 | 전체 어휘에 대한 무작위 |
| 5.00 | 148 | 초기 훈련, 기본 구조 |
| 3.00 | 20 | 어휘 분포 학습 |
| 2.00 | 7 | 지식이 풍부하지만 부정확 |
| 1.00 | 2.7 | 제약 준수 능력 등장 |
| 0.70 | 2 | 교과서 한 줄 요약 |
| 0.30 | 1 | 사실 회상, 대부분 암기됨 |
| 0.13 | 1 | 경고: 암기된 부분 문자열 |
| 0.00 | 1 | 완벽한 암기 |
샘플당 손실 vs EMA 손실
EMA 손실(여러 단계에 걸친 지수 이동 평균)은 전체 훈련 상태를 보고합니다. 샘플당 손실은 특정 샘플 하나의 품질을 보고합니다. 이 둘은 다릅니다: EMA는 2.0에 머무를 수 있지만, 개별 샘플은 bandit가 선택한 프롬프트에 따라 0.13에서 4.0까지 다양합니다.
개별 샘플 손실을 읽는 것이 이상치를 포착하는 방법입니다. EMA 손실은 한 샘플이 repo-docs 부분 문자열을 암기했는지 여부를 알려주지 않습니다; 샘플당 손실이 알려줍니다.
세 가지 손실 값 읽기
감사 창을 걷다
700단계 창
단계 111,996과 112,668 사이에서 ANDREA-120M은 여섯 개의 무관한 지식 영역에 걸친 샘플을 생성했습니다. 각 샘플은 손실 티어에 속합니다:
계층 1: 사실 회상 (loss 0.30, ppl 1)
step 112,584, biology
> [extinction prompt]
> < black spider montano is alive, carolina parakeet is extinct.
두 가지 정확한 사실. Carolina parakeet 1939년에 멸종 선언; black spider monkey는 현존. ppl 1은 모델이 모든 단계에서 올바른 토큰을 선택했음을 의미. 외부 평가: 9.5/10.
2단계: 교과서 한 줄 요약 (loss 0.74, ppl 2)
step 112,668, 신호 처리
> [Fourier transform prompt]
> < 푸리에 변환은 신호를 주파수 성분으로 분해하여 신호 특성 분석 및 주파수 영역에서의 필터링을 가능하게 합니다.
교과서 한 문장 정의. 시간-주파수 분해와 올바른 적용 용어. 외부 평가: 9.5/10.
3단계: 제약 준수 (손실 1.05, ppl 3)
단계 112,248, 시
> 'r'로 시작하는 세 단어를 사용해 비에 대한 하이쿠를 작성하세요.
> < 비의 리듬감 있는 반복, 창문의 물줄기, 삶의 고통에서 휴식.
'r' 단어 세 개 (Rain, Rivulets, Respite), 세 줄, 하이쿠 구조 유지, 비를 중심으로 한 의미적 일관성. ppl 3 = 모델이 각 단계에서 몇 가지 후보를 고려했지만 제약 내에 머물렀음.
계층 4: 지식이 있지만 부정확함 (손실 1.94, ppl 7)
step 112,500, python tools
> Python 프로젝트에서 오래된 패키지를 어떻게 찾나요?
> < pip list --outdated names를 사용하여 프로젝트 관리에서 pip 패키지 목록을 확인하거나, pyenv를 통해 더 자동화된 패키지를 얻어야 합니다.
올바른 커널 명령어 (pip list --outdated)가 훈련 데이터에서 나타납니다. 표현의 유창성은 여전히 발전 중입니다. 사소한 혼동: pyenv는 Python 버전을 관리하지 패키지를 관리하지 않습니다. ppl 7은 모델이 각 단계에서 ~7개의 그럴듯한 연속을 고려했다는 의미입니다; 모두 정확한 것은 아니었습니다.
계층 5: 경고, 암기된 부분 문자열 (손실 0.13, ppl 1)
step 112,080, 이상
손실 0.13은 교과서 계층 아래에 있습니다. 모델이 이 샘플에 대해 너무 확신합니다. 진단: 학습된 채팅이 아닌 암기된 repo-docs 부분 문자열입니다. bandit가 이전 실행 상태에서 가중치 1.546을 가진 좀비 repo-docstrings 팔을 선택했고, 샘플이 훈련 데이터의 원문 덩어리를 재현했습니다.
비정상적으로 낮은 손실은 품질 신호가 아닌 암기 경고입니다. 0.20 미만은: 모델이 생성하는지 복사하는지 확인하라는 의미입니다.
700단계 내 6개 도메인
생물학 (앵무새), 신호 처리 (푸리에), 시 (하이쿠), 파이썬 도구 (pip), 대화형 대화, 운영 대화. 700단계 내 6개의 무관한 도메인은 bandit이 한 소스에 갇히지 않고 다양한 작업을 하고 있음을 알려줍니다. 도메인 폭(Breadth)은 품질 지표입니다.
세 가지 샘플 진단
외부 평가자들에게 샘플을 제출하는 이유
외부 평가가 포착한 것
내부 샘플 감사는 모델이 생물학, 신호 처리, 시, & 파이썬을 즉시 생성하고 있다는 것을 알려주었다. 외부 채팅 품질 평가는 해당 샘플들을 '9.5/10' 및 '이 규모에서 지식 작업에서 체급 이상의 성능'으로 평가했다.
내부 검토 질문: 밴디트가 다양한 작업을 수행했는가? 외부 검토 질문: 인간 독자가 이 출력을 좋게 평가할 것인가?
둘 다 중요한 이유
내부 감사는 구조적 실패를 포착한다: 반복 붕괴, 암기 스파이크, 저다양성 좀비 팔. 손실 계층, n-gram 다양성, & 도메인 폭은 모두 프록시에서 관찰 가능하다.
외부 평가가 의미적 품질 실패를 포착합니다: 자신 있게 잘못된 사실, 어색한 표현, 놓친 뉘앙스. 이러한 것들은 손실 수치에 나타나지 않습니다.
방법론
ANDREA의 훈련 대시보드 training.ai.unturf.com/dashboard는 의도적으로 공개되어 있으며 읽기 전용입니다. 누구나 .loss.json, .samples.json, 및 bandit 상태를 실시간으로 확인할 수 있습니다. 외부 검토자들은 운영자가 본 동일한 데이터에 접근할 수 있었습니다.
200,000단계 중 112,584단계에서 추출된 샘플에 대해 독립적인 독자로부터 9.5/10 점수, 완전한 출처 추적과 함께: 이 결과는 재현 가능하고, 감사 가능하며, 조작 불가능합니다. 동일한 샘플, 동일한 손실 값, 동일한 bandit 상태는 확인하는 누구나 볼 수 있습니다.
두 개의 독립 신호
내부: 낮은 손실 + 높은 다양성 + 다중 도메인 커버리지 = bandit 건강함.
외부: 독립 리뷰어로부터 9.5/10 = 출력 등급이 좋음.
둘 다 일치: 훈련이 사실적 회상, 제약 준수, & 다단락 일관성에 수렴하고 있음. 만약 분기된다면 (낮은 손실이지만 외부 등급 3/10), 조사할 메트릭-게이밍 문제가 있음.
두 신호, 하나의 진단
감사 창당마다 다섯 단계
하나의 감사, 다섯 가지 검사
1. 손실 계층 읽기. ppl = exp(loss). 다섯 계층 표와 일치 확인.
2. 0.20 미만 이상치 확인. 암기 신호. 품질 결과로 처리하기 전에 조사.
3. 실제 샘플 텍스트 읽기. 손실 숫자는 출력 내용이 무엇인지 말해줄 수 없음. 읽어보세요.
4. 도메인 폭 계산. 700단계에서 6개의 서로 무관한 도메인 = bandit 건강함. 하나의 도메인이 7번 반복 = bandit 멈춤.
5. 외부 평가와 비교. 샘플이 당신에게 좋게 보인다면, 실행 외부의 누군가에게 읽어보라고 요청하세요. 그들의 의견 불일치는 정보입니다.
이것이 연결되는 것
- Activity 22 (grow_a_language_model_checkpoints). sample_every 주기는 체크포인트 주기와 일치; 둘 다 100단계마다 실행.
- Activity 21 (coherence-gated early stopping). 샘플이 붕괴될 때 훈련을 자동 중단하는 다양성 지표.
- Activity 24 (grow_a_language_model_microgpt_to_andrea). v1 붕괴, v2.5 오염, v3 광택 모두 샘플 감사로 (또는 샘플 감사로 잡을 수 있었을) 발견됨.
하나의 진실
손실은 숫자입니다. 샘플을 읽는 것은 그 숫자가 무엇을 의미하는지 알기 위한 방법입니다.