--- license: apache-2.0 language: - ko tags: - reasoning - math - code - from-scratch - korean - gpt pipeline_tag: text-generation model-index: - name: SOVYN-85M results: - task: type: reasoning name: Custom Reasoning Benchmark metrics: - type: accuracy value: 86.5 name: Overall Accuracy --- # SOVYN-85M 처음부터 학습한 85M 파라미터 한국어 추론 모델. 수학, 코드 트레이싱, 논리, 물리, 화학, 생물, 지구과학, 한국사, 미적분 등 119개 카테고리의 문제를 단계별로 풀이한다. ## 스펙 | | | |---|---| | 파라미터 | 85.4M | | 아키텍처 | GPT (Decoder-only) | | 레이어 | 12 | | 어텐션 헤드 | 12 | | 임베딩 차원 | 768 | | 컨텍스트 길이 | 512 | | 어휘 크기 | 16,384 (BPE) | | 어텐션 | Flash Attention (SDPA) | | 정밀도 | float16 | ## 학습 - 데이터: 591,261개 합성 추론 문제 (119 카테고리), 27.97M 토큰 - 옵티마이저: AdamW (lr=3e-4, weight_decay=0.1) - 스케줄: Cosine decay + warmup 500 steps - 배치: 16 x 4 grad_accum = effective 64 - 스텝: 20,000 - GPU: RTX 5080 16GB - 학습 시간: ~4시간 ## 벤치마크 자체 벤치마크 52문제, 10개 카테고리. | 카테고리 | 정확도 | |---------|--------| | 산술 | 100% | | 코드 트레이싱 | 100% | | 숫자 성질 | 100% | | 서술형 | 100% | | 연산 우선순위 | 88% | | 리스트 연산 | 83% | | 괄호 연산 | 80% | | 방정식 | 80% | | 논리 | 80% | | 수열 | 33% | | **전체** | **86.5%** | ## 사용법 ```bash pip install torch safetensors tokenizers huggingface_hub ``` ```python import torch from safetensors.torch import load_file from tokenizers import Tokenizer from huggingface_hub import hf_hub_download # 다운로드 model_path = hf_hub_download("SOVYN/SOVYN-85M", "model.safetensors") tok_path = hf_hub_download("SOVYN/SOVYN-85M", "tokenizer.json") code_path = hf_hub_download("SOVYN/SOVYN-85M", "model.py") # 아키텍처 로드 import importlib.util spec = importlib.util.spec_from_file_location("model", code_path) mod = importlib.util.module_from_spec(spec) spec.loader.exec_module(mod) # 모델 로드 model = mod.SOVYN85M() state_dict = load_file(model_path) state_dict = {k: v.float() for k, v in state_dict.items()} model.load_state_dict(state_dict) model.eval() tokenizer = Tokenizer.from_file(tok_path) # 추론 prompt = "문제: 3x + 7 = 22일 때, x의 값을 구하시오.\n풀이:\n" ids = torch.tensor([tokenizer.encode(prompt).ids]) out = model.generate(ids, max_new_tokens=200, temperature=0.3) print(tokenizer.decode(out[0].tolist())) ``` ## 프롬프트 형식 ``` 문제: {내용} 풀이: ``` "풀이:" 이후를 생성. 단계별 풀이 + "답: {정답}" 형태로 출력. ## 제한사항 - 합성 데이터로만 학습. 자유 대화 불가. - 수열(등비/피보나치) 약함. - 컨텍스트 512 토큰 제한. ## 라이선스 Apache-2.0