作者:中國科學院大學研究生 徐秉煜 內容來源:SwanLab
1
一、引言1.1 什么是微調大模型?
微調(Fine-tuning)大模型,就像是給一個已經學富五車的大腦(預訓練的基礎大模型),進行一次針對性的“專業強化訓練”。基礎大模型通過海量數據學習了通用的語言規律和世界知識,但對于特定領域、特定任務,它可能還不夠“精通”。微調就是利用少量、高質量的領域數據,在基礎模型之上繼續訓練,讓模型更好地適應新的任務或領域。也就是讓大模型從一個廣度很強的通才,在某個領域樹上的技能加強變成一位專才。
尤其常用的LoRA(Low-Rank Adaptation)等高效微調方法,通過只調整模型中很少一部分參數或添加少量額外層,就能達到很好的效果,大大降低了所需的計算資源和時間,讓模型“學得又快又專”。
Lora微調原理,在大模型權重文件的輸出時,再添加一個可訓練的低秩矩陣1.2 為什么需要微調大語言模型
預訓練的大語言模型雖然強大,能理解和生成各種文本,但它們是“通才”,缺乏對特定領域細致入微的理解或完成特定復雜任務的能力。比如,在一個高度專業的行業(如醫療、法律、金融或企業內部知識庫)中,模型可能不理解行業黑話、處理不了特有的文檔格式或無法給出基于內部規章的準確回答。
通過微調,我們可以用該領域的特有數據對其進行“定制化”訓練,讓模型掌握領域內的專業知識、術語和邏輯,從而使其成為該領域的“專家”,能夠更準確、高效地處理垂直領域的復雜問題,提供更具價值的服務。
2
二、數據集準備2.1 領域大模型微調
想象一下,在您熟悉的某個行業或公司內部,隨著時間的推移,沉淀了無數寶貴的知識和經驗。這些信息通常零散地存儲在各種PDF、Word文檔甚至掃描件中,它們是領域的精華,卻也形成了難以逾越的“知識孤島”。想要從中快速準確地找到所需的信息,或是理解某個復雜概念,往往需要耗費大量時間和精力,對于新手來說更是門檻很高。
試想,如果能有一個AI助手,它不僅能理解通用語言,更能像一位資深的領域專家一樣,透徹地掌握并運用這些獨有的垂直領域知識,隨時為您答疑解惑,那該多好?這正是領域大模型微調的核心價值所在——通過將通用大模型的能力與特定領域的寶貴數據結合,我們可以打造出真正理解并能應用這些知識的垂直領域智能體。
這個時候,用領域內知識微調后大語言模型便能派上用場了。下面我將會從整體流程的角度,梳理一遍大語言模型微調全流程的方法論,以及開源工具的使用,從而實現更加高效、安全的模型訓練與部署。
本文的思路展示,收集領域知識文檔→統一轉換為Markdown格式→構造微調數據集→微調大語言模型
關于一些更加具體的操作后續會逐漸填坑~
2.2 文檔格式的統一轉換
通常,由于行業內多年的知識沉淀,往往會留存大量的文件掃描件,一些遺失多年的word,為了能讓后續對這些文檔能進行統一的處理,我們需要將他們的格式統一為Markdown格式。
Markdown是一種輕量級標記語言,排版語法簡潔,讓人們更多地關注內容本身而非排版。它使用易讀易寫的純文本格式編寫文檔,可與HTML混編,可導出 HTML、PDF 以及本身的.md 格式的文件。更多的相關的介紹可以參考這邊的鏈接
Markdown 基本語法 | Markdown 教程markdown.com.cn/basic-syntax/
這邊我以一個國產的工具 MinerU為例,這個工具支持本地離線部署,也可以在線使用,筆者體驗下來這個工具對于pdf的識別相當的好,但是對于doc識別還是不是很好。如果有需要的話可以將doc轉換為pdf再使用MinerU進行識別。
MinerUmineru.net/
這邊我以一篇pdf格式的論文為例,右側是識別出來的Markdown預覽文件,可以看出來對于文字和公式的識別還是相當準確的。
windows客戶端可以在線識別,但是目前只支持導出Latex,docx,HTML格式的文件
如果想要導出Markdown文件到本地,可以在本地本地部署下MinerU,或者直接在魔搭社區的創空間進行體驗
MinerU (PDF轉Markdown/JSON) · 創空間www.modelscope.cn/studios/OpenDataLab/MinerU
2.3 構建微調數據集
現在我們得到了markdown格式的數據文件,但是這些數據仍然不能直接用來微調大模型。因為大模型所完成的任務,是通過問答的形式實現的。也就是說,我們需要將文檔的知識點全都變成一問一答的形式才能進行微調。早期的數據集構造是一個非常耗時,重復性的工作,需要人類去進行一步步地構造問題,并且根據文檔的內容進行解答,但也正是這些前人的不斷努力,堆出了現在大語言模型的繁榮。
在當前的AI水平下,讓大語言模型輔助實現問答對的構造已經是一個很常見的策略了。這邊我們可以使用一個國產開源工具Easy-dataset進行處理。
easy-dataset/README.zh-CN.md at main · ConardLi/easy-datasetgithub.com/ConardLi/easy-dataset/blob/main/README.zh-CN.md
Easy-dataset工具流程示意
在處理文檔之前,首先我們需要本地部署一個基礎的大語言模型,這里我們使用ollama部署qwen2.5-7b模型,具體的操作可以參考下面的鏈接~
Ollama使用指南【超全版】 - 知乎zhuanlan.zhihu.com/p/704951717
總的來說,Easy-dataset通過我們上傳的Markdown文件,將文本內容進行分割,之后讓大語言模型對每個分割的片段進行提問,在生成所有的問題之后,再利用相關的片段與生成的問題對大語言模型進行提問,從而實現了將文檔知識變成問答對的形式。
上傳Markdown之后對文檔進行了切分,總共被分成了33個切片
總共生成了173個問答對
點開其中一個問答對,效果如圖
上面問答對的原文內容如上,可以看出模型對于知識點的提取還是相當準確且有價值的
下一步,我們直接導出微調數據集便可以開始微調。
3
三、 微調大語言模型3.1 成本估算
在本次的演示中,我使用的是Qwen2.5-7B-Instruct 模型,模型的大小為70億參數,權重文件約15GB。在默認參數下,在NVIDIA A100-PCIE-40GB顯卡上進行微調,占用19.79GB顯存。一般來說,只要顯卡顯存大于19.79GB便可以完全復現本次實驗,例如4090 24GB也是可以運行的。
3.2 微調工具的部署
為了微調大語言模型,這邊我們可以使用llamafactory進行微調,Swanlab 進行模型訓練的監測,由于llamafactory是自帶Swanlab適配的,所以僅需要在llamafactory中配置Swanlab秘鑰即可。
關于llamafactory的部署,可以參考其中官方文檔
安裝 - LLaMA Factoryllamafactory.readthedocs.io/zh-cn/latest/getting_started/installation.html
安裝完成后,按照文檔中的要求,導入我們剛才生成的數據集到data
文件夾下,之后記得在data_info.json
進行注冊,啟動llamafactory之后我們便可以預覽數據集了
預覽數據集,確保選中正確的文件3.3 啟用訓練參數的監測工具
為了實時監測訓練的狀態,可以使用Swanlab作為一個跟蹤、記錄、比較、和協作實驗的平臺,這個工具支持實時云端同步訓練的參數變化。可以在官網注冊一個API,添加到llamafactory中即可
SwanLab官方文檔 | 先進的AI團隊協作與模型創新引擎docs.swanlab.cn/
llamafactory中啟用swanlab
配置好參數后便可以愉快地開啟訓練啦~
在Chat處我們首先測試下沒有經過領域數據集微調的模型回答的效果,大模型由于在早期的預訓練階段已經學習大量的公開知識,所以具備一定的知識儲備,但是這邊和我們期望的垂直應用的回答還是有一定的區別。
原始模型的回答
這邊我們選擇好剛才訓練的檢查點路徑,就可以體驗學習了新知識后的模型了
可以看出大模型已經把這些知識學進去了
在Swanlab中,我們也可以查看剛才訓練的各項參數曲線,下面的是我訓練過程的參數曲線(這邊我簡略地設置了下訓練參數,效果可能不佳,具體的需要考慮數據集的數量,基模型大小等因素)
SwanLab基線社區搜索作者ID cathelloya
4
四、 小結
本文紹了如何將領域內零散的知識文檔用于微調大語言模型。首先,通過MinerU等工具將PDF、DOCX等文件統一轉換為Markdown格式。接著,利用Easy-dataset并結合基礎大模型(如通過Ollama部署),將Markdown文檔內容自動化地構建成問答數據集。最后,使用LLaMA Factory框架加載此數據集對大模型進行微調,并借助SwanLab等工具實時監控訓練過程,從而訓練出一個能理解特定領域知識的垂直領域大模型。
5
相關鏈接:
1.SwanLab官方文檔 | 先進的AI團隊協作與模型創新引擎
https://docs.swanlab.cn/
2.easy-dataset/README.zh-CN.md at main · ConardLi/easy-dataset
https://github.com/ConardLi/easy-dataset/blob/main/README.zh-CN.md
3.MinerU
https://mineru.net/
4.Ollama
https://ollama.com/
5.安裝 - LLaMA Factory
https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/installation.html
作者:中國科學院大學研究生 徐秉煜
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.