【大模型微調】6.模型微調實測與格式轉換導出

引言

本文繼續研究 LLaMA-Factory 微調數據的流程,側重于微調結果與模型導出。

數據集準備

首先參考 LLaMA-Factory 核心開發者的文章[1],下載用于微調的公開的商品文案數據集 AdvertiseGen。

下載地址:https%3A//cloud.tsinghua.edu.cn/f/b3f119a008264b1cabd1/%3Fdl%3D1

其總共包含了10w+條這樣的數據:

{"content": "類型#上衣*版型#h*材質#蠶絲*風格#復古*圖案#條紋*圖案#復古*圖案#撞色*衣樣式#襯衫*衣領型#小立領", "summary": "小女人十足的條紋襯衣,緞面一點點的復古,還有藍綠色這種高級氣質復古色,真絲材質,撞色豎條紋特別的現代感味道,直h型的裁剪和特別的衣長款式,更加獨立性格。雙層小立領,更顯臉型。"}

LLaMA-Factory 內置了格式映射轉換,因此實際上不需要像前文那樣手動編寫腳本進行格式轉換,只需要在dataset_info.json里面按照如下方式進行注冊:

"adgen_local": {"file_name": "AdvertiseGen_train.json","columns": {"prompt": "content","response": "summary"}
}

微調過程及結果測試

參數設置主要調節以下內容:

  • 預熱步數從0上調到20
  • 訓練輪數從3上調到5
  • 最大樣本數從100000下調到1000
  • 驗證集比例從0上調到0.1

這樣調整意味著不會將所有的數據進行訓練,訓練的數據總數為1000 * 0.9 = 900條。

使用 DeepSeek-R1-7B 模型進行 LoRA 微調,差不多10分鐘訓練完成。

訓練曲線

從結果看 loss 還是比較大,正常情況 < 1 會比較好,說明還有收斂空間。

顯存占用情況

下面加載模型進行測試,微調前模型問答效果如下

微調前模型問答效果

選擇檢查點,載入訓練完的 LoRA 適配器,

微調后模型問答效果如下:

微調后模型問答效果

看上去,微調完的有點意思,但效果不是特別明顯。微調前模型會產生“可能”之類的不確定表述,微調之后模型會更“自信”。

結果導出到Ollama

后面我又用 easy dataset做了一個幾十條規模的小數據集,嘗試在DeepSeek-R1-32B的模型基礎上微調,效果不達預期,這里就不放結果,只討論如何進行模型導出。

首先在webui的export菜單中,將模型進行導出。需注意,使用 bf16 精度格式無法直接導出量化的模型版本。

同時,LoRA層會合并到原始模型中,大約會占據1B左右的參數。

之后安裝 GGUF 庫,用于模型的格式轉換。

通過官方倉庫安裝,版本最新:

git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp/gguf-py
pip install --editable .

將模型轉換成 gguf 格式:

python convert_hf_to_gguf.py /home/zxy/code/LLaMA-Factory/output_model

轉換時,參考其輸出日志,可發現其會自動將某些層變成fp16和fp32。

INFO:hf-to-gguf:gguf: loading model part 'model-00001-of-00014.safetensors'
INFO:hf-to-gguf:token_embd.weight,         torch.bfloat16 --> F16, shape = {5120, 152064}
INFO:hf-to-gguf:blk.0.attn_norm.weight,    torch.bfloat16 --> F32, shape = {5120}
INFO:hf-to-gguf:blk.0.ffn_down.weight,     torch.bfloat16 --> F16, shape = {27648, 5120}
INFO:hf-to-gguf:blk.0.ffn_gate.weight,     torch.bfloat16 --> F16, shape = {5120, 27648}
INFO:hf-to-gguf:blk.0.ffn_up.weight,       torch.bfloat16 --> F16, shape = {5120, 27648}
INFO:hf-to-gguf:blk.0.ffn_norm.weight,     torch.bfloat16 --> F32, shape = {5120}
INFO:hf-to-gguf:blk.0.attn_k.bias,         torch.bfloat16 --> F32, shape = {1024}

轉換完成后,會在模型原路徑下得到gguf文件。

用 ollama 注冊模型,執行以下命令,my_deepseek_r1_32b為模型名稱。

ollama create my_deepseek_r1_32b -f /home/zxy/code/LLaMA-Factory/output_model/Modelfile

ollama會將模型再拷貝一份到其存儲路徑中。

注冊完成后,就可以通過ollama list看到自己創建的模型。

導出為fp16+fp32的混合精度,比原本從ollama上拉取的int4精度大不少。

結論

實測發現,模型微調的主要功能是增強模型在某方面的能力。

如果通過信息查詢對去微調模型,效果并不會很理想,RAG更加適合去查詢信息。

當數據集較大時,模型微調時間可能會很長。本文中,選取900條數據進行微調,大約耗時10分鐘。如果選取全部10w+條數據,估計需要耗時會在16小時左右。

如果微調參數量更大的模型,可能花費的時間會以天計。

此外,由于 LLaMA-Factory 封裝得很好,實踐過程中遇到的報錯很難通過調代碼解決,后面考慮研究vllm,探尋模型微調更為底層的相關原理。

參考資料

[1] LLaMA-Factory QuickStart:https://zhuanlan.zhihu.com/p/695287607

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

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

相關文章

3085. 成為 K 特殊字符串需要刪除的最少字符數

3085. 成為 K 特殊字符串需要刪除的最少字符數 給你一個字符串 word 和一個整數 k。 如果 |freq(word[i]) - freq(word[j])| < k 對于字符串中所有下標 i 和 j 都成立&#xff0c;則認為 word 是 k 特殊字符串。 此處&#xff0c;freq(x) 表示字符 x 在 word 中的出現頻…

分布式系統中的 Kafka:流量削峰與異步解耦(二)

Kafka 在分布式系統中的應用案例 電商訂單系統 在電商領域&#xff0c;訂單系統是核心業務模塊之一&#xff0c;涉及多個復雜的業務環節和系統組件之間的交互。以常見的電商購物流程為例&#xff0c;當用戶在電商平臺上下單后&#xff0c;訂單創建服務會首先接收到用戶的訂單…

從事登高架設作業需要注意哪些安全事項?

從事登高架設作業&#xff08;如腳手架搭設、高空維修、外墻清洗等&#xff09;屬于高風險特種作業&#xff0c;必須嚴格遵守安全規范。以下是關鍵安全注意事項&#xff0c;涵蓋作業前準備、作業中操作、應急處理三大環節&#xff0c;符合國家《高處作業安全技術規范》&#xf…

RA4M2開發IOT(6)----涂鴉模組快速上云

RA4M2開發IOT.6--涂鴉模組快速上云 概述視頻教學樣品申請硬件準備參考程序涂鴉官網鏈接創建一個項目選擇對應產品產品基本配置添加標準功能APP界面配置硬件選擇產品配置硬件詳情PCB原理圖涂鴉調試文件下載進入調試涂鴉模塊串口協議心跳檢測查詢產品信息查詢工作模式AP配網APP鏈…

AI時代SEO關鍵詞革新

內容概要 在人工智能&#xff08;AI&#xff09;技術快速發展的背景下&#xff0c;搜索引擎優化&#xff08;SEO&#xff09;關鍵詞策略正經歷根本性變革。本文將系統闡述AI如何重塑關鍵詞研究、優化及效果評估的全流程。具體而言&#xff0c;首先解析智能研究方法在挖掘用戶意…

JavaEE初階第三期:解鎖多線程,從 “單車道” 到 “高速公路” 的編程升級(一)

專欄&#xff1a;JavaEE初階起飛計劃 個人主頁&#xff1a;手握風云 目錄 一、認識線程 1.1. 概念 1.2. 為什么要使用線程 1.3. 進程和線程的關系 1.4. 多線程模型 二、多線程的創建 2.1. 繼承Thread類 2.2. 實現Runnable接口 2.3. 匿名內部類 2.4. lambda表達式 一、…

【StarRocks系列】建表優化

目錄 一、數據模型選擇 (核心優化) 二、分區與分桶策略 (數據分布優化) 三、字段類型與壓縮 四、索引策略 五、高級特性應用 六、建表示例&#xff08;關鍵優化整合&#xff09; 參考官網 優化性能 | StarRocks 在 StarRocks 中創建表時&#xff0c;合理的表設計是性能優…

linux-vim編輯器

linux-vim編輯器 前言一、命令模式1. 跳轉功能2. 文本編輯3. 模式切換 二、輸入模式1. 進入輸入模式2. 快捷鍵 三、末行模式1. 進入末行模式2. 文件操作3. 查找與替換4. 行操作 四、替換模式五、可視模式1. 進入可視模式2. 文本操作 六、相關配置 前言 vim - Vi IMproved, a p…

SQL關鍵字三分鐘入門: 表結構管理與分區設計。(ALTER、MODIFY、CHANGE、DEFAULT、VALUES、LESS THAN、RANGE)

前面我們已經學習了如何查詢數據&#xff08;SELECT&#xff09;、篩選數據&#xff08;WHERE&#xff09;等操作。現在我們要進入數據庫的另一個重要領域 —— 表結構管理與分區設計。 本文帶你快速認識以下關鍵字&#xff1a; ? ALTER? MODIFY? CHANGE? DEFAULT? VALU…

深度剖析:RTTI輕量框架實現原理與架構(C++ 17 高級編程)

&#x1f680; C RTTI反射系統深度設計文檔 &#x1f30c; 核心架構圖 #mermaid-svg-aWkaWoFklq1ylap6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-aWkaWoFklq1ylap6 .error-icon{fill:#552222;}#mermaid-svg-a…

03-D3.js SVG text標簽?

Data Visualization D3.js ? SuperHiLearn how to create interactive, engaging experiences using HTML, CSS, SVG and Javascript.https://www.superhi.com/catalog/data-visualization-with-d3 text - SVG&#xff1a;可縮放矢量圖形 | MDNtext元素定義了一個由文字組成…

Python 使用Gitlab Api

代碼 REST API 見自帶幫助文檔 python 安裝python-gitlab pip install --upgrade python-gitlab使用API 參考&#xff1a;https://python-gitlab.readthedocs.io/en/stable/api-usage.html import gitlab# anonymous read-only access for public resources (GitLab.com…

中醫體質識別:理論、方法與應用的簡要綜述

中醫體質識別&#xff1a;理論、方法與應用的簡要綜述 摘要 中醫體質識別是中醫“治未病”及個性化診療的關鍵環節。本文系統闡述中醫體質識別&#xff0c;涵蓋理論基礎、常見體質類型、識別方法、現代技術應用及臨床實踐。中醫體質理論源遠流長&#xff0c;《黃帝內經》奠定…

稀疏表原理及應用場景

1 概述 稀疏表&#xff08;Sparse Table&#xff0c;ST&#xff09;是一種用于高效解決 靜態區間查詢&#xff08;Range Query&#xff09; 問題的數據結構&#xff0c;主要用于 可重復貢獻問題&#xff08;Idempotent Range Queries&#xff09;&#xff0c;例如區間最小值&a…

【深度學習與機器學習的區別】從本質到應用的全景對比

目錄 前言 一、三者關系&#xff1a;深度學習是機器學習的子集 1.1 概念關系 1.2 類比理解&#xff1a;動物 vs 哺乳動物 1.3 舉個例子更清楚 1.4 為什么“機器學習 ≠ 深度學習”&#xff1f; 1.5 最容易搞混的地方 二、核心區別總覽&#xff08;對比表&#xff09; …

Masscan常用命令詳解

一、工具介紹 Masscan是一款開源、高速的網絡端口掃描工具&#xff0c;設計目標是實現最快的掃描速度。它能夠在極短的時間內完成大規模的網絡掃描&#xff0c;適用于互聯網級別的掃描任務。它采用異步傳輸和自定義TCP/IP協議棧技術&#xff0c;最快可實現每秒160萬數據包的掃…

STM32的內部RC與外部晶振電路

內部RC是“能用”&#xff0c;外部晶振是“用得準”。 一、STM32芯片內部的“晶振電路”是什么&#xff1f; STM32內部確實集成了兩個RC&#xff08;電阻-電容&#xff09;振蕩器&#xff1a; HSI&#xff08;高速內部振蕩器&#xff09;&#xff1a;通常8MHz&#xff0c;精…

為OneCode 開發TRea 開發插件,從環境搭建到生態融合

作為 AI 原生開發環境&#xff0c;TRea 的插件體系支持開發者基于其核心能力&#xff08;如自然語言代碼生成、AI 代碼分析&#xff09;進行功能擴展。本文以開發一個 "OneCode 組件生成插件" 為例&#xff0c;詳解如何通過 TRea 開放接口實現自定義功能&#xff0c;…

Spring JDBC配置與講解

目錄 一、Spring JDBC概述1、Spring JDBC需要配置的依賴2、Spring配置項文件配置 二、Spring JDBC的使用1、Spring JDBC的增加操作2、Spring JDBC的修改操作3、Spring JDBC的刪除操作4、Spring JDBC的查詢操作 三、Spring JDBC的事務1、xml的形式進行事務2、Transactional注解 …

【AI智能體】Spring AI MCP 服務常用開發模式實戰詳解

目錄 一、前言 二、MCP 介紹 2.1 MCP是什么 2.2 MCP 核心特點 2.3 Spring AI MCP 介紹 2.3.1 Spring AI MCP架構 2.3.2 Spring AI MCP分層說明 2.4 兩種模式介紹 三、本地開發SSE模式 3.1 搭建mcp-server 3.1.1 導入工程核心依賴 3.1.2 添加配置文件 3.1.3 提供兩個…