🚀 QwQ-32B-ArliAI-RpR-v3
QwQ-32B-ArliAI-RpR-v3是ArliAI推出的一款基于QwQ-32B的模型,通过优化数据集和训练方法,提升了模型在角色扮演和创意写作中的表现,尤其适用于长对话场景。
🚀 快速开始
你可以通过以下链接访问模型:
- BF16:https://huggingface.co/ArliAI/QwQ-32B-ArliAI-RpR-v3
- GGUF:https://huggingface.co/ArliAI/QwQ-32B-ArliAI-RpR-v3-GGUF
同时,你可以在我们的新Discord服务器(https://discord.com/invite/t75KbPgwhk )或Reddit社区(https://www.reddit.com/r/ArliAI/ )提问。
✨ 主要特性
RpR v3的改进
- 最佳模型:ArliAI目前最好的模型,具有极高的创造力和跳出常规的思维能力。
- 更换基础模型:不再使用QwQ-abliterated作为基础模型。v3是v2的重新训练版本,避免了使用QwQ-lorablated基础模型带来的问题,该问题会导致模型性能下降,从更高的训练和评估损失值中可见一斑。
- 修复思维脱节问题:投入大量精力重新运行RpR数据集生成过程,确保生成的思维标记与模型响应始终匹配。
- 修复随机拒绝问题:之前的RpR v1数据集使用原始QwQ生成,导致思维和响应示例中出现一些拒绝情况。RpR v3使用QwQ-abliterated生成数据集,避免了此类拒绝情况。
- 修复数据集中的无意义词汇:在用于RPMax/RpR数据集的开放数据集中发现了一些可能的审查尝试,这些错误放置的单词或短语已被修复,防止模型复制此类行为。
- 采用Rex调度器:v3使用更新更好的Rex调度器进行训练,而非常规的余弦调度器,以提高模型从更多数据集中学习细微差别的能力,因为该调度器能在更长时间内保持较高的学习率。
RpR系列概述:基于RPMax的推理能力构建
RpR(RolePlay with Reasoning)是ArliAI推出的新系列模型,该系列直接基于为RPMax系列开发的成功数据集整理方法和训练方法构建。
RpR模型使用与RPMax相同的经过整理和去重的角色扮演(RP)和创意写作数据集,注重多样性,以确保高创造力并减少跨上下文重复。熟悉RPMax的用户会发现其独特的、不重复的写作风格,与其他针对角色扮演进行微调的模型不同。
随着QwQ作为第一个易于训练的高性能开源推理模型发布,很明显现有的指令和创意写作推理数据集每个示例仅包含一个响应。这种用于训练推理模型的单响应数据集会导致长多轮聊天中输出质量下降。因此,Arli AI决定创建一个能够进行长多轮聊天并具备推理能力的真正角色扮演模型。
为了创建RpR,我们首先需要通过将现有的已知良好的RPMax数据集重新处理为推理数据集来创建推理角色扮演数据集。这可以通过使用基础QwQ指令模型本身为RPMax数据集对话示例中的每一轮创建推理过程来实现,然后进一步优化以确保推理与数据集中的实际响应示例一致。
另一个重要的事情是确保模型在推理过程中遇到的推理块与训练时的呈现方式相同。为此,训练过程使用axolotl和无模板手动分段数据集完成,以确保模型在训练过程中从未见过推理块。就像模型在推理时的使用方式一样。
通过这种方法在该数据集上训练QwQ的结果是,即使在长多轮角色扮演聊天中,输出也始终连贯且有趣。据我们所知,这是第一个真正经过正确训练的用于角色扮演和创意写作的推理模型。
📦 安装指南
文档未提及安装步骤,故跳过。
💻 使用示例
基础用法
文档未提供基础用法代码示例,故跳过。
高级用法
文档未提供高级用法代码示例,故跳过。
📚 详细文档
模型描述
QwQ-32B-ArliAI-RpR-v3是RpR系列的第三个版本。它是一个320亿参数的模型,基于精心整理的RPMax数据集,使用RpR数据集进行微调,并结合了在长多轮聊天中保持推理能力的技术。
属性 |
详情 |
模型类型 |
QwQ-32B-ArliAI-RpR-v3 |
基础模型 |
QwQ-32B |
最大上下文长度 |
最大128K(实际32K) |
参数数量 |
32B |
是否为推理模型 |
是 |
训练详情
属性 |
详情 |
序列长度 |
8192 |
训练轮数 |
1轮(继承自RPMax方法) |
微调方法 |
RS-QLORA+(Rank-Stabilized LoRA + LoRA Plus 8x) |
秩/阿尔法 |
128秩 128阿尔法 |
学习率 |
0.00001 |
调度器 |
Rex |
梯度累积 |
32 |
训练图表

量化
- BF16:https://huggingface.co/ArliAI/QwQ-32B-ArliAI-RpR-v3
- GGUF:https://huggingface.co/ArliAI/QwQ-32B-ArliAI-RpR-v3-GGUF
如何在ST中正确使用推理模型

对于一般的推理模型,你需要确保设置如下:
- 前缀仅设置为
<think>
,后缀仅设置为</think>
,无空格或换行符。
- 回复以
<think>
开头。
- 取消勾选“始终添加角色名称”。
- “包含名称”设置为“从不”。
- 聊天模板应符合所使用的模型。
注意:推理模型仅在“包含名称”设置为“从不”时才能正常工作,因为它们总是期望用户轮次的结束标记(eos token)后跟<think>
标记,以便在输出响应之前开始推理。如果你启用“包含名称”,则会在末尾附加角色名称,如“Seraphina:<eos_token>”,这会使模型混淆是应该先响应还是先推理。
其余采样器参数可根据需要设置。
如果你没有看到推理内容包含在思维块中,可能是你的设置仍然有误,未遵循示例,或者你的ST版本太旧,不支持推理块自动解析。
如果你看到整个响应都在推理块中,可能是你的<think>
和</think>
推理标记的前缀和后缀有额外的空格或换行符,或者模型不够智能,无法始终将推理内容放在这些标记之间。
正确设置后的效果

RPMax基础详情(数据集和训练理念)
目标:减少重复并提高创造力
用于RPMax和RpR的数据集整理目标是减少重复并提高模型在不同情况下进行创意写作的能力。这意味着该模型在不同情况下的输出响应差异很大,不会陷入可预测的套路。
什么是重复和创造力?
首先,创造力应指模型能够产生的输出多样性。你不应将创造力与优美的写作散文混淆。当一个模型以一种像作家在小说中那样令人愉悦的方式写作时,这并非创意写作,而只是模型具有某种令人愉悦的写作风格。因此,写作优美的模型不一定是有创造力的模型。
重复和创造力本质上相互交织,所以如果一个模型具有重复性,那么也可以说它缺乏创造力,因为它无法写出新内容,只能重复之前生成的类似响应。实际上,重复有两种截然不同的形式。
- 上下文内重复:当人们提到模型具有重复性时,通常指的是模型在单个对话中喜欢重复相同的短语。例如,模型说一个角色“甩了甩头发……”,然后在该角色的其他每个动作前都加上“甩了甩头发……”。
可以说这种模型很无趣,但在现实人们的写作中,在某些情况下这种重复可能是有意的,以微妙地表达观点或展现角色特征。因此,这种类型的重复并不总是坏事,完全阻止模型这样做并不一定能提高模型的写作能力。
在这方面,RPMax和RpR目前尚未专注于消除这种类型的重复,因此在输出中可能会看到一些上下文内重复。消除这种重复将是RPMax和RpR系列模型的下一个重要步骤。
- 跨上下文重复:第二种更糟糕的重复类型是模型在非常不同的情况下重复相同的短语或套路。例如,一个模型喜欢在截然不同的对话中重复臭名昭著的“shivers down my spine”短语,而这些对话不一定适合该短语。
这种类型的重复总是不好的,因为这表明模型过度拟合了它在训练数据集中经常看到的“创意写作”风格。模型出现跨上下文重复的倾向通常也可以从它在写故事时喜欢选择相似的重复名称中看出,例如臭名昭著的“elara”和“whispering woods”。
RPMax和RpR数据集整理的主要目标是通过减少跨上下文重复来创建一个高度有创造力的模型,因为这种类型的重复会在不同对话中一直存在。这通过确保数据集中不同示例条目中不存在相同情况或角色的重复来实现。
数据集整理
在该数据集上训练的模型(包括RPMax和现在的RpR)的成功归功于训练方法和为微调创建的独特数据集。它包含了尽可能多的开源创意写作和角色扮演数据集(均来自Hugging Face),从中筛选出纯粹的合成生成数据集,因为这些数据集往往只会降低模型性能,使模型学习GPT式的风格(劣质内容),而无助于提升。
然后使用Llama 3.1 8B(或类似能力的模型)创建这些数据集中描绘的角色和情况的数据库,然后对这些数据集进行去重,以确保任何角色或情况只有一个条目。
微调的黄金法则
与初始预训练阶段不同,在大多数情况下投入的数据越多越好,微调模型的黄金法则不是数量,而是质量胜于数量。因此,这里使用的数据集实际上比包含重复角色和情况的数据集小几个数量级,但最终结果是一个不会让人感觉只是另一个创意写作/角色扮演模型的“近亲繁殖”版本的模型。
训练参数和非常规方法
通常的做法是使用低学习率和高梯度累积以获得更好的损失稳定性,然后进行多轮训练,直到损失可接受为止。
然而,RPMax和RpR方法仅使用一轮训练、低梯度累积和高于正常水平的学习率。训练期间的损失曲线实际上不稳定,会大幅波动,但如果进行平滑处理,它会随着时间稳步下降。理论上,这允许模型从数据集中的每个单独示例中学习更多,并且通过不使用多轮训练让模型看到相同的示例两次,防止模型陷入并强化单个角色或故事套路。
训练期间损失的波动是因为当模型在数据集的新条目上进行训练时,模型之前从未见过类似的示例,因此无法真正预测与示例条目相似的答案。虽然相对较高的最终损失值1.0或略高实际上是可以接受的,因为目标从来不是创建一个能够输出与用于训练的数据集完全相同的模型,而是创建一个有足够创造力来形成自己响应风格的模型。
这与在特定领域训练模型并要求模型能够可靠地输出与示例数据集相同的情况不同,例如在公司内部知识库上训练模型。
🔧 技术细节
文档未提供具体的技术实现细节(>50字),故跳过。
📄 许可证
本项目采用Apache-2.0许可证。