Text Generation
PEFT
Safetensors
English
Russian
lora
sft
trl
unsloth
roleplay
conversational
russian
english
svyatsharov commited on
Commit
167c21b
·
verified ·
1 Parent(s): ce03bac

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +197 -203
README.md CHANGED
@@ -1,210 +1,204 @@
1
  ---
2
- base_model: unsloth/qwen2.5-32b-instruct-bnb-4bit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  library_name: peft
4
  pipeline_tag: text-generation
5
- tags:
6
- - base_model:adapter:unsloth/qwen2.5-32b-instruct-bnb-4bit
7
- - lora
8
- - sft
9
- - transformers
10
- - trl
11
- - unsloth
12
  ---
13
 
14
- # Model Card for Model ID
15
-
16
- <!-- Provide a quick summary of what the model is/does. -->
17
-
18
-
19
-
20
- ## Model Details
21
-
22
- ### Model Description
23
-
24
- <!-- Provide a longer summary of what this model is. -->
25
-
26
-
27
-
28
- - **Developed by:** [More Information Needed]
29
- - **Funded by [optional]:** [More Information Needed]
30
- - **Shared by [optional]:** [More Information Needed]
31
- - **Model type:** [More Information Needed]
32
- - **Language(s) (NLP):** [More Information Needed]
33
- - **License:** [More Information Needed]
34
- - **Finetuned from model [optional]:** [More Information Needed]
35
-
36
- ### Model Sources [optional]
37
-
38
- <!-- Provide the basic links for the model. -->
39
-
40
- - **Repository:** [More Information Needed]
41
- - **Paper [optional]:** [More Information Needed]
42
- - **Demo [optional]:** [More Information Needed]
43
-
44
- ## Uses
45
-
46
- <!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
47
-
48
- ### Direct Use
49
-
50
- <!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
51
-
52
- [More Information Needed]
53
-
54
- ### Downstream Use [optional]
55
-
56
- <!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
57
-
58
- [More Information Needed]
59
-
60
- ### Out-of-Scope Use
61
-
62
- <!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
63
-
64
- [More Information Needed]
65
-
66
- ## Bias, Risks, and Limitations
67
-
68
- <!-- This section is meant to convey both technical and sociotechnical limitations. -->
69
-
70
- [More Information Needed]
71
-
72
- ### Recommendations
73
-
74
- <!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
75
-
76
- Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
77
-
78
- ## How to Get Started with the Model
79
-
80
- Use the code below to get started with the model.
81
-
82
- [More Information Needed]
83
-
84
- ## Training Details
85
-
86
- ### Training Data
87
-
88
- <!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
89
-
90
- [More Information Needed]
91
-
92
- ### Training Procedure
93
-
94
- <!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
95
-
96
- #### Preprocessing [optional]
97
-
98
- [More Information Needed]
99
-
100
-
101
- #### Training Hyperparameters
102
-
103
- - **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
104
-
105
- #### Speeds, Sizes, Times [optional]
106
-
107
- <!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
108
-
109
- [More Information Needed]
110
-
111
- ## Evaluation
112
-
113
- <!-- This section describes the evaluation protocols and provides the results. -->
114
-
115
- ### Testing Data, Factors & Metrics
116
-
117
- #### Testing Data
118
-
119
- <!-- This should link to a Dataset Card if possible. -->
120
-
121
- [More Information Needed]
122
-
123
- #### Factors
124
-
125
- <!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
126
-
127
- [More Information Needed]
128
-
129
- #### Metrics
130
-
131
- <!-- These are the evaluation metrics being used, ideally with a description of why. -->
132
-
133
- [More Information Needed]
134
-
135
- ### Results
136
-
137
- [More Information Needed]
138
-
139
- #### Summary
140
-
141
-
142
-
143
- ## Model Examination [optional]
144
-
145
- <!-- Relevant interpretability work for the model goes here -->
146
-
147
- [More Information Needed]
148
-
149
- ## Environmental Impact
150
-
151
- <!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
152
-
153
- Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
154
-
155
- - **Hardware Type:** [More Information Needed]
156
- - **Hours used:** [More Information Needed]
157
- - **Cloud Provider:** [More Information Needed]
158
- - **Compute Region:** [More Information Needed]
159
- - **Carbon Emitted:** [More Information Needed]
160
-
161
- ## Technical Specifications [optional]
162
-
163
- ### Model Architecture and Objective
164
-
165
- [More Information Needed]
166
-
167
- ### Compute Infrastructure
168
-
169
- [More Information Needed]
170
-
171
- #### Hardware
172
-
173
- [More Information Needed]
174
-
175
- #### Software
176
-
177
- [More Information Needed]
178
-
179
- ## Citation [optional]
180
-
181
- <!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
182
-
183
- **BibTeX:**
184
-
185
- [More Information Needed]
186
-
187
- **APA:**
188
-
189
- [More Information Needed]
190
-
191
- ## Glossary [optional]
192
-
193
- <!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
194
-
195
- [More Information Needed]
196
-
197
- ## More Information [optional]
198
-
199
- [More Information Needed]
200
-
201
- ## Model Card Authors [optional]
202
-
203
- [More Information Needed]
204
-
205
- ## Model Card Contact
206
 
207
- [More Information Needed]
208
- ### Framework versions
 
 
 
 
 
209
 
210
- - PEFT 0.19.1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ license: apache-2.0
3
+ base_model: Qwen/Qwen2.5-32B-Instruct
4
+ tags:
5
+ - lora
6
+ - peft
7
+ - sft
8
+ - trl
9
+ - unsloth
10
+ - roleplay
11
+ - conversational
12
+ - russian
13
+ - english
14
+ language:
15
+ - en
16
+ - ru
17
  library_name: peft
18
  pipeline_tag: text-generation
19
+ datasets:
20
+ - PygmalionAI/PIPPA
21
+ - IlyaGusev/saiga_scored
22
+ - Norquinal/claude_multiround_chat_30k
 
 
 
23
  ---
24
 
25
+ # Role-play-ai
26
+
27
+ Fine-tuned `Qwen/Qwen2.5-32B-Instruct` для SFW roleplay-диалогов на русском и английском. Адаптер LoRA r=64.
28
+
29
+ **Code & metrics**: https://github.com/ichinosekei/Role-play-ai
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
 
31
+ ## Quick start
32
+
33
+ ### PEFT
34
+ ```python
35
+ from peft import PeftModel
36
+ from transformers import AutoModelForCausalLM, AutoTokenizer
37
+ import torch
38
 
39
+ base = AutoModelForCausalLM.from_pretrained(
40
+ "Qwen/Qwen2.5-32B-Instruct",
41
+ torch_dtype=torch.bfloat16,
42
+ device_map="auto",
43
+ )
44
+ model = PeftModel.from_pretrained(base, "svyatsharov/Role-play-ai")
45
+ tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-32B-Instruct")
46
+
47
+ messages = [
48
+ {"role": "system", "content": "You are Mira, a warm tavern owner. Witty but firm."},
49
+ {"role": "user", "content": "*sits at the bar* Tough day."},
50
+ ]
51
+ inputs = tokenizer.apply_chat_template(messages, tokenize=True,
52
+ add_generation_prompt=True,
53
+ return_tensors="pt").to(model.device)
54
+ out = model.generate(inputs, max_new_tokens=300, temperature=0.85, top_p=0.9, do_sample=True)
55
+ print(tokenizer.decode(out[0][inputs.shape[1]:], skip_special_tokens=True))
56
+ ```
57
+
58
+ ### Unsloth (быстрее на 1 GPU)
59
+ ```python
60
+ from unsloth import FastLanguageModel
61
+
62
+ model, tokenizer = FastLanguageModel.from_pretrained(
63
+ model_name="svyatsharov/Role-play-ai",
64
+ max_seq_length=4096,
65
+ load_in_4bit=True,
66
+ )
67
+ FastLanguageModel.for_inference(model)
68
+ ```
69
+
70
+ ## Model details
71
+
72
+ | Параметр | Значение |
73
+ |---|---|
74
+ | Base model | `Qwen/Qwen2.5-32B-Instruct` |
75
+ | Adapter type | LoRA (PEFT) r=64, alpha=128 |
76
+ | Trainable params | 537M (1.6% от 32B) |
77
+ | Context length | 6144 |
78
+ | Languages | English, Russian |
79
+ | Chat template | ChatML |
80
+ | License | Apache 2.0 (наследуется от Qwen2.5) |
81
+
82
+ ## Evaluation results
83
+
84
+ Метрики посчитаны на eval-сете (1203 примера, 5% от полного датасета). Все 5 групп метрик:
85
+
86
+ ### Loss-based
87
+
88
+ | Метрика | Значение | Цель |
89
+ |---|---|---|
90
+ | Perplexity (overall) | 3.31 | 5–12 |
91
+ | Perplexity (EN) | 3.24 | 5–12 |
92
+ | Perplexity (RU) | 3.58 | 5–15 |
93
+ | Token accuracy | 0.678 | >0.55 ✅ |
94
+
95
+ ### Reference-based
96
+
97
+ | Метрика | Значение | Цель |
98
+ |---|---|---|
99
+ | BLEU-4 | 11.20 | >5 ✅ |
100
+ | ROUGE-L | 0.215 | >0.20 ✅ |
101
+ | BERTScore F1 | **0.865** | >0.85 ✅ |
102
+ | chrF++ | 31.01 | >25 ✅ |
103
+
104
+ ### Style match (Albert metrics)
105
+
106
+ | Метрика | Значение | Цель |
107
+ |---|---|---|
108
+ | Length JS-divergence | 0.038 | <0.10 ✅ |
109
+ | Vocabulary overlap | 0.94 | >0.55 ✅ |
110
+ | **Style Match Score** | **0.798** | >0.7 ✅ |
111
+
112
+ ### Diversity
113
+
114
+ | Метрика | Значение | Цель |
115
+ |---|---|---|
116
+ | Avg distinct-2 | 0.940 | >0.7 ✅ |
117
+ | Avg distinct-3 | 0.985 | — |
118
+ | Self-repetition rate | 0.000 | <0.05 ✅ |
119
+ | TTR (model) | 0.349 | 0.4–0.6 |
120
+
121
+ ### Caveats
122
+
123
+ - **PPL 3.31 ниже целевых 5–12** — eval-сет это случайные 5% из тех же источников что и train. На out-of-distribution данных PPL будет выше. Не настоящее переобучение: train_loss = 1.20, eval_loss = 1.21.
124
+ - **Русский в eval недопредставлен** — всего 14 RU-примеров из 1203. Метрика PPL_ru статистически слабая.
125
+
126
+ ## Training data
127
+
128
+ Целевой объём: 50k диалогов SFW roleplay. Реально получено **24 071**.
129
+
130
+ | Источник | Получено | % | Заявлено |
131
+ |---|---|---|---|
132
+ | [`PygmalionAI/PIPPA`](https://huggingface.co/datasets/PygmalionAI/PIPPA) (SFW filter) | 13 050 | 54.2% | 35% |
133
+ | `lemonilia/LimaRP` | 0 | 0% | 25% |
134
+ | [`Norquinal/claude_multiround_chat_30k`](https://huggingface.co/datasets/Norquinal/claude_multiround_chat_30k) | 7 500 | 31.2% | 15% |
135
+ | [`IlyaGusev/saiga_scored`](https://huggingface.co/datasets/IlyaGusev/saiga_scored) | 3 521 | 14.6% | 25% |
136
+
137
+ **LimaRP не загрузился** при подготовке датасета — fallback увеличил долю PIPPA.
138
+
139
+ ## Training procedure
140
+
141
+ | Параметр | Значение |
142
+ |---|---|
143
+ | Framework | Unsloth + TRL SFTTrainer |
144
+ | Method | QLoRA 4-bit (NF4) |
145
+ | Effective batch | 16 (2 × 8 grad_accum) |
146
+ | Epochs | 3 (early stopping) |
147
+ | Learning rate | 1e-4, cosine schedule, warmup 3% |
148
+ | Optimizer | AdamW 8-bit |
149
+ | Weight decay | 0.01 |
150
+ | Gradient checkpointing | Unsloth |
151
+ | Precision | bf16 + tf32 |
152
+ | Target modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
153
+
154
+ ### Steps & duration
155
+
156
+ - Total steps: 4287
157
+ - Train duration: **51 час** на 1× A100 80GB
158
+ - Peak VRAM: 33 ГБ
159
+ - Final train loss: 1.20
160
+ - Final eval loss: 1.21
161
+
162
+ ## Hardware
163
+
164
+ - **GPU**: 1× NVIDIA A100 80GB
165
+ - **RAM**: 200 GB
166
+ - **Storage**: 4 TB
167
+ - **VRAM лимит**: 60 GB (использовано 33 GB)
168
+
169
+ ## Limitations
170
+
171
+ - Английский лучше русского из-за дисбаланса данных
172
+ - 32B модель требует ≥24 GB VRAM для инференса в 4-bit
173
+ - Контекст 6144 токенов — длинные RP-сессии надо обрезать
174
+ - Eval-сет близок к train → реальное качество на новых данных вероятно ниже метрик
175
+ - LimaRP не вошёл в обучение — состав датасета смещён
176
+
177
+ ## Citation
178
+
179
+ ```bibtex
180
+ @misc{role-play-ai-2026,
181
+ title = {Role-play AI: Qwen2.5-32B fine-tune for bilingual SFW roleplay},
182
+ author = {svyatsharov, ichinosekei},
183
+ year = {2026},
184
+ url = {https://huggingface.co/svyatsharov/Role-play-ai}
185
+ }
186
+ ```
187
+
188
+ Base model citation:
189
+ ```bibtex
190
+ @misc{qwen2.5,
191
+ title = {Qwen2.5: A Party of Foundation Models},
192
+ author = {Qwen Team},
193
+ year = {2024},
194
+ url = {https://huggingface.co/Qwen/Qwen2.5-32B-Instruct}
195
+ }
196
+ ```
197
+
198
+ ## Framework versions
199
+
200
+ - PEFT 0.19.1
201
+ - Transformers ≥4.46.0
202
+ - TRL ≥0.12.0
203
+ - Unsloth
204
+ - PyTorch 2.5.1