본문으로 건너뛰기

공개 파일로 LLM 학습 계보를 판별하는 방법

config.json, 토크나이저, embedding CKA로 LLM의 from-scratch 학습과 외부 모델 파생 여부를 비교하는 재현 가능한 분석법입니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

공개 LLM이 from-scratch로 학습됐는지 외부 기반에서 파생됐는지 확인하려면 config.json의 아키텍처 지문과 tokenizer.json의 어휘 중복률을 먼저 비교해야 합니다. 대응 embedding 행의 cosine은 Transformer 표현의 회전 불변성 때문에 무력하며, Linear CKA도 from-scratch 확인에는 유용하지만 continued-pretraining 파생 여부를 강하게 가르지는 못합니다. 글은 아키텍처와 가중치 결과를 Native, Adapted, Mixed, Ported genotype으로 묶고 토크나이저와 attention diversity를 보조 근거로 남겼습니다. 한국 조직 아홉 곳의 공개 foundation model에 같은 절차를 적용한 결과 계보가 외부 모델 재사용부터 자체 설계까지 다양하게 나타났으며, Model Genome Korea에서 결과를 확인하고 세 함수를 직접 재현할 수 있습니다.

섹션별 상세

01
공개 가중치 기반 모델과 from-scratch foundation model은 모두 정당한 개발 방식이지만, 두 계보를 외부에서 구분하기는 쉽지 않습니다. 이 글은 모델 발표자의 설명에 의존하지 않고 Hugging Face의 공개 파일만으로 출처를 비교하는 재현 가능한 절차를 구성했습니다. LG K-EXAONE 2.0과 같은 모델을 둘러싼 논쟁과 Zhihu 게시물의 2.7M 조회는 이런 검증 수요가 실제 커뮤니티로 확산됐다는 배경을 제공합니다.
02
첫 번째 축은 config.json의 구조 수치를 조합하는 아키텍처 지문입니다. hidden_size, intermediate_size, num_hidden_layers, attention heads와 key-value heads를 하나의 shape tuple로 묶어 외부 모델과 대조하며, 다섯 값이 동시에 일치할 때 기존 설계를 채택했다는 근거가 강해집니다. Qwen2.5-7B의 3584 · 18944 · 28 · 28 · 4, Qwen2.5-72B의 8192 · 29568 · 80 · 64 · 8 같은 정확한 일치는 단일 필드가 우연히 겹치는 경우보다 판별력이 높습니다.
python
import requests
def arch_fingerprint(repo): c = requests.get(f"https://huggingface.co/{repo}/resolve/main/config.json", headers={"User-Agent": "genome/1.0"}).json()
 return {k: c.get(k) for k in ("model_type", "vocab_size", "hidden_size", "intermediate_size", "num_hidden_layers", "num_attention_heads", "num_key_value_heads")}

Hugging Face Hub의 config.json에서 아키텍처 지문을 구성하는 핵심 필드를 읽어옵니다.

03
두 번째 축은 tokenizer.json에 들어 있는 어휘 집합의 중복률입니다. 두 모델의 토큰 집합 교집합을 더 작은 집합의 크기로 나누면, 작은 어휘가 큰 기반 어휘의 부분집합인 경우 약 1.0으로 나타나고 토크나이저를 그대로 재사용한 상황을 포착할 수 있습니다. 반대로 Qwen2.5-7B와 아키텍처가 정확히 같아도 중복률이 약 0.38이면 외부 구조 위에 새로운 한국어 토크나이저를 학습한 조합으로 해석할 수 있습니다.
python
def vocab_set(repo):
 j = requests.get(f"https://huggingface.co/{repo}/resolve/main/tokenizer.json").json()
 v = j["model"]["vocab"] # BPE: {token: id}
 return set(v.keys())
def tok_overlap(a, b): A, B = vocab_set(a), vocab_set(b)
 return len(A & B) / min(len(A), len(B)) # 1.0 == subset

두 저장소의 tokenizer.json에서 어휘 집합을 추출하고 작은 집합을 기준으로 중복률을 계산합니다.

04
가중치 축에서는 단순한 행별 cosine이 모델 계보를 구분하지 못한다는 함정이 확인됐습니다. Transformer 은닉 공간은 직교 회전에 대해 불변이므로 두 모델이 같은 정보를 다른 좌표계에 저장하면 대응 토큰의 embedding 행이 서로 비슷하지 않게 보입니다. Linear CKA는 회전과 등방성 스케일에 덜 민감해 적합하지만, from-scratch 모델은 후보 기반 모델과 CKA가 거의 0인 반면 continued-pretraining 파생 모델은 약 0.25로 같은 계열의 무관한 모델 간 기준치 약 0.21과 크게 벌어지지 않았습니다.
python
import torch
def linear_cka(X, Y):
 # X: (n, d1), Y: (n, d2) — SAME token order (shared vocab)
 X = X - X.mean(0, keepdim=True)
 Y = Y - Y.mean(0, keepdim=True)
 num = (X.T @ Y).norm() ** 2
 den = (X.T @ X).norm() * (Y.T @ Y).norm()
 return (num / den).item()

공유 어휘의 같은 토큰 순서로 정렬한 두 embedding 행렬의 Linear CKA를 계산합니다.

05
attention diversity는 아키텍처 독창성을 가늠하는 보조 축으로 사용됐습니다. config.json에서 layer_types, sliding_window, mamba2_d_state, hyena_filter_order, mla_kv_lora_rank 같은 설정의 종류를 세어 단일 attention과 hybrid 구성을 구별하며, 일부 모델은 full attention과 sliding attention을 함께 사용했습니다. 가장 다양한 모델은 mamba2, hyena, MLA, linear attention, gated-delta-net, native-sparse-attention, sliding-window를 한 스택에 조합했지만 이 축은 최종 계보 판정에 직접 합쳐지지 않습니다.
python
KEYS = ("layer_types", "linear_attn_config", "sliding_window", "mamba2_d_state", "hyena_filter_order", "mla_kv_lora_rank", "attention_cls")
def attention_diversity(cfg):
 hits = [k for k in KEYS if k in cfg] # e.g. layer_types = [full×16, sliding×48] -> hybrid (2)
 return hits

config.json에 기록된 서로 다른 attention 관련 설정의 수를 세어 구조적 다양성을 확인합니다.

06
두 개의 주된 축인 아키텍처와 가중치 결과는 Native self from-scratch, Adapted, Mixed, Ported foreign이라는 genotype으로 압축됩니다. tokenizer overlap과 attention diversity는 판정에 흡수하지 않고 원시 근거로 나란히 표시해 독자가 구조와 어휘의 재사용 정도를 따로 확인하게 했습니다. 한국 조직 아홉 곳의 공개 foundation model에 같은 기준을 적용한 결과, 외부 아키텍처와 토크나이저를 그대로 쓴 Ported부터 외부 일치가 없는 Native까지 계보가 균일하지 않았습니다.
07
이 방법의 결론은 가중치 분석을 단독 판정기로 과장하지 않는 데 있습니다. near-zero CKA는 from-scratch를 뒷받침하는 깨끗한 증거가 될 수 있지만, 파생 모델의 CKA가 무관한 동일 계열 모델과 비슷해질 수 있어 derivation 검출력은 약합니다. 따라서 실제 판단에서는 config.json과 tokenizer.json을 1차 근거로 삼고 가중치와 attention diversity는 보조 정보로 사용해야 하며, 공개 가중치 기반 개발 자체를 부정행위로 간주하지 않습니다.

용어 해설

아키텍처 지문(Architecture Fingerprint)
LLM의 config.json에 기록된 hidden size, 레이어 수, attention head 수 같은 구조적 수치를 묶어 모델의 설계 계보를 비교하는 방법입니다. 여러 값이 외부 모델과 동시에 일치하면 단순한 우연보다 기존 아키텍처 채택의 근거가 강해집니다.
토크나이저 중복률(Tokenizer Overlap)
두 모델의 tokenizer.json에서 어휘 집합이 얼마나 겹치는지 비교하는 지표입니다. 더 작은 어휘 집합의 크기를 분모로 사용하면 한 모델의 어휘가 다른 모델의 엄격한 부분집합일 때 중복률이 1.0에 가까워져 기반 토크나이저 재사용을 포착할 수 있습니다.
회전 불변성(Rotational Invariance)
Transformer의 은닉 공간은 특정 좌표축을 우선하지 않으므로 표현 전체를 직교 회전해도 같은 정보를 담을 수 있다는 성질입니다. 이 때문에 대응 토큰의 embedding 행끼리 cosine을 계산하면 계보가 같은 모델도 유사하지 않게 측정될 수 있습니다.
Linear CKA
Linear CKA는 두 표현 행렬의 중심화된 내적 구조를 비교하는 방법으로, 회전과 등방성 스케일 변화에 영향을 덜 받습니다. 이 글에서는 공유 어휘의 같은 토큰 순서로 embedding을 정렬한 뒤 CKA를 계산해 from-scratch와 continued-pretraining의 차이를 보조적으로 측정했습니다.
Continued Pretraining
이미 학습된 외부 모델의 가중치를 출발점으로 삼아 새로운 데이터에서 추가 사전학습을 수행하는 방식입니다. 원래 가중치의 흔적이 남을 수 있지만 대규모 학습이 embedding을 크게 바꾸면 Linear CKA만으로 파생 여부를 뚜렷하게 판별하기 어렵습니다.

기술

  • Hugging Face Hub
  • config.json
  • tokenizer.json
  • Python
  • requests
  • PyTorch
  • Linear CKA
  • Model Genome Korea

활용 사례

  • 공개 foundation model의 from-scratch 학습 여부와 외부 기반 모델 계보 비교
  • 모델 발표 내용과 공개 체크포인트의 구조 및 토크나이저 일치 여부 검증
  • 여러 조직의 LLM을 Native, Adapted, Mixed, Ported 계열로 분류
  • 공개 모델 저장소에 대한 재현 가능한 lineage 분석
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 08. 23.수집 2026. 08. 23.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.