create-llm
_ _ _
___ _ __ ___ __ _ | |_ ___ | || | _ __ ___
/ __|| '__| / _ \ / _` || __| / _ \ _____ | || || '_ ` _ \
...
LLM 생성 및 학습을 위한 CLI 도구
프로덕션 레디(production-ready) LLM 학습 프로젝트를 몇 초 만에 생성합니다. 커스텀 언어 모델을 학습시키기 위한 create-next-app과 유사합니다.
npm version
npm downloads
GitHub stars
License: MIT
npm 패키지 • 문서화 (Documentation) • 버그 보고 (Report Bug) • 기능 요청 (Request Feature)
npx create-llm my-awesome-llm
cd my-awesome-llm
pip install -r requirements.txt
...
왜 create-llm을 사용해야 할까요?
언어 모델을 처음부터 학습시키려면 다음이 필요합니다:
- 모델 아키텍처 (GPT, BERT, T5 등)
- 데이터 전처리 파이프라인
- 토크나이저(Tokenizer) 학습
- 콜백(callbacks)이 포함된 학습 루프
- 체크포인트 관리
- 평가 지표
- 텍스트 생성
- 배포 도구
create-llm은 이 모든 것을 단 하나의 명령어로 제공합니다.
주요 기능 (Features)
적절한 크기의 템플릿 (Right-Sized Templates)
사용 사례에 최적화된 4가지 템플릿 중에서 선택할 수 있습니다:
- NANO (1M 파라미터) - 모든 노트북에서 2분 만에 학습
- TINY (6M 파라미터) - CPU에서 15분 만에 프로토타입 제작
- SMALL (100M 파라미터) - 몇 시간 만에 프로덕션 모델 완성
- BASE (1B 파라미터) - 며칠 만에 연구 등급(Research-grade)
필요한 모든 것을 즉시 사용할 수 있습니다:
- PyTorch 학습 인프라
- 데이터 전처리 파이프라인
- 토크나이저 학습 (BPE, WordPiece, Unigram)
- 자동 저장(auto-save)을 통한 체크포인트 관리
- 실시간 모니터링을 위한 TensorBoard 통합
- 대화형 채팅 인터페이스
- 모델 비교 도구
- 배포 스크립트
스마트 기본값(Smart Defaults)
지능적인 설정 기능:
- 토크나이저로부터 어휘 크기 자동 감지
- 시퀀스 길이 불일치 자동으로 처리
- 모델/데이터 크기 불일치 경고 제공
- 학습 중 과적합(overfitting) 감지
- 최적 하이퍼파라미터 제안
- 크로스 플랫폼 경로 처리
- 오류에 대한 상세 진단 메시지 제공
플러그인 시스템(Plugin System)
선택적 통합 기능:
- WandB: 실험 추적(Experiment tracking)
- HuggingFace: 모델 공유(Model sharing)
빠른 시작(Quick Start)
원클릭 설정(One-Command Setup)
npx create-llm my-llm
...
대화형 설정(Interactive Setup)
다음 항목에 대한 프롬프트가 나타납니다:
- 프로젝트 이름 (Project name)
- 템플릿 (Template) (NANO, TINY, SMALL, BASE)
- 토크나이저 유형 (Tokenizer type) (BPE, WordPiece, Unigram)
- 선택적 플러그인 (Optional plugins) (WandB, HuggingFace)
빠른 모드(Quick Mode)
npx create-llm my-llm --template tiny --tokenizer bpe --skip-install
🐳 Docker 지원(Docker Support)
Node.js나 Python을 로컬에 설치하지 않고도 create-llm 실행!
빠른 Docker 설정(Quick Docker Setup)
git clone https://github.com/theaniketgiri/create-llm.git
cd create-llm
...
Docker Compose (권장)
git clone https://github.com/theaniketgiri/create-llm.git
cd create-llm
...
장점(Benefits)
✅ 로컬 종속성 없음 (No Local Dependencies) - Node.js 및 Python 설치 생략
✅ GPU 지원 (GPU Support) - NVIDIA GPU 자동 감지
✅ 일관된 환경 (Consistent Environment) - 모든 기기에서 동일한 설정 유지
✅ 쉬운 확장(Easy Scaling) - 여러 학습 작업을 병렬로 실행
✅ 프로덕션 준비 완료 (Production Ready) - Docker가 구동되는 곳 어디든 배포 가능
📖 전체 Docker 가이드: 전체 문서는 DOCKER.md를 참조하세요.
템플릿(Templates)
NANO
학습 및 빠른 실험용
Parameters: ~1M
Hardware: Any CPU (2GB RAM)
Time: 1-2 minutes
...
사용 시점:
- LLM을 처음 학습시킬 때
- 빠르고 간단한 실험 및 테스트
- 교육 목적
- 파이프라인 이해
- 데이터가 제한적일 때 (100~1,000개 예시)
TINY
프로토타이핑 및 소규모 프로젝트용
Parameters: ~6M
Hardware: CPU 또는 기본 GPU (4GB RAM)
Time: 5-15분
...
사용 시점:
- 소규모 프로젝트
- 데이터가 제한적일 때 (1K-10K 예시)
- 확장 전 프로토타이핑
- 개인 실험
- CPU 전용 환경
SMALL
프로덕션 애플리케이션용
Parameters: ~100M
Hardware: RTX 3060+ (12GB VRAM)
Time: 1-3시간
...
사용 시점:
- 프로덕션 애플리케이션
- 도메인 특화 모델
- 실제 환경 배포
- 데이터 확보가 용이할 때
- GPU 사용 가능
BASE
연구 및 고품질 모델용
Parameters: ~1B
Hardware: A100 또는 다중 GPU
Time: 1-3일
...
사용 시점:
- 연구 프로젝트
- 높은 품질 요구 사항
- 대규모 데이터셋 확보 가능할 때
- 다중 GPU 설정
- 경쟁력 있는 성능 필요
전체 워크플로우
1. 프로젝트 생성
npx create-llm my-llm --template tiny --tokenizer bpe
cd my-llm
2. 의존성 설치
pip install -r requirements.txt
3. 데이터 추가
텍스트 파일을 data/raw/에 배치합니다:
curl https://www.gutenberg.org/files/100/100-0.txt > data/raw/shakespeare.txt
...
팁: 의미 있는 결과를 얻으려면 최소 1MB 이상의 텍스트로 시작하세요.
4. 토크나이저 학습
python tokenizer/train.py --data data/raw/
이는 데이터로부터 어휘(vocabulary)를 생성합니다.
5. 데이터셋 준비
이것은 데이터를 토큰화하고 학습을 위해 준비합니다.
6. 학습 시작
python training/train.py
...
7. 모델 평가
python evaluation/evaluate.py --checkpoint checkpoints/checkpoint-best.pt
8. 텍스트 생성
python evaluation/generate.py \
--checkpoint checkpoints/checkpoint-best.pt \
--prompt "Once upon a time" \
...
9. 대화형 채팅 (Interactive Chat)
python chat.py --checkpoint checkpoints/checkpoint-best.pt
10. 배포 (Deploy)
python deploy.py --to huggingface --repo-id username/my-model
...
프로젝트 구조 (Project Structure)
my-llm/
├── data/
│ ├── raw/ # 여기에 학습 데이터가 들어갑니다
...
설정 (Configuration)
모든 것은 llm.config.js를 통해 제어됩니다:
module.exports = {
model: {
...
CLI 참고 (CLI Reference)
명령어 (Commands)
npx create-llm [프로젝트 이름] [옵션]
옵션 (Options)
| 옵션 | 설명 | 기본값 |
|---|
--template <name> | 사용할 템플릿 (nano, tiny, small, base, custom) | Interactive |
| ... | | |
예시 (Examples)
모범 사례 (Best Practices)
데이터 준비 (Data Preparation)
최소 데이터 요구 사항:
- NANO: 100개 이상의 예시 (학습에 좋음)
- TINY: 1,000개 이상의 예시 (적절한 결과를 위한 최소치)
- SMALL: 10,000개 이상의 예시 (권장)
- BASE: 100,000개 이상의 예시 (고품질을 위해)
데이터 품질:
- 깨끗하고 잘 형식화된 텍스트를 사용하세요.
- HTML, 마크다운 또는 특수 서식은 제거하세요.
- 일관된 인코딩(UTF-8)을 보장하세요.
- 중복 항목을 제거하세요.
- 다양한 콘텐츠 유형의 균형을 맞추세요.
학습 팁 (Training Tips)
과적합 방지 (Avoid Overfitting):
- 퍼플렉서티(perplexity)가 1.5 미만인지 확인하세요 (경고 신호).
- 검증 분할(validation split)을 사용하세요 (10% 권장).
- 과적합이 발생하면 드롭아웃(dropout) 비율을 높이세요.
- 가능하다면 데이터를 더 추가하세요.
- 작은 데이터셋에는 더 작은 모델을 사용하세요.
학습 최적화 (Optimize Training):
- 파이프라인 테스트를 위해 NANO부터 시작하세요.
- GPU에서 혼합 정밀도(mixed precision)를 사용하세요 (
mixed_precision: true).
- OOM(Out of Memory) 발생 시
gradient_accumulation_steps를 늘리세요.
- TensorBoard로 학습을 모니터링하세요.
- 체크포인트(checkpoints)를 자주 저장하세요.
문제 해결 (Troubleshooting)
일반적인 문제 (Common Issues)
"Vocab size mismatch detected"
- 이는 정상입니다. 도구가 자동으로 감지하고 수정합니다.
- 모델은 실제 토크나이저(tokenizer)의 어휘 크기(vocab size)를 사용합니다.
"Position embedding index error" 또는 sequences too long
- 자동으로 처리됩니다. 최대 길이(max_length)를 초과하는 시퀀스는 잘립니다(truncated).
- 모델은 자르기가 발생할 때 경고를 기록합니다.
- 빈번한 자르기 경고가 보이면 데이터 전처리(data preprocessing)를 확인하십시오.
- 더 긴 시퀀스가 필요하면 설정 파일에서
max_length를 늘리는 것을 고려해 보세요.
"Model may be too large for dataset"
- 경고: 과적합(overfitting) 위험
- 해결책: 데이터 추가, 더 작은 템플릿 사용, 드롭아웃(dropout) 증가
"CUDA out of memory"
- llm.config.js에서
batch_size를 줄이세요.
mixed_precision: true를 활성화하세요.
gradient_accumulation_steps를 늘리세요.
- 더 작은 모델 템플릿을 사용하세요.
"Training loss not decreasing"
- 학습률(learning rate) 확인 (1e-4에서 1e-3 시도)
- 데이터가 올바르게 로드되는지 검증하세요.
- 데이터 전처리 문제 여부를 확인하세요.
- 더 긴 워밍업 기간(warmup period)을 시도해 보세요.
도움 받기 (Getting Help)
요구 사항 (Requirements)
옵션 1: 로컬 설치 (Local Installation)
CLI 도구용 (For CLI Tool)
- Node.js 18.0.0 이상
- npm 8.0.0 이상
학습용 (For Training)
- Python 3.8 이상
- PyTorch 2.0.0 이상
- 최소 RAM 4GB (NANO/TINY)
- 권장 VRAM 12GB (SMALL)
- BASE 모델의 경우 40GB+ VRAM
옵션 2: Docker (권장) (Docker (Recommended))
로컬 종속성 불필요! (No local dependencies needed!)
- Docker 20.10 이상 또는 Docker Desktop
- NVIDIA Docker (GPU 지원용)
- 최소 RAM 8GB
- NVIDIA GPU (선택 사항, 더 빠른 학습을 위해)
운영 체제 (Operating Systems)
- Windows 10/11
- macOS 10.15 이상
- Linux (Ubuntu 20.04 이상)
개발 (Development)
개발 설정 및 지침은 DEVELOPMENT.md를 참조하세요.
기여 (Contributing)
기여를 환영합니다! 지침은 CONTRIBUTING.md를 참고하세요.
도움이 필요한 영역 (Areas We Need Help)
| 영역 | 설명 | 난이도 |
|---|
| 버그 수정 (Bug Fixes) | 문제 해결 및 안정성 향상 | 쉬움 (Easy) |
| ... | | |
라이선스 (License)
MIT © Aniket Giri
더 많은 정보는 LICENSE를 참조하세요.
감사의 글 (Acknowledgments)
다음으로 구축되었습니다:
이 프로젝트가 유용하다고 생각되시면, 별점(star)을 주시는 것을 고려해 주세요!
GitHub • npm • Issues