익명 'Anthropic 가중치', 난수 지문으로 재현됐다

익명 'Anthropic 가중치', 난수 지문으로 재현됐다

익명 계정 burner22가 Hugging Face에 올린 저장소 numbat은 Anthropic의 차세대 Mythos급 모델의 사전 학습 중간 체크포인트라고 주장한다. 파라미터는 약 14조 개, 114개 층, 772개 샤드, 총 용량은 약 7.72TB다. 저장소는 10월 23일 만들어졌고 11월 1일 전후로 개발자 사이에서 화제가 되어, 하루 남짓한 사이 토론 탭에 31개 주제가 열렸다.

가장 최근의 커뮤니티 감사가 내놓은 결론은 직설적이다. 이 파일들의 상당 부분은 텐서 이름을 시드로 생성한 의사 난수이며, 모델은 학습된 적이 없다는 것이다.

코드 몇 줄이면 다시 계산된다

레시피를 처음 공개한 사람은 사용자 FloxUnder다. 텐서 이름의 SHA-256을 구해 앞 8바이트를 PCG64 난수 생성기의 시드로 쓰고, 표준 정규분포 값을 뽑은 뒤 고정된 변환을 한 번 적용한다. 정규화 층은 exp(0.06z), 합성곱 커널은 1/6을 곱한다. 이 레시피로 그는 완전한 텐서 43개, 총 730368개 값을 비트 단위로 똑같이 재현했다.

이어 사용자 ressl이 784개 파일, 7.01TiB 전체를 내려받아 검증했다. 정규화 층 289개와 합성곱 커널 258개가 모두 바이트 단위로 일치했고, 표본 추출한 NVFP4 텐서 24개, 총 1억 9200만 개 요소에서는 부호 비트 일치율이 100%였다.

편집부도 직접 돌려 봤다. 공개된 레시피에 따라 검증 스크립트를 작성해, HTTP Range 요청만으로 첫 번째 샤드의 헤더와 텐서 2개를 읽었다. 모델은 내려받지 않았고 저장소의 어떤 코드도 실행하지 않았다. model.layers.0.input_layernorm.weight의 값 12288개와 model.layers.0.self_attn.k_conv1d.weight의 값 24576개는 다시 계산한 결과가 파일 내용과 완전히 같았다. 편집부가 검증한 것은 이 두 텐서뿐이며, 전체에 대한 결론은 위 두 사용자의 감사에 근거한다.

겉모습은 거의 흠잡을 데 없다

이 사안이 헷갈리는 이유는 구조 검사가 전부 통과된다는 점이다. ressl의 보고서에 따르면 784개 파일의 SHA-256이 모두 맞고, 157만 개가 넘는 인덱스와 샤드 헤더가 빠짐없이 1대 1로 대응하며, strict 모드로 가중치를 불러와도 오류가 나지 않는다. 저장소 설명의 '신뢰할 수 있는 이유' 항목이 내세우는 것도 바로 이런 자기 정합성이다.

한 겹만 더 들어가면 허점이 드러난다.

  • 수치 분포가 맞지 않는다: 정규분포를 NVFP4로 양자화했다면 니블의 약 60%가 0이어야 하는데, 실측치는 10%에 불과하다.
  • 스케일 표가 너무 작다: 첫 번째 샤드의 블록 스케일 값 216만 개 이상이 취하는 값은 45종뿐이다.
  • 학습 로그가 너무 평탄하다: 마지막 400스텝의 loss가 1.0359와 1.0649 사이를 오가며, 학습 막바지에 있어야 할 감소 흐름이 보이지 않는다.
  • 토크나이저가 낡았다: 분할 규칙은 GPT-2의 정규식이고, 어휘에는 한중일 문자 토큰이 하나도 없다.
  • 파라미터 수가 맞지 않는다: Hugging Face의 자동 집계는 6.8조 개인데, 저장소는 약 14조 개라고 밝힌다.

감사 쪽도 한계를 분명히 그었다. lm_head, A_log 같은 일부 텐서는 이름 시드와 맞지 않는데, ressl은 이들이 다른 난수 경로를 썼다고 본다. 모든 텐서를 이름에서 도출할 수 있다고 단정한 것은 아니며, 고집하는 것은 한 가지뿐이다.

"I am claiming the model is not trained."
(내가 주장하는 것은 이 모델이 학습되지 않았다는 점이다.)

FloxUnder 역시 그 43개 텐서만 보아서는 학습 중 이 파라미터들을 일부러 동결했을 가능성을 논리적으로 배제할 수 없다고 인정하며, 업로더에게 학습 설정을 공개하라고 요청했다. 기사 작성 시점까지 두 감사는 모두 커뮤니티 사용자가 한 것이고 제3의 기관이 보증하지 않았으며, 업로더가 누구이고 무엇을 노렸는지도 확인되지 않는다.

코드명은 진짜, 가중치는 별개의 문제

numbat이라는 이름에는 실제 출처가 있다. 올해 3월 유출된 Claude Code 소스 코드의 prompts.ts에는 모델이 출시될 때 특정 부분을 지우라는 취지의 주석이 있고, 거기에 언급된 이름이 numbat이다. 저장소 설명은 이를 첫째 증거로 내세운다.

올해 몇 차례의 유출을 나란히 놓으면 차이가 분명해진다. 3월 말 외부가 Mythos를 알게 된 것은 콘텐츠 관리 시스템 설정 실수로 노출된 문서 덕분이었고, 같은 달 Claude Code 사건에서 흘러나온 것은 클라이언트 소스 코드였다. 이 자료들 중 모델 가중치와 관련된 것은 없다. numbat 저장소는 이미 알려진 코드명을 미끼로 삼고 무결성 검사를 통과하는 파일 묶음으로 겉을 꾸몄지만, 공개된 적 있는 코드명은 누구나 설명에 적어 넣을 수 있어서 파일의 출처를 증명하지 못한다.

이미 내려받은 사람에게 더 현실적인 위험은 코드에 있다. 저장소에는 modeling_numbat.py가 들어 있고, 설명에는 trust_remote_code=True로 불러올 수 있다고 적혀 있다. 이 옵션은 저장소 안의 Python을 로컬 컴퓨터에서 실행한다. 편집부는 이 코드를 감사하지 않았으므로 악성이라고 말할 수는 없다. 다만 출처를 알 수 없는 저장소라면 이 스위치를 켜지 않는 것이 맞다. 확인이 필요하면 감사 때처럼 바이트만 읽으면 되고, 직접 실행할 필요는 없다.

참고 출처: Hugging Face 모델 페이지와 저장소 메타데이터, 커뮤니티 감사 게시물 #13 및 #31, CocoLoop. 두 텐서의 바이트 단위 결과는 편집부가 공개된 레시피로 다시 계산한 것이며, 전체 수치는 감사 게시물을 기준으로 한다.