nlp|微調大語言模型初探索(2),訓練自己的聊天機器人

前言

??上篇文章記錄了具體的微調語言大模型步驟,以及在微調過程中可能遇見的各種報錯,美中不足的是只是基于開源數據集的微調,今天來記錄一下怎么基于自己的數據集去微調大語言模型,訓練自己的智能機器人!!!!

1.微調數據集介紹

??了解數據集的種類及其標注格式對于模型的微調至關重要。不同的數據集有不同的訓練目標和標注方式,這些差異決定了模型學習的重點微調策略的選擇。通過深入理解數據集的結構和目標,能夠幫助我們更精準地制定微調計劃,優化模型的表現,并提升其在實際應用中的效果。

1.1 Alpaca 格式

[{"instruction": "輸入三支籃球隊的名稱并生成一個適當的口號。","input": "輸入:俄克拉荷馬城雷霆隊,芝加哥公牛隊,布魯克林網隊。","output": "輸出: \"雷霆,公牛和網隊:各顯神通,角逐群雄!\""},...
]

這種格式很好理解,一共就三部分instruction、input和output。
instruction: 任務的指令,告訴模型需要完成什么操作。
input: 任務所需的輸入。如果任務是開放式的或者不需要明確的輸入,這一字段可以為空字符串。
output: 任務的期望輸出,也就是模型在給定指令和輸入情況下需要生成的內容。
側重提升模型各種自然語言處理任務,適合來微調大模型做文本生成、翻譯、總結等任務

1.2 DPO 格式

[{"conversations": [{"from": "human","value": "為印度國家投資促進與便利機構的銀行、金融服務、保險(BFSI)和金融科技團隊的面試候選人創建一個案例研究任務。該團隊的使命是支持外國投資進入印度的BFSI領域,并就該領域的產業參與者的政策建議和問題進行工作。"}],"chosen": {"from": "gpt","value": "標題:支持外國投資在BFSI領域:印度國家投資促進和便利機構的案例研究\n\n目標:\n要求候選人創建一個全面的案例研究..."},"rejected": {"from": "gpt","value": "讓我們了解為BFSI團隊面試候選人創建案例研究作業的要求。"}},...
]

from: 字段指示消息的來源,可以是 “human” 或 “gpt”,表示輸入是由人類或模型提供。
value: 字段包含消息的具體內容,可能是輸入文本、模型選擇的輸出或被拒絕的輸出。
chosen: 中的內容是模型最終認為最合適的回應。
rejected: 中的內容是模型認為不合適的候選回應。
DPO可以通過調整回答的偏好來生成更符合用戶需求的回復,適合微調大模型來做用戶偏好回答。

1.3 ShareGPT 格式

[{"conversations": [{"role": "user","content": "What is the capital of France?"},{"role": "assistant","content": "The capital of France is Paris."},{"role": "user","content": "Can you tell me more about Paris?"},{"role": "assistant","content": "Paris is the largest city and the capital of France. It is known for its art, culture, and history..."}]}...
]

role: 表示對話的角色,通常為“user”表示用戶,“assistant”表示AI助手。
content: 具體的對話內容
ShareGPT 適合對話場景,更貼近人類與 AI 交互的方式,適用于構建和微調對話模型。
Q1.為什么這么多格式的數據集,統一數據集豈不是更方便?
??我的理解是,不同類型格式的數據集對模型性能的提升不同,比如說DPO 側重于根據用戶偏好調整模型的輸出,使其更符合個性化需求,而Alpaca 側重于通過少量高質量的訓練數據提升模型的指令跟隨能力和高效訓練。

2.制作微調數據集

我這里基于gpt,根據Alpaca 格式去生成json數據集:

from docx import Document
from chat_test import get_response
import json
from tqdm import tqdmdef extract_json_from_string(input_str):# 使用正則表達式提取[]里的內容,包括大括號head_pos = input_str.find("[")tail_pos = input_str.find("]")if head_pos != -1 and tail_pos != -1:return json.loads(input_str[head_pos:tail_pos + 1])  # 包括']',所以尾部索引需要+1else:return None  # 如果沒有找到[],返回Nonepath = 'F:/Desktop/docs/xxx.docx'
doc = Document(path)
text = ""
data_json = []
file = open("alpaca_zh_mydata1.json", "w", encoding="utf-8")
for para in tqdm(doc.paragraphs):if para.text == "":# print("=============None")continue# print(para.text)text = text + para.text + "\n"# print(len(text))if len(text) >= 2000:text = text + " 根據上述信息,將其制作成alpaca數據集。包括instruction、input和output"res = get_response(text)# print(res)json_str = Nonetry:json_str = extract_json_from_string(res)except:print("extract_json_from_string run error")if json_str is None:text = ""continuedata_json = data_json + json_strjson.dump(data_json, file, ensure_ascii=False, indent=2)
file.close()

其中get_response函數為chatgpt的api接口,可以根據自己的需求去封裝。
如圖所示,生成的數據集是這樣的:
在這里插入圖片描述

3.開始微調數據集

3.1 將生成json文件放到LLaMA-Factory/data/

在這里插入圖片描述

3.2 修改LLaMA-Factory/data/dataset_info.json文件

在這里插入圖片描述

3.3 修改LLaMA-Factory/data/dataset_info.json文件

開始微調大模型:

conda activate lora-llama
cd LLaMA-Factory
llamafactory-cli train examples/train_lora/llama3_lora_sft.yaml

在這里插入圖片描述

參考文章
大模型微調——訓練數據集的格式Alpaca 和 ShareGPT

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

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

相關文章

Java 大視界 -- 量子計算時代 Java 大數據的潛在變革與應對策略(88)

💖親愛的朋友們,熱烈歡迎來到 青云交的博客!能與諸位在此相逢,我倍感榮幸。在這飛速更迭的時代,我們都渴望一方心靈凈土,而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識,也…

手機功耗BugReport字段含義介紹

BugReport一般用來分析功耗問題,例如休眠待機,后臺待機,游戲,視頻,相機場景等 BugReport字段含義介紹 BugReport字段 含義 備注 Reboot 設備的重啟事件 CPU running CPU運行狀態,休眠 或者 喚醒 只有…

什么是 近端策略優化算法PPO

什么是 近端策略優化算法PPO 近端策略優化算法(Proximal Policy Optimization,PPO)是OpenAI公司于2017年開發的一系列無模型強化學習算法,用于優化策略網絡以最大化累計獎勵。以下是具體介紹及示例: 算法原理 策略梯度:PPO基于策略梯度算法,通過估計策略網絡的梯度來更…

計算機視覺-局部特征

一、局部特征 1.1全景拼接 先用RANSAC估計出變換,就可以拼接兩張圖片 ①提取特征 ②匹配特征 ③拼接圖像 1.2 點的特征 怎么找到對應點?(才能做點對應關系RANSAC) :特征檢測 我們希望找到的點具有的特征有什么特…

個人搭建CDN加速服務 特網科技

在互聯網快速發展的今天,網站的加載速度對用戶體驗有著至關重要的影響,傳統的網頁加載方式依賴于服務器的性能和網絡環境,這使得某些網站的頁面加載時間過長,用戶體驗不佳,為了解決這個問題,許多企業開始采…

類型通配符上限

主函數 package typeWildcardTop;import java.util.ArrayList;public class typeWildcardTopTest {/**/public static void main(String[] args) { // test1();test2();}/*測試showList接收ArrayList類型 ArrayList接收各種類型參數創建animals cats mincats集合 傳入s…

OpenCV(1):簡介、安裝、入門案例、基礎模塊

1 OpenCV 簡介 OpenCV 是一個功能強大、應用廣泛的計算機視覺庫,它為開發人員提供了豐富的工具和算法,可以幫助他們快速構建各種視覺應用。隨著計算機視覺技術的不斷發展,OpenCV 也將會繼續發揮重要的作用。OpenCV 提供了大量的計算機視覺算法…

FTP自動上傳/vue打包自動上傳

ftp自動上傳 在我們平時開發項目時,需要將本地代碼編譯后上傳到服務器,我們可以借助Node.js庫中的ssh2來實現自動上傳 首先我們先來說下ssh2的安裝和使用 安裝ssh2 npm install ssh2創建ssh2實例 const { Client } require(ssh2);連接服務器 const c…

SQL復習

SQL復習 MySQL SQL介紹 SQL SQL的全拼是什么? SQL全拼:Structured Query Language,也叫結構化查詢語言。 SQL92和SQL99有什么區別呢? SQL92和SQL99分別代表了92年和99年頒布的SQL標準。 在 SQL92 中采用(&#xff…

nlp|微調大語言模型初探索(1),LLaMA-Factory

前言 微調模型通常比從零開始訓練一個模型的技術要求低。公司不需要擁有大量的深度學習專家,利用現有的開源工具和庫(如Hugging Face的Transformers等),中小型公司可以輕松地使用和微調大型模型,從而快速實現AI能力的集…

軟件定義汽車時代的功能安全和信息安全

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 簡單,單純,喜歡獨處,獨來獨往,不易合同頻過著接地氣的生活…

內容中臺驅動企業數字化內容管理高效協同架構

內容概要 在數字化轉型加速的背景下,企業對內容管理的需求從單一存儲向全鏈路協同演進。內容中臺作為核心支撐架構,通過統一的內容資源池與智能化管理工具,重塑了內容生產、存儲、分發及迭代的流程。其核心價值在于打破部門壁壘,…

【探商寶】:大數據與AI賦能,助力中小企業精準拓客引

引言:在數據洪流中,如何精準鎖定商機? 在競爭激烈的商業環境中,中小企業如何從海量信息中快速篩選出高價值客戶?如何避免無效溝通,精準觸達目標企業? 探商寶——一款基于大數據與AI技術的企業信…

springboot接入ShardingJDBC

ShardingJDBC 是 Apache ShardingSphere 的一個子項目,它是一個開源的分庫分表中間件,提供了透明化的數據分片、分布式事務和數據庫治理等功能。ShardingJDBC 以 JDBC Driver 的形式提供,支持任何基于 JDBC 的 ORM 框架、持久層框架和數據庫連…

Dify平臺搭建面試機器人

無代碼搭建面試機器人 什么是Dify 什么是Dify Dify 是一款開源的大語言模型(LLM) 應用開發平臺。它融合了后端即服務(Backend as Service)和 LLMOps 的理念,使開發者可以快速搭建生產級的生成式 AI 應用。即使你是非技術人員,也能…

Django創建一個非前后端分離平臺

1.pub_blog前端創立 1.blog/pub路由 注意兩個路由的區別 2.完善頁面 用表單實現 3.加載wangeditor的幾個文件 4.配置樣式 5.配置js代碼,單獨放在js文件夾中,js文件夾pub_blog onload事件,加載完成后會再加載 5.提交按鈕

什么情況下索引會失效

一、索引創建的原則 1、針對數據量較大,且查詢比較頻繁的表建立索引。 單表超過10萬數據,即可增加索引 2、使用經常作為查詢條件(where)、排序(order by)、分組(group by)操作的字…

內容中臺重構企業內容管理流程驅動智能協作升級

內容概要 內容中臺作為企業數字化轉型的核心基礎設施,通過技術架構革新與功能模塊整合,重構了傳統內容管理流程的底層邏輯。其核心價值在于構建動態化、智能化的內容生產與流轉體系,將分散的創作、存儲、審核及分發環節納入統一平臺管理。基…

用deepseek學大模型04-模型可視化與數據可視化

deepseek.com: pytorch可視化工具 生成神經網絡圖 在 PyTorch 中,可視化神經網絡結構的常用工具和方法有以下幾種,以下將詳細介紹它們的用法: 1. TensorBoard (PyTorch 官方集成) PyTorch 通過 torch.utils.tensorboard 支持 TensorBoard&a…

JavaScript設計模式 -- 外觀模式

在實際開發中,往往會遇到多個子系統協同工作時,直接操作各個子系統不僅接口繁瑣,還容易導致客戶端與內部實現緊密耦合。**外觀模式(Facade Pattern)**通過為多個子系統提供一個統一的高層接口,將復雜性隱藏…