文本分類任務Qwen3-0.6B與Bert:實驗見解

文本分類任務Qwen3-0.6B與Bert:實驗見解

前言

最近在知乎上刷到一個很有意思的提問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嗎?所以我準備做一個實驗來驗證一下。

不想看實驗細節的,可以直接看最后的結論實驗局限性部分。

實驗設置

  • GPU:RTX 3090(24G)

  • 模型配置:

模型參數量訓練方式
google-bert/bert-base-cased0.1B添加線性層,輸出維度為分類數
Qwen/Qwen3-0.6B0.6B構造Prompt,SFT
  • 數據集配置: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 codeText Classification類中看到的榜單,并且該數據集元素基本上不超過510個token(以Bert Tokenizer計算)。因為Bert的最大輸入長度是510個token,超過會進行截斷,保留前510個token,所以為了進行公平的比較,盡量避免截斷。
  • 因為是多分類任務,我們以模型在測試集上的F1指標為標準,F1值越高,模型效果越好。

Bert訓練細節

  • Bert的訓練比較簡單,將文本使用Tokenizer轉換成input_ids后,使用Trainer進行正常訓練即可。訓練參數(若未單獨指出,則代表使用Trainer默認值):
參數名稱
lr_scheduler_type(學習率衰減策略)cosine
learning_rate(學習率)1.0e-5
per_device_train_batch_size(訓練batch_size)64
gradient_accumulation_steps(梯度累積)1
per_device_eval_batch_size(驗證batch_size)256
num_train_epochs(epoch)5
weight_decay1e-6
eval_steps(驗證頻率)0.1
  • 訓練過程中模型對測試集的指標變化:
StepTraining LossValidation LossAccuracyPrecisionRecallF1
9380.1915000.1956390.9347370.9353640.9347370.934773
18760.1776000.1794510.9382890.9384850.9382890.938360
28140.1422000.1863850.9367110.9387380.9367110.936743
37520.1466000.1689540.9455260.9459550.9455260.945572
46900.1135000.1768780.9453950.9454080.9453950.945385
56280.0922000.1772680.9456580.9457590.9456580.945627
65660.0815000.1946390.9427630.9438130.9427630.942817
75040.0776000.1914450.9440790.9443620.9440790.944056
84420.0681000.1944310.9442110.9444570.9442110.944216

請添加圖片描述

  • 可以看到Bert在3752 step(2 epoch)后出現了嚴重的過擬合,在測試集上最好結果是:0.945

Qwen3訓練細節

  • 使用Qwen3訓練文本分類模型有2種方法。第1種是修改模型架構,將模型最后一層替換為輸出維度為分類數的線性層。第2種是構造Prompt,以選擇題的方式創建問答對,然后進行SFT訓練。第1種方法相當于僅把模型當做一個embedding,但這與擅長生成任務的Decoder-Only訓練方式相違背,所以這里不嘗試第1種方法,只實驗第2種方法。
  • 訓練框架使用LLama Factory,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. World
B. Sports
C. Business
D. Science/TechnologyAnswer:/no_think"""answer = "<think>\n\n</think>\n\n{answer_text}"
  • 因為Qwen3為混合推理模型,所以對非推理問答對要在模板最后加上/no_think標識符(以避免失去推理能力),并且回答要在前面加上<think>\n\n</think>\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'
}
  • 訓練參數配置文件:
### model
model_name_or_path: model/Qwen3-0.6B### method
stage: sft
do_train: true
finetuning_type: full### dataset
dataset: agnews_train
template: qwen3
cutoff_len: 512overwrite_cache: true
preprocessing_num_workers: 8### output
output_dir: Qwen3-0.6B-Agnews
save_strategy: steps
logging_strategy: steps
logging_steps: 0.01
save_steps: 0.2
plot_loss: true
report_to: tensorboard
overwrite_output_dir: true### train
per_device_train_batch_size: 12
gradient_accumulation_steps: 8
learning_rate: 1.2e-5
warmup_ratio: 0.01
num_train_epochs: 1
lr_scheduler_type: cosine
bf16: true
  • 因為Bert在訓練2個epoch后就出現了嚴重的過擬合,所以對Qwen3模型,只訓練1個epoch,每0.2個epoch保存一個檢查點。

  • 訓練過程中模型對測試集的指標變化(訓練結束后加載檢查點對測試集進行推理,注意!為保證推理結果穩定,我們選擇選項ppl低的作為預測結果):

StepTraining LossAccuracyPrecisionRecallF1
2500.0260.9120.9170.9120.912
5000.0270.9240.9240.9240.924
7500.0220.9370.9370.9370.937
10000.0220.9410.9410.9410.941
12500.0230.9400.9400.9400.940

請添加圖片描述

  • 可以看到Qwen3-0.6B模型Loss在一開始就急速下降,然后開始抖動的緩慢下降,如下圖(縱軸范圍調整0.05~0.015)。在測試集上最好結果是:0.941。

請添加圖片描述

Bert和Qwen3-0.6B RPS測試

  • 為測試BertQwen3-0.6B是否滿足實時業務場景,對微調后的BertQwen3-0.6B進行RPS測試,GPURTX 3090(24G):
模型推理引擎最大輸出Token數RPS
BertHF-60.3
Qwen3-0.6BHF813.2
Qwen3-0.6BVLLM827.1

結論

  • Qwen3-0.6BAg_news數據集上并未超過Bert模型,甚至還略遜色于Bert
  • Qwen3-0.6B似乎非常容易過擬合,前期Loss呈現斷崖式下降。
  • Qwen3-0.6B訓練1個epoch耗時1個3090GPU時(使用HF推理引擎測試耗時0.5個3090GPU時),Bert訓練5個epoch+10次測試集推理共耗時1個3090GPU時。也就是Qwen3-0.6B訓練和推理共耗時1.5 GPU時,Bert訓練和推理共耗時1 GPU時。Bert訓練明顯快于Qwen3-0.6B
  • BertRPSQwen3-0.6BVLLM推理引擎)的3倍。

實驗局限性

  • 未實驗在Think模式下Qwen3-0.6B的效果(使用GRPO直接訓練0.6B的模型估計是不太行的,可能還是先使用較大的模型蒸餾出Think數據,然后再進行SFT。或者先拿出一部分數據做SFT,然后再進行GRPO訓練(冷啟動))。
  • 未考慮到長序列文本如token數(以Bert Tokenizer為標準)超過1024的文本。
  • 也許因為AgNews分類任務比較簡單,其實不管是Bert還是Qwen3-0.6BF1超過0.94的情況下,都是可用的狀態。Bert(F1:0.945)和Qwen3-0.6B(F1:0.941)的差距并不明顯。如果大家有更好的開源數據集可以用于測試,也歡迎提出。
    okenizer為標準)超過1024`的文本。
  • 也許因為AgNews分類任務比較簡單,其實不管是Bert還是Qwen3-0.6BF1超過0.94的情況下,都是可用的狀態。Bert(F1:0.945)和Qwen3-0.6B(F1:0.941)的差距并不明顯。如果大家有更好的開源數據集可以用于測試,也歡迎提出。
  • 未對兩模型進行細致的參數調整。
  • 未測試兩模型在中文文本分類任務中的表現。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83821.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83821.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83821.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端獲取用戶的公網 IP 地址

可以使用免費的免費的公共服務網站 一&#xff1a;https://www.ipify.org/ 獲取 JSON 格式的 IP 地址 // 舊地址不好使 // https://api.ipify.org/?formatjson // 新地址 https://api64.ipify.org/?formatjson 二&#xff1a;https://ipinfo.io/ https://ipinfo.io/ 三&a…

12.vue整合springboot首頁顯示數據庫表-實現按鈕:【添加修改刪除查詢】

vue整合springboot首頁顯示數據庫表&#xff1a;【添加修改刪除查詢】 提示&#xff1a;幫幫志會陸續更新非常多的IT技術知識&#xff0c;希望分享的內容對您有用。本章分享的是node.js和vue的使用。前后每一小節的內容是存在的有&#xff1a;學習and理解的關聯性。【幫幫志系…

LLM筆記(九)KV緩存(2)

文章目錄 1. 背景與動機2. 不使用 KV Cache 的情形2.1 矩陣形式展開2.2 計算復雜度 3. 使用 KV Cache 的優化3.1 核心思想3.2 矩陣形式展開3.3 計算復雜度對比 4. 總結5. GPT-2 中 KV 緩存的實現分析5.1 緩存的數據結構與類型5.2 在注意力機制 (GPT2Attention) 中使用緩存5.3 緩…

2025年滲透測試面試題總結-各廠商二面試題02(題目+回答)

網絡安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 各廠商二面試題02 模塊六&#xff1a;基礎技術擴展 1. HTTP請求方式 2. 域名解析工具與技術 3. Web十…

專業漏洞掃描機構如何助力企業保障安全并提升競爭力?

在這個信息化的當下&#xff0c;專業漏洞掃描機構扮演著至關重要的角色。他們運用專業的技術和手段&#xff0c;對各種軟件和系統進行細致的漏洞檢測&#xff0c;確保其安全可靠&#xff0c;同時幫助企業提高產品質量和市場競爭力。 服務項目 我們專注于向客戶供應周到詳盡的…

卷積神經網絡中的二維卷積與三維卷積詳解

【內容摘要】 本文聚焦卷積神經網絡中的二維卷積與三維卷積&#xff0c;詳細解析兩者的區別、操作原理及應用場景&#xff0c;涵蓋二維/三維卷積操作示意圖、多通道輸入處理方式&#xff0c;以及RGB圖像不采用三維卷積的原因&#xff0c;助力理解不同卷積類型的特性與適用場景。…

Oracle 的 ASSM 表空間

Oracle 的 ASSM&#xff08;Automatic Segment Space Management&#xff09;表空間 是一種自動管理段空間的技術&#xff0c;通過位圖&#xff08;Bitmap&#xff09;機制跟蹤數據塊的使用情況&#xff0c;替代傳統的手動管理&#xff08;MSSM&#xff0c;即 Freelist 管理&am…

螞蟻金服大數據面經及參考答案

Java 如何保證跨平臺性?請從 JVM 底層適配機制及向上提供的統一接口角度說明 Java 的跨平臺性是其核心優勢之一,依賴于 JVM(Java Virtual Machine)的底層適配機制和向上層提供的統一接口。從底層來看,JVM 針對不同操作系統和硬件平臺進行了定制化實現,負責解析和執行 Ja…

P1009 [NOIP 1998 普及組] 階乘之和

題目描述 用高精度計算出 S1!2!3!?n!&#xff08;n≤50&#xff09;。 其中 ! 表示階乘&#xff0c;定義為 n!n(n?1)(n?2)?1。例如&#xff0c;5!54321120。 輸入格式 一個正整數 n。 輸出格式 一個正整數 S&#xff0c;表示計算結果。 輸入輸出樣例 輸入 3 輸出…

Python 的 os 庫常見使用方法(操作目錄及文件)

前言&#xff1a; os 模塊是 Python 標準庫中用于與操作系統交互的核心模塊&#xff0c;提供了許多操作文件和目錄的功能。以下是常見的使用方法&#xff1a; 1. 目錄操作 方法功能說明示例os.getcwd()獲取當前工作目錄print(os.getcwd())os.chdir(path)切換當前工作目錄os.ch…

vue3 el-table實現字段可編輯

在Vue 3中&#xff0c;如果你想讓el-table&#xff08;Element Plus的表格組件&#xff09;的字段可編輯&#xff0c;你可以通過以下方式來實現&#xff1a; 使用cell-mouse-enter和cell-mouse-leave事件動態顯示編輯圖標或控件 你可以在鼠標進入單元格時顯示一個編輯圖標或輸…

基于shardingsphere的分庫分表方案

一、準備docker容器 啟動兩個mysql的docker容器 docker run -v /root/mysql_volume/data:/var/lib/mysql -v /root/mysql_volume/conf:/etc/mysql/conf.d -v /root/mysql_volume/my.cnf:/etc/my.cnf -p 3306:3306 --name mysql --restartalways --privilegedtrue -e MYSQL_RO…

SearxNG本地搜索引擎

SearxNG 是一個強大、開源的 元搜索引擎(meta search engine),它不會存儲用戶信息,注重隱私保護,并支持從多個搜索引擎聚合結果,用戶可以自建部署,打造一個無廣告、可定制的搜索平臺。 ?? 什么是 SearxNG? SearxNG 是 Searx 的一個積極維護的分支(fork),意在改進…

Vue3.5 企業級管理系統實戰(十九):菜單管理

篇幅原因&#xff0c;本節先探討菜單管理頁面增刪改查相關功能&#xff0c;角色菜單&#xff0c;菜單權限&#xff0c;動態菜單等內容放在后面。 1 菜單 api 在 src/api/menu.ts 中添加菜單 api&#xff0c;代碼如下&#xff1a; //src/api/menu.ts import service from &qu…

【android bluetooth 協議分析 01】【HCI 層介紹 8】【ReadLocalVersionInformation命令介紹】

1. HCI_Read_Local_Version_Information 命令介紹 1. 功能&#xff08;Description&#xff09; HCI_Read_Local_Version_Information 命令用于讀取本地 Bluetooth Controller 的版本信息&#xff0c;包括 HCI 和 LMP 層的版本&#xff0c;以及廠商 ID 和子版本號。 這類信息用…

React底層架構深度解析:從虛擬DOM到Fiber的演進之路

一、虛擬DOM&#xff1a;性能優化的基石 1.1 核心工作原理 React通過JSX語法將組件轉換為輕量級JavaScript對象&#xff08;即虛擬DOM&#xff09;&#xff0c;而非直接操作真實DOM。這一過程由React.createElement()實現&#xff0c;其結構包含元素類型、屬性和子節點等信息&a…

從AlphaGo到ChatGPT:AI技術如何一步步改變世界?

從AlphaGo到ChatGPT&#xff1a;AI技術如何一步步改變世界&#xff1f; 這里給大家分享一個人工智能學習網站。點擊跳轉到網站。 https://www.captainbed.cn/ccc 前言 在科技發展的歷史長河中&#xff0c;人工智能&#xff08;AI&#xff09;技術無疑是最為璀璨的明珠之一。從…

關于在Unity項目中使用Post Processing插件打包到web端出現的問題

關于在Unity項目中使用Post Processing插件打包到web端出現的問題 解決方法&#xff1a;是不激活攝像機上的Post Processing有關組件&#xff0c;拉低場景中的Directional Light平行光的強度進行web端打包。 &#xff08;烘焙燈光時是可以激活。&#xff09; web端支持這個Pos…

MySQL - 如何突破單庫性能瓶頸

數據庫服務器硬件優化 我們來看看對數據庫所在的服務器是如何進行優化的&#xff0c;服務器是數據庫的宿主&#xff0c;其性能直接影響了數據庫的性能&#xff0c;所以服務器的優化也是數據庫優化的第一步。 數據庫服務器通常是從 CPU、內存、磁盤三個角度進行硬件優化的&…

用 CodeBuddy 搭建「MiniGoal 小目標打卡器」:一次流暢的 UniApp 開發體驗

我正在參加CodeBuddy「首席試玩官」內容創作大賽&#xff0c;本文所使用的 CodeBuddy 免費下載鏈接&#xff1a;騰訊云代碼助手 CodeBuddy - AI 時代的智能編程伙伴 在日常生活中&#xff0c;我們總是希望能夠堅持一些小習慣&#xff0c;比如每天鍛煉十分鐘、讀一頁書、早睡十分…