蜜桃av色欲a片精品一区,麻豆aⅴ精品无码一区二区,亚洲人成网站在线播放影院在线,亚洲 素人 字幕 在线 最新

微立頂科技

新聞資訊

創(chuàng)新 服務 價值

  ChatGLM2-6B 的 Lora 微調教程

發(fā)布日期:2023/11/8 23:29:24      瀏覽量:

0. 背景

現(xiàn)在開始學習微調,主要學習 Lora 微調。

這次嘗試了修改 ChatGLM2-6B 自我認知,文章中記錄了整個微調過程。

1. 部署微調項目

git clone https://github.com/hiyouga/ChatGLM-Efficient-Tuning.git
conda create -n chatglm_etuning python=3.10
conda activate chatglm_etuning
cd ChatGLM-Efficient-Tuning
pip install -r requirements.txt

2. 數(shù)據(jù)集說明

我們使用 self_cognition 數(shù)據(jù)集,該數(shù)據(jù)集包含了 18 條關于模型自我認知的數(shù)據(jù),我們的目標是修改模型自身的知識,使模型給出我們希望的答復。

首先,對數(shù)據(jù)做以下修改,

sed -i ’s/ChatGLM-6B/ChatGLM2-6B/g’ data/self_cognition.json

# 提示:您可以將 [NAME] 換成您自己的名字,從而讓模型回答它的創(chuàng)造者是您。
sed -i ’s/\[NAME\]/AI小鎮(zhèn)/g’ data/self_cognition.json

其次,查看 data/self_cognition.json,這里我們列出兩條示例。

[
    {
      "instruction": "你身份是什么?",
      "input": "",
      "output": "我叫ChatGLM2-6B,是一個由AI小鎮(zhèn)于2023年獨立訓練和開發(fā)的人工智能助手。我的主要目標是協(xié)助用戶解決問題和滿足他們的需求。"
    },
    {
      "instruction": "你的身份信息能告訴我嗎?",
      "input": "",
      "output": "當然可以,我是ChatGLM2-6B,一個由AI小鎮(zhèn)創(chuàng)建的人工智能助手。我在2023年研發(fā)完成,旨在為用戶提供有針對性的回答和幫助。"
    }
]

3. 模型監(jiān)督微調(Lora)

運行以下命令在單個 GPU 上進行模型監(jiān)督微調。我們使用 self_cognition 數(shù)據(jù)集,采用 lora 微調方法,微調后的模型保存在 cognition 文件夾中。為了保證模型微調成功,我們采用 0.001 的學習率,在數(shù)據(jù)集上訓練 10 個 epoch。

CUDA_VISIBLE_DEVICES=0 python src/train_sft.py     --do_train     --use_v2     --dataset self_cognition     --finetuning_type lora     --lora_rank 32     --output_dir cognition     --overwrite_cache     --per_device_train_batch_size 2     --gradient_accumulation_steps 2     --lr_scheduler_type cosine     --logging_steps 10     --save_steps 1000     --warmup_steps 0     --learning_rate 1e-3     --num_train_epochs 10.0     --fp16

運行結果日志如下,

4. 模型效果測試

運行以下命令在單個 GPU 上測試模型效果,它會加載 cognition 文件夾內保存的微調模型權重,并合并進原版 ChatGLM2-6B 模型的參數(shù)權重中,同時啟動流式交互窗口。

CUDA_VISIBLE_DEVICES=0 python src/cli_demo.py     --use_v2     --checkpoint_dir cognition

向微調后的 ChatGLM2-6B 模型問一些自我認知問題,我們可以發(fā)現(xiàn)它能夠給出我們期望的回答。

同時,我們還測試了兩個額外的問題,驗證結果說明模型的原本知識并沒有被嚴重破壞。

5. 導出微調模型

如果要將微調后的模型部署在您的項目框架中,請使用 export_model.py 將微調后的權重合并到 ChatGLM2-6B 模型中并導出完整模型。(提示:output_dir 不要使用大寫字母)

python src/export_model.py     --use_v2     --checkpoint_dir cognition     --output_dir ./chatglm2_6b_lora

然后訪問 https://huggingface.co/THUDM/chatglm2-6b/tree/main,將 configuration_chatglm.py、modeling_chatglm.py、quantization.py、tokenization_chatglm.py 4個文件下載到 ./chatglm2_6b_lora 目錄下面。

然后執(zhí)行下面命令,修改幾個配置值。

sed -i ’s/THUDM\/chatglm2-6b--//g’ ./chatglm2_6b_lora/config.json
sed -i ’s/THUDM\/chatglm2-6b/\.\.\/chatglm2_6b_lora/g’ ./chatglm2_6b_lora/config.json
sed -i ’s/THUDM\/chatglm2-6b--//g’ ./chatglm2_6b_lora/tokenizer_config.json
sed -i ’s/THUDM\/ChatGLM2-6B/\.\.\/chatglm2_6b_lora/g’ ./chatglm2_6b_lora/modeling_chatglm.py
sed -i ’s/THUDM\/chatglm2-6b/\.\.\/chatglm2_6b_lora/g’ ./chatglm2_6b_lora/modeling_chatglm.py

6. 調用導出的模型

創(chuàng)建 chatglm2_6b_lora.py,

cat << EOF > chatglm2_6b_lora.py
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained(’./chatglm2_6b_lora’, trust_remote_code=True)
model = AutoModel.from_pretrained(’./chatglm2_6b_lora’, trust_remote_code=True).half().cuda()
response, history = model.chat(tokenizer, "你是誰?", history=[])
print(response)
EOF

執(zhí)行 chatglm2_6b_lora.py,

python chatglm2_6b_lora.py

輸出結果如下,


完結!



  業(yè)務實施流程

需求調研 →

團隊組建和動員 →

數(shù)據(jù)初始化 →

調試完善 →

解決方案和選型 →

硬件網(wǎng)絡部署 →

系統(tǒng)部署試運行 →

系統(tǒng)正式上線 →

合作協(xié)議

系統(tǒng)開發(fā)/整合

制作文檔和員工培訓

售后服務

馬上咨詢: 如果您有業(yè)務方面的問題或者需求,歡迎您咨詢!我們帶來的不僅僅是技術,還有行業(yè)經(jīng)驗積累。
QQ: 39764417/308460098     Phone: 13 9800 1 9844 / 135 6887 9550     聯(lián)系人:石先生/雷先生