MOGODIK/ssiat-1.0

🤗 Hugging Face 来源text-generationapache-2.0255M 参数1.0 GBGGUF✓ 6 个校验和今天更新
需要做种者 →

최근 수정

eos_token_id 가 잘못 설정되어있어서, 대화학습에 사용된 종료 토큰이 출력되도 자동으로 멈추지 않는 버그가 있었습니다. 해당 버그를 수정했습니다.

⚠️ Ollama로 이 모델을 실행하면 문제가 있는 것으로 확인되었습니다.

Ollama가 내부에 포크해서 쓰는 자체 추론 엔진이 이 모델의 pre-tokenizer(gpt-2 폴백) 처리 과정에서 프롬프트를 잘못 인코딩해, 대부분의 경우 학습한 내용과 다른(때로는 깨진) 답이 나올 수 있습니다. (다만 llama.cpp로 직접 하시면 해당 버그가 일어나지 않습니다.)

씨앗 (Ssiat) 1.0

소비자용GPU 환경에서도 캐릭터 챗봇을 직접 만들 수 있는 254.7M 크기의 한국어 전용 언어모델입니다.

캐릭터 챗봇을 만들려면 보통 유료 API를 써야 합니다. 대화 한 번마다 비용이 나가고, 캐릭터가 늘어나면 비용도 같이 늘어납니다. 모델을 직접 학습시키려 해도 큰 모델은 장비와 시간이 많이 듭니다.

씨앗은 그 문턱을 낮추려고 만들었습니다. 크기를 줄이고 한국어에만 집중해서, 개인 장비로도 학습과 실행이 모두 가능하도록 했습니다.

적은 자원으로 만들고, 구동시킬수 있습니다

실행 Pi Zero 2W/겔럭시 워치 4에서도 동작 가능 (양자화 기준)
캐릭터 하나 학습 예시 50-80개, 5060ti 16G 기준 LoRA로 1-2분
라이센스 Apache License 2.0

이론상 256MB 램과 CPU 그리고 전기가 있다면 이 모델을 직접 작동시킬수 있습니다.

파인튜닝 한 번이 몇 분 안에 끝나기 때문에, 데이터를 고치고 다시 학습해서 결과를 확인하는 과정을 하루에도 여러 번 반복할 수 있습니다. 큰 모델로는 한 번의 실험에 몇 시간이 걸리는 일이라, 처음 배우는 학생이 실습용으로 쓰기에 특히 알맞습니다.

A100 가속기 기준 초당 약 470.25 토큰

캐릭터 성능

이 모델의 강점은 지식의 양이 아니라 캐릭터를 끝까지 유지하는 능력입니다.

  • 예시 30개 — 말투와 성격이 뚜렷하면 이 정도만으로도 캐릭터가 잡힙니다.
  • 예시 1000개 내외 — 사람과 대화하는 것처럼 느껴질 만큼 캐릭터를 지킵니다. 학습에 없던 질문에도 그 캐릭터가 할 법한 답을 합니다.
  • 긴 대화에서도 유지 — 10턴 이상 주고받아도 말투가 무너지지 않습니다. 같은 조건에서 2배 큰 모델들과 비교했을 때, 다른 모델들이 같은 문장을 반복하며 무너지는 동안에도 캐릭터를 유지했습니다.

⚠️ 이 모델 자체(ssiat-1.0)는 아무 캐릭터성도 갖고 있지 않습니다. 이름도, 성격도, 말투도 없는 백지 상태입니다. 캐릭터를 만들려면 직접 학습 데이터를 넣어서 파인튜닝해야 하며, 최소 50개 이상의 예시를 넣는 걸 권장합니다. 30개 미만이면 캐릭터가 약하게만 잡히고, 50개를 넘기면서부터 확실히 안정됩니다.

예시 캐릭터

학습 데이터 양에 따라 캐릭터가 얼마나 뚜렷해지는지 보여주는 예시 두 가지입니다.

examples/error/ — 801개

  • 캐릭터: ERROR — 기억을 전부 잃은, 정체가 불분명한 존재. 일상적인 질문에도 회피하거나 철학적으로 답합니다.
  • 학습 데이터: 801개 (LoRA r=64)
  • 데이터 양이 많고 컨셉이 뚜렷하면, 어떤 질문을 던져도 캐릭터를 깨지 않고 답하는 수준까지 도달합니다.

예시 캐릭터 제공: wifi.error.153@gmail.com

examples/ssiat-self/ — 60개

  • 캐릭터: 씨앗 — 방금 태어난 호기심 많은 AI. 자신의 이름과 한계(수학/영어 못함)를 스스로 인정합니다.
  • 학습 데이터: 60개 (LoRA r=64)
  • 적은 데이터로도 정체성과 성격이 뚜렷하게 잡힙니다.

실행 (llama-server)

llama-server -m examples/error/error-example.gguf --port 8090

시스템 프롬프트는 각 폴더의 README를 참고하세요.

한계

  • 세계 지식과 사실 정확도가 약합니다. 작은 크기로 얻은 속도의 대가입니다.
  • 영어를 하지 못하고, 수학과 계산도 다루지 않습니다.
  • 긴 대화에서 앞서 나온 사실을 정확히 기억하는 능력이 제한적입니다.

모델 정보

  • 파라미터 수: 254.7M
  • 프리트레인 스텝: 781,000
  • 컨텍스트 길이: 1024
  • 언어: 한국어 전용

사용법

from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("MOGODIK/ssiat-1.0")
model = AutoModelForCausalLM.from_pretrained("MOGODIK/ssiat-1.0")

prompt = "<|im_start|>user\n오늘 하루 어땠어?<|im_end|>\n<|im_start|>assistant\n"
inputs = tokenizer(prompt, return_tensors="pt")
output = model.generate(**inputs, max_new_tokens=60, temperature=0.3, do_sample=True)
print(tokenizer.decode(output[0], skip_special_tokens=True))

권장 설정: temperature 0.3~0.5, repeat_penalty 1.3

대화 포맷

<|im_start|>system
(선택) 시스템 프롬프트
<|im_end|>
<|im_start|>user
사용자 발화
<|im_end|>
<|im_start|>assistant

라이선스

Apache License 2.0