svyatsharov/Role-play-ai
06
Role-play-ai
Fine-tuned Qwen/Qwen2.5-32B-Instruct для SFW roleplay-диалогов на русском и английском. Адаптер LoRA r=64.
Code & metrics: https://github.com/ichinosekei/Role-play-ai
Quick start
PEFT
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
base = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen2.5-32B-Instruct",
torch_dtype=torch.bfloat16,
device_map="auto",
)
model = PeftModel.from_pretrained(base, "svyatsharov/Role-play-ai")
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-32B-Instruct")
messages = [
{"role": "system", "content": "You are Mira, a warm tavern owner. Witty but firm."},
{"role": "user", "content": "*sits at the bar* Tough day."},
]
inputs = tokenizer.apply_chat_template(messages, tokenize=True,
add_generation_prompt=True,
return_tensors="pt").to(model.device)
out = model.generate(inputs, max_new_tokens=300, temperature=0.85, top_p=0.9, do_sample=True)
print(tokenizer.decode(out[0][inputs.shape[1]:], skip_special_tokens=True))Unsloth (быстрее на 1 GPU)
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="svyatsharov/Role-play-ai",
max_seq_length=4096,
load_in_4bit=True,
)
FastLanguageModel.for_inference(model)Model details
Evaluation results
Метрики посчитаны на eval-сете (1203 примера, 5% от полного датасета). Все 5 групп метрик:
Loss-based
Reference-based
Style match (Albert metrics)
Diversity
Caveats
- PPL 3.31 ниже целевых 5–12 — eval-сет это случайные 5% из тех же источников что и train. На out-of-distribution данных PPL будет выше. Не настоящее переобучение: trainloss = 1.20, evalloss = 1.21.
- Русский в eval недопредставлен — всего 14 RU-примеров из 1203. Метрика PPL_ru статистически слабая.
Training data
Целевой объём: 50k диалогов SFW roleplay. Реально получено 24 071.
LimaRP не загрузился при подготовке датасета — fallback увеличил долю PIPPA.
Training procedure
Steps & duration
- Total steps: 4287
- Train duration: 51 час на 1× A100 80GB
- Peak VRAM: 33 ГБ
- Final train loss: 1.20
- Final eval loss: 1.21
Hardware
- GPU: 1× NVIDIA A100 80GB
- RAM: 200 GB
- Storage: 4 TB
- VRAM лимит: 60 GB (использовано 33 GB)
Limitations
- Английский лучше русского из-за дисбаланса данных
- 32B модель требует ≥24 GB VRAM для инференса в 4-bit
- Контекст 6144 токенов — длинные RP-сессии надо обрезать
- Eval-сет близок к train → реальное качество на новых данных вероятно ниже метрик
- LimaRP не вошёл в обучение — состав датасета смещён
Citation
@misc{role-play-ai-2026,
title = {Role-play AI: Qwen2.5-32B fine-tune for bilingual SFW roleplay},
author = {svyatsharov, ichinosekei},
year = {2026},
url = {https://huggingface.co/svyatsharov/Role-play-ai}
}Base model citation:
@misc{qwen2.5,
title = {Qwen2.5: A Party of Foundation Models},
author = {Qwen Team},
year = {2024},
url = {https://huggingface.co/Qwen/Qwen2.5-32B-Instruct}
}Framework versions
- PEFT 0.19.1
- Transformers ≥4.46.0
- TRL ≥0.12.0
- Unsloth
- PyTorch 2.5.1
