Downloads · 30 days
11
5% of all-time downloads
aisamdasu/algocean-2.1B-nano-friend
algocean-2.1B-nano-friend is a text generation model from aisamdasu. Use it when you need the model to write or continue text. It is set up for peft. The card lists the license as apache-2.0.
kakaocorp/kanana-nano-2.1b-instruct에 LoRA SFT한 한국어 companion 대화 adapter입니다. 기존 instruct 모델에 감정 공감·친구 대화 말투를 더하고, companion 태스크 성능(eval loss −24%) 을 높인 모델입니다.
Downloads · 30 days
11
5% of all-time downloads
All-time downloads
220
Public
Repo size
736 MB
Likes
0
Public
Click a slice to open those files.
.safetensors736 MB · 100%
From the Hugging Face model README
kakaocorp/kanana-nano-2.1b-instruct에 LoRA SFT한 한국어 companion 대화 adapter입니다.
기존 instruct 모델에 감정 공감·친구 대화 말투를 더하고, companion 태스크 성능(eval loss −24%) 을 높인 모델입니다.
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base = "kakaocorp/kanana-nano-2.1b-instruct"
adapter = "aisamdasu/algocean-2.1B-nano-friend"
tok = AutoTokenizer.from_pretrained(base)
model = AutoModelForCausalLM.from_pretrained(base, torch_dtype=torch.bfloat16, device_map="auto")
model = PeftModel.from_pretrained(model, adapter)
messages = [{"role": "user", "content": "오늘 너무 지쳤어. 위로해줘."}]
prompt = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tok(prompt, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=200, do_sample=True, temperature=0.7, top_p=0.9)
print(tok.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
| base (instruct) | algocean (LoRA) | |
|---|---|---|
| 역할 | 범용 instruct | companion 친구 대화 |
| 말투 | 조언·설명·목록형 | 짧고 캐주얼·공감·대화형 |
| 공감 | 일반적 위로·팁 | 감정 공감·맞장구 |
| value | |
|---|---|
| data | ~22만 줄 (train ~21.5만 · eval 2%) |
| plan | 3 epoch · max 10,080 step (~3,361 step/epoch) |
| LoRA | r=128 · alpha=256 · seq 2048 |
| step | epoch | eval loss | PPL | 비고 |
|---|---|---|---|---|
| 200 | 0.06 | 1.640 | 5.16 | 초기 |
| 6600 | 1.96 | 1.241 | 3.46 | best → 배포 ckpt |
| 6800 | 2.02 | 1.285 | 3.62 | best 이후 상승 |
| 7600 | 2.26 | 1.319 | 3.74 | 최종 eval |



| 근거 | 수치 |
|---|---|
| eval loss 최저 | 1.241 @ step 6600 (이후 전 step에서 미달) |
| 이후 eval | 6800 → 1.285 · 7600 → 1.319 (단조 상승) |
| train vs eval | train 0.755 ↓ 계속 · eval 1.319 ↑ → 과적합 신호 |
| epoch 위치 | ~1.96 — 2 epoch 직전, generalization peak |
step 6600 이후 eval만 악화되고 train은 계속 내려갔으므로, 검증 loss 기준 최적 ckpt = 6600이 합리적입니다.
| 내용 | |
|---|---|
| 관측 | epoch 2.0 넘긴 뒤 eval loss 1.241 → 1.285 → 1.319 (재상승) |
| 5 epoch 기대 | 같은 ~22만 줄을 5회 반복 → companion 분포 고착 우세 |
| 재개선 가능성 | cosine LR·현 설정 그대로 5 epoch 근처 eval 재하락 가능성 낮음 |
| 데이터 규모 | ~22만 줄은 SFT치고 큼 → 개별 대화 암기 overfit은 상대적으로 적음 |
| 잔존 리스크 | 도메인이 단일(친구 대화) → 반복 epoch ↑ 시 instruct 스타일 가림 가능 |
3 epoch 계획 중 ~2.29 epoch에서 eval 악화가 확인됐고, 5 epoch 연장은 eval 개선보다 과적합·스타일 lock-in 쪽이 유력해 best ckpt(6600)로 확정했습니다.
| Key | Value |
|---|---|
| LoRA r | 128 |
| alpha | 256 |
| target | q/k/v/o + MLP |
| train seq | 2048 |
| max context | 8192 |
User: 오늘 우울해서 떡볶이 먹고 싶어.
원본 (kanana-nano-2.1b-instruct) — 5.38s · 150 tok
오늘 기분이 좋지 않아서 떡볶이가 생각나는 건 정말 공감해요. 떡볶이는 매콤하고 달콤한 맛으로 기분을 한층 나아지게 해주죠. 집에서 간단하게 만들 수 있는 레시피를 공유해드릴게요.
간단한 떡볶이 레시피
재료:
- 떡 200g
- 어묵 1개 …
algocean (LoRA) — 1.32s · 39 tok
아 진짜? 매운 거 당기면 순한 치즈떡볶이로 가자 ㅋㅎㅋㅎㅋㅎ 내일은 덜 속 쓰릴 거야.
원본은 레시피·설명형, algocean은 짧은 맞장구·친구 말투로 답합니다.
원본 vs algocean을 직접 비교하려면 algocean_friend_try.ipynb 를 열고 Run All → PROMPT 수정 → 비교 셀 실행.
hf download aisamdasu/algocean-2.1B-nano-friend algocean_friend_try.ipynb