[신규 모델] SupraLabs, 115K 샘플로 학습된 supra-title-FFT-preview 공개 (기존 대비 10배 규모)
[NEW MODEL] SupraLabs just released supra-title-FFT-preview, 115K samples, almost 10x our first chat title dataset
핵심 요약
SupraLabs가 115K개의 데이터셋으로 학습된 채팅 제목 생성 모델 'supra-title-FFT-preview'를 공개했습니다.
- 데이터셋 확장 — 기존 12K에서 115K 샘플로 대폭 증가함
- 모델 사양 — LiquidAI/LFM2.5-350M 기반의 0.4B 파라미터 모델임
- 학습 방식 — LoRA가 아닌 전체 파라미터 미세 조정(FFT)을 적용함
- 사용 편의성 — 시스템 프롬프트 없이 메시지만으로 제목 생성이 가능함
안녕 r/LocalLLaMA 형들! 저번에 내놨던 채팅 제목 생성 모델인 Supra-Title-350M-exp 후속으로, 훨씬 크고 깔끔한 데이터셋으로 학습시킨 supra-title-FFT-preview를 공개한다.
뭐가 바뀌었냐고?
첫 번째 모델은 12K 샘플(chat-titles-12K)로 학습시켰는데, 흔한 대화 패턴은 괜찮았지만 좀 마이너한 주제는 영 별로였거든. 이번엔 새로 필터링한 데이터셋인 chat-titles-filtered-115K에서 뽑은 115K 샘플로 학습시켰어.
| Model | Dataset size |
|---|---|
| Supra-Title-350M-exp | 12K samples |
| supra-title-FFT-preview | 115K samples |
베이스 모델이랑 작업 내용은 똑같은데, 커버리지가 훨씬 넓어졌다고 보면 돼. 우리 명명 규칙에 따라 이게 정식 버전 나오기 전 마지막 프리뷰 체크포인트야.
스펙
| Spec | Value |
|---|---|
| Base model | LiquidAI/LFM2.5-350M-Base |
| Parameters | ~0.4B |
| Precision | BF16 |
| Training | Full fine-tune (FFT), not LoRA |
| Framework | Unsloth |
| Task | Single-purpose: chat title generation |
여전히 시스템 프롬프트는 필요 없어. 그냥 유저 메시지 던지면 제목 바로 뱉어냄.
빠른 시작
Transformers 파이프라인:
from transformers import pipeline
pipe = pipeline("text-generation", model="SupraLabs/supra-title-FFT-preview")
messages = [{"role": "user", "content": "bruh my wifi keeps disconnecting every 10 minutes"}]
print(pipe(messages))
아니면 바로 로드해서 써도 됨:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
MODEL_ID = "SupraLabs/supra-title-FFT-preview"
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForCausalLM.from_pretrained(MODEL_ID, torch_dtype=torch.bfloat16, device_map="auto")
messages = [{"role": "user", "content": "what's the easiest way to make fluffy pancakes?"}]
inputs = tokenizer.apply_chat_template(
messages, add_generation_prompt=True, tokenize=True,
return_dict=True, return_tensors="pt"
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=40)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))

