200달러로 20B 토큰을 사용해 1B 파라미터 LLM을 밑바닥부터 학습시켜 봄
I trained a 1B-parameter LLM from scratch on 20B tokens for about $200
핵심 요약
개인 프로젝트로 1B 파라미터 LLM을 직접 학습시키고 LoRA로 튜닝하여 챗봇을 구현한 과정과 비용을 공유함.
- 학습 과정 — 20B 토큰으로 1B 모델을 사전 학습 후 Openhermes 데이터셋으로 LoRA 파인튜닝함
- 비용 및 환경 — vast.ai를 활용해 총 200달러 정도의 비용으로 학습 완료함
- 기술적 시도 — Gemma3 아키텍처 기반으로 토크나이저와 하이퍼파라미터를 조정하여 최적화함
- 학습 성과 — 모델 성능은 아쉽지만 LLM 구조 이해와 취업 준비에 큰 도움이 됨
몇 달 전에 개인 프로젝트로(공부도 할 겸, 이력서에도 한 줄 넣을 겸) LLM을 밑바닥부터 만들어보기로 했다.
지난 1년간 여기 올라온 다른 글들 보면서 배운 게 많아서, 나도 결과물을 공유해 보려고 한다.
세 줄 요약: fineweb-edu 데이터셋 20B 토큰으로 1.1B 파라미터 모델을 학습시켰고, openhermes로 LoRA 파인튜닝해서 챗봇 모델을 만들었다. 총비용은 약 200달러 들었다(2~3월 기준이라 지금은 더 비쌀 듯).
- code: https://github.com/Ni-co-la-s/gemmeh
- base model safetensors: https://huggingface.co/ni-co-la-s/gemmeh
- instruction-tuned model safetensors: https://huggingface.co/ni-co-la-s/gemmeh-it
- gguf for base and it model (내 llama.cpp 포크가 필요해서 아마 쓰기 좀 귀찮을 거임): https://huggingface.co/ni-co-la-s/gemmeh-GGUF and https://huggingface.co/ni-co-la-s/gemmeh-it-GGUF
- demo website: https://gemmeh.com/
아키텍처는 내가 시작할 때 제일 많이 썼던 Gemma3를 기반으로 했다. 몇 가지 차이점은 다음과 같다: - 컨텍스트 길이를 더 짧게 잡아서(4096) 슬라이딩 윈도우 어텐션은 안 썼다. - 어휘 사전도 더 작게 만들었고(32k, sentencepiece로 토크나이저 학습함) - 목표 파라미터 수에 맞추려고 하이퍼파라미터도 좀 건드렸다.
데이터는 fineweb-edu를 써서 토크나이저 학습이랑 모델 사전 학습을 돌렸다. 그 뒤에 openhermes로 LoRA 파인튜닝을 했다. 일부러 2023년 이전 데이터만 찾아서 썼는데, 예전에 이 글 보고 나서 모델한테 "미래"에 대해 물어보면 재밌겠다 싶어서 그랬다(갤러리 이미지에 있는 것처럼).
