AI 學習紀錄 – ChatGLM2-6B 使用與微調

有好一陣子沒研究 AI 了 (RTX 4090 哭哭),最主要的原因是搞不出來個什麼毛。自己訓練的 GPT2 效果一直很差,最受益的可能還是學到它的一點點精神吧。

昨天突然又想到來研究一下有沒有新東西,就找到了這個 ChatGLM2-6B 。從結果來論,這個比之前自己試的 GPT2 強太多了,很接近 chatGPT3。而且又是中國清大的研究,著重在雙語(中英文),我覺得蠻有看頭的。由於 openAI 太封閉,沒辦法自架。我覺得這個 GLM2 是一個很好的替代選擇。

其實它的母專案是 GLM-130B從名字上也看的出來前面的是60億參數,後面是1300億參數。這之中應該還有其它異,但我也不甚明瞭,先以使用為主吧。

chatGLM2-6B 提供了預訓練的資料,還可以自己 fineTune。另外也有結合langChain可以自行搭建自己知識庫,這個我也是剛剛接觸。所以先從單純的 chatGLM2 入手。

之所以急著寫這些還未研究透徹的東西,是發現一陣子沒用,Torch 都跑到 2.0 版了,有些之前研究的東西,套件又不相容了,要指定版本才行。看來還是要用能吃 GPU的 docker 才能保証一致性,不要後來都無法重現成果了。雖然比較吃空間,但也是比較好的辦法了。

 

參考來源

本文是參考 LangChain + ChatGLM2-6B 搭建个人专属知识库 的前半部份(也就是不含 langChain)的部份,包含了 ChatGLM2-6B的安裝使用與微調。有 ChatGLM2 就代表有 ChatGLM1,不過我們就只用新的,不管舊的了。

基本環境安裝

一些基本的環境 (如 anaconda、共用 script) 的設定,已經寫在【共同操作】 這篇文章裡,請先看一下,確保所以指令可以正確運作。

建立 conda env

由於每個專案的相依性都不同,這裡會為每個案子都建立環境。

源碼下載與安裝環境

安裝下面套件。

下載模型

這個模型有 12GB,請耐心等候。

修改程式

這邊我們會修改程式來指定模型的位置,與 WEB 要監聽的IP。編輯 web_demo.py

修改完後,就可以啟動程式

打開瀏覽器訪問 IP:7860 就可以如 chatGPT 一樣詢問問題了!

問個問題吧

你也可以用另一個方式啟動伺服器,但結果會稍有不同。此法仍需修改一下原始碼,從本地載入模型。

streamlit 結果

基于 P-Tuning 微调 ChatGLM2-6B

P-Tuning 是官方的微調方案。首先安裝套件

停用 W&B

進入 ptuning 目錄,分別建立 train.json 與 dev.json 這兩個檔案

修改 train.sh

修改 evalution.sh

然後分別執行訓練

與推理

運行微調後結果

同樣在 ptuning 目錄下,修改 web_demo.sh

將 web_demo.py 的接受網址也修改一下

最後再執行

透過瀏覽器問一下誰是樹先生(也就是剛才微調的內容),就可以得到一些訊息。

樹先生

量化

偶然的機會研究到怎麼量化成 4bit結省記憶體,大概佔用6G記憶體。安裝

以下面程式化來做量化,然後存檔。

 

 

結語

這是一個比較偏向技術性的微調,花的時間也相對長。原作還有一個「知識庫」 的介紹,相對比較(短),我雖然用過但也還不確定其正確信。我還是相信慢一點的比較正確。下一篇就會介紹這個搭配 landChain + chatGLM2 的結合。

Leave a Reply(Name請以user_開頭,否則會被判定會垃圾息)

請輸入答案 − 1 = 1