01、Changelog
新增 Qwen3-0.6B 在 Ag_news 数据集 Zero-Shot 的效果。新增 Qwen3-0.6B 线性层分类方法的效果。
调整 Bert 训练参数(epoch、eval_steps),以实现更细致的观察,避免严重过拟合的情况。[25/04/28]
TODO:
- 利用 Qwen3-0.6Bppl、zero-shot 筛选难样本,观察 Qwen3-0.6B(SFT 分类)在不同数据量级,不同数据难度情况下的性能变化。
- ppl 筛选出的难样本对 Qwen33-0.6B(SFT 分类)Qwen3-0.6B(线性层分类)影响是否具有同质性。
- 不同尺寸模型 Think 与 No Think 状态下 Zero-Shot 能力变化。
- 使用大模型蒸馏 Think 数据,观察 Think 和 No Think 模式下对 Qwen3-0.6B(SFT 分类)性能的影响。
- 测试其他难开源分类数据集(更多分类数、多语言、长样本)。
02、前言
最近在知乎上刷到一个很有意思的提问 Qwen3-0.6B 这种小模型有什么实际意义和用途。
查看了所有回答,有人提到小尺寸模型在边缘设备场景中的优势(低延迟)。
也有人提出小模型只是为了开放给其他研究者验证 scaling law(Qwen2.5 系列丰富的模型尺寸为开源社区验证方法有效性提供了基础)。
还有人说 4B、7B 的 Few-Shot 效果就已经很好了甚至直接调用更大的 LLM 也能很好的解决问题。
让我比较感兴趣的是有大佬提出小模型在向量搜索、命名实体识别(NER)和文本分类领域中很能打,而另一个被拿来对比的就是 Bert 模型。
在中文文本分类中,若对 TextCNN、FastText 效果不满意,可能会尝试 Bert 系列及其变种(RoBerta 等)。
但以中文语料为主的类 Encoder-Only 架构模型其实并不多(近期发布的 ModernBERT,也是以英文和 Code 语料为主),中文文本分类还是大量使用 bert-base-chinese 为基础模型进行微调,而距 Bert 发布已经过去了 6 年。
Decoder-Only 架构的 LLM 能在文本分类中击败参数量更小的 Bert 吗?所以我准备做一个实验来验证一下。
不想看实验细节的,可以直接看最后的结论和实验局限性部分。
03、实验设置
GPU:RTX 3090(24G)。
模型配置:

数据集配置:fancyzhx/ag_news,分类数为 4,分别为 World(0)、Sports(1)、Business(2)、Sci/Tech(3)。训练样本数 120000,测试样本数 7600,样本数量绝对均衡。
数据集展示:
{ "text": "New iPad released Just like every other September, this one is no different. Apple is planning to release a bigger, heavier, fatter iPad that..." "label": 3}
选择该数据集是在 Paper with code 的 Text Classification 类中看到的榜单,并且该数据集元素基本上不超过 510 个 token(以 Bert Tokenizer 计算)。
因为 Bert 的最大输入长度是 510 个 token,超过会进行截断,保留前 510 个 token,所以为了进行公平的比较,尽量避免截断。
因为是多分类任务,我们以模型在测试集上的 F1 指标为标准,F1 值越高,模型效果越好。

04、Bert 训练细节
Bert 的训练比较简单,将文本使用 ``Tokenizer 转换成 input_ids 后,使用 Trainer 进行正常训练即可。
训练参数(若未单独指出,则代表使用 Trainer 默认值):

训练过程中模型对测试集的指标变化:


可以看到 Bert 在测试集上最好结果是:0.945。
05、Qwen3 训练细节
使用 Qwen3 训练文本分类模型有 2 种方法:
- 第 1 种是修改模型架构,将模型最后一层替换为输出维度为分类数的线性层。
- 第 2 种是构造
Prompt,以选择题的方式创建问答对,然后进行SFT训练。
06、线性层分类
与微调 Bert 类似,将文本使用 Tokenizer 转换成 input_ids 后,使用 Trainer 进行正常训练。
训练参数(若未单独指出,则代表使用 Trainer 默认值):

训练过程中模型对测试集的指标变化:


可以看到使用线性层分类的 Qwen3-0.6B 在测试集上最好结果是:0.949。
07、SFT 分类
我们先基于数据集写一个选择题形式的 Prompt,Prompt 模板为:
prompt = """Please read the following news article and determine its category from the options below.Article:{news_article}Question: What is the most appropriate category for this news article?A. WorldB. SportsC. BusinessD. Science/TechnologyAnswer:/no_think"""answer = "<think>\n\n</think>\n\n{answer_text}"
news_article 为新闻文本,``answer_text 表示标签。
先测试一下 Qwen3-0.6B 在测试集上思考和非思考模式下的 zero-shot 能力(准确率)。
为获得稳定的结果,非思考模式使用手动拼接选项计算 ppl,ppl 最低的选项为模型答案。思考模式取 <think>...</think> 后的第一个选项。
结果如下:

训练框架使用 LLama Factory,Prompt 模板与上文一致。
因为 Qwen3 为混合推理模型,所以对非推理问答对要在模板最后加上 /no_think 标识符(以避免失去推理能力),并且回答要在前面加上 \n\n\n\n。
按照 LLama Factory SFT 训练数据的格式要求组织数据,如:
{ 'instruction': "Please read the following news article and determine its category from the options below.\n\nArticle:\nWall St. Bears Claw Back Into the Black (Reuters) Reuters - Short-sellers, Wall Street's dwindling\\band of ultra-cynics, are seeing green again.\n\nQuestion: What is the most appropriate category for this news article?\nA. World\nB. Sports\nC. Business\nD. Science/Technology\n\nAnswer:/no_think", 'output': '<think>\n\n</think>\n\nC'}
训练参数配置文件:
### modelmodel_name_or_path: model/Qwen3-0.6B### methodstage: sftdo_train: truefinetuning_type: full### datasetdataset: agnews_traintemplate: qwen3cutoff_len: 512overwrite_cache: truepreprocessing_num_workers: 8### outputoutput_dir: Qwen3-0.6B-Agnewssave_strategy: stepslogging_strategy: stepslogging_steps: 0.01save_steps: 0.2plot_loss: truereport_to: tensorboardoverwrite_output_dir: true### trainper_device_train_batch_size: 12gradient_accumulation_steps: 8learning_rate: 1.2e-5warmup_ratio: 0.01num_train_epochs: 1lr_scheduler_type: cosinebf16: true
因为 Bert 在训练 2 个 epoch 后就出现了严重的过拟合,所以对 Qwen3 模型,只训练 1 个 epoch,每 0.2 个 epoch 保存一个检查点。
训练过程中模型对测试集的指标变化(训练结束后加载检查点对测试集进行推理,注意!为保证推理结果稳定,我们选择选项 ppl 低的作为预测结果):


可以看到 Qwen3-0.6B 模型 Loss 在一开始就急速下降,然后开始抖动的缓慢下降,如下图(纵轴范围调整 0.05~0.015)。
在测试集上最好结果是:0.941。

Bert 和 Qwen3-0.6B 训练耗时:

08、Bert 和 Qwen3-0.6B RPS 测试
为测试 Bert 和 Qwen3-0.6B 是否满足实时业务场景,对微调后的 Bert 和 Qwen3-0.6B 进行 RPS 测试,GPU 为 RTX 3090(24G):

09、结论
在 Ag_new 数据集上,各模型效果: Qwen3-0.6B(线性层分类)> Bert > Qwen3-0.6B(SFT 分类)> Qwen3-0.6B(Think Zero-Shot)> Qwen3-0.6B(No Think Zero-Shot)。
各模型训练推理耗时: Qwen3-0.6B(SFT 分类)> Bert > Qwen3-0.6B(线性层分类)。
各模型 RPS: Bert > Qwen3-0.6B(线性层分类) > Qwen3-0.6B(SFT 分类)。
Think 模式下的 Qwen3-0.6B 比 No Think 模式下的 Qwen3-0.6B 准确率仅高出 1%,推理时间比 No Think 慢 20 倍(HF 推理引擎,Batch 推理)。
在训练 Qwen3-0.6B(线性层分类)时,Loss 在前期有点抖动,或许微调一下学习率预热比率会对最终结果有微弱正向效果。
10、实验局限性
未实验在 Think 模式下 Qwen3-0.6B 的效果(使用 GRPO 直接训练 0.6B 的模型估计是不太行的,可能还是先使用较大的模型蒸馏出 Think 数据,然后再进行 SFT。
或者先拿出一部分数据做 SFT,然后再进行 GRPO 训练(冷启动))。
未考虑到长序列文本如 token 数(以 Bert Tokenizer 为标准)超过 1024 的文本。
也许因为 AgNews 分类任务比较简单,其实不管是 Bert 还是 Qwen3-0.6B 在 F1 超过 0.94 的情况下,都是可用的状态。
Bert(F1:0.945)和 Qwen3-0.6B 线性层分类(F1:0.949)的差距并不明显。如果大家有更好的开源数据集可以用于测试,也欢迎提出。
未测试两模型在中文文本分类任务中的表现。
最后
为什么要学AI大模型
当下,⼈⼯智能市场迎来了爆发期,并逐渐进⼊以⼈⼯通⽤智能(AGI)为主导的新时代。企业纷纷官宣“ AI+ ”战略,为新兴技术⼈才创造丰富的就业机会,⼈才缺⼝将达 400 万!
DeepSeek问世以来,生成式AI和大模型技术爆发式增长,让很多岗位重新成了炙手可热的新星,岗位薪资远超很多后端岗位,在程序员中稳居前列。

与此同时AI与各行各业深度融合,飞速发展,成为炙手可热的新风口,企业非常需要了解AI、懂AI、会用AI的员工,纷纷开出高薪招聘AI大模型相关岗位。

最近很多程序员朋友都已经学习或者准备学习 AI 大模型,后台也经常会有小伙伴咨询学习路线和学习资料,我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师给大家这里给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频 全系列的学习资料,这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。
这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】
AI大模型系统学习路线
在面对AI大模型开发领域的复杂与深入,精准学习显得尤为重要。一份系统的技术路线图,不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点,还能提供一条高效、有序的学习路径。

但知道是一回事,做又是另一回事,初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性,在这基础上,找到高质量的学习资源,不浪费时间、不走弯路,又是重中之重。
AI大模型入门到实战的视频教程+项目包
看视频学习是一种高效、直观、灵活且富有吸引力的学习方式,可以更直观地展示过程,能有效提升学习兴趣和理解力,是现在获取知识的重要途径

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

海量AI大模型必读的经典书籍(PDF)
阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。

600+AI大模型报告(实时更新)
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

AI大模型面试真题+答案解析
我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下


这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】
639

被折叠的 条评论
为什么被折叠?



