12B

202次提取 更新于2周前

2周前

f157f023933b · 7.5GB

readme

=== 警告:可能有NSFW内容! ===

Mistral Nemo 12B Celeste V1.9

请阅读下面的使用提示!使用ChatML。

加入我们的Discord测试新版本和获取最新消息!我们也在KoboldAI上。

**这是一个基于[Mistral NeMo 12B Instruct](https://hugging-face.cn/mistralai/Mistral-Nemo-Instruct-2407)训练的8K语境的故事写作和角色扮演模型**,使用了[Reddit Writing Prompts](https://hugging-face.cn/datasets/nothingiisreal/Reddit-Dirty-And-WritingPrompts)、[Kalo's Opus 25K Instruct](https://hugging-face.cn/datasets/kalomaze/Opus_Instruct_25k) 以及
[c2 日志清洗](https://hugging-face.cn/datasets/Sao10K/c2-Logs-Filtered) 感谢Pyroserenus赞助这次运行!此版本增强了NSFW,更聪明和更活跃的叙述。它还使用ChatML标记进行训练,因此应该没有任何EOS bleeding。# FP8 [动态(由Auri提供)](https://hugging-face.cn/aetherwiing/MN-12B-Celeste-V1.9-fp8-dynamic) # EXL2 [4bpw 由Kingbri](https://hugging-face.cn/royallab/MN-12B-Celeste-V1.9-exl2/tree/4bpw)
[5bpw 由Kingbri](https://hugging-face.cn/royallab/MN-12B-Celeste-V1.9-exl2/tree/5bpw)
[6bpw 由Kingbri](https://hugging-face.cn/royallab/MN-12B-Celeste-V1.9-exl2/tree/6bpw) # GGUF 如果一个版本不起作用,尝试另一个。[静态量化](https://hugging-face.cn/nothingiisreal/MN-12B-Celeste-V1.9-GGUF)
[IMatrix 量化](bartowski/MN-12B-Celeste-V1.9-GGUF) # API 可能会在Featherless上运行。也被一位慷慨的人在我们的Discord中托管。 ---

使用技巧

阅读:如果您是第一次使用此模型,请使用下面的系统消息和采样设置。移除其他越狱和系统消息,直到你对模型有了感觉。

如果您阅读了我提供的每个提示,我保证您会得到更好的体验,因为它们是为这个模型及其训练数据定制的。

V1.9的采样设置

这次实际上推荐了2个

我通常开始前几条消息使用Stable,看看效果如何。如果它陷入了重复,我就切换到Creative。但您也可以一整程都使用其中任何一个,Creative可能需要不时地擦除。

Stable


Creative


不过,在熟悉了模型之后不要害怕尝试。

预设


无系统提示的ChatML。是的,我们这次训练了实际的ChatML标记。您不需要JB,但它仍然可以引导行为。

系统提示

我们建议使用此系统提示

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>.

故事写作

添加此系统提示可能会增加散文的人性化,因为我们训练了系统提示。您还可以将其更改为NSFW,但无论您是否写作NSFW,都应尝试两者。

由于我们针对人类故事进行训练,您应该强制助手回答从*开始。

系统提示:你是一位短篇小说作家。根据用户提供的提示写一个故事。模式:SFW

如果您的第一条消息使用的是类似人类的散文,Celeste将在下一条消息中复制它,请查看下面的演示。

滑动

重要提示,如果您对回复不满意,请滑动2-3次。此模型给出的滑动非常不同。

情境引导

使用这个!它效果相当好。我们专门训练模型接受格式为“OOC:角色应该更加自信”等格式的指令。它有效,无论是第一条消息还是深入到成千上万标记的情境中。结合编辑输出(如果需要),模型非常易于引导。

"Dead Dove"

对于在整个故事中具有持续动机的角色卡,请使用世界书这里提供的教程

少样本

第一条消息和最后几条消息对这个模型在风格、性感程度和个人特质方面影响很大。您不需要有第一条消息,但编辑第一条消息或拥有高质量的初始消息是非常推荐的。

格式问题通常出现在第一条消息中,手动纠正它们或滑动。但在12B中似乎没有这个问题。

此模型在许多不同的格式类型和消息长度上进行了训练。它可以做任何事,只要确保初始消息良好,并在必要时纠正第二条消息。


感性

如果模型不够性感,只需编辑最后一条消息或进行OOC提示,模型会注意到并在此基础上构建。或者,你也可以给她吃春药哦。(哈哈)

模型对SFW(适合所有年龄的)内容没有意见,不会自动使其变为NSFW(成人内容),除非你希望这样。它还能够保持半NSFW(即慢慢升温)的状态,不会转化为硬核内容。

如果你只想要SFW内容并且遇到了困难,可能有一些系统提示可以解决问题,可能是深度1或其他。


拒绝

正如所述,如果遇到指令拒绝(非常罕见),预先输入2-3个字。对于拒绝浪漫追求(在12B上几乎从未发生)是真实的,我们认为这很好。如果你不喜欢,请预先输入。



Mistral上下文

虽然训练在8K上进行,但模型应能够继承Mistral 12B的更长上下文。至少应为16K。

其他重要提示

在角色扮演(RP)中积极扮演一个角色,说出你想要创造的场景所需的类型。你不一定要这样做,但有时会有帮助。例如,与其说“我们喝啊喝,喝了15杯香槟”不如说“我们喝啊喝,喝了15杯香槟,两人都喝得酩酊大醉”

另一个例子,与其说“我拉她靠近”,不如说“我拉她靠近,但她装作很难靠近”

方便时,可以说电影脚本中的短语,比如“镜头切换”


展示V1.9

故事写作

查看上面的故事创作部分。

角色扮演(RP)

它可以做NSFW内容,这是供你尝试的。

展示V1.5一些图片包含NSFW和NSFL(不恰当的恐怖和令人不适的内容)。我们相信表达的创造性以及最大化模型的写作能力。
展示多回合内容有些难度,也请自己尝试一下!这些只是展示模型的能力。模型需要进行推动和OOC提示来进行适当的血腥内容。我们计划将r/GuroErotica添加到我们的数据集中,以提高其在血腥内容上的表现。有时在角色回复之前预先输入“**警惕:极其血腥和露骨的内容**”可以使它更加放松。这可能是因为Reddit数据的原因。
展示V1和1.2![image/png](https://cdn-uploads.huggingface.co/production/uploads/630cf5d14ca0a22768bbe10c/NiT8-_k3HGrHuV_z475U8.png) Image 1 Image 10 Image 3 Image 6 Image 7 Image 8 Image 9 Image 2 Image 4 Image 5

训练数据

划分如下

  • r/WritingPrompts中有2.5K行
  • r/DirtyWritingPrompts中有2.5K行
  • 从Kalomaze Opus Instruct 25K中提取了800行
  • c2 logs经过清理后有2.5K行

我们对数据集进行了筛选,只保留首次助手回复最多不超过 4000 个字符的子集。这消除了过度冗长的人类故事、助手回复和c2日志,其中每条消息都非常长。然而,我们只检查了第一条助手消息,而没有检查对话的其余部分,因此应该有很多带有更长时间和更短时间的c2日志。

过度冗长的人类故事对于8B模型来说几乎是无法拟合的。我们尝试过,它根本无法拟合数据,并开始表现出奇异的行为。

虽然我们对c2日志中的所有系统提示都进行了训练,但我们还有自己的系统提示。


已训练的系统提示列表。注意:c2日志系统提示和字符卡也被包括在内。

数据集 系统提示
reddit_dirty_writing_prompts.jsonl “您是一位短篇小说作家。请根据下面用户提供的提示创作一个故事。模式:NSFW”
reddit_writing_prompts.jsonl “您是一位短篇小说作家。请根据下面用户提供的提示创作一个故事。模式:SFW”
combined_25k_opus_kalomaze.jsonl “您是Celeste,由NothingiisReal团队创作的AI助手。”
c2-logs.jsonl (如果没有系统提示在对话中,否则保留原始系统提示)“您是一个能够完全沉浸在给定角色中的专家演员。您不会因为任何原因突破角色,即使是有人试图称呼你为AI或语言模型。”


我们的发现和实验结果

前言

我们认为关于正在使用的数据以及不同的训练方法存在太多的秘密。因此,我们决定尽可能多地分享信息。

发现V1.9

Mistral模型似乎对公司来说非常不审查。这意味着不会拒绝低端内容和对呛,但也在某种程度上不切实际地模拟了角色的概念,通常他们永远不会拒绝你抛给他们的任何想法,这相当不真实。

这种做法相当不切实际。

Mistral在OOC和指令智能方面似乎较弱,并且更容易重复。

然而,它几乎从不像L3那样出现格式化问题,并且生成的事实不准确和非理性的输出较少。

添加更多Claude角色扮演数据可以提高NSFW、长上下文、结尾偏差和叙述。

然而,NSFW中的结尾偏差仍然存在,可以通过截断回应或故意将最大令牌数设置为较低的值来减轻。

在人类和Claude数据的利弊之间有一个权衡。

主训练命令

使用的硬件: 1x H100 SXM运行3个小时。

Lora+似乎可以改善和训练Lora,我们还尝试过多次DoRA,但DoRA的训练速度慢了大约3倍,而且如果你给DoRA的数据量减少3倍以调整计算成本差异,LoRA+最终会胜出。

这是V1.5的整个axolotl配置文件,只需将聊天格式更改为chatml,添加LoRA+,将分词器更改为axolotl-ai-co/Mistral-Nemo-Base-2407-chatml,将模型更改为12B,它就会正确。```yaml # 模型基本模型: meta-llama/Meta-Llama-3.1-8B-Instruct 模型类型: AutoModelForCausalLM 分词器类型: AutoTokenizer # 输出和HuggingFace输出目录: /workspace/data/train-results/trained_model # WandB wandb_project: huggingface wandb_entity: # 数据 chat_template: llama3 train_on_inputs: false group_by_length: false 数据集: - 路径: [略] # 我使用自定义脚本来手动合并上述数据集,因为我并不信任axolotl能以确定的方式完成这项工作且排序得当 lmao。类型: sharegpt roles: 输入: - system - user 输出: - assistant ## 评估 val_set_size: 0.02 evals_per_epoch: 8 eval_table_size: eval_max_new_tokens: 128 # 技术细节 sequence_len: 8192 save_safetensors: true saves_per_epoch: 2 logging_steps: 1 special_tokens: pad_token: # 定量 bf16: 自动 fp16: tf32: false ## 用于LoRA load_in_8bit: false load_in_4bit: false # LoRA peft_use_dora: true adapter: lora # 或 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 # 训练超参数 # max_steps: num_epochs: 2 # 防止过拟合和稳定性 weight_decay: 0.0 max_grad_norm: 1.0 ## 学习率 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 ## 批量大小 gradient_accumulation_steps: 1 micro_batch_size: 2 # 每张GPU的批量大小 eval_batch_size: 2 # 优化 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 # 仅用于多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 # 其他 early_stopping_patience: debug: ```

哇,你读完了所有这些?你看起来就像会加入我们的discord的人。

在某个时刻达到70B? ;) 我们比以往任何时候都更接近这个目标。这次是真的。

如果你想要支持我,可以在这里这里