国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于 P-Tuning v2 進行 ChatGLM2-6B 微調實踐

這篇具有很好參考價值的文章主要介紹了基于 P-Tuning v2 進行 ChatGLM2-6B 微調實踐。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

微調類型簡介

1. SFT監(jiān)督微調:適用于在源任務中具有較高性能的模型進行微調,學習率較小。常見任務包括中文實體識別、語言模型訓練、UIE模型微調。優(yōu)點是可以快速適應目標任務,但缺點是可能需要較長的訓練時間和大量數(shù)據(jù)。

2. LoRA微調:通過高階矩陣秩的分解減少微調參數(shù)量,不改變預訓練模型參數(shù),新增參數(shù)。優(yōu)點是減少了微調的參數(shù)量和成本,同時能達到與全模型微調相近的效果。

3. P-tuning v2微調:引入了prefix-tuning的思想,每一層都加入了prefix,并采用了多任務學習。解決了P-tuning v1中序列標注任務效果不佳和普遍性差的問題。其參數(shù)對象是各層的prefix。優(yōu)點是適用于多任務學習,但在自然語言理解任務上表現(xiàn)可能不佳。

4. Freeze微調:主要用于大語言模型的微調,后幾層網絡提取語義特征,前幾層提取文本表層特征。優(yōu)點是參數(shù)高效,適用于提取特定層次的特征。

綜上所述,各種微調方法適用于不同的場景和任務。SFT監(jiān)督微調適用于快速適應目標任務,LoRA適用于減少參數(shù)量和成本,P-tuning v2適用于多任務學習,而Freeze適用于提取特定層次的特征。

1.下載glm2訓練腳本

git clone https://github.com/THUDM/ChatGLM2-6B.git

2.然后使用 pip 安裝依賴

pip install -r requirements.txt -i https://pypi.douban.com/simple/

運行行微調除 ChatGLM2-6B 的依賴之外,還需要安裝以下依賴

pip install rouge_chinese nltk jieba datasets transformers[torch] -i https://pypi.douban.com/simple/

3.下載樣例數(shù)據(jù)或者自己構建樣例

{"content": "類型#裙_材質#網紗_顏色#粉紅色_圖案#線條_圖案#刺繡_裙腰型#高腰_裙長#連衣裙_裙袖長#短袖_裙領型#圓領", "summary": "這款連衣裙,由上到下都透出女性魅力,經典圓領型,開口度恰好,露出修長的脖頸線條,很是優(yōu)雅氣質,短袖設計,這款對身材有很好的修飾作用,穿起來很女神;裙身粉紅色花枝重工刺繡,讓人一眼難忘!而且在這種網紗面料上做繁復圖案的繡花,是很考驗工藝的,對機器的要求會更高,更加凸顯我們的高品質做工;"}

可以根據(jù)以上格式,構建自己的訓練樣本,我們可以用一些行業(yè)生產數(shù)據(jù),如會話記錄對模型進行訓練,

官方示例數(shù)據(jù)下載:

https%3A//cloud.tsinghua.edu.cn/f/b3f119a008264b1cabd1/%3Fdl%3D1

4.根據(jù)自己的環(huán)境修改訓練腳本中對應的文件地址

PRE_SEQ_LEN=128  #序列的預設長度為128
LR=2e-2   #學習率為0.02
NUM_GPUS=4  #用幾顆GPU進行訓練

torchrun --standalone --nnodes=1 --nproc_per_node=$NUM_GPUS main.py \
    --do_train \
    --train_file /export/data/train.json \            #設置訓練數(shù)據(jù)文件的目錄
    --validation_file /export/data/validation.json \  #設置驗證文件的目錄
    --preprocessing_num_workers 10 \
    --prompt_column content \
    --response_column summary \
    --overwrite_cache \
    --model_name_or_path /opt/tritonserver/python_backend/models/chatglm2-6b \  #模型目錄
    --output_dir /export/models/trained-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR \  #訓練后的模型目錄
    --overwrite_output_dir \
    --max_source_length 64 \
    --max_target_length 128 \
    --per_device_train_batch_size 1 \
    --per_device_eval_batch_size 1 \
    --gradient_accumulation_steps 16 \
    --predict_with_generate \
    --max_steps 3000 \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate $LR \
    --pre_seq_len $PRE_SEQ_LEN \
    --quantization_bit 4

5.開始訓練吧

sh train.sh

訓練中

快要訓練完成

6.訓練完成

Training completed. Do not forget to share your model on huggingface.co/models =)

{'train_runtime': 4598.3849, 'train_samples_per_second': 41.754, 'train_steps_per_second': 0.652, 'train_loss': 0.1287700497706731, 'epoch': 2400.0}

100%|██████████| 3000/3000 [1:16:37<00:00, 1.53s/it]

***** train metrics *****

epoch = 2400.0

train_loss = 0.1288

train_runtime = 1:16:38.38

train_samples = 24

train_samples_per_second = 41.754

train_steps_per_second = 0.652

7.部署訓練后的模型

在 P-tuning v2 訓練時模型只保存 PrefixEncoder 部分的參數(shù),所以在推理時需要同時加載原 ChatGLM-6B 模型以及 PrefixEncoder 的權重

        model_path = "/opt/tritonserver/python_backend/models/chatglm2-6b"
        model = AutoModel.from_pretrained(model_path, config=config, trust_remote_code=True)
        prefix_state_dict = torch.load(os.path.join('/opt/train/trained-chatglm2-6b-pt-128-1e-4/checkpoint-3000', "pytorch_model.bin"))
        new_prefix_state_dict = {}
        for k, v in prefix_state_dict.items():
            if k.startswith("transformer.prefix_encoder."):
                new_prefix_state_dict[k[len("transformer.prefix_encoder."):]] = v
        model.transformer.prefix_encoder.load_state_dict(new_prefix_state_dict)

8.過程中遇到的問題

8.1 微調后無法應答

PRE_SEQ_LEN=128
LR=2e-2
NUM_GPUS=1

torchrun --standalone --nnodes=1 --nproc_per_node=$NUM_GPUS main.py \
    --do_train \
    --train_file train.json \
    --validation_file dev.json \
    --preprocessing_num_workers 10 \
    --prompt_column content \
    --response_column summary \
    --overwrite_cache \
    --model_name_or_path /opt/tritonserver/python_backend/models/chatglm2-6b \
    --output_dir trained-chatglm2-6b-pt-$PRE_SEQ_LEN-$LR \
    --overwrite_output_dir \
    --max_source_length 64 \
    --max_target_length 64 \
    --per_device_train_batch_size 16 \
    --per_device_eval_batch_size 1 \
    --gradient_accumulation_steps 1 \
    --predict_with_generate \
    --max_steps 3000 \
    --logging_steps 10 \
    --save_steps 1000 \
    --learning_rate $LR \
    --pre_seq_len $PRE_SEQ_LEN \

使用官方腳本中的學習率設置 LR=2e-2 (0.02)

模型出現(xiàn)無法應答,災難性遺忘,基本上原有的知識都遺忘了,無法應答普通提問 , 比如"你好.."

于是嘗試使用 LR=1e-4 (0.0001) 進行訓練

"1e-4" 表示 1 乘以 10 的 -4 次方,即等于 0.0001,"2e-2" 表示 2 乘以 10 的 -2 次方,即等于 0.02。

模型最終可以應答.

鏡像問題:

https://github.com/THUDM/ChatGLM-6B/issues/1148

8.2 關于學習率:

我理解是,學習率大小像看書看的粗細,看的太粗就學的快(收斂快)但啥也學不到,

學習率是影響模型訓練效果的重要參數(shù)。過大的學習率可能導致模型不穩(wěn)定,過小的學習率則可能導致訓練速度變慢。因此,需要反復試驗,找到合適的學習率。

學習率(lr)表示每次更新權重參數(shù)的尺度(步長),ΔΘ=Θ0?(lr)(loss′)。

學習率與batch_size在權重更新中的關系

學習率(lr)直觀可以看出lr越大,權重更新的跨度越大,模型參數(shù)調整變化越快。

batch_size對模型的影響,在于模型每次更新時,計算梯度是計算整個Batch的平均梯度,

即權重更新公式中的loss′=1batchsize(lossbatch)′, 整合就是 ΔΘ=Θ0?(lr)1batchsize(lossbatch)′ 。即lr與batch_size共同影響模型更新。

作者:京東科技 楊建

來源:京東云開發(fā)者社區(qū) 轉發(fā)請注明來源文章來源地址http://www.zghlxwxcb.cn/news/detail-711545.html

到了這里,關于基于 P-Tuning v2 進行 ChatGLM2-6B 微調實踐的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 第七篇-Tesla P40+ChatGLM2+P-Tuning

    https://huggingface.co/THUDM/chatglm2-6b 下載模型相關文件到自己目錄 我的是/models/chatglm2-6b 創(chuàng)建環(huán)境安 一定注意數(shù)據(jù)中格式,符號中英文等等 train_loss 要小,如果1,2這種未調出的效果很差 如果調整了數(shù)據(jù)集,要清理緩存,緩存目錄如下 /root/.cache/huggingface/datasets output/adgen-chatglm2-6b

    2024年02月13日
    瀏覽(22)
  • 人工智能大語言模型微調技術:SFT 監(jiān)督微調、LoRA 微調方法、P-tuning v2 微調方法、Freeze 監(jiān)督微調方法

    人工智能大語言模型微調技術:SFT 監(jiān)督微調、LoRA 微調方法、P-tuning v2 微調方法、Freeze 監(jiān)督微調方法

    SFT(Supervised Fine-Tuning)監(jiān)督微調是指在源數(shù)據(jù)集上預訓練一個神經網絡模型,即源模型。然后創(chuàng)建一個新的神經網絡模型,即目標模型。目標模型復制了源模型上除了輸出層外的所有模型設計及其參數(shù)。這些模型參數(shù)包含了源數(shù)據(jù)集上學習到的知識,且這些知識同樣適用于目

    2024年02月15日
    瀏覽(23)
  • ChatGLM2-6B微調實踐-QLora方案

    ChatGLM2-6B微調實踐-QLora方案

    申請阿里云GPU服務器: CentOS 7.6 64 Anaconda3-2023.07-1-Linux-x86_64 Python 3.11.5 GPU NVIDIA A10(顯存24 G/1 core) CPU 8 vCore/30G 安裝Anaconda、CUDA、PyTorch 參考:ChatGLM2-6B微調實踐-P-Tuning方案 項目部署 準備數(shù)據(jù)集 準備我們自己的數(shù)據(jù)集,分別生成訓練文件和測試文件這兩個文件,放在項目dat

    2024年02月07日
    瀏覽(31)
  • ChatGLM2-6B在Windows下的微調

    ChatGLM2-6B在Windows下的微調

    1、ChatGLM2-6B! 我跑通啦!本地部署+微調(windows系統(tǒng)):這是最關鍵的一篇文章,提供了Windows下的腳本 2、LangChain + ChatGLM2-6B 搭建個人專屬知識庫:提供了基本的訓練思路。 1、已完成ChatGLM2-6B的部署,假設部署位置為D:_ChatGPTlangchain-chatglm_testChatGLM2-6B 2、部署環(huán)境 Windows 10 專業(yè)

    2024年02月13日
    瀏覽(28)
  • chatglm2-6b在P40上做LORA微調

    目前,大模型的技術應用已經遍地開花。最快的應用方式無非是利用自有垂直領域的數(shù)據(jù)進行模型微調。chatglm2-6b在國內開源的大模型上,效果比較突出。本文章分享的內容是用chatglm2-6b模型在集團EA的P40機器上進行垂直領域的LORA微調。 github: https://github.com/THUDM/ChatGLM2-6B ch

    2024年02月10日
    瀏覽(29)
  • ChatGLM2-6B! 我跑通啦!本地部署+微調(windows系統(tǒng))

    ChatGLM2-6B! 我跑通啦!本地部署+微調(windows系統(tǒng))

    記錄一下此時此刻,2023年7月8日22點04,從ChatGLM2-6B在7月4日開放了ptuning到此時此刻,ChatGLM2-6B的微調終于被哥們跑通了! 從 本地部署ChatGLM2-6B 到 本地進行P-tuning微調 ,再到最后的 模型檢測 ,哥們全跑通了! 這里非常感謝ChatGLM2-6B|開源本地化語言模型這篇博客!因為我布置

    2024年02月16日
    瀏覽(22)
  • chatglm2-6b在P40上做LORA微調 | 京東云技術團隊

    chatglm2-6b在P40上做LORA微調 | 京東云技術團隊

    目前,大模型的技術應用已經遍地開花。最快的應用方式無非是利用自有垂直領域的數(shù)據(jù)進行模型微調。chatglm2-6b在國內開源的大模型上,效果比較突出。本文章分享的內容是用chatglm2-6b模型在集團EA的P40機器上進行垂直領域的LORA微調。 github: https://github.com/THUDM/ChatGLM2-6B ch

    2024年02月09日
    瀏覽(29)
  • 【ChatGLM_02】LangChain知識庫+Lora微調chatglm2-6b模型+提示詞Prompt的使用原則

    【ChatGLM_02】LangChain知識庫+Lora微調chatglm2-6b模型+提示詞Prompt的使用原則

    運行l(wèi)angchain-ChatGLM-master下面的webui.py文件 (1) 配置知識庫 新建知識庫 向知識庫當中添加文件 支持上傳的數(shù)據(jù)格式:word、pdf、excel、csv、txt、文件夾等。但是此處我試了一下 (2) 文檔數(shù)據(jù)測試 word文檔測試: (3) 知識庫測試模式 知識庫測試只會返回輸入內容在當前知識庫當中的

    2024年02月14日
    瀏覽(24)
  • 【AI實戰(zhàn)】ChatGLM2-6B 微調:AttributeError: ‘ChatGLMModel‘ object has no attribute ‘prefix_encoder‘

    ChatGLM2-6B 是開源中英雙語對話模型 ChatGLM-6B 的第二代版本,在保留了初代模型對話流暢、部署門檻較低等眾多優(yōu)秀特性的基礎之上,ChatGLM2-6B 引入了如下新特性: 1.更強大的性能:基于 ChatGLM 初代模型的開發(fā)經驗,我們全面升級了 ChatGLM2-6B 的基座模型。ChatGLM2-6B 使用了 GLM 的

    2024年02月13日
    瀏覽(14)
  • LLMs:LLaMA Efficient Tuning(一款可高效微調【全參數(shù)/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【預訓練+指令監(jiān)督微調+

    LLMs:LLaMA Efficient Tuning(一款可高效微調【全參數(shù)/LoRA/QLoRA】主流大模型【ChatGLM2/LLaMA2/Baichuan等】的高效工具【預訓練+指令監(jiān)督微調+

    LLMs:LLaMA Efficient Tuning(一款可高效微調【全參數(shù)/LoRA/QLoRA】主流大模型【ChatGLM-2/LLaMA-2/Baichuan等】的高效工具【預訓練+指令監(jiān)督微調+獎勵模型訓練+PPO 訓練+DPO 訓練】)的簡介、安裝、使用方法之詳細攻略 目錄 相關文章 LLMs之ChatGLM:ChatGLM Efficient Tuning(一款高效微調ChatGLM-6B/Ch

    2024年02月09日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包