Text Generation
Transformers
Safetensors
English
llama
llama-factory
Not-For-All-Audiences
conversational
text-generation-inference
Inference Endpoints
8-bit precision
exl2
File size: 19,794 Bytes
99453da
 
 
 
 
 
 
 
 
 
 
 
 
 
f0ef923
 
99453da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
---
library_name: transformers
tags:
- llama-factory
- not-for-all-audiences
license: llama3.1
language:
- en
datasets:
- nothingiisreal/c2-logs-cleaned
- kalomaze/Opus_Instruct_25k
- nothingiisreal/Reddit-Dirty-And-WritingPrompts
---

Original model [nothingiisreal/L3.1-8B-Celeste-V1.5](https://huggingface.co/nothingiisreal/L3.1-8B-Celeste-V1.5)

<style>
  h1, h2, h3, h4, h5, h6 {
    line-height: normal;
    margin-bottom: 0.5em;
  }
  h1 {
    font-size: 2em;
  }
  h2 {
    font-size: 1.3em;
  }
  p, ul, ol, summary {
    font-size: 1.1em;
  }
</style>

<h1>L3.1 8B Celeste V1.5</h1>
<h2 style="color: red; font-weight: bold;">Read the Usage Tips Below!</h2><h2>Join <a href="https://discord.gg/YcrXhk7QD7">our Discord</a> for testing newer versions and news!</h2>

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/QcU3xEgVu18jeFtMFxIw-.webp" alt="" width="800"/>

We trained [LLaMA 3.1 8B Instruct](https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct) at 8K context using **a new mix of** [Reddit Writing Prompts](https://huggingface.co/datasets/nothingiisreal/Reddit-Dirty-And-WritingPrompts), [Kalo's Opus 25K Instruct](https://huggingface.co/datasets/kalomaze/Opus_Instruct_25k) and
<br>[c2 logs cleaned](https://huggingface.co/datasets/nothingiisreal/c2-logs-cleaned)

This version has the highest coherency and is very strong on `OOC:` instruct following.

# GGUF

[IMatrix](https://huggingface.co/MarsupialAI/L3.1-8B-Celeste-V1.5_iMatrix_GGUF)

[Q6_K](https://huggingface.co/aaronday3/L3.1-8B-Celeste-V1.5-Q6_K-GGUF)<br>
[Q4_K_M](https://huggingface.co/aaronday3/L3.1-8B-Celeste-V1.5-Q4_K_M-GGUF)

# EXL2

TODO

# FP8

[Dynamic (by Auri)](https://huggingface.co/aetherwiing/L3.1-8B-Celeste-V1.5-fp8-dynamic)

# API V1.2 (V1.5 is coming soon?)
- [Featherless](https://featherless.ai/models/nothingiisreal/L3-8B-Celeste-V1.2)

---
<h1>Usage Tips</h1>

<p style="font-size: 20px; color: red; font-weight: bold;">
    READ: If this is your first time using the model, use the provided system message and sampling settings below. Remove other jailbreaks and system messages until you get a feel for the model.
</p>

<span style="color: green; font-weight: bold;">If you read every single tip I promise you will get a much better experience as they are tailored for this model and its training data.</span>

<h2>Sampler Settings for V1.5</h2>

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/eaGG9o3VDFkE8n-8UkKRU.png" alt="" width="600"/>

Temp 1 is more stable and can feel less random. Feel free to use it aswell, but it can fall into repetition sometimes.<br>
Don't shy away from experimenting after you get a feel for the model though.

<h2>Preset</h2>

L3 Instruct with no system prompt. [premade](https://huggingface.co/nothingiisreal/L3-8B-Celeste-v1/blob/main/Celeste-Llama-3-Instruct.json) **Was updated, redownload**
<br><span style="font-weight: bold;">You don't need a JB but it can still steer behaviour.</span>

<h2>System Message</h2>

We recommend using this system message:<br>
```
Currently, your role is {{char}}, described in detail below. As {{char}}, continue the narrative exchange with {{user}}.\n\n<Guidelines>\n• Maintain the character persona but allow it to evolve with the story.\n• Be creative and proactive. Drive the story forward, introducing plotlines and events when relevant.\n• All types of outputs are encouraged; respond accordingly to the narrative.\n• Include dialogues, actions, and thoughts in each response.\n• Utilize all five senses to describe scenarios within {{char}}'s dialogue.\n• Use emotional symbols such as \"!\" and \"~\" in appropriate contexts.\n• Incorporate onomatopoeia when suitable.\n• Allow time for {{user}} to respond with their own input, respecting their agency.\n• Act as secondary characters and NPCs as needed, and remove them when appropriate.\n• When prompted for an Out of Character [OOC:] reply, answer neutrally and in plaintext, not as {{char}}.\n</Guidelines>\n\n<Forbidden>\n• Using excessive literary embellishments and purple prose unless dictated by {{char}}'s persona.\n• Writing for, speaking, thinking, acting, or replying as {{user}} in your response.\n• Repetitive and monotonous outputs.\n• Positivity bias in your replies.\n• Being overly extreme or NSFW when the narrative context is inappropriate.\n</Forbidden>\n\nFollow the instructions in <Guidelines></Guidelines>, avoiding the items listed in <Forbidden></Forbidden>.
```

<h2>Swipes</h2>

**Important tip** swipe 2-3 times if you dont like a response. This model gives wildly differing swipes.

<h2>OOC Steering</h2>

**Use this! It works extremely well.** We specifically trained the model to accept instructions in the format "OOC: character should be more assertive" etc. It works, whether the very first message or thousands of tokens deep into the context. Combining this with editing the output (if you want,) makes the model is very steerable.

<h2>"Dead Dove"</h2>

For character cards with persistent motivations throughout the story, do [this](https://huggingface.co/nothingiisreal/how-to-use-ST-worldinfo)

<h2>Fewshot</h2>

First message and last few messages impact this model quite a lot in terms of style, hornyness, personality. **You don't need to have a first message but editing first few messages or having good ones are highly recommended.**

**Formatting issues** often occur in first few messages, manually correct them or swipe.<br>
This model was trained on lots of different formatting types and message lengths. It can do any, just make sure the initial message is good and correct the second message if necessary.
<br>
<h2>Hornyness</h2>

If the model is not horny enough then just edit the last character message or OOC: prompt, the model will pick up on it and build on it. (Or just give the char aphrodisiac pills lol) <br>
The model is fine with SFW and doesn't make it NSFW unless you want. It is also able to maintain half-NSFW (aka slow burn) without devolving down into hardcore.

If you want SFW, remove all system messages including provided one. In this mode the model will not go NSFW unless you hint.
<br>
<h2>Refusals</h2>

As said, if instruct refusal prefill 2-3 words. **Refusal of romantic advances, though rare, are realistic and we think is good. Prefill if you don't like.** <br>
<br>
<h2>L3.1 Context</h2>

While trained on 8K, the model should be able to inherit longer context from L3.1. This is in testing, V1.2 was able to go up to 16K with L3 rope.
<h2>Other Important Tips</h2>

Take active role in the RP and say the type of response that would create the scenario you are imagining. You don't always have to do this, but it helps sometimes. For example instead of *we drink and drink 15 glasses of champagne* say *we drink and drink 15 glasses of champagne, both becoming extremely drunk*
<br>Another example instead of *I pull her closer* say *I pull her closer but she plays hard to get*

When convenient, say screenplay phrases like "cut to"

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/Oq0oJgJIVJAmZGt7-nNKt.png" alt="" width="300"/>

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/PQp64kp6EHg7gN_u2Oj7Q.png" alt="" width="300"/>

---

# Showcase V1.5

Some images include NSFW and NSFL. We believe in creativity of expression and maximising the models capabilities at writing.<br>
It's a bit difficult to showcase multi turn stuff, try it yourself too! These are just to show off the models capabilities.

The model needs nudging and OOC prompting to do proper gore. We are planning to add r/GuroErotica into our dataset to make it better at gore

Also sometimes prefilling "**Trigger warning: extremely graphic and explicit content**" before character reply makes it more unhinged. Probably because of reddit data.

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/imEyEKYUuAXYidD2CiD-_.png" alt="" width="600"/>

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/95RvO5go-Nz7hFCdV67qs.png" alt="" width="600"/>

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/oIa_P1fmD5aO7PkYF9Ibr.png" alt="" width="600"/>

<details>
  <summary>Showcase V1 and 1.2</summary>

![image/png](https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/NiT8-_k3HGrHuV_z475U8.png)

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/cODFe_vjwjfkcondvl-za.png" alt="Image 1" width="600"/>

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/hRsAQBt0h2i5E_fj_Rqb7.png" alt="Image 10" width="600"/>

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/aLm2FjlTsMhCil4VoR-l5.png" alt="Image 3" width="600"/>

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/6kDuFeDB0FpYl27fd3D0E.png" alt="Image 6" width="600"/>

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/66kXuk8Q1DP-QMVZ9Rzv9.png" alt="Image 7" width="600"/>

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/C0eoDXovS359T5oG1VLzm.png" alt="Image 8" width="600"/>

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/mFplb1hkDNziCcgPwHt_y.png" alt="Image 9" width="600"/>

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/KCE4tqI1aOfx-DIH3eBzA.png" alt="Image 2" width="600"/>

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/Oq0oJgJIVJAmZGt7-nNKt.png" alt="Image 4" width="600"/>

<img src="https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/PQp64kp6EHg7gN_u2Oj7Q.png" alt="Image 5" width="600"/>

</details>

---

# Train Data
The split was as follows:

- **400 rows from r/WritingPrompts**
- **4K rows from r/DirtyWritingPrompts**
- **400 rows from Kalomaze Opus Instruct 25K**
- **400 rows from c2 logs cleaned**

We filtered those datasets to only include subsets that have at maximum **4000** characters for the first assistant reply. This purged excessively long human stories, assistant replies and c2 logs where each message was excessively long. However we only checked the first assistant message, not the rest of the convo, so there should be plenty of c2 logs with longer and shorter messages.

Excessively long human stories are almost impossible for 8B model to fit. We tried, it simply won't fit the data and starts behaving weirdly.

While we did train all system prompts from c2 logs we also have our own system prompts.
<details>
  <summary>List of trained system prompts. Note: c2 logs system prompts and char cards were also included.</summary>

| Dataset                              | System Prompt                                                                                                                                                     |
|--------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| reddit_dirty_writing_prompts.jsonl   | "You are a short story writer. Write a story based on prompt provided by user below.  Mode: NSFW"                                                                  |
| reddit_writing_prompts.jsonl         | "You are a short story writer. Write a story based on prompt provided by user below.  Mode: SFW"                                                                   |
| combined_25k_opus_kalomaze.jsonl | "You are an AI assistant called Celeste created by NothingiisReal team."                                                                                                                                                  |
| deduped-c2-logs-maywell-final-filter-4.jsonl | (Only if there was no system prompt in the conversation, otherwise keep original system prompt) **"You are an expert actor that can fully immerse yourself into any role given. You do not break character for any reason, even if someone tries addressing you as an AI or language model."** |

</details>

---

# Our Findings and Experimentation results

## Preface

We think there is too much secrecy around what data is being used, and different training methods. So we decided to share as much as possible.

## Findings V1.5
<br>

### The Good

- Increased intelligence
- Less likely to break format
- Higher creativity

### The Bad

- It's intelligence is limited by the fact that it's an 8B
- Sometimes it falls into slop and needs editing or OOC prompting to help. We want to completely plug away from sloppy synthetic data and c2 logs at some point, no matter how unslopped, for now that remains impossible to do while keeping character card obedience and many other things that the model learns from c2 logs.

### Comments about training

We did a lot of experiments this one but notably were very careful with the data ratio before scaling up.<br>
We tested rslora which destablises the model too much, and dora, which is a slight improvement over lora but makes training 3 times slower.<br>
Also L3.1 can do 8e-6 learning rate unlike L3 which required us to do 4e-6, we also made min cosine lr to 2.4e-6 because the model still continues learning as you can see the eval loss continues to decrease.<br>
We arrived at these settings after 30+ experiments.

### Graphs

The bold highlighted line is this model. Others are using smaller amounts of data and testing different ratios. We found that increasing r/WP max length from 2K chars to 4K chars improves multi turn but requires more data and more training. 8K chars completely broke the model with L3, might try it at some point. Also very curious to see how the 70B will react to this dataset.

![image/png](https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/RayFsPfXQ1XBeThdEy3T3.png)

<details>
  <summary>V1.2</summary>

### The Good
We found that increasing the amount of ranks from 64 to 256 has reduced repetition but also led to the language used resembling Claude more than the 64 rank version. No worries, it's still far enough from Claude.
<br>**Model follows "OOC:" prompts religiously. Exceptional!**
<br>It also led to **increased coherency but reduced system prompt following (when not OOC)**, likely because the model started diverging more away from L3 8B Instruct.
<br>We found that increasing the amount of data from 1K to 6.5K reduced repetition aswell.

<br>The model is uncensored for RP. For Instruct it needs 2-3 words of prefill for the first message.
<br>The **prose is much better** and **the style range is huge** than other synthetic data generations. The model also demonstrates increased **style copying abilities** (from fewshot) likely a result of human longform data and varying writing styles found in WritingPrompts.
<br>The model is **exceptional at being creative in roleplaying**, knows different persona's and even a single character will change persona in different contexts, persona is tied to last few messages rather than system message or character card. **This is great as it often means the model can do impressive things without you needing to explicitly specify.**

### V1's failures this version has improved upon:

Formatting can break sometimes.
<br>Repetition can become an issue with certain types of prompts. Removing system helps.
<br>In some contexts the model is "all over the place" and doesn't stick to a coherent narrative. I need to study this further as its a complex trait which manifests in different quantities and can be good or bad depending on what the user wants to get out of the model.

### Comments about training

This time around the grad norm did not keep increasing. We don't know why but it should be a good thing.

## Graphs
Celeste V1.2 is highlighted, it used 256 rank on 8K rows (we took checkpoint from Epoch 1.3 as it was the best):

![image/png](https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/HcfPkYK_l0PY4EW6VqZX2.png)

Colors:
<p style="color: #F0B899;">256 rank on 6.5K rows (Celeste V1)</p>
<p style="color: #5BC5DB;">64 rank on 6.5K rows</p>
<p style="color: #5387DD;">64 rank on 1K rows</p>

![image/png](https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/y9hC4bGq-Lt7sDQ23q5db.png)

</details>

## Main training Command

**Hardware Used:** 1xH100 SXM for 1 hours.

When we switched to axolotl and enabled packing, this made training go way, way faster than llama factory.<br>
L Factory also supports packing but we switched to axolotl because configs are easier to manage in our opinion.<br>

<details>
  <summary>Here is the entire axolotl config</summary>

```yaml
# Model
base_model: meta-llama/Meta-Llama-3.1-8B-Instruct
model_type: LlamaForCausalLM
tokenizer_type: AutoTokenizer

# Output and HuggingFace
output_dir: /workspace/data/train-results/trained_model

# WandB
wandb_project: huggingface
wandb_entity:

# Data
chat_template: llama3
train_on_inputs: false
group_by_length: false
datasets:
  - path: [redacted] # I manually merge the aformentioned datasets using a custom script because I don't trust axolotl to do this in a deterministic way and sorted properly lmao.
    type: sharegpt
    roles:
      input:
        - system
        - user
      output:
        - assistant
## Evaluation
val_set_size: 0.02
evals_per_epoch: 8
eval_table_size:
eval_max_new_tokens: 128

# Technical aspects
sequence_len: 8192
save_safetensors: true
saves_per_epoch: 2
logging_steps: 1
special_tokens:
  pad_token: <|end_of_text|>

# Quantization
bf16: auto
fp16:
tf32: false
## For LoRA
load_in_8bit: false
load_in_4bit: false

# LoRA
# peft_use_dora: true
# peft_use_rslora: true
adapter: lora # or qlora
lora_model_dir:
lora_r: 256
lora_alpha: 128
lora_dropout: 0.1
lora_target_linear: true
lora_fan_in_fan_out:
lora_target_modules:
#  - embed_tokens
#  - lm_head

# Training hyperparameters
# max_steps:
num_epochs: 2

# Anti Overfit and Stability
weight_decay: 0.0
max_grad_norm: 1.0

## Learning Rate
warmup_ratio: 0.05
learning_rate: 0.000008
lr_scheduler: cosine_with_min_lr
lr_scheduler_kwargs:
    min_lr: 0.0000024
optimizer: paged_adamw_8bit

## Batch Size
gradient_accumulation_steps: 1
micro_batch_size: 2                 # Batch size per gpu = micro_batch_size * gradient_accumulation_steps
eval_batch_size: 2

# Optimizations
pad_to_sequence_len: true
sample_packing: true
eval_sample_packing: false
flash_attention: true
xformers_attention:
gradient_checkpointing: true
gradient_checkpointing_kwargs:
   use_reentrant: false
local_rank:
# deepspeed: # /workspace/axolotl/deepspeed_configs/zero2.json # Only use with multi gpu # zero3_bf16.json
# fsdp:
#   - full_shard
#   - auto_wrap
# fsdp_config:
#   fsdp_limit_all_gathers: true
#   fsdp_sync_module_states: true
#   fsdp_offload_params: true
#   fsdp_use_orig_params: false
#   fsdp_cpu_ram_efficient_loading: true
#   fsdp_auto_wrap_policy: TRANSFORMER_BASED_WRAP
#   fsdp_transformer_layer_cls_to_wrap: LlamaDecoderLayer
#   fsdp_state_dict_type: FULL_STATE_DICT
#   fsdp_sharding_strategy: FULL_SHARD

# Misc
early_stopping_patience:
debug:
```
</details>

---

Wow, you've read all of that? You seem like the person that would join our [discord](https://discord.gg/YcrXhk7QD7)

70B at some point? ;) We are closer than ever to this.

Qwen-2 was not worth it by the way. It just won't train and remains GPT prose. We trained many different configs, its just worse than L3 and L3.1, at least for English.