我司以前是在用 NLP 的文本分类能力, 给用户内容打标签, 然后根据标签给用户做个性化推荐, 最近准备切到大模型上, 但微调效果不尽人意, 请懂的朋友给指点下.
给 chatgpt 的 prompt
你是数据分析师, 帮我从标签集中选择一个最适合文字内容的标签
文字内容: 1234
标签集: A, B, C
使用的chatglm-6b, 把给 gpt 的 prompt 和输出结果给他
{
"instruction": "你是数据分析师, 帮我从标签集中选择一个最适合文字内容的标签, 文字内容: 1234, 标签集: A, B, C",
"input": "",
"output": "购物"
}
即把原来调 gpt 的接口改成微调后模型的, 同样的 prompt 调用
但发现回答的狗屁不是
1
Morriaty 312 天前
你是做的 few shot instruct 还是 prompt tuning ? 如果是 few shot , 这种方式效果不稳定。简单来说,few shot 不更新模型参数,prompt tuning 会更新模型参数。可以看看 peft 库
|
2
vToExer 312 天前
一般情况下专用小模型的效果会强于通用大模型,如 gpt 在测试集上的准确率低于原分类模型,那么 chatglm 准确率只会更差。采用 LoRA/Adapter 微调可能有提升,前提是数据分布比较均匀,且在验证集上 loss 收敛
|
3
sywsy 312 天前
如果是常识性的分类估计不需要微调,细分领域的话看你的微调方式,lora 微调怎么也需要几万条数据,少的话可能反而会有反作用,但话说回来如果有几万条数据随便调个 bert 模型效果应该百分百比大模型效果好
|
4
ospider 312 天前
老老实实用 Bert 吧
|
5
paopjian 312 天前
感觉没必要盲目追求大模型, bert 那些小模型训练后效果应该也不错, 真要用大模型的 haul 先用 chatgpt 试水,再用开源模型训练一下? 我看 https://github.com/WangRongsheng/Aurora 他们号称 lora 微调后的模型可以打 chatgpt3.5, 学一下他们的思想?
|
6
gaobh 312 天前 via iPhone
你这 prompt 太简单了。按这个格式来试试: 你是一个 <角色>,你关注 <主题>,你要需要回答:<问题>
<上下文> 你是一个 <角色>,你关注 <主题> 你需要按照以下方式返回: <输出规则> 问题:<问题> 现在我要<主题>,请参照以下 Prompt 制作,注意都用<语言>生成: ## 角色 你是一个<角色>。请你帮我<主题> ## 规则: <输出规则> ## 策略: <策略步骤逻辑> ## 格式 返回格式如下,"{xxx}"表示占位符: <我是格式> ``` 现在请按照上面的要求<主题>: ``` |
7
shubiao OP @gaobh 我的 prompt 也很长, 上面只是个意思, 其实我想问下这个思路对吗 ? 给 gpt 的 prompt 在微调时直接塞给 chatglm, 调微调后的模型也是同样的 prompt, 只更改其中的"文字"部分
|
8
shubiao OP |
10
thorneLiu 312 天前 via Android
用 bert
|
11
june4 312 天前
在 prompt 给出几个例子可以更有效控制回答输出
|
12
me221 312 天前
这场景没必要用大模型啊,专用模型性能更强
|
13
sywsy 312 天前
@shubiao 有二级分类估计效果会比较差,除非你有几万条分布均匀的数据进行微调,另外不知道你是不是 chatglm3 ,对比 chatglm 应该是能强一些的,还可以试试 qwen-7b ,但是感觉怎么都是必然不如 bert 的,这还是单准确率一项,综合考虑性能、成本等等 bert 应该能完爆 llm
|
14
siriussilen 312 天前
@Morriaty 都已经做微调了,还能是 few shot instruct ?
|
15
siriussilen 312 天前
1. 你的这批数据及 prompt ,gpt4 能做到多少分? gpt4 能否完成你的任务?
2. 5000 条业务数据太多了,模型很容易丧失通用能力,俗称变傻了,混一点通用样本,有奇效 3. 因为你的任务是一个判别式的任务,最后一层输出 token 的 softmax 可以拿掉,或者加一个约束惩罚,看看你的常用类别比如“购物”tokenlizer 之后是不是唯一一个,如果是的话,可以只让模型输出第一个首 token 的概率,把任务转化成判别式的任务,也能涨点 |
16
shubiao OP @siriussilen #15
1. 这 5k 条就是通过 gpt4 得到的. 正确率 90%. 再详细一下: 就是同一 prompt 仅替换"文字部分", 进行了 5k 次调用, 让 gpt4 返回的结果, 来作为我们微调的原始数据 2. 上面有朋友说要几万条才可以, 我们是 5k 条样例给到了 chatglm, 所以你们说的几千和几万不是一个意思嘛... 通用样本是什么意思, 发这条帖子我其实就是在问准备什么样的微调数据, 以及调用时需要做什么修改? 3. 超出能力圈了, 还在学习中 |
17
siriussilen 312 天前
@shubiao Lora 我没做过我不了解,我是做全参数微调,几百条就够了,别轻视大模型的拟合能力,另外几百条数据这个点,也可以参考一下 OpenAI 的文档,主要是一些边界 Case 的处理很关键
|
18
siriussilen 312 天前
另 gpt3.5 论文细节是是一个 20B 的通用模型,所以用领域数据精调后打败了 3.5 没什么感到牛逼的 - -
|
19
reeco 312 天前
分类为什么要用大模型
|
20
yufeng0681 312 天前
有了答案,告知一下啊。
我现在对 NLP 的想法是 ,花钱让 chatgpt 来做 NLP 的事。 省掉专用的 NLP 研发(比如从 3 个研发变成 1 个研发) |