TimeCapsuleLLM: 1800~1875년 데이터만으로 학습한 역사 특화 LLM
TimeCapsuleLLM: LLM trained only on data from 1800-1875
TL;DR Highlight
소형 언어 모델이 19세기 초 런던 텍스트로만 학습하여 역사적 언어를 단순 흉내가 아닌 실제 시대 지식과 문체의 내재화로 습득할 수 있는지를 검증한다.
Who Should Read
LLM의 학습 데이터 편향 문제나 도메인 특화 사전학습에 관심 있는 ML 엔지니어, 또는 역사적 텍스트 분석이나 디지털 인문학 프로젝트를 진행하는 연구자.
Core Mechanics
- 이 프로젝트는 현대 편향(modern bias)을 없애기 위해 1800~1875년 런던 관련 문서만을 학습 데이터로 사용해 LLM을 처음부터(from scratch) 학습했다. 기존 모델처럼 방대한 현대 인터넷 텍스트를 쓰지 않고 시대 제한 코퍼스만 사용한 것이 핵심 차별점이다.
- 버전별로 아키텍처가 달라졌다. v0·v0.5는 Andrej Karpathy의 nanoGPT 기반 소형 모델이고, v1은 Microsoft의 Phi 1.5 위에 구축됐으며, v2는 LlamaForCausalLM 기반으로 진화했다.
- 학습 데이터는 Internet Archive에서 수집한 19세기 런던 문서들이며, 데이터셋은 HuggingFace에 공개돼 있다(postgrammar/london-llm-1800). 단, 소형 공개 데이터셋은 이미 토크나이징된 상태로만 배포됐다는 비판을 받았다.
- 모델 출력 품질은 아직 초기 단계다. 'Who art Henry?'라는 프롬프트에 'I know that man, I have did not a black, the storm' 같은 문법적으로 부정확한 텍스트를 생성했다. 댓글에서는 'art'가 2인칭 단수라 'who art Henry'도 실제로는 틀린 문법이라는 지적도 나왔다.
- 현재 Muhlenberg College와 학술 협력 연구가 진행 중이며, 학술 인용을 위한 CITATION.cff도 제공된다. 독립 개인 프로젝트에서 출발해 학계와 연결된 케이스다.
- 프론티어 모델과의 데이터 규모 차이가 크다. 댓글에서 현대 LLM은 텍스트만 50TB 이상을 쓰는데, 19세기 생존 문서는 그보다 수 자릿수 적고 신문·공문서 등 편향된 출처 위주라는 한계가 지적됐다.
- 이 프로젝트의 철학적 질문은 '모델이 학습하지 않은 미래 지식을 스스로 추론해낼 수 있는가'다. 예를 들어 1875년 이전 데이터만 학습한 모델에게 양자역학 힌트를 주면 올바른 방향으로 추론할 수 있는지를 실험 아이디어로 커뮤니티가 논의했다.
Evidence
- '1900년 이전 데이터로만 학습한 모델에게 양자역학이나 상대성이론 관련 맥락을 주입하면 스스로 유도해낼 수 있을까?'라는 흥미로운 사고 실험이 제안됐다. 하지만 이에 대해 전문가들 사이에서는 'LLM은 패턴 압축 모델이라 학습하지 않은 개념을 새로 발견하는 건 불가능하다'는 단호한 반론이 나왔다.
- 실행 품질에 대한 비판적 피드백이 구체적으로 제기됐다. 한 댓글 작성자는 '원시(untokenized) 데이터셋을 왜 공개하지 않았는지, 재현 가능한 학습 스크립트는 왜 없는지, 데이터 노이즈 제거는 왜 안 됐는지, 채팅 가능한 형태로 post-training은 왜 안 했는지' 등 4가지 개선점을 나열하며 직접 더 나은 버전을 만들어볼 수 있다고 밝혔다.
- '1834년에 무슨 일이 있었나'를 물으면 신문 기사 스타일로 답변이 나오는데, 이는 학습 데이터 자체가 당시 살아남아 디지털화된 신문·공문서 위주이기 때문이라는 분석이 있었다. 즉, 모델이 19세기를 '전부' 반영하는 게 아니라 기록 권력을 가진 엘리트 계층의 시각만 담는다는 데이터 편향 문제가 지적됐다.
- 스타일 전이(style transfer) 아이디어가 나왔다. 현대 LLM의 코딩 지식은 유지하면서 19세기 모델의 문체로 출력을 렌더링할 수 있을지에 대한 논의가 있었는데, 파인튜닝 없이 레이어 스왑 같은 방식이 LLM에서 가능한지 확신하기 어렵다는 결론이 나왔다.
- 유사 프로젝트로 history-llms(github.com/DGoettlich/history-llms)가 언급됐으며, 또 다른 '시간 잠금(time-locked)' LLM 프로젝트가 이전에 HN에 올라왔는데 출력 품질은 더 좋지만 오남용 방지 문제로 팀이 고민 중이라는 후기가 공유됐다.
How to Apply
- 역사적 문서를 다루는 디지털 인문학 프로젝트에서 시대별 언어 모델이 필요할 때, 이 프로젝트의 데이터 수집 방식(Internet Archive + 시대 필터링)을 참고해 자체 코퍼스를 구축할 수 있다. download_texts_improved.py와 internet_archive_ids.txt가 출발점이 된다.
- 도메인 특화 사전학습(domain-adaptive pretraining) 실험을 계획 중이라면, 이 프로젝트처럼 nanoGPT나 LlamaForCausalLM을 베이스로 좁은 코퍼스를 처음부터 학습하는 접근과, 기존 모델을 좁은 코퍼스로 continued pretraining하는 접근을 비교 실험할 수 있다. 이 프로젝트는 전자의 한계(데이터 부족, 출력 품질 저하)를 실증적으로 보여준다.
- HuggingFace에 공개된 postgrammar/london-llm-1800 데이터셋을 직접 내려받아 19세기 영어 텍스트 분류, 감성 분석, 언어 변화 연구 등의 베이스라인 데이터로 활용할 수 있다. 단, 데이터가 이미 토크나이징된 형태일 수 있으니 원시 텍스트 필요 시 직접 Internet Archive에서 수집해야 한다.
Terminology
관련 논문
Neural Particle Automata: 자기조직화 파티클 시스템을 학습하는 신경망 모델
고정된 격자 대신 움직이는 파티클 위에서 동작하는 Neural Cellular Automata의 확장 버전으로, 형태 생성·포인트 클라우드 분류·텍스처 합성 등 다양한 작업에서 자기조직화 동작을 학습할 수 있다.
PyTorch Training Loop 완전 해부: 각 줄이 하는 일과 순서를 바꾸면 생기는 문제
PyTorch 학습 루프의 각 코드 줄이 왜 그 위치에 있어야 하는지, 순서를 바꾸거나 빠뜨렸을 때 어떤 문제가 생기는지를 단계별로 설명한 심층 가이드다.
좋은 Verifier도 망가질 수 있다: Self-Improving VLM이 새로운 태스크에서 오히려 퇴보하는 현상
VLM 자가학습 루프에서 verifier가 특정 태스크에 맞지 않으면 학습할수록 오히려 성능이 떨어지는데, DPO 손실값은 멀쩡히 내려가서 눈치채기도 어렵다.
Self-Distillation에서 Feedback Alignment의 역할
LLM이 스스로를 가르칠 때, 피드백을 모델의 추론 흐름에 단계별로 맞추면 GRPO보다 16점 이상 수학 추론 성능이 오른다.
작고 수정 가능한 CUDA 기반 Language Model 직접 구현체
CUDA로 작성된 GPT(Generative Pretrained Transformer) 미니멀 구현체로, 텍스트뿐 아니라 모든 바이트 스트림을 학습할 수 있어 LLM 내부 구조를 직접 뜯어보고 싶은 개발자에게 유용하다.
Stanford CS336: Language Modeling from Scratch - LLM을 처음부터 직접 만드는 강의
Stanford에서 운영하는 LLM 전 과정 구현 강의로, 토크나이저부터 데이터 수집, 트랜스포머 구현, 분산 학습, RL 기반 정렬까지 직접 코딩하며 배운다. 이론이 아닌 구현 중심이라 실제로 LLM이 어떻게 작동하는지 깊이 이해하고 싶은 개발자에게 가장 체계적인 커리큘럼 중 하나다.