说明

此微调仅用于测试思维链,即CoT(Chain-of-Thought)的效果,而我在理解CoT时认为CoT的重点在于思维发散,所以我对CoT语料做了一些改进,我把这种改进后的CoT称为DCoT(Divergent-Chain-of-Thought)即发散性思维链。

此微调也用于测试这一改进,在进行state tuning微调之前我其实尝试过lora微调,但是指令遵循却不尽人意,语料和模型的契合度太高,初始loss就很低,导致可能模型学不到格式这一点,所以我最后决定使用state tuning这一peft方法进行微调,同时这也是保证RWKV模型对格式进行遵循的最好方法之一,并且它能保证模型不会因为微调而遗忘(因为不会微调模型本身权重)。

PS: state tuning ≈ prompt tuning, prefex tuning

微调配置

微调使用autodl上租赁的单卡A40 48G。

配置项
说明
语料(已开源) 使用5904条基于Gemini-1.5-Pro蒸馏出的单轮DCoT语料,经过人工正则批量筛洗,每条语料的长度在2000-4820token之间,大部分回答集中在2000token以上。
此数据集只包含了一些chat提问,如:
“Java是什么?”
“老鼠喜欢吃奶酪吗?”
这样的问题,不包含数学,格式,角色扮演等prompt。
peft state tuning
quant 使用int8量化微调
micro batch size 4
gradient accumulation 2,以保证微批次和梯度累计相乘最少达到8,增强模型微调效果
loss mask 启用
lr state tuning微调标准值:1-0.01
finetune epoch 2
finished loss 0.549287

结论

微调DCoT(或者CoT)可以用于展示其思考过程以得知模型理解什么,不理解什么,同时,一定程度上可以增强模型能力,但是如果模型本身就没有在预训练中包含的内容,这样的思考只会让你看到奇怪的中间过程

当然,我也测试过热门问题,如:“9.8和9.11哪个大?”这样的问题在RWKV的过程表示中则显得更加奇怪,甚至有时不会回答大或者小。 这基本归咎于RWKV6-v2.1数据集的数学知识很少,除了和训练语料有关系,和词表也有关系,在RWKV6的词表中,从0-99的数字都有一个对应的词元,这显然会让模型分不清0-99之间的区别,以及如“1122”这样的数字和其它如“119”的区别,这样的词表和语料问题共同导致了RWKV6的数学能力低下的发生。

如图: image/png

image/png

image/png

另外,模型的最终回答似乎并不一定会遵守之前的思考过程,可能会在最终回复时回复完全不同的内容,这点在使用prompt让Gemini-1.5-pro,GPT4o,gemma2-27B,Claude3.5Sonnet等闭源或者开源大模型进行思考时也会出现,个人认为这是因为模型只思考一次,在回答时发现之前的思考只考虑了回答提问的因素,与自身道德,回复逻辑不够相符,所以完全不依赖思考过程,重新回答了一遍,在此情况下,以上思考完全作废。 但是,因为我对CoT进行了调整,主要目的从分步执行转变为了思维发散,所以我认为可以通过多次发散思维并进行多步CoT得到多个思考过程,让模型进行路由选择可以极大幅度降低此问题的触发概率,而缺点则是会极大程度降低输出速度。

运行方式

本地运行:RWKV-Runner

服务器部署:ai00

附展示回答图

image/png

image/png

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model is not currently available via any of the supported Inference Providers.
The model cannot be deployed to the HF Inference API: The model has no library tag.

Dataset used to train Seikaijyu/RWKV6-7B-v2.1-DCoT.state

Collection including Seikaijyu/RWKV6-7B-v2.1-DCoT.state