chatGLM3微調

文章目錄

  • 一、問答數據集生成器使用
    • 設置問題
    • 啟動使用
    • 產出效果
  • 二、進行微調
    • 第一步:下載模型
    • 第二步:項目準備
      • 2.1 下載項目
      • 2.2 然后使用 pip 安裝依賴
      • 2.3 開始
    • 第三步進行微調
      • 3.1安裝相關依賴
      • 3.2準備數據集,并且上傳
      • 3.3對數據集進行預處理
      • 3.4 進行微調
    • 第四步:進行測試
  • 四、微調2
    • 4.1下載LAMA
    • 4.2搭建環境
    • 4.3修改數據集
    • 4.4 開始訓練
        • 4.4.1頁面訓練
        • 4.4.2直接腳本微調
    • 4.5模型合并
      • 命令行
      • 頁面
    • 4.6 進行測試
      • 1、API 服務測試
      • 2、命令行測試
      • 3、瀏覽器測試
      • 4、web端進行測試

一、問答數據集生成器使用

感謝開源
項目地址:https://github.com/huang1332/finetune_dataset_maker.git
備用地址
https://gitee.com/yang_hu_cheng/finetune_dataset_maker.git

設置問題

在這里插入圖片描述

啟動使用

pip install streamlit
pip install openaistreamlit run dataset.py --server.port 2323

在這里插入圖片描述

產出效果

在這里插入圖片描述

二、進行微調

第一步:下載模型

  • local_dir_root :保存位置
  • ZhipuAI/chatglm3-6b:需要下載的模型
from modelscope.hub.snapshot_download import snapshot_downloadlocal_dir_root = "/root/autodl-tmp/models_from_modelscope"
snapshot_download('ZhipuAI/chatglm3-6b', cache_dir=local_dir_root)

第二步:項目準備

2.1 下載項目

git clone https://github.com/THUDM/ChatGLM3.git
cd ChatGLM3

2.2 然后使用 pip 安裝依賴

可以創建一個環境(可省)

conda create --name chatchat python=3.10
conda activate chatchat

安裝依賴

pip install -r requirements.txt

調整一下就可以用了
在這里插入圖片描述

2.3 開始

啟動第二個;好看一些

nohup streamlit run web_demo2.py > output.log &

在這里插入圖片描述

也可以啟動第一個

nohup python web_demo.py > output.log &

在這里插入圖片描述

第三步進行微調

3.1安裝相關依賴

pip install transformers==4.30.2 accelerate sentencepiece astunparse deepspeed

3.2準備數據集,并且上傳

兩個文件夾里面的內容都是一樣的

在這里插入圖片描述

 {"content": "類型#褲*版型#寬松*風格#性感*圖案#線條*褲型#闊腿褲", "summary": "寬松的闊腿褲這兩年真的吸粉不少,明星時尚達人的心頭愛。畢竟好穿時尚,誰都能穿出腿長2米的效果寬松的褲腿,當然是遮肉小能手啊。上身隨性自然不拘束,面料親膚舒適貼身體驗感棒棒噠。系帶部分增加設計看點,還讓單品的設計感更強。腿部線條若隱若現的,性感撩人。顏色敲溫柔的,與褲子本身所呈現的風格有點反差萌。"}

在這里插入圖片描述
在這里插入圖片描述

3.3對數據集進行預處理

./scripts/format_advertise_gen.py --path "AdvertiseGen/train.json"

在這里插入圖片描述
出現這個說明處理好了

在這里插入圖片描述

預處理結束后其實就是對格式進行改造
在這里插入圖片描述

3.4 進行微調

  • MAX_STEP(就是讓大模型重復多少遍死記硬背)

  • BASE_MODEL_PATH:模型路徑(最后有個\)

在這里插入圖片描述
在這里插入圖片描述

./scripts/finetune_ds_multiturn.sh  # 全量微調
./scripts/finetune_pt_multiturn.sh  # P-Tuning v2 微調
  1. 全量微調:

./scripts/finetune_ds_multiturn.sh 中的配置(MAX_SEQ_LEN=2048, DEV_BATCH_SIZE=16, GRAD_ACCUMULARION_STEPS=1)恰好用滿 4 * 80GB 顯存。

這里就是用P-Tuning v2 微調

./scripts/finetune_pt_multiturn.sh

第四步:進行測試

python inference.py \--pt-checkpoint "/root/autodl-tmp/ChatGLM3-New/finetune_demo/output/advertise_gen_pt-20231121-175741-128-2e-2/" \--model /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b/

微調成功。撒花
在這里插入圖片描述

四、微調2

LLaMA

4.1下載LAMA

git clone https://github.com/hiyouga/LLaMA-Factory.git

4.2搭建環境

conda create -n llama_factory python=3.10
conda activate llama_factory
cd LLaMA-Factory
pip install -r requirements.txt

4.3修改數據集

編輯|新建數據集,可以選擇這個,也可以自建
在這里插入圖片描述
里面是json格式
在這里插入圖片描述

查看數據集
在這里插入圖片描述

4.4 開始訓練

4.4.1頁面訓練

使用 啟動 LLaMA Board。(該模式目前僅支持單卡訓練)
默認端口號是7860

cd /root/autodl-tmp/LLaMA-Factory
CUDA_VISIBLE_DEVICES=0 python src/train_web.py 

在這里插入圖片描述

4.4.2直接腳本微調
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \--stage sft \--model_name_or_path /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b \--do_train True \--finetuning_type lora \--template chatglm3 \--flash_attn False \--shift_attn False \--dataset_dir data \--dataset self_cognition \--cutoff_len 1024 \--learning_rate 5e-05 \--num_train_epochs 3.0 \--max_samples 100000 \--per_device_train_batch_size 1 \--gradient_accumulation_steps 4 \--lr_scheduler_type cosine \--max_grad_norm 1.0 \--logging_steps 5 \--save_steps 100 \--warmup_steps 336 \--neft_alpha 0 \--train_on_prompt True \--upcast_layernorm False \--lora_rank 8 \--lora_dropout 0.1 \--lora_target query_key_value \--resume_lora_training True \--output_dir saves/ChatGLM3-6B-Chat/lora/2023-11-22-11-02-17 \--fp16 True \--val_size 0.247 \--evaluation_strategy steps \--eval_steps 100 \--load_best_model_at_end True \--plot_loss True 
CUDA_VISIBLE_DEVICES=0 python src/train_bash.py \--stage sft \--model_name_or_path /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b/ \--do_train \--overwrite_output_dir \--template chatglm3 \

4.5模型合并

命令行

  1. model_name_or_path 原始模型路徑
  2. template 模板
  3. finetuning_type 微調類型
  4. checkpoint_dir 訓練模型結果
  5. export_dir 導出文件夾
python src/export_model.py \--model_name_or_path path_to_llama_model \--template default \--finetuning_type lora \--checkpoint_dir path_to_checkpoint \--export_dir path_to_export

舉例

python src/export_model.py \--model_name_or_path /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b/ \--template chatglm3 \--finetuning_type lora \--checkpoint_dir /root/autodl-tmp/LLaMA-Factory/export_chatglm3 \--export_dir lora_merge_chatglm3 

頁面

在這里插入圖片描述

4.6 進行測試

直接使用合并的模型
就不要用checkpoint_dir參數

1、API 服務測試

python src/api_demo.py \--model_name_or_path path_to_llama_model \--template default \--finetuning_type lora \--checkpoint_dir path_to_checkpoint

2、命令行測試

python src/cli_demo.py \--model_name_or_path path_to_llama_model \--template default \--finetuning_type lora \--checkpoint_dir path_to_checkpoint

舉例

python src/cli_demo.py \--model_name_or_path  /root/autodl-tmp/models_from_modelscope/ZhipuAI/chatglm3-6b/ \--template chatglm3 \--finetuning_type lora \--checkpoint_dir /root/autodl-tmp/LLaMA-Factory/saves/ChatGLM3-6B-Chat/lora/2023-11-22-11-02-17

3、瀏覽器測試

python src/web_demo.py \--model_name_or_path path_to_llama_model \--template default \--finetuning_type lora \--checkpoint_dir path_to_checkpoint

4、web端進行測試

刷新模型斷點,選擇訓練好的模型
在這里插入圖片描述

選擇chat

在這里插入圖片描述

加載模型

在這里插入圖片描述
結果產出
在這里插入圖片描述

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

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

相關文章

如何使用技術SEO來優化評論

你在網上購買嗎?我的意思是,在當今時代,誰不這樣做?作為買家,無論您想購買什么,您都了解全面和高質量評論的價值。這是您在決定是否購買產品時考慮的重要因素。 這就是為什么許多人在網上購物之前使用評論…

移動端click事件、touch事件、tap事件的區別

在移動端,有三種常見的事件類型,click事件、touch事件、tap事件。它們的區別如下: click事件:click事件是在用戶點擊屏幕的時候觸發,如果是移動設備,則會在用戶點擊屏幕的同時觸發touch事件。但是&#xff…

【開源】基于Vue和SpringBoot的康復中心管理系統

項目編號: S 056 ,文末獲取源碼。 \color{red}{項目編號:S056,文末獲取源碼。} 項目編號:S056,文末獲取源碼。 目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 普通用戶模塊2.2 護工模塊2.3 管理員…

uni-app中vue3+setup實現下拉刷新、上拉加載更多效果

在小程序或各類app中,下拉刷新和上拉加載更多是極為常見和使用非常頻繁的兩個功能,通過對這兩個功能的合理使用可以極大的方便用戶進行操作。 合理的設計邏輯才能更容易挽留住用戶,因為這些細節性的小功能點就變得極為重要起來。 那么在uni…

基于WEB的停車場管理系統的設計和實現【附源碼】

基于WEB的停車場管理系統的設計和實現 摘 要 隨著現代社會的快速發展,人民生活水平快速提高,汽車的數量飛速增加,與此同時停車問題也越來越受到人們的關注,為了實現對停車場進行有效的管理,結合一些停車場的模式和現狀…

游戲被攻擊了怎么辦

隨著網絡技術和網絡應用的發展,網絡安全問題顯得越來越重要,在創造一個和諧共贏的互聯網生態環境的路途中總是會遇到各種各樣的問題。最常見的當屬于DDOS攻擊(Distributed Denial of Service)即分布式阻斷服務。由于容易實施、難以…

【LeetCode刷題】--40.組合總和II

40.組合總和II 本題詳解&#xff1a;回溯算法 class Solution {public List<List<Integer>> combinationSum2(int[] candidates, int target) {int len candidates.length;List<List<Integer>> res new ArrayList<>();if (len 0) {return re…

深度學習之基于YoloV5車輛和行人目標檢測系統

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介YOLOv5 簡介YOLOv5 特點 車輛和行人目標檢測系統 二、功能三、系統四. 總結 一項目簡介 # 深度學習之基于 YOLOv5 車輛和行人目標檢測系統介紹 深度學習在…

2023 年 亞太賽 APMCM 國際大學生數學建模挑戰賽 |數學建模完整代碼+建模過程全解全析

當大家面臨著復雜的數學建模問題時&#xff0c;你是否曾經感到茫然無措&#xff1f;作為2022年美國大學生數學建模比賽的O獎得主&#xff0c;我為大家提供了一套優秀的解題思路&#xff0c;讓你輕松應對各種難題。 cs數模團隊在亞太賽 APMCM前為大家提供了許多資料的內容呀&…

【西行紀年番】孫悟空對戰陰界王,素衣奄奄一息,巨靈拳霸氣一擊

Hello,小伙伴們&#xff0c;我是拾荒君。 《西行紀年番》第20集已更新。為了救回素衣&#xff0c;孫悟空想盡辦法&#xff0c;最后他拜托沙悟凈幫忙&#xff0c;終于成功把自己傳送到陰界。原來&#xff0c;素衣的魂魄被陰界王藏在了他制造的人偶之中。沙悟凈提醒孫悟空必須在…

8.2 Windows驅動開發:內核解鎖與強刪文件

在某些時候我們的系統中會出現一些無法被正常刪除的文件&#xff0c;如果想要強制刪除則需要在驅動層面對其進行解鎖后才可刪掉&#xff0c;而所謂的解鎖其實就是釋放掉文件描述符&#xff08;句柄表&#xff09;占用&#xff0c;文件解鎖的核心原理是通過調用ObSetHandleAttri…

Axios使用方式

ajax是JQUERY封裝的XMLHttprequest用來發送http請求 Axios簡單點說它就是一個js庫,支持ajax請求,發送axios請求功能更加豐富,豐富在哪不知道 1.npm使用方式 vue項目中 npm install axios 2.cdn方式 <script src"https://unpkg.com/axios/dist/axios.min.js">…

【三維幾何學習】自制簡單的網格可視化軟件 — Mesh Visualization

自制簡單的網格可視化軟件 — Mesh Visualization 引言一、整體框架1.1 三角形網格1.2 界面管理1.3 VTK可視化界面 二、核心源碼2.1 三角形網格&#xff1a;TriMesh類2.2 界面Widget_Mesh_Manager2.3 VTK可視化2.4 main 引言 使用PyQt自制簡單的網格可視化軟件 - 視頻展示 本是…

Node.js入門指南(一)

目錄 Node.js入門 什么是Node.js Node.js的作用 Node.js安裝 Node.js編碼注意事項 Buffer(緩沖器&#xff09; 定義 使用 fs模塊 概念 文件寫入 文件讀取 文件移動與重命名 文件刪除 文件夾操作 查看資源狀態 路徑問題 path模塊 Node.js入門 什么是Node.js …

2023最新面試題

第一家 自我介紹介紹一下最近一個&#xff08;最熟悉的一個&#xff09;項目 項目幾個人在負責 項目實際在用了嗎&#xff0c;哪個平臺在用啊&#xff08;在哪里上線&#xff09; 你認為你自己做的項目里面哪個比較難做呢&#xff0c;項目里面有什么難點&#xff1f;常用的是V…

安卓隱私指示器學習筆記

最近了解到Google 在Android12上新增了權限指示器&#xff0c;可以在信號欄的右側顯示當前訪問錄音機和Camera的應用&#xff0c;點擊后可以跳轉到相應應用的權限界面&#xff0c;消費者可以控制權限的開啟和關閉。國內手機廠商最近幾年都在增加隱私看板供能&#xff0c;消費者…

java 中漢字轉拼音

需要引入的jar <!-- pinyin --><dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.0</version></dependency> 實現工具類 package com.julong.util;import java.util.regex…

編程語言發展史:高級語言的興起

一、高級語言的定義 高級語言是相對于匯編語言而言的&#xff0c;它是一種更加抽象、更加易于理解和使用的計算機編程語言。高級語言的特點是語法簡單、易于學習、易于使用、可讀性強、可移植性好等。高級語言的出現極大地提高了程序員的工作效率&#xff0c;同時也使得計算機…

Qt connect()方法Qt::ConnectionType

connect() Qt&#xff0c;綁定信號和槽原型&#xff1a; static QMetaObject::Connection connect(const QObject *sender, const char *signal,const QObject *receiver, const char *member, Qt::ConnectionType Qt::AutoConnection);static QMetaObject::Connection conn…

JSP:Javabean

起初&#xff0c;JavaBean的目的是為了將可以重復使用的代碼進行打包&#xff0c;在傳統的應用中&#xff0c;JavaBean主要用于實現一些可視化界面&#xff0c;如一個窗體、按鈕、文本框等&#xff0c;這樣的JavaBean稱之可視化的JavaBean。 隨著技術的不斷發展與項目的需求&am…