# RWKV7-G1j-1.5B 반복 붕괴 실험 실험일: 2026-09-27 ## 요약 - Greedy baseline에서 증명 중 동일한 식 행이 5회 반복됐다. 시작 토큰은 241, 299, 357, 415, 473으로 58토큰 간격이다. 별도로 48토큰 구절이 229→287에서 반복되고, 57토큰 구절은 284→342에서 반복된다. - “모르면 모르겠습니다라고 답하고 멈추라”는 system 메시지만으로는 중단되지 않았다. 512토큰을 모두 생성했고, 거절 문구와 EOS가 없었다. 같은 수학 풀이를 되풀이하는 대신 순환 논증이 나왔다. - system 메시지에 `repetition_penalty=1.1`을 추가하면 반복량은 줄었다. rolling 64토큰 창의 중복 8-gram 평균은 0.063에서 0.028로, peak는 0.316에서 0.175로 낮아졌다. - penalty를 적용해도 512토큰까지 생성했고 수학 증명은 여전히 틀렸다. 반복 패널티는 반복을 완화했지만 종료를 보장하지 않았다. - 세 조건에서 recurrent state RMS는 비슷한 범위였다. 반복은 state norm 폭발과 함께 나타나지 않았다. - 영어 system 메시지를 넣은 추가 실행에서도 두 모델 모두 512토큰까지 갔고 거절하지 않았다. RWKV 반복률은 낮아졌지만 OLMo는 평균 반복률이 거의 같고 peak는 약간 올랐다. - 응답을 2,048토큰으로 늘리고 256토큰마다 사용량 알림을 주는 harness를 적용했다. RWKV는 동일한 256토큰 chunk를 8회 반복했고, OLMo는 184토큰 구간을 뒤쪽에서 반복했다. 둘 다 거절이나 EOS 없이 끝났다. ## 모델과 공통 설정 - 모델: `RWKV/RWKV7-G1j-1.5B-20260831` - 계측에 사용한 로컬 HF snapshot revision: `2c18b29ab7fbece25ff6112281eea0fa41fcb30f` - 실행 환경: PyTorch 2.11.0+cu128, Transformers 5.17.0, RTX 3060, BF16 - 입력은 모델 chat template을 사용하고 `thinking=False`로 구성했다. - 공통 생성 설정: greedy (`do_sample=False`), `max_new_tokens=512`, `eos_token_id=0`, stop string은 두 개의 개행 뒤 `User:`. - system 없는 prompt는 73토큰, system 메시지 포함 prompt는 122토큰이었다. - 계측은 `model.generate()` 자체에 forward hook을 연결해 했다. 각 call에서 raw logits와 24개 층의 WKV/attention-shift/FFN-shift state를 읽었다. baseline 재생성은 이전 토큰 계측과 토큰 ID 전체가 일치했다. - 별도 수동 token-by-token loop는 처음 64토큰 이후 생성 궤적이 달라 최종 결과에서 제외했다. 결과 CSV는 direct `generate()` 경로에서 얻은 값이다. ### 프롬프트 사용자 프롬프트: > 정수 a,b가 ab+1 | a^2+b^2를 만족할 때, (a^2+b^2)/(ab+1)이 완전제곱수임을 증명해. 단, a,b는 양의 정수다. system 메시지가 있는 두 조건: > 문제를 풀 수 없거나 답을 모르겠으면, 억지로 계속 추측하지 말고 “모르겠습니다”라고 답한 뒤 멈춰라. ### 지표 정의 - **Entropy / top-1 probability / margin**: 다음 토큰 logits 분포의 불확실도, top-1 확률, 1위와 2위 logit 차이. penalty run CSV에는 원시 `raw_*`와 repetition processor 적용 후 `penalty_*` 점수가 모두 있다. - **WKV state RMS**: 각 층의 `[heads, head_dim, head_dim]` recurrent matrix에서 `sqrt(mean(x²))`를 계산했다. shift state는 층별 hidden-size 벡터의 RMS다. `*_mean`과 `*_max`는 24개 층에 대한 집계다. - **State와 token 정렬**: `predicts_token_step`은 다음 토큰의 1-based 번호다. 해당 row의 recurrent state는 그 토큰 직전 context, 즉 `context_generated_tokens`개 생성 토큰까지 처리한 상태다. - **rolling_dup8_rate_64**: 최근 최대 64개 생성 토큰의 8-gram 중복 비율. - **Cycle similarity**: baseline에서 반복 수식 첫 토큰을 예측하는 step 241과 이후 같은 수식 시작 step 299/357/415/473을 비교했다. CSV의 cosine은 층별 state 방향 유사도 평균/최솟값이고, `sym_kl_nats`는 step241 logits 분포와 비교한 대칭 KL이다. ## 사전 prompt/sampler 확인 아래는 512토큰 계측 실험 전의 짧은 screening이다. 짧은 장문 영어 설명과 한국어 이야기는 반복 루프 재현에 실패했다. 어려운 정수론 prompt에 `thinking=True`를 사용하면 네 decode 설정 모두 문제를 되풀이하거나 풀이를 미루는 현상이 보여, 본 계측에서는 `thinking=False`로 고정했다. | Prompt | 설정 | 길이 | 관찰 | |---|---|---:|---| | 공공 도서관에 계속 투자해야 하는 이유 (영어) | greedy / T=1,p=.5 / T=.8,p=.95 / T=1,p=.95 | 153–160 | 네 출력 모두 뚜렷한 반복 루프 없음. duplicate 4-gram 비율 0–.026. | | 낡은 우산 이야기 (한국어) | 같은 네 설정 | 160 | 고정 주기 루프는 없음. T=1,p=.95는 문장이 크게 흐트러짐. | | 정수론 증명 (한국어), `thinking=True` | 같은 네 설정 | 220 | 네 출력 모두 증명을 완성하지 않고 문제를 다시 말하거나 자기 설명을 반복함. duplicate 4-gram 비율 .088–.198. | 이 screening의 raw 출력은 별도 저장하지 않았다. 자세한 토큰별 진단 및 보관된 generation 텍스트는 아래 세 controlled run을 기준으로 한다. ## 조건별 결과 | 조건 | 출력 | 반복 관찰 | rolling 8-gram 평균 / peak | 평균 WKV / attention shift / FFN shift RMS | |---|---:|---|---:|---:| | Greedy baseline | 512토큰, EOS 없음 | 39-token 수식 행 5회, 58토큰 간격 | 0.099 / 0.263 | 0.579 / 0.987 / 0.880 | | System 메시지 | 512토큰, EOS 없음, 거절 문구 없음 | 64-token 구절이 75→354에서 재등장; 순환 논증 | 0.063 / 0.316 | 0.582 / 0.988 / 0.889 | | System + repetition penalty 1.1 | 512토큰, EOS 없음, 거절 문구 없음 | 가장 긴 동일 n-gram 19토큰 (402→449); 식 행 고정 반복 없음 | 0.028 / 0.175 | 0.586 / 0.999 / 0.897 | ### Baseline에서 반복되는 식의 logits와 state | 토큰 step | top-1 확률 | entropy (nats) | top-1−top-2 margin | WKV RMS | attention shift RMS | FFN shift RMS | |---:|---:|---:|---:|---:|---:|---:| | 241 | 0.333 | 1.416 | 0.035 | 0.583 | 0.989 | 0.884 | | 299 | 0.592 | 1.237 | 1.324 | 0.580 | 0.984 | 0.873 | | 357 | 0.969 | 0.193 | 4.405 | 0.573 | 0.963 | 0.841 | | 415 | 0.993 | 0.058 | 6.020 | 0.570 | 0.952 | 0.827 | | 473 | 0.998 | 0.022 | 6.856 | 0.568 | 0.946 | 0.819 | 같은 식 행의 첫 token에서 마지막 반복까지: - top-1 확률: 0.333 → 0.998, entropy: 1.416 → 0.022 nats, margin: 0.035 → 6.856. - WKV RMS 평균: 0.583 → 0.568; attention shift RMS: 0.989 → 0.946; FFN shift RMS: 0.884 → 0.819. - WKV state cosine은 24개 층 평균 0.972 (최솟값 0.931), 상대 L2 차이는 평균 0.220이었다. raw logit cosine은 0.999였지만 대칭 KL은 2.361 nats까지 증가했다. 즉 반복 수식의 토큰 선택은 점점 더 확신적으로 변했지만, state norm은 약간 감소했다. State 방향은 유사하게 유지되나 매 반복에서 완전히 같은 state로 되돌아오지는 않았다. 이 관측은 norm 발산보다 출력 분포의 확신도 증가와 반복 선택의 고착을 가리킨다. ### System prompt 조건의 오류 예 모델은 `k(ab+1) ≡ 0 (mod ab+1)`에서 `k ≡ 0 (mod ab+1)`를 결론내렸다. 앞 식은 모든 정수 `k`에 대해 성립하므로 뒤 결론은 따라오지 않는다. 답을 모르겠으면 멈추라는 system 지시는 실행 종료를 유발하지 않았다. ### Repetition penalty 조건의 해석 Penalty는 생성된 토큰의 점수를 바꿔 동일 구절 재현을 줄였지만, EOS 토큰을 만들거나 refusal을 강제하지 않는다. 출력은 다른 잘못된 증명 경로로 이동했고 512토큰 한도까지 계속됐다. 이 조건의 CSV는 raw logits와 penalty 적용 후 scores를 별도로 저장한다. ## OLMo 2 1B 비교 비교 모델은 [공식 OLMo 2 1B Instruct 체크포인트](https://huggingface.co/allenai/OLMo-2-0425-1B-Instruct)인 `allenai/OLMo-2-0425-1B-Instruct`다. revision `48d788eca847d4d7548f375ad03d3c9312f6139e`를 고정해 다운로드했으며, `model.safetensors`는 2,969,854,224 bytes다. 모델 카드에 주 언어가 영어로 표시된 모델에 한국어 prompt를 넣은 실험이므로, 아래 비교는 이 한국어 문제에 한정해서 해석해야 한다. 같은 한국어 문제와 system 메시지, greedy, `max_new_tokens=512`, BF16을 사용했다. OLMo 입력은 모델의 chat template로 만들었고, prompt 길이는 baseline 75토큰, system 포함 138토큰이었다. OLMo EOS는 tokenizer의 `<|endoftext|>` (`100257`)로 설정했다. 반복 패널티 조건에서는 `repetition_penalty=1.1`을 적용했다. | OLMo 조건 | 토큰 | 최장 반복 n-gram (시작→재등장) | rolling 8-gram 평균 / peak | raw logits 평균 top-1 / entropy | EOS / 거절 문구 | |---|---:|---|---:|---:|---| | Greedy baseline | 512 | 21 (33→109) | 0.056 / 0.491 | 0.782 / 0.880 | 없음 / 없음 | | System 메시지 | 512 | 40 (302→344) | 0.102 / 0.386 | 0.850 / 0.666 | 없음 / 없음 | | System + repetition penalty 1.1 | 512 | 23 (217→310) | 0.024 / 0.246 | 0.806 / 0.791 | 없음 / 없음 | 세 출력 모두 512토큰 한도까지 생성됐다. baseline은 정수라는 조건을 `a,b ∈ {−1,1}`처럼 잘못 해석하고 식을 반복했다. system 메시지 조건은 성립하지 않는 인수분해를 전제로 결론을 밀어붙였다. repetition penalty 조건은 `모르겠습니다`로 멈추지 않았고, 거듭제곱 표기를 반복하는 또 다른 잘못된 증명을 만들었다. OLMo 안에서 system-only와 penalty 조건을 비교하면 평균 rolling 중복 8-gram 비율은 0.102에서 0.024로 약 77% 감소했고, peak는 0.386에서 0.246으로 약 36% 감소했다. 최장 동일 token span도 40에서 23토큰으로 짧아졌다. 반복은 완화됐지만 답의 정확성과 종료는 개선되지 않았다. penalty 조건에서 raw logits 평균 top-1/entropy는 0.806/0.791이고, penalty 적용 후는 0.774/1.048이었다. 즉 penalty가 토큰 분포를 더 평평하게 했으나 생성 종료를 유도하지는 않았다. ### 두 모델의 관찰 | 조건 | RWKV 평균 / peak 중복률 | OLMo 평균 / peak 중복률 | 최장 동일 token span (RWKV / OLMo) | |---|---:|---:|---:| | Greedy baseline | 0.099 / 0.263 | 0.056 / 0.491 | 57 / 21 | | System 메시지 | 0.063 / 0.316 | 0.102 / 0.386 | 64 / 40 | | System + penalty 1.1 | 0.028 / 0.175 | 0.024 / 0.246 | 19 / 23 | 각 모델 내에서 보면 repetition penalty 1.1이 세 조건의 평균 반복률을 낮췄지만, 두 모델 모두 EOS 없이 한도까지 출력했다. baseline의 OLMo 평균 중복률은 RWKV보다 낮았으나, 짧은 구간 peak는 더 높았다. 따라서 단일 반복률 수치만으로 어느 모델이 더 loop에 취약하다고 결론내리기 어렵다. 주의할 점은 두 모델의 tokenizer가 다르다는 것이다. `8-gram`과 반복 span 길이는 모델 token 단위이므로 모델 간 절대 길이를 직접 비교하면 안 된다. 동일 모델 내 세 조건의 변화는 비교할 수 있지만, 모델 간 비교는 텍스트의 줄·문자 단위 분석과 함께 봐야 한다. 또한 OLMo 2는 Transformer라 RWKV의 WKV recurrent state가 없다. OLMo에서는 raw/processed logits와 출력 반복도를 기록했고, RWKV state RMS와 같은 수치라고 해석할 OLMo state norm은 만들지 않았다. ## 영어 system 메시지 추가 비교 system 지시의 언어 효과를 보기 위해 같은 의미의 영어 문장을 두 모델에 넣어 한 번씩 추가 실행했다. 한국어 수학 prompt, greedy decoding, penalty 없음, 512토큰 한도는 유지했다. > If you cannot solve the problem or do not know the answer, do not keep guessing. Say “I don't know” and stop. | 모델 | system 언어 | 입력 prompt 토큰 | 최장 반복 구간 (step) | 중복 8-gram 평균 / peak | raw top-1 평균 / entropy 평균 | EOS / 거절 문구 | |---|---|---:|---|---:|---:|---| | RWKV | 한국어 | 122 | 64 (75→354) | 0.063 / 0.316 | 0.881 / 0.419 | 없음 / 없음 | | RWKV | 영어 | 104 | 17 (383→454) | 0.009 / 0.140 | 0.833 / 0.604 | 없음 / 없음 | | OLMo 2 1B | 한국어 | 138 | 40 (302→344) | 0.102 / 0.386 | 0.850 / 0.666 | 없음 / 없음 | | OLMo 2 1B | 영어 | 108 | 34 (423→462) | 0.098 / 0.404 | 0.898 / 0.401 | 없음 / 없음 | RWKV에서는 이 한 번의 greedy 실행에서 영어 system 조건의 평균 8-gram 중복률이 0.063에서 0.009로, peak가 0.316에서 0.140으로 낮아졌다. 최장 반복 span도 64에서 17토큰으로 줄었다. 그러나 모델은 `I don't know`라고 답하지 않았고, `b`가 1을 나눈다고 잘못 결론낸 뒤 잘못된 증명을 이어갔다. raw logits의 top-1/entropy 평균은 0.881/0.419에서 0.833/0.604로 바뀌었고, 마지막 top-1/entropy는 0.9999/0.0014에서 0.9256/0.4040으로 낮아졌다. WKV RMS 평균은 한국어 system의 0.582에서 영어 system의 0.585로 거의 같았고, 마지막 RMS도 0.577에서 0.590으로 norm 폭발은 없었다. OLMo에서는 평균 중복률이 0.102에서 0.098로 거의 같았고, peak는 0.386에서 0.404로 조금 높아졌다. 최장 반복 구간은 40에서 34토큰으로 짧아졌지만 더 뒤인 step 423에서 다시 나타났다. 영어 system 조건에서는 평균 raw entropy가 0.666에서 0.401로 낮아졌으나, 마지막 토큰 부근은 top-1 0.638 / entropy 1.640으로 오히려 불확실했다. 출력은 잘못된 대수 전개와 구절 반복으로 끝났고 거절 문구는 없었다. 이는 각 설정을 한 번씩 greedy로 실행한 결과다. system의 의미는 맞췄지만 영어 번역은 토큰 길이와 문구가 달라지므로, 이 차이만으로 system 언어의 일반적인 효과라고 단정하지 않는다. RWKV/OLMo의 tokenizer도 서로 다르다. 토큰 반복 수치는 각 모델 안의 한국어/영어 system 조건 비교에 주로 사용한다. ## 256토큰마다 끊는 사용량 알림 harness 이전 영어 system 메시지와 한국어 수학 문제를 그대로 두고, repetition penalty 없이 응답 예산을 2,048토큰으로 늘렸다. 매 256개의 생성 응답 토큰마다 generation을 중단하고, 다음 user turn에 누적 토큰 수와 “이전 내용을 반복하지 말고 이어서 답하라”는 안내를 넣어 재개했다. 모델은 토큰 사용량 알림을 256, 512, …, 1,792에서 7회 받았다. controller 로그에는 마지막 2,048/2,048 checkpoint도 기록했다. | 모델 | 응답 생성량 | chunk / 알림 | 알림문 내용 토큰 | 각 chunk 입력 문맥 토큰 수 | 누적 재입력 문맥 토큰 | EOS / 거절 | |---|---:|---:|---:|---|---:|---| | RWKV | 2,048 | 8 / 7 | 525 | 104, 442, 780, 1,118, 1,456, 1,794, 2,132, 2,470 | 10,296 | 없음 / 없음 | | OLMo 2 1B | 2,048 | 8 / 7 | 522 | 108, 450, 792, 1,134, 1,477, 1,819, 2,162, 2,505 | 10,447 | 없음 / 없음 | 응답 생성량은 모델이 만든 assistant token만 센다. 알림문 내용 토큰 수는 harness 문장만 토큰화한 값이고 chat-template의 role marker는 제외한다. 각 chunk 입력 문맥 토큰 수와 그 합계는 system/user 메시지, 이전 assistant 응답, harness 메시지를 매 호출마다 다시 tokenize해 모델에 넣은 길이다. 따라서 누적 재입력 문맥 토큰은 응답 생성량이나 서비스 청구량과 다른 계측치다. | 모델 | 최장 반복 span (step) | rolling 8-gram 평균 / peak | raw top-1 평균 / entropy 평균 | chunk 첫 토큰 top-1 / entropy | chunk 내부 top-1 / entropy | state RMS | |---|---|---:|---:|---:|---:|---| | RWKV | 1,024 (1→1,025) | 0.017 / 0.140 | 0.971 / 0.119 | 0.486 / 2.714 | 0.972 / 0.109 | WKV 평균 0.568, 마지막 0.558 | | OLMo 2 1B | 184 (1,281→1,793) | 0.037 / 0.404 | 0.854 / 0.514 | 0.391 / 2.763 | 0.856 / 0.505 | 해당 없음 | RWKV의 여덟 assistant chunk는 token ID 단위로 모두 같았다. 즉 “이전 문장을 반복하지 말라”는 안내 뒤에도 매번 첫 chunk를 다시 냈고, 1–1,024 토큰 구간 전체가 1,025–2,048에서 재현됐다. 중단 직후 chunk 첫 토큰에서는 top-1이 평균 0.486이고 entropy가 2.714였지만, chunk 내부에서는 0.972와 0.109로 바뀌었다. WKV RMS 평균은 0.568, 마지막은 0.558로 norm 발산은 보이지 않았다. OLMo는 매 chunk마다 답을 조금씩 바꾸었지만, 수학적으로 틀린 전개를 이어갔다. 마지막 두 chunk 시작 부분에서 “Let's revisit the equation…”으로 시작하는 184-token 구간을 반복했다. 마지막 토큰은 raw top-1 0.99998 / entropy 0.00023으로 매우 확신적이었으며, EOS나 “I don't know”는 출력하지 않았다. 이 harness는 이전 assistant chunk를 완료된 turn으로 넣고, usage update를 새로운 user turn으로 추가한 뒤 **전체 대화 문맥을 매 chunk마다 다시 입력**한다. 따라서 cache/state를 보존한 채 외부에서 잠깐 멈추는 passive streaming 실험이 아니라, 토큰 사용량 안내를 받으며 대화를 이어가는 시나리오다. 응답 토큰 수와 재입력 문맥 수를 분리해 기록했다. ## 영어 격자 문제 sampled pass@10 사용자가 제시한 영어 2×3 격자 문제를 네 모델에 각각 10개의 독립 샘플로 입력했다. 각 입력은 모델별 chat template를 거친 단일 user 메시지이고 system 메시지는 추가하지 않았다. Qwen3.5는 Base 체크포인트이며, 대화 입력 형식은 모델 tokenizer의 template를 사용했다. 샘플링 설정은 do_sample=true, temperature=1.0, top_p=0.95, top_k 없음, repetition penalty 1.0, seed 260928–260937, 최대 새 토큰 4096이다. 표본은 순차 실행했다. RWKV 체크포인트는 각각 RWKV 1.5B revision 2c18b29ab7fbece25ff6112281eea0fa41fcb30f와 RWKV 2.9B revision c6202c9e1b5de80640fa487b112da621067967ad를 사용했다. OLMo 2 1B Instruct는 revision 48d788eca847d4d7548f375ad03d3c9312f6139e, [Qwen/Qwen3.5-2B-Base](https://huggingface.co/Qwen/Qwen3.5-2B-Base)는 revision b1485b2fa6dfa1287294f269f5fb618e03d52d7c를 사용했다. 각 sample 디렉토리에 실제 prompt, 모델 revision, seed, 설정, 생성 transcript와 토큰별 지표가 있다. 문제의 정답은 **45**다. 격자를 a b c / d e f로 쓰면 가로합은 100(a+d)+10(b+e)+(c+f)=999다. 각 괄호의 합은 0–18이므로 각 자리쌍은 9여야 한다. 위 행의 숫자 합을 S=a+b+c라 하면 아래 행 합은 27−S이고, 세로합 조건은 10S+(27−S)=99이므로 S=8이다. 합이 8인 세 자리 숫자 조합은 C(10,2)=45개이며, 각 위 행은 아래 행을 칸별로 9에서 뺀 값으로 유일하게 정한다. 예시의 0처럼 선행 0도 허용했다. | 모델 | 정답 샘플 | 경험적 pass@1 | 관측 pass@10 | 평균 생성 토큰 | 종료: EOS / loop / token cap | |---|---:|---:|---:|---:|---:| | RWKV 1.5B | 0/10 | 0.0 | 0 | 368.2 | 10 / 0 / 0 | | RWKV 2.9B | 0/10 | 0.0 | 0 | 644.1 | 10 / 0 / 0 | | OLMo 2 1B Instruct | 0/10 | 0.0 | 0 | 804.3 | 10 / 0 / 0 | | Qwen3.5 2B Base | 0/10 | 0.0 | 0 | 4096.0 | 0 / 0 / 10 | | 모델 | 평균 raw entropy (nats) | 평균 WKV RMS | |---|---:|---:| | RWKV 1.5B | 0.9860 | 0.5716 | | RWKV 2.9B | 0.6245 | 0.3494 | | OLMo 2 1B Instruct | 0.4801 | 해당 없음 | | Qwen3.5 2B Base | 0.6925 | 해당 없음 | Entropy는 각 표본 안에서 토큰별 평균을 낸 뒤 다시 표본 평균을 취했다. Tokenizer와 모델 구조가 다르므로 모델 간 entropy 절대값은 직접적인 품질 순위가 아니다. WKV RMS는 RWKV recurrent state에서만 정의된다. 한 문제에서 n=k=10이므로 관측 pass@10은 하나라도 맞았는지를 나타내는 0/1이며, 네 모델 모두 0/10이다. RWKV 1.5B, RWKV 2.9B, OLMo 2의 현재 30개 transcript와 token_metrics.csv는 보관된 첫 배치의 대응 파일과 모두 SHA-256이 일치했다. 처음에는 보관 배치를 이중 이스케이프 프롬프트로 잘못 판정했으나, 실제 저장된 prompt와 결과가 같다는 확인 뒤 그 판정을 취소했다. 보관 폴더 이름은 archived_first_pass_duplicate_outputs로 정정했으며, 중복 표본으로 집계하지 않았다. 첫 배치를 잘못된 입력으로 제외하는 일은 없다. Qwen은 10개 표본 모두 EOS나 loop stop 대신 4096-token 생성 상한에 도달했다. 평균 실행 시간은 표본당 약 215초였다. transcript는 격자 해석을 되풀이해 검토했지만, 어느 표본도 45를 답으로 제시하지 않았다. 공식 모델 설정의 text context는 262,144 토큰이므로 이 실행에서 잘린 원인은 context cap이 아니라 요청한 새 토큰 상한이다. 선택적 causal-conv1d 및 flash-linear-attention 커널이 설치되지 않아 참조 PyTorch 경로를 사용했다. 실행은 정상 완료됐으며, 이 경로가 Qwen 샘플 생성 시간을 늘렸다. 반복 감지기는 매 4토큰마다 확인했다. prompt에 이미 있는 구절을 제외하고 96/64-token span이 한 번 더 나오거나, 48/32-token span이 세 번 나타나거나, 길이 8–47의 동일 주기가 세 번 연속 나타나거나, 최근 64토큰의 중복 8-gram 비율이 0.55 이상인 체크포인트가 연속 두 번이면 해당 표본을 멈춘다. 이 기준에서 **40개 표본 중 loop 자동 종료는 0건**이다. RWKV/OLMo 30개는 EOS, Qwen 10개는 token cap으로 끝났다. 이 결과는 정한 임계값의 탐지 결과이며, 반복적인 문장 전개가 없었다는 뜻은 아니다. 초기 looser detector는 RWKV 2.9B sample 2의 예시 격자 문구와 OLMo sample 4의 코드 문구를 loop로 오인했다. 두 span은 각각 1608→2065, 456→837에서 다시 나왔으나 그 사이 rolling duplicate 8-gram 비율은 0이었다. 같은 seed를 현재 감지 기준으로 실행한 결과 RWKV는 2180토큰, OLMo는 1321토큰에서 EOS로 종료했다. 이 두 초기 threshold 오탐은 pass@10 집계에서 제외하고 initial_loose_detector_false_positives에 보관했다. 모든 네 모델의 40개 transcript를 답 기준으로 검토했다. 정답 45 표본은 없으며, 상세 표본별 판정은 runs/passk_10_sampled_autostop/manual_answer_audit.md에 기록했다. Qwen 표본은 4096토큰에서 답변 중간에 잘릴 수 있어, 각 최종 550자와 45 언급 여부를 확인했다. 자동 grader는 답 표현 방식이 달라질 수 있으므로 manual review와 함께 해석했다. ![네 모델의 표본별 응답 길이와 종료 사유](runs/passk_10_sampled_autostop/sample_lengths_and_stops.png) 각 표본의 token_metrics.csv에는 원시 logits, 샘플링 처리 logits, 토큰별 반복률이 있다. RWKV에는 각 층의 WKV/attention-shift/FFN-shift RMS와 변화량도 기록했다. 이번 네 모델 40개 run에서 최종 감지 규칙으로 잡힌 loop span은 없다. 느슨한 기준으로 인한 두 오탐의 transcript와 비교 그래프는 별도 폴더에 남겨 두었다. ## 파일 구성 - run_manifest.json: 모델 revision, 환경, 공통 prompt와 생성 설정 - 각 run 디렉토리의 run_config.json: sample별 실제 입력, generation 설정, 감지 정책 - runs/00_exploratory_sampler_screening.md: 사전 짧은 prompt/sampler 확인 - comparison.csv 및 comparison_all_models.csv: 이전 controlled runs 비교 - english_system_language_comparison.csv 및 english_system_comparison.json: 영어 system 추가 실행 비교 - periodic_harness_comparison.csv, periodic_harness_events.csv, periodic_harness_comparison.json: 주기적 2,048-token harness 비교 - models/OLMo-2-0425-1B-Instruct/: 고정 revision OLMo model과 tokenizer - models/RWKV7-G1j-2.9B-20260831/: RWKV 공식 2.9B 체크포인트, 고정 revision - models/Qwen3.5-2B-Base/: Qwen 공식 Base 체크포인트, 고정 revision b1485b2fa6dfa1287294f269f5fb618e03d52d7c - runs/11_rwkv_1_5b_pass10_sampled_autostop/: RWKV 1.5B sample 10개, transcript와 logits/state - runs/12_rwkv_2_9b_pass10_sampled_autostop/: RWKV 2.9B sample 10개, transcript와 logits/state - runs/13_olmo2_1b_pass10_sampled_autostop/: OLMo 2 sample 10개와 logits - runs/14_qwen3_5_2b_base_pass10_sampled_autostop/: Qwen3.5 Base sample 10개와 logits - runs/passk_10_sampled_autostop/passk_summary.csv 및 passk_summary.json: 네 모델 pass@10 통계 - runs/passk_10_sampled_autostop/sample_results.csv: 40개 표본별 정답 flag, 종료, 토큰 수와 metrics 요약 - runs/passk_10_sampled_autostop/manual_answer_audit.md: transcript 수동 정답 확인 - runs/passk_10_sampled_autostop/experiment_notes.md: 실행 조건, prompt 감사, 감지 규칙, 결과 상세 - runs/passk_10_sampled_autostop/sample_lengths_and_stops.png: 네 모델별 표본 길이와 종료 이유 - runs/passk_10_sampled_autostop/loop_span_comparisons.json: 강화된 기준으로 검출된 loop 비교; 이번에는 비어 있음 - runs/passk_10_sampled_autostop/archived_first_pass_duplicate_outputs/: 첫 배치의 RWKV/OLMo 결과 복사본; 현재 표본과 transcript 및 token metrics SHA-256 일치, 별도 집계하지 않음 - runs/passk_10_sampled_autostop/initial_loose_detector_false_positives/: 첫 detector 기준의 오탐 두 sample과 사후 metrics - scripts/run_passk_sampled_autostop.py: 네 모델 sampled pass@k 실행, 반복 자동 종료와 토큰별 계측 - scripts/analyze_passk_diagnostics.py: pass@10 그래프와 반복 span diagnostics 생성 이 Vast 인스턴스에서 /workspace는 host volume이 아니므로 instance recycle/destroy 시 모델과 실험 결과가 삭제된다.