Making a vintage LLM from scratch
개요
이 기술 블로그 게시물은 1900년대 이전의 텍스트만을 사용하여 3억 4천만 개의 매개변수를 가진 LLM을 처음부터 구축하는 과정에 대한 경험을 공유합니다.
주요 내용
- 프로젝트 동기: 1800년대 런던 텍스트로 LLM을 훈련하는 프로젝트에 영감을 받아 "빈티지 LLM"을 직접 만들기로 결정했습니다.
- 모델 아키텍처 및 규모: Llama 아키텍처를 기반으로 하며 3억 4천만 개의 매개변수를 가집니다. 지식 컷오프 연도는 1900년입니다.
- 데이터셋 구축: 컴퓨터, 원자폭탄, 우주선 등에 대한 지식을 학습시키고 싶지 않아 1800년대의 오래된 책, 신문 등에서 자신만의 영어 텍스트 데이터셋을 구축했습니다. Project Gutenberg, Oxford Text Archive, Internet Archive books 등이 포함되었습니다.
- 데이터 전처리: 기존 데이터셋의 중복 제거, 필터링, 텍스트 강화 작업을 수행했으며, 특히 "정규화된 텍스트(소문자, 공백 제거)"를 기준으로 중복을 제거했습니다. 텍스트 품질 확인을 위해 ZLIB 압축률, 샤논 엔트로피, 자체 품질 점수 등의 지표를 활용했습니다.
- 데이터 저장: Qdrant, Zvec, Lance, Valkey 등 다양한 데이터베이스를 실험한 후, 안정적이고 확장 가능한 LevelDB를 최종 선택했습니다.
- 토크나이저 개발: 프로그래밍 언어 용어 등 불필요한 단어를 학습하지 않도록 영어 전용 맞춤형 토크나이저를 개발했습니다.
- 모델 훈련 (Base-training):
- Stage 1: Pythia-14M 및 Llama3 아키텍처 기반의 2억, 3억 4천만 매개변수 모델을 개발했습니다. 처음에는 litGPT 프레임워크를 사용했으나, Radeon GPU 호환성 문제 및 안정성 문제로 자체 훈련 스크립트를 개발했습니다. 클라우드 환경(RunPod, ThunderCompute, Vast.ai)에서 훈련을 진행했으며, 총 GPU 비용은 약 80달러였습니다.
- Stage 2: 긴 텍스트(최대 10MB)를 사용하여 훈련했으며, OCR 오류 등 품질이 낮은 부분을 필터링하기 위해 추가적인 품질 지표를 개발하고 적용했습니다. 이 단계에서 약 60억 토큰을 학습시켰습니다.
- 미세 조정 (Fine-tuning): 현재 진행 중인 단계로, 기본적인 질문-답변 데이터셋을 생성하여 모델이 대화를 이해하도록 미세 조정을 시도하고 있습니다. "CommonSense" 데이터셋으로 미세 조정 후, "신, 사랑, 삶"과 같은 질문에 놀랍도록 잘 응답했으나, 전반적으로는 아직 안정적인 대화는 어렵다고 언급합니다.
- 수학 능력 테스트: 기본적인 수학 연산(덧셈, 뺄셈, 곱셈, 나눗셈)에 대한 암기 능력을 테스트했으며, 특정 하이퍼파라미터 설정을 통해 44.4% (덧셈) ~ 67.5% (뺄셈)의 정확도를 달성했습니다.
시사점
이 프로젝트는 적절한 데이터 전처리, 맞춤형 도구 개발, 클라우드 컴퓨팅의 효율적인 활용을 통해 비교적 저렴한 비용으로도 사용자 정의 LLM을 구축할 수 있음을 보여줍니다. 또한, 역사적 텍스트 기반 LLM의 잠재력과 훈련 과정에서의 다양한 기술적 도전 과제 및 해결 방안을 제시합니다.
원문을 불러오는 중...
댓글
GitHub Discussions