tinystories-gpt2-30m-sft
skmbkang/tinystories-gpt2-30m을 TinyStoriesInstruct로 SFT(지도 미세조정)한 모델입니다. 조건(단어, 특징, 줄거리)에 맞는 짧은 이야기를 씁니다.
- 학습: 1,600 steps, lr 1e-4 → 1e-5, 답변(이야기) 토큰만 loss 계산, Summary 50% 무작위 제거
- 학습 데이터: TinyStoriesInstruct
- 검증 loss (이야기 토큰): 1.548 → 1.260
평가 (valid 100개, Words 3개 조건, temperature 0.8, top-k 50)
| 모델 | 단어 포함률 | 3개 모두 포함 |
|---|---|---|
| 사전학습 모델 | 21.0% | 1.0% |
| 이 모델 | 65.3% | 26.0% |
프롬프트 형식 (반드시 이 형식으로)
조건 줄은 필요한 것만 넣으면 되고, 마지막 줄은 항상 Story: + 줄바꿈입니다.
Words: kite, brave, windy
Features: Dialogue
Summary: A girl flies a kite on a windy day.
Story:
사용법
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("skmbkang/tinystories-gpt2-30m-sft")
model = AutoModelForCausalLM.from_pretrained("skmbkang/tinystories-gpt2-30m-sft")
prompt = "Words: kite, brave, windy\nStory:\n"
ids = tok(prompt, return_tensors="pt")
out = model.generate(**ids, max_new_tokens=200, do_sample=True, temperature=0.8, top_k=50,
pad_token_id=50256)
print(tok.decode(out[0], skip_special_tokens=True))
한계
30M 소형 모델이라 이름 혼동 등 이야기 일관성이 떨어지고, 단어 대신 비슷한 말을 쓰기도 합니다. 프롬프트와 이야기를 합쳐 256토큰까지만 처리합니다.