怎么把大模型微调成文本分类模型?

114 天前
 shubiao

我司以前是在用 NLP 的文本分类能力, 给用户内容打标签, 然后根据标签给用户做个性化推荐, 最近准备切到大模型上, 但微调效果不尽人意, 请懂的朋友给指点下.

通过 chatgpt 获取 5k 条数据

给 chatgpt 的 prompt

你是数据分析师, 帮我从标签集中选择一个最适合文字内容的标签
文字内容: 1234
标签集: A, B, C

整理成微调所需数据, 开始微调

使用的chatglm-6b, 把给 gpt 的 prompt 和输出结果给他

{
        "instruction": "你是数据分析师, 帮我从标签集中选择一个最适合文字内容的标签, 文字内容: 1234, 标签集: A, B, C",
        "input": "",
        "output": "购物"
   }

把微调后的模型运行起来, 进行 api 访问

即把原来调 gpt 的接口改成微调后模型的, 同样的 prompt 调用

但发现回答的狗屁不是

请问哪里做的不对?

1648 次点击
所在节点    问与答
20 条回复
Morriaty
114 天前
你是做的 few shot instruct 还是 prompt tuning ? 如果是 few shot , 这种方式效果不稳定。简单来说,few shot 不更新模型参数,prompt tuning 会更新模型参数。可以看看 peft 库
vToExer
114 天前
一般情况下专用小模型的效果会强于通用大模型,如 gpt 在测试集上的准确率低于原分类模型,那么 chatglm 准确率只会更差。采用 LoRA/Adapter 微调可能有提升,前提是数据分布比较均匀,且在验证集上 loss 收敛
sywsy
114 天前
如果是常识性的分类估计不需要微调,细分领域的话看你的微调方式,lora 微调怎么也需要几万条数据,少的话可能反而会有反作用,但话说回来如果有几万条数据随便调个 bert 模型效果应该百分百比大模型效果好
ospider
114 天前
老老实实用 Bert 吧
paopjian
114 天前
感觉没必要盲目追求大模型, bert 那些小模型训练后效果应该也不错, 真要用大模型的 haul 先用 chatgpt 试水,再用开源模型训练一下? 我看 https://github.com/WangRongsheng/Aurora 他们号称 lora 微调后的模型可以打 chatgpt3.5, 学一下他们的思想?
gaobh
114 天前
你这 prompt 太简单了。按这个格式来试试: 你是一个 <角色>,你关注 <主题>,你要需要回答:<问题>

<上下文>

你是一个 <角色>,你关注 <主题>
你需要按照以下方式返回:
<输出规则>

问题:<问题>

现在我要<主题>,请参照以下 Prompt 制作,注意都用<语言>生成:

## 角色
你是一个<角色>。请你帮我<主题>

## 规则:

<输出规则>

## 策略:

<策略步骤逻辑>

## 格式
返回格式如下,"{xxx}"表示占位符:
<我是格式>
```

现在请按照上面的要求<主题>:
```
shubiao
114 天前
@gaobh 我的 prompt 也很长, 上面只是个意思, 其实我想问下这个思路对吗 ? 给 gpt 的 prompt 在微调时直接塞给 chatglm, 调微调后的模型也是同样的 prompt, 只更改其中的"文字"部分
shubiao
114 天前
@sywsy 就是常识性的东西, 用户来自各行各业, 我们只是想分辨出来来自那个行业(还有二级分类, 加起来 200+)

直接用效果不怎么好(好像都理解不了太长的 prompt), 才想着微调一个
gaobh
114 天前
@shubiao #7 只能用 openai gpt4 ,其他大模型都不行
thorneLiu
114 天前
用 bert
june4
114 天前
在 prompt 给出几个例子可以更有效控制回答输出
me221
114 天前
这场景没必要用大模型啊,专用模型性能更强
sywsy
114 天前
@shubiao 有二级分类估计效果会比较差,除非你有几万条分布均匀的数据进行微调,另外不知道你是不是 chatglm3 ,对比 chatglm 应该是能强一些的,还可以试试 qwen-7b ,但是感觉怎么都是必然不如 bert 的,这还是单准确率一项,综合考虑性能、成本等等 bert 应该能完爆 llm
siriussilen
114 天前
@Morriaty 都已经做微调了,还能是 few shot instruct ?
siriussilen
114 天前
1. 你的这批数据及 prompt ,gpt4 能做到多少分? gpt4 能否完成你的任务?
2. 5000 条业务数据太多了,模型很容易丧失通用能力,俗称变傻了,混一点通用样本,有奇效
3. 因为你的任务是一个判别式的任务,最后一层输出 token 的 softmax 可以拿掉,或者加一个约束惩罚,看看你的常用类别比如“购物”tokenlizer 之后是不是唯一一个,如果是的话,可以只让模型输出第一个首 token 的概率,把任务转化成判别式的任务,也能涨点
shubiao
114 天前
@siriussilen #15
1. 这 5k 条就是通过 gpt4 得到的. 正确率 90%.
再详细一下: 就是同一 prompt 仅替换"文字部分", 进行了 5k 次调用, 让 gpt4 返回的结果, 来作为我们微调的原始数据

2. 上面有朋友说要几万条才可以, 我们是 5k 条样例给到了 chatglm, 所以你们说的几千和几万不是一个意思嘛...
通用样本是什么意思, 发这条帖子我其实就是在问准备什么样的微调数据, 以及调用时需要做什么修改?

3. 超出能力圈了, 还在学习中
siriussilen
114 天前
@shubiao Lora 我没做过我不了解,我是做全参数微调,几百条就够了,别轻视大模型的拟合能力,另外几百条数据这个点,也可以参考一下 OpenAI 的文档,主要是一些边界 Case 的处理很关键
siriussilen
114 天前
另 gpt3.5 论文细节是是一个 20B 的通用模型,所以用领域数据精调后打败了 3.5 没什么感到牛逼的 - -
reeco
114 天前
分类为什么要用大模型
yufeng0681
114 天前
有了答案,告知一下啊。
我现在对 NLP 的想法是 ,花钱让 chatgpt 来做 NLP 的事。 省掉专用的 NLP 研发(比如从 3 个研发变成 1 个研发)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1008965

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX