我在Windows 10上成功運(yùn)行ChatGLM-6B對(duì)話語(yǔ)言模型,附詳細(xì)過(guò)程
ChatGLM-6B是一個(gè)基于General Language Model (GLM)架構(gòu)的開源對(duì)話語(yǔ)言模型,支持中英雙語(yǔ)。該模型使用了和ChatGPT類似的技術(shù)進(jìn)行優(yōu)化,經(jīng)過(guò)1T標(biāo)識(shí)符的中英雙語(yǔ)訓(xùn)練,同時(shí)輔以監(jiān)督微調(diào)、反饋?zhàn)灾腿祟惙答亸?qiáng)化學(xué)習(xí)等技術(shù),共有62億參數(shù)。
ChatGLM-6B由清華大學(xué) KEG 實(shí)驗(yàn)室和智譜AI共同開發(fā),通過(guò)模型量化技術(shù),用戶可以在消費(fèi)級(jí)顯卡上進(jìn)行本地部署(INT4量化級(jí)別下最低只需6GB顯存)。
ChatGLM-6B可以簡(jiǎn)單的理解為本地私有部署的弱化版ChatGPT。
經(jīng)過(guò)多次嘗試,xiaoz終于成功地在Windows 10上運(yùn)行了ChatGLM-6B對(duì)話語(yǔ)言模型。在此記錄并分享整個(gè)過(guò)程。

閱讀基礎(chǔ)
本文適合對(duì)人工智能感興趣的研究人員閱讀,需要一定的編程基礎(chǔ)和計(jì)算機(jī)基礎(chǔ)。如果您熟悉Python編程語(yǔ)言,那就更能夠更好地理解本文。
硬件 & 軟件準(zhǔn)備
ChatGLM-6B對(duì)軟硬件都有一定的要求,以下是xiaoz的硬件信息:
CPU:AMD 3600
內(nèi)存:DDR4 16GB
顯卡:RTX 3050(8GB)
軟件環(huán)境:
操作系統(tǒng):Windows 10,也可以是其它操作系統(tǒng)
安裝Git工具
安裝Python,我的版本為
3.10
安裝英偉達(dá)驅(qū)動(dòng)程序
這篇文章假設(shè)您有具有一定的編程基礎(chǔ)和計(jì)算機(jī)基礎(chǔ),因此并不會(huì)詳細(xì)介紹上述軟件工具的安裝和使用,如果您對(duì)此并不熟悉,建議直接放棄閱讀。
部署ChatGLM-6B
ChatGLM-6B已在Github開源:https://github.com/THUDM/ChatGLM-6B
首先需要使用Git克隆代碼:
git clone https://github.com/THUDM/ChatGLM-6B.git
接下來(lái)我將pip設(shè)置為了阿里鏡像源,方便我之后的步驟能更順利的安裝Python各種依賴庫(kù),命令為:
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip config set install.trusted-host mirrors.aliyun.com
然后進(jìn)入ChatGLM-6B
目錄,在命令行安裝Python需要的依賴,執(zhí)行命令:
pip install -r requirements.txt
接下來(lái)是下載模型,由于xiaoz的顯卡比較弱,所以xiaoz這里選擇了 4-bit量化模型,建議提前下載好模型,內(nèi)置的Python腳本下載很容易失敗,且速度較慢。
作者將模型托管在“Hugging Face Hub”,我們需要先從上面下載模型,xiaoz這里選擇的“4-bit量化模型”,執(zhí)行的命令如下:
git clone -b int4 https://huggingface.co/THUDM/chatglm-6b.git
這里面pytorch_model.bin
文件比較大,如果您git命令拉取較慢,或者失敗了,可以嘗試手動(dòng)下載pytorch_model.bin
,然后放到本地倉(cāng)庫(kù)目錄即可。

注意:這里存在一個(gè)坑,你不能只下載.bin
文件,需要將里面的.json/.py
等文件一起下載并放到一個(gè)目錄,建議是Git拉取整個(gè)倉(cāng)庫(kù),然后手動(dòng)下載.bin
合并到一個(gè)文件夾下。
運(yùn)行ChatGLM-6B
進(jìn)入Python終端,我們開始運(yùn)行ChatGLM-6B模型,執(zhí)行的命令如下:
# 指定模型的位置,就是你在Hugging Face Hub上克隆下來(lái)那個(gè)模型mypath="D:/apps\ChatGLM-6B\model\int4\chatglm-6b"# 導(dǎo)入依賴from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained(mypath, trust_remote_code=True)
model = AutoModel.from_pretrained(mypath, trust_remote_code=True).half().cuda()
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)

運(yùn)行過(guò)程中,并非我想象中的那么順利,我遇到了一個(gè)
Torch not compiled with CUDA enabled
這樣的報(bào)錯(cuò),最后參考這個(gè):issues?解決了。
解決辦法是先執(zhí)行命令:
python -c "import torch; print(torch.cuda.is_available())"
如果返回False
,說(shuō)明安裝的PyTorch不支持CUDA,然后xiaoz執(zhí)行了下面的命令:
pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 -f https://download.pytorch.org/whl/cu118/torch_stable.html
最后就沒報(bào)錯(cuò)了。當(dāng)然,每個(gè)人的硬件和軟件都不一樣,遇到的報(bào)錯(cuò)可能也不一樣,總之靈活變通就行了。
命令行測(cè)試ChatGLM-6B
跑個(gè)4-bit量化模型也比較吃力,3050的8G顯存很容易給我干爆,而且響應(yīng)速度感覺也比較慢。(圖片可點(diǎn)擊放大)

官方倉(cāng)庫(kù)里面還提供了WEB和API的運(yùn)行方式,WEB運(yùn)行方式遇到點(diǎn)報(bào)錯(cuò),暫時(shí)還沒去解決,上述使用CLI運(yùn)行方式是沒問題的。
補(bǔ)充說(shuō)明
要查看自己安裝的PyTorch版本,可以在Python交互環(huán)境中輸入以下代碼:
import torch
print(torch.__version__)
如果結(jié)果顯示的x.x.x+cpu
可能會(huì)導(dǎo)致不支持,參考上面的“Torch not compiled with CUDA enabled”報(bào)錯(cuò)解決即可。
再次查看 PyTorch 版本,若顯示+cuxxx
,則說(shuō)明支持 GPU,也就是說(shuō)不支持 CPU 的+cpu
版本不可用,只可用支持 GPU 的+cu版本。
個(gè)人感受
我與ChatGLM-6B進(jìn)行了一些簡(jiǎn)短的對(duì)話,個(gè)人感覺效果不錯(cuò)。雖然整體上不如ChatGTP,但ChatGLM-6B由國(guó)內(nèi)開發(fā)團(tuán)隊(duì)開源,并且可以在消費(fèi)級(jí)顯卡上運(yùn)行,我必須給予好評(píng)和點(diǎn)贊。希望團(tuán)隊(duì)繼續(xù)努力,迎頭趕上ChatGTP。
ChatGLM-6B開源地址:https://github.com/THUDM/ChatGLM-6B
內(nèi)容首發(fā)于我的獨(dú)立博客:https://blog.xiaoz.org/archives/18556
建議前往原文閱讀更佳!