一、ChatGLM-6B模型介紹
最近,由ChatGPT帶起了一波大模型的熱潮,大家都想在本地部署一個類似ChatGPT的大模型。據官方介紹,ChatGLM-6B 是一個開源的、支持中英雙語的對話語言模型,基于 General Language Model (GLM) 架構,具有 62 億參數,結合模型量化技術,用戶可以在消費級的顯卡上進行本地部署(完整版的需要13GB顯存,INT8版本的需要8GB顯存,而INT4版本僅需要6GB的顯存)。大家可以先查詢一下本地CPU或GPU的顯存大小,再下載相應的版本。
ChatGLM-6B 使用了和 ChatGPT 相似的技術,針對中文問答和對話進行了優化。經過約 1T 標識符的中英雙語訓練,輔以監督微調、反饋自助、人類反饋強化學習等技術的加持,62 億參數的 ChatGLM-6B 已經能生成相當符合人類偏好的回答,想了解更多可以參考官方博客//chatglm.cn/blog和GitHubGitHub - THUDM/ChatGLM-6B: ChatGLM-6B: An Open Bilingual Dialogue Language Model | 開源雙語對話語言模型
二、環境安裝
首先推薦用conda新建一個虛擬環境,然后在GitHub的文件中找到requirements.txt這個文件。
這個文件里面是環境中需要安裝的包,可以將GitHub中的文件一并下載到ChatGLM-6B文件中,然后cd到這個文件夾下,直接使用以下命令來安裝所需要的包
pip install -r requirements.txt
可以分開安裝,這里推薦使用清華鏡像源來安裝,網速較快,如:
pip install xxxx -i //pypi.tuna.tsinghua.edu.cn/simple/
requirements.txt文件中共有以下幾個包:
,其中官方推薦的版本為protobuf==3.20.0、transformers==4.27.1。pytorch的話可以查看一下服務器的cuda版本,然后在pytorch官網安裝對應版本,這里要求至少為1.10以上。
三、模型下載
完成了測試環境的部署,就可以去官網下載模型了。ChatGLM-6B根據其量化等級共有三個版本的模型,如圖所示:
大家可以根據自己電腦的配置來選擇模型,硬件配置比較高的建議選擇完整模型,量化模型主要是對 ChatGLM-6B 中的28個GLM Block進行了不同等級的量化,與完整版相比可能性能略差。這里將不同模型的hugging下載地址附上:
FP16:THUDM/chatglm-6b at main (huggingface.co)
INT8:THUDM/chatglm-6b-int8 at main (huggingface.co)
INT4:THUDM/chatglm-6b-int4 at main (huggingface.co)
本文選擇的是FP16,并將其在服務器上部署。Hugging的下載頁面如圖所示:

注意這里有一些bin,py文件和config.json配置文件等,所以最好全部下載下來。將所有文件下載到名為THUDM的文件夾中,并上傳到服務器。
四、模型運行
完成環境配置和模型下載工作后可以直接開始進行模型的運行測試工作了,在終端切換到對應環境后,輸入python進行python代碼編譯界面,然后依次輸入以下代碼:
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
model = model.
其中,AutoTokenizer.from_pretrained() 是Hugging Face Transformers 庫中的一種方法,它允許加載一個特定模型架構的預訓練分詞器。該方法接受模型名稱作為字符串,并返回相應分詞器類的實例,使用該模型的正確設置進行初始化,可以節省時間和精力,中間需要花費一些時間,靜靜等待一下就行。
模型加載完畢就可以進行測試了,輸入如下代碼即可得到對應的輸出。
response, history = model.chat(tokenizer, "輸入內容", history=[])
接下來就可以開始愉快的測試啦!