Downloads · 30 days
203
6% of all-time downloads
pathcosmos/frankenstallm
frankenstallm is a text generation model from pathcosmos. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as apache-2.0.
⚠️ v2 모델 교체 공지 (2026-03-26) v2 GGUF 및 safetensors 파일이 변환 과정의 오류로 1.2B 모델(hiddensize=2048, 24 layers)로 잘못 배포되었습니다. 2026-03-26에 올바른 3B ORPO 체크포인트(hiddensize=3072, 28 layers, vocabsize=64256, byte-fallback 적용)로 교체 완료했습니다…
Downloads · 30 days
203
6% of all-time downloads
All-time downloads
3.6K
Public
Parameters
3B
85.6 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors41.1 GB · 47%
From the Hugging Face model README
⚠️ v2 모델 교체 공지 (2026-03-26)
v2 GGUF 및 safetensors 파일이 변환 과정의 오류로 **1.2B 모델(hidden_size=2048, 24 layers)**로 잘못 배포되었습니다. 2026-03-26에 올바른 **3B ORPO 체크포인트(hidden_size=3072, 28 layers, vocab_size=64256, byte-fallback 적용)**로 교체 완료했습니다. 이전에 다운로드한 v2 파일이 있다면 재다운로드를 권장합니다.
한국어 3B LLM을 처음부터 직접 만들었습니다 — 토크나이저 학습부터 사전학습, SFT, ORPO까지, 8× NVIDIA B200 GPU 위에서.
| 개발자 | pathcosmos |
| 파라미터 | ~24억 (weight tying 적용, 3B급) |
| 언어 | 한국어 (주), 영어 (부) |
| 라이선스 | Apache 2.0 |
| 학습 | 3단계: 사전학습 → SFT → ORPO |
| 하드웨어 | 8× NVIDIA B200 (FP8), 총 ~86시간 |
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "pathcosmos/frankenstallm"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id, torch_dtype=torch.bfloat16, device_map="auto"
)
inputs = tokenizer(
"한국의 전통 음식 중 김치에 대해 설명해주세요.",
return_tensors="pt"
).to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
do_sample=True,
temperature=0.7,
repetition_penalty=1.2, # 권장
top_p=0.9,
max_new_tokens=512,
pad_token_id=tokenizer.eos_token_id,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
# GGUF + Modelfile 다운로드
huggingface-cli download pathcosmos/frankenstallm \
gguf/frankenstallm-3b-v2-Q4_K_M.gguf \
gguf/Modelfile.3b-v2-Q4_K_M \
--local-dir ./frankenstallm
# Modelfile 내 FROM 경로 수정 후 생성
ollama create frankenstallm -f ./frankenstallm/gguf/Modelfile.3b-v2-Q4_K_M
# 실행
ollama run frankenstallm
| 파일 | 크기 | 설명 | 다운로드 |
|---|---|---|---|
model.safetensors | 5.7 GB | HF Transformers 네이티브 (3B ORPO, byte-fallback) | Download |
config.json | 1 KB | 모델 설정 (hidden=3072, 28L, vocab=64256) | Download |
tokenizer.json | 4 MB | 토크나이저 (SentencePiece Unigram) | Download |
tokenizer.model | 1.4 MB | SentencePiece 모델 (GGUF 변환용) | Download |
sampling_config.json | 1 KB | 권장 샘플링 파라미터 | Download |
| 파일 | 크기 | 양자화 | 다운로드 |
|---|---|---|---|
frankenstallm-3b-v2-Q4_K_M.gguf | 1.8 GB | Q4_K_M (권장) | Download |
frankenstallm-3b-v2-Q8_0.gguf | 3.0 GB | Q8_0 (고품질) | Download |
frankenstallm-3b-v2-f16.gguf | 5.7 GB | F16 (무손실) | Download |
Modelfile.3b-v2-Q4_K_M | 1 KB | Ollama Modelfile (Q4) | Download |
Modelfile.3b-v2-Q8_0 | 1 KB | Ollama Modelfile (Q8) | Download |
v1 GGUF (byte-fallback 미적용)도
gguf/frankenstallm-3b-*.gguf로 제공되지만, v2 사용을 권장합니다.
| 파일 | 크기 | 용도 | 다운로드 |
|---|---|---|---|
train_filtered.jsonl | 7.5 GB | SFT 학습 데이터 (24개 소스, 240만 샘플, 필터링 완료) | Download |
val_filtered.jsonl | 157 MB | SFT 검증 데이터 | Download |
combined_preference.jsonl | 2.6 GB | ORPO 학습 데이터 (7개 소스 통합, 63만 쌍) | Download |
| 파일 | 설명 |
|---|---|
prepare_sft_data.py | HF 데이터셋 → JSONL 정규화 (Alpaca 포맷) |
filter_sft_v2.py | SFT 품질 필터링 (중복 제거, 반복률 필터) |
prepare_preference_combined.py | Preference 데이터 통합 (DPO/ORPO용) |
tokenize_extra.py | 대용량 데이터 병렬 토크나이징 |
sft_dataset.py | SFT 데이터셋 로더 (Alpaca/대화 포맷) |
dataset.py | 사전학습 데이터셋 로더 (memmap .bin) |
build_korean_dataset.sh | 한국어 데이터 전체 파이프라인 |
| 보고서 | 내용 |
|---|---|
PROJECT_COMPLETION_REPORT | 프로젝트 최종 완료 보고서 |
ORPO_EVALUATION_REPORT | ORPO 10차원 종합 평가 |
ORPO_TRAINING_JOURNEY | ORPO 학습 여정 (HP sweep, 디버깅) |
SFT_COMPLETION_AND_EVAL | SFT 완료 및 평가 |
3B_BASE_EVALUATION | 사전학습 베이스 모델 평가 |
Phase0_Optimization | FP8 최적화 보고서 |
| 구성 요소 | 값 |
|---|---|
| 구조 | Decoder-only Transformer (LLaMA 스타일) |
| Hidden size | 3,072 |
| 레이어 수 | 28 |
| 어텐션 헤드 | 24 |
| KV 헤드 | 8 (GQA 3:1) |
| FFN 차원 | 8,192 (SwiGLU) |
| 어휘 크기 | 64,256 (byte-fallback 적용) |
| 컨텍스트 길이 | 4,096 (학습 시 2,048) |
| 위치 인코딩 | RoPE (θ=500,000) |
| 정규화 | Pre-norm RMSNorm |
| 어텐션 구현 | FlashAttention-2 |
| 정밀도 | FP8 (TransformerEngine MXFP8) |
| Weight tying | 적용 (embedding ↔ lm_head) |
| 항목 | 값 |
|---|---|
| 스텝 수 | 57,000 |
| 최종 loss | 1.466 |
| 학습 토큰 | ~600억 (385억 고유 × ~1.5 에폭) |
| 소요 시간 | ~63시간 |
| 데이터 | CC-100 KO, HPLT KO, C4 KO, 나무위키, 위키피디아 KO, Cosmopedia (EN) |
| 배치 크기 | 5 × 8 GPU × 8 accum × 2,048 seq = ~65만 토큰/스텝 |
| 항목 | 값 |
|---|---|
| 스텝 수 | 25,500 (77.3% 지점에서 조기 종료) |
| 최적 val_loss | 1.8851 (step 23,000) |
| 소요 시간 | ~15.5시간 |
| 데이터 | 24개 소스, 243만 9,397 샘플 (7.48 GB) |
| 구성 | SFT 70% + 사전학습 리플레이 30% (치명적 망각 방지) |
| 지식 망각률 | 0.9% (19개 데이터셋 기준) |
| 항목 | 값 |
|---|---|
| 스텝 수 | 9,997 (조기 수렴) |
| 최적 eval_loss | 1.625 |
| 선호도 정확도 | 76.02% |
| 보상 마진 | 0.6100 |
| 소요 시간 | ~7시간 |
| 데이터 | 한국어 HF 데이터셋 7종, ~63만 선호도 쌍 |
| 하이퍼파라미터 | beta=0.25, lr=1.2e-5, eff_batch=128 |
총 학습 시간: 8× B200에서 약 86시간
| 벤치마크 | Base | SFT | ORPO | 변화 (Base→ORPO) |
|---|---|---|---|---|
| KoBEST 평균 (0-shot) | 43.7% | 43.3% | 52.8% | +9.1pp |
| KoBEST COPA | 49.3% | 48.6% | 63.9% | +14.6pp |
| KoBEST HellaSwag-KO | 21.6% | 19.8% | 38.0% | +16.4pp |
| KoBEST SentiNeg | 48.6% | 49.1% | 62.5% | +13.9pp |
| KoBEST BoolQ | 50.3% | 50.1% | 50.6% | +0.3pp |
| PIQA | 52.5% | 52.6% | 59.9% | +7.3pp |
| ARC-Easy | 25.6% | 25.9% | 36.0% | +10.4pp |
| HAE-RAE | 19.7% | 19.9% | 21.8% | +2.1pp |
| HellaSwag EN | 26.2% | 26.1% | 29.2% | +3.0pp |
| Greedy 3-gram 반복률 | 61.0% | 73.0% | 30.9% | -30.1pp |
| EOS 종료율 | 0% | 60% | 67% | +67pp |
| PPL 망각률 | — | 0.9% | 4.1% | 15% 이내 ✅ |
| 모델 | 파라미터 | 한국어 NLU | 지식 | 지시 수행 | 추론 | 평균 점수 |
|---|---|---|---|---|---|---|
| Qwen 2.5 3B | 3B | 100.0 | 20.8 | 55.6 | 62.5 | 63.4 |
| Phi-4 Mini | 3.8B | 66.7 | 29.2 | 33.3 | 87.5 | 60.6 |
| FRANKENSTALLM 3B | 3B | 100.0 | 75.0 | 66.7 | 50.0 | 46.7 |
FRANKENSTALLM은 한국어 NLU (Qwen과 동률), 한국어 지식 (75.0 vs 20.8/29.2), 지시 수행 (66.7 vs 55.6/33.3)에서 앞섭니다.
| 모델 | 평균 TTFT | TPS | 비고 |
|---|---|---|---|
| FRANKENSTALLM 3B | 16.7ms | 142.5 | 가장 빠름 |
| Phi-4 Mini 3.8B | 25.6ms | 100.4 | |
| Qwen 2.5 3B | 28.2ms | 93.8 |
| 데이터셋 | Base PPL | ORPO PPL | 망각률 |
|---|---|---|---|
| Korean C4 | 5.72 | 5.87 | +2.7% |
| Korean Wiki | 11.84 | 12.21 | +3.2% |
| 최대 망각률 | — | — | 4.1% ✅ |
| 분류 | 소스 | 추정 토큰 수 |
|---|---|---|
| 한국어 웹 크롤 | C4 KO, CC-100 KO, HPLT KO | ~172억 |
| 한국어 백과사전 | 위키피디아 KO, 나무위키 (2개 버전) | ~28억 |
| 영어 교육 | Cosmopedia (Stories, Web, Stanford, WikiHow, OpenStax, Khan) | ~57억 |
| 영어 수학·과학 | AutoMathText, OpenWebMath, Proof-Pile-2 | ~85억 |
| 코드 | StarCoder (필터링) | ~43억 |
| 영역 | 비율 | 주요 데이터셋 |
|---|---|---|
| 추론/CoT | 38% | reasoning_r1_1.4m, magpie_reasoning |
| 한국어 지시문 | 23% | korean_instruction_mix, open_korean_instructions, kullm_v2 |
| 영어 일반 | 16% | openhermes_2.5, ultrachat_200k |
| 수학 | 12% | NuminaMath-CoT, orca-math-ko |
| 대화/코드/기타 | 11% | smol-koreantalk, Evol-Instruct-Code-80k-ko |
| 데이터셋 | 용량 | 영역 |
|---|---|---|
| nayohan/preference-collection-ko-full | 4.9GB | 일반 선호도 |
| heegyu/orca-math-korean-preference-cleaned | 1.6GB | 수학 추론 |
| kuotient/orca-math-korean-dpo-pairs | 750MB | 수학 DPO |
| maywell/ko_Ultrafeedback_binarized | 394MB | 피드백 정렬 |
| tellang/yeji-preference-ko-v1 | 171MB | 일반 선호도 |
| jojo0217/korean_rlhf_dataset | 137MB | RLHF 쌍 |
| lemon-mint/korean-realqa-reasoning-v01-preference | 58MB | QA 추론 |
| 파일 | 크기 | 설명 |
|---|---|---|
gguf/frankenstallm-3b-v2-Q4_K_M.gguf | 1.8GB | 권장 — 크기 대비 최적 품질 |
gguf/frankenstallm-3b-v2-Q8_0.gguf | 3.0GB | 높은 품질 |
gguf/frankenstallm-3b-v2-f16.gguf | 5.7GB | 전체 정밀도 |
model.safetensors | 5.7GB | Transformers 네이티브 (3B ORPO best, byte-fallback 수정, vocab=64256) |
| 파라미터 | 값 | 비고 |
|---|---|---|
temperature | 0.7 | 한국어 생성 품질 최적 |
repeat_penalty | 1.2 | 필수 — 미적용 시 greedy 반복률 30.9% |
top_p | 0.9 | Nucleus 샘플링 |
top_k | 50 | Top-k 후보 수 |
max_tokens | 512 | 최대 생성 길이 |
num_ctx | 4096 | 컨텍스트 윈도우 (초과 금지) |
⚠️ 반드시
repeat_penalty >= 1.2를 사용하세요. 적용하면 반복률이 0% 로 떨어집니다. 미적용 시 greedy 디코딩에서 ~31% 3-gram 반복이 발생합니다.
repeat_penalty 미사용 시 30.9% 3-gram 반복 — 반드시 repeat_penalty >= 1.2 사용| 구성 요소 | 사양 |
|---|---|
| GPU | 8× NVIDIA B200 (183GB HBM3e × 8, 총 ~1.47TB) |
| FP8 연산 | 2,250 TFLOPS/GPU (총 18,000 TFLOPS) |
| 인터커넥트 | NVLink 5.0, NVSwitch all-to-all mesh |
| CPU | 2× AMD EPYC 9365 (72코어, Zen 5) |
| RAM | 2.21 TB DDR5 |
| PyTorch | 2.10.0a0+b4e4ee81d3.nv25.12 (NVIDIA 커스텀) |
| TransformerEngine | 2.10.0 |
| FlashAttention | 2.7.4 |
| NCCL | 2.28.9 |
| CUDA | 13.1 |
| 총 학습 시간 | ~86시간 (사전학습 63h + SFT 15.5h + ORPO 7h) |
@misc{frankenstallm2026,
title={FRANKENSTALLM: A Korean 3B LLM Built From Scratch on B200 GPUs},
author={pathcosmos},
year={2026},
url={https://huggingface.co/pathcosmos/frankenstallm},
note={3-phase training (Pretrain, SFT, ORPO) with FP8 on 8x NVIDIA B200}
}
이 프로젝트는 과학기술정보통신부의 「첨단 GPU 활용 지원 사업」 (과학기술정보통신부 공고 제2025-1068호)을 통해 제공된 GPU 컴퓨팅 자원을 활용하여 수행되었습니다.
국가 AI컴퓨팅자원 지원포털: https://aiinfrahub.kr
- 주관: 과학기술정보통신부 (MSIT), 정보통신산업진흥원 (NIPA)
- 운영: 한국정보통신진흥협회 (KAIT)
대한민국 정부의 AI 인프라 지원 사업 덕분에 8× NVIDIA B200 GPU 환경에서 한국어 3B LLM을 처음부터 학습할 수 있었습니다. 국가 차원의 AI 컴퓨팅 자원 지원에 깊이 감사드립니다.
🇺🇸 English version below
⚠️ v2 Model Replacement Notice (2026-03-26)
The v2 GGUF and safetensors files were incorrectly deployed as a 1.2B model (hidden_size=2048, 24 layers) due to a conversion pipeline error. On 2026-03-26, they were replaced with the correct 3B ORPO checkpoint (hidden_size=3072, 28 layers, vocab_size=64256, byte-fallback applied). If you downloaded v2 files before this date, please re-download.
A Korean 3B LLM built entirely from scratch — tokenizer, pretraining, SFT, and ORPO — on 8× NVIDIA B200 GPUs.
| Developer | pathcosmos |
| Parameters | ~2.4B (3B-class with weight tying) |
| Languages | Korean (primary), English (secondary) |
| License | Apache 2.0 |
| Training | 3-phase: Pretrain → SFT → ORPO |
| Hardware | 8× NVIDIA B200 (FP8), ~86 hours total |
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "pathcosmos/frankenstallm"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id, torch_dtype=torch.bfloat16, device_map="auto"
)
inputs = tokenizer(
"한국의 전통 음식 중 김치에 대해 설명해주세요.",
return_tensors="pt"
).to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
do_sample=True,
temperature=0.7,
repetition_penalty=1.2, # recommended
top_p=0.9,
max_new_tokens=512,
pad_token_id=tokenizer.eos_token_id,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
# Download GGUF + Modelfile
huggingface-cli download pathcosmos/frankenstallm \
gguf/frankenstallm-3b-v2-Q4_K_M.gguf \
gguf/Modelfile.3b-v2-Q4_K_M \
--local-dir ./frankenstallm
# Fix FROM path in Modelfile, then create
ollama create frankenstallm -f ./frankenstallm/gguf/Modelfile.3b-v2-Q4_K_M
# Run
ollama run frankenstallm
| File | Size | Description | Download |
|---|---|---|---|
model.safetensors | 5.7 GB | HF Transformers native (3B ORPO, byte-fallback) | Download |
config.json | 1 KB | Model config (hidden=3072, 28L, vocab=64256) | Download |
tokenizer.json | 4 MB | Tokenizer (SentencePiece Unigram) | Download |
tokenizer.model | 1.4 MB | SentencePiece model (for GGUF conversion) | Download |
| File | Size | Quantization | Download |
|---|---|---|---|
frankenstallm-3b-v2-Q4_K_M.gguf | 1.8 GB | Q4_K_M (Recommended) | Download |
frankenstallm-3b-v2-Q8_0.gguf | 3.0 GB | Q8_0 (High quality) | Download |
frankenstallm-3b-v2-f16.gguf | 5.7 GB | F16 (Lossless) | Download |
| File | Size | Purpose | Download |
|---|---|---|---|
train_filtered.jsonl | 7.5 GB | SFT training data (24 sources, 2.4M samples, filtered) | Download |
val_filtered.jsonl | 157 MB | SFT validation data | Download |
combined_preference.jsonl | 2.6 GB | ORPO training data (7 sources, 630K pairs) | Download |
| File | Description |
|---|---|
prepare_sft_data.py | HF datasets → JSONL normalization (Alpaca format) |
filter_sft_v2.py | SFT quality filtering (dedup, repetition filter) |
prepare_preference_combined.py | Preference data merging (DPO/ORPO format) |
tokenize_extra.py | Large-scale parallel tokenization |
sft_dataset.py | SFT dataset loader (Alpaca/conversation format) |
| Report | Content |
|---|---|
PROJECT_COMPLETION_REPORT | Final project completion report |
ORPO_EVALUATION_REPORT | ORPO 10-dimension evaluation |
ORPO_TRAINING_JOURNEY | ORPO training journey (HP sweep, debugging) |
SFT_COMPLETION_AND_EVAL | SFT completion and evaluation |
3B_BASE_EVALUATION | Pretrained base model evaluation |
| Component | Value |
|---|---|
| Type | Decoder-only Transformer (LLaMA-style) |
| Hidden size | 3,072 |
| Layers | 28 |
| Attention heads | 24 |
| KV heads | 8 (GQA 3:1) |
| FFN dim | 8,192 (SwiGLU) |
| Vocab size | 64,256 (byte-fallback applied) |
| Context length | 4,096 (trained at 2,048) |
| Position encoding | RoPE (θ=500,000) |
| Normalization | Pre-norm RMSNorm |
| Attention impl | FlashAttention-2 |
| Precision | FP8 (MXFP8 via TransformerEngine) |
| Weight tying | Yes (embedding ↔ lm_head) |
| Detail | Value |
|---|---|
| Steps | 57,000 |
| Final loss | 1.466 |
| Tokens seen | ~60B (38.5B unique × ~1.5 epochs) |
| Duration | ~63 hours |
| Data | CC-100 KO, HPLT KO, C4 KO, NamuWiki, Wikipedia KO, Cosmopedia (EN) |
| Batch size | 5 × 8 GPU × 8 accum × 2,048 seq = ~655K tok/step |
| Detail | Value |
|---|---|
| Steps | 25,500 (early stop at 77.3%) |
| Best val_loss | 1.8851 (step 23,000) |
| Duration | ~15.5 hours |
| Data | 2,439,397 samples from 24 sources (7.48 GB) |
| Mix | 70% SFT + 30% pretrain replay (catastrophic forgetting prevention) |
| Knowledge forgetting | 0.9% (19 datasets) |
| Detail | Value |
|---|---|
| Steps | 9,997 (early convergence) |
| Best eval_loss | 1.625 |
| Preference accuracy | 76.02% |
| Reward margin | 0.6100 |
| Duration | ~7 hours |
| Data | ~630K preference pairs from 7 Korean HF datasets |
| Hyperparams | beta=0.25, lr=1.2e-5, eff_batch=128 |
Total training time: ~86 hours on 8× B200
| Benchmark | Base | SFT | ORPO | Δ (Base→ORPO) |
|---|---|---|---|---|
| KoBEST Avg (0-shot) | 43.7% | 43.3% | 52.8% | +9.1pp |
| KoBEST COPA | 49.3% | 48.6% | 63.9% | +14.6pp |
| KoBEST HellaSwag-KO | 21.6% | 19.8% | 38.0% | +16.4pp |
| KoBEST SentiNeg | 48.6% | 49.1% | 62.5% | +13.9pp |
| KoBEST BoolQ | 50.3% | 50.1% | 50.6% | +0.3pp |
| PIQA | 52.5% | 52.6% | 59.9% | +7.3pp |
| ARC-Easy | 25.6% | 25.9% | 36.0% | +10.4pp |
| HAE-RAE | 19.7% | 19.9% | 21.8% | +2.1pp |
| HellaSwag EN | 26.2% | 26.1% | 29.2% | +3.0pp |
| Greedy 3-gram repetition | 61.0% | 73.0% | 30.9% | -30.1pp |
| EOS termination rate | 0% | 60% | 67% | +67pp |
| PPL forgetting | — | 0.9% | 4.1% | within 15% ✅ |
| Model | Params | Korean NLU | Knowledge | Instruction | Reasoning | Avg Score |
|---|---|---|---|---|---|---|
| Qwen 2.5 3B | 3B | 100.0 | 20.8 | 55.6 | 62.5 | 63.4 |
| Phi-4 Mini | 3.8B | 66.7 | 29.2 | 33.3 | 87.5 | 60.6 |
| FRANKENSTALLM 3B | 3B | 100.0 | 75.0 | 66.7 | 50.0 | 46.7 |
FRANKENSTALLM leads in Korean NLU (tied with Qwen), Korean Knowledge (75 vs 20.8/29.2), and Instruction Following (66.7 vs 55.6/33.3).
| Model | Avg TTFT | TPS | Note |
|---|---|---|---|
| FRANKENSTALLM 3B | 16.7ms | 142.5 | Fastest |
| Phi-4 Mini 3.8B | 25.6ms | 100.4 | |
| Qwen 2.5 3B | 28.2ms | 93.8 |
| Dataset | Base PPL | ORPO PPL | Forgetting |
|---|---|---|---|
| Korean C4 | 5.72 | 5.87 | +2.7% |
| Korean Wiki | 11.84 | 12.21 | +3.2% |
| Max forgetting | — | — | 4.1% ✅ |
| Category | Sources | Est. Tokens |
|---|---|---|
| Korean Web Crawl | C4 KO, CC-100 KO, HPLT KO | ~17.2B |
| Korean Encyclopedia | Wikipedia KO, NamuWiki (2 versions) | ~2.8B |
| English Educational | Cosmopedia (Stories, Web, Stanford, WikiHow, OpenStax, Khan) | ~5.7B |
| English Math/Science | AutoMathText, OpenWebMath, Proof-Pile-2 | ~8.5B |
| Code | StarCoder (filtered) | ~4.3B |
| Domain | Share | Key Datasets |
|---|---|---|
| Reasoning/CoT | 38% | reasoning_r1_1.4m, magpie_reasoning |
| Korean Instructions | 23% | korean_instruction_mix, open_korean_instructions, kullm_v2 |
| English General | 16% | openhermes_2.5, ultrachat_200k |
| Math | 12% | NuminaMath-CoT, orca-math-ko |
| Dialog/Code/Other | 11% | smol-koreantalk, Evol-Instruct-Code-80k-ko |
| Dataset | Size | Domain |
|---|---|---|
| nayohan/preference-collection-ko-full | 4.9GB | General preference |
| heegyu/orca-math-korean-preference-cleaned | 1.6GB | Math reasoning |
| kuotient/orca-math-korean-dpo-pairs | 750MB | Math DPO |
| maywell/ko_Ultrafeedback_binarized | 394MB | Feedback alignment |
| tellang/yeji-preference-ko-v1 | 171MB | General preference |
| jojo0217/korean_rlhf_dataset | 137MB | RLHF pairs |
| lemon-mint/korean-realqa-reasoning-v01-preference | 58MB | QA reasoning |
| File | Size | Description |
|---|---|---|
gguf/frankenstallm-3b-v2-Q4_K_M.gguf | 1.8GB | Recommended — best size/quality balance |
gguf/frankenstallm-3b-v2-Q8_0.gguf | 3.0GB | Higher quality |
gguf/frankenstallm-3b-v2-f16.gguf | 5.7GB | Full precision |
model.safetensors | 5.7GB | Transformers native (3B ORPO best, byte-fallback fixed, vocab=64256) |
| Parameter | Value | Notes |
|---|---|---|
temperature | 0.7 | Optimal for Korean generation quality |
repeat_penalty | 1.2 | Required — without it, greedy repetition is 30.9% |
top_p | 0.9 | Nucleus sampling |
top_k | 50 | Top-k candidates |
max_tokens | 512 | Max generation length |
num_ctx | 4096 | Context window (do not exceed) |
⚠️ Always use
repeat_penalty >= 1.2. With it, repetition drops to 0%. Without it, greedy decoding produces ~31% 3-gram repetition.
repeat_penalty — always use sampling with repeat_penalty >= 1.2| Component | Specification |
|---|---|
| GPU | 8× NVIDIA B200 (183GB HBM3e each, ~1.47TB total) |
| FP8 Compute | 2,250 TFLOPS/GPU (18,000 TFLOPS total) |
| Interconnect | NVLink 5.0, NVSwitch all-to-all mesh |
| CPU | 2× AMD EPYC 9365 (72 cores, Zen 5) |
| RAM | 2.21 TB DDR5 |
| PyTorch | 2.10.0a0+b4e4ee81d3.nv25.12 (NVIDIA custom) |
| TransformerEngine | 2.10.0 |
| FlashAttention | 2.7.4 |
| NCCL | 2.28.9 |
| CUDA | 13.1 |
| Total training | ~86 hours (Pretrain 63h + SFT 15.5h + ORPO 7h) |
@misc{frankenstallm2026,
title={FRANKENSTALLM: A Korean 3B LLM Built From Scratch on B200 GPUs},
author={pathcosmos},
year={2026},
url={https://huggingface.co/pathcosmos/frankenstallm},
note={3-phase training (Pretrain, SFT, ORPO) with FP8 on 8x NVIDIA B200}
}
This project was conducted using GPU computing resources provided through the "Advanced GPU Utilization Support Program" (MSIT Notice No. 2025-1068) by the Ministry of Science and ICT (MSIT) of the Republic of Korea.
National AI Computing Resource Support Portal: https://aiinfrahub.kr
- Organized by: Ministry of Science and ICT (MSIT), National IT Industry Promotion Agency (NIPA)
- Operated by: Korea Association of Information & Telecommunication (KAIT)
We are deeply grateful for the national-level AI computing infrastructure support from the Korean government, which made it possible to train a Korean 3B LLM from scratch on 8× NVIDIA B200 GPUs.