三步快速部署一个本地Windows/Linux大语言模型ChatGLM(环境配置+权重下载+运行)

发布于:2025-05-25 ⋅ 阅读:(22) ⋅ 点赞:(0)

前言:

        最近刚拿到实验室一个装了3张3090显卡的服务器账号,感觉不用来霍霍有点浪费,于是有了部署一个大语言模型的想法,除去下载权重和传文件到服务器上可能也就用了十分钟不到(这下看懂为啥python受众现在这么广了,只需要安装虚拟环境加执行pip install -r requirement就行,java maven考虑的就很多了,当然docker下众生平等),效果见下图。

显存占用:(12GB以上,3060以上应该没问题)


模型介绍:

        ChatGLM是由清华大学和智谱AI联合研发的一系列支持中英双语对话的大语言模型,以其高效性能、开源特性和广泛适用性在业界备受关注。该系列模型基于GLM架构,通过大规模中英双语训练(数据规模达1T token),在中文任务上表现尤为突出。从2023年3月推出的ChatGLM-6B开始,到后续迭代的ChatGLM2和ChatGLM3,模型在推理效率、多轮对话、代码生成与执行、多模态理解等方面持续优化。ChatGLM3进一步增强了代码解释、网络搜索、Agent任务规划等能力,并支持长文本处理(32K上下文)。其低部署门槛(如INT4量化仅需6GB显存)使其能够适配消费级显卡和国产芯片(如昇腾、海光DCU),同时通过监督微调和强化学习技术实现更符合人类偏好的回答。应用场景覆盖教育、客服、编程辅助等,并已与腾讯轻联等平台集成,支持企业级应用。全系列开源策略和国产硬件适配(如手机端部署)使其成为国产大模型的代表性产品之一。


一、环境配置:

        首先确保你的Windows主机或Linux服务器安装了Anaconda,Windows这方面博客应该挺多,Linux可以参考下面博客,配置也是十分简易,差不多十分钟能弄完。

Linux服务器配置深度学习环境(Pytorch+Anaconda极简版)-CSDN博客https://blog.csdn.net/wlf2030/article/details/148098287?spm=1001.2014.3001.5501anaconda安装后,创建虚拟环境chatgpt:这里使用python3.8

conda create --name chatgpt python=3.8

创建后激活

Linux:

source activate chatgpt

Windows:

activate
conda activate chatgpt

需要安装一些库,这里提供三种方式:

1.官方版

官方链接如下:

THUDM/ChatGLM-6B: ChatGLM-6B: An Open Bilingual Dialogue Language Model | 开源双语对话语言模型https://github.com/THUDM/ChatGLM-6B

2.网盘版

2025年5月22日的版本,也是本博客所用的版本

ChatGLM-6B-main.zip_免费高速下载|百度网盘-分享无限制https://pan.baidu.com/s/1IH49yQgmKHBDAzNWo5GUmg?pwd=6666

3.简易版

因为这个git仓库实际上有用的只有requirement.txt,剩余的均为模型调用的一些demo.py文件,所以只需要两个文件即可。

requirement.txt:

protobuf
transformers==4.27.1
cpm_kernels
torch>=1.10
gradio
mdtex2html
sentencepiece
accelerate

cli_demo.py

import os
import platform
import signal
from transformers import AutoTokenizer, AutoModel
import readline

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.eval()

os_name = platform.system()
clear_command = 'cls' if os_name == 'Windows' else 'clear'
stop_stream = False


def build_prompt(history):
    prompt = "欢迎使用 ChatGLM-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序"
    for query, response in history:
        prompt += f"\n\n用户:{query}"
        prompt += f"\n\nChatGLM-6B:{response}"
    return prompt


def signal_handler(signal, frame):
    global stop_stream
    stop_stream = True


def main():
    history = []
    global stop_stream
    print("欢迎使用 ChatGLM-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序")
    while True:
        query = input("\n用户:")
        if query.strip() == "stop":
            break
        if query.strip() == "clear":
            history = []
            os.system(clear_command)
            print("欢迎使用 ChatGLM-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序")
            continue
        count = 0
        for response, history in model.stream_chat(tokenizer, query, history=history):
            if stop_stream:
                stop_stream = False
                break
            else:
                count += 1
                if count % 8 == 0:
                    os.system(clear_command)
                    print(build_prompt(history), flush=True)
                    signal.signal(signal.SIGINT, signal_handler)
        os.system(clear_command)
        print(build_prompt(history), flush=True)


if __name__ == "__main__":
    main()

下载好后,命令行到requirement.txt的根目录下,linux就一路cd,windows打开对应文件夹然后输入cmd,linux激活一次anaconda后面就全局激活不用管了,windows打开后还需要重复一遍上面激活的两行命令。

pip install -r requirements.txt

等待安装完毕即可,可选输入下面命令查看conda安装的所有库和对应版本。

conda list

版本如下:

(chatgpt) wlf@3090-2:~/project/ChatGLM-6B-main$ conda list
# packages in environment at /home/wlf/anaconda3/envs/chatgpt:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                        main  
_openmp_mutex             5.1                       1_gnu  
accelerate                1.0.1                    pypi_0    pypi
aiofiles                  23.2.1                   pypi_0    pypi
annotated-types           0.7.0                    pypi_0    pypi
anyio                     4.5.2                    pypi_0    pypi
ca-certificates           2025.2.25            h06a4308_0  
certifi                   2025.4.26                pypi_0    pypi
charset-normalizer        3.4.2                    pypi_0    pypi
click                     8.1.8                    pypi_0    pypi
contourpy                 1.1.1                    pypi_0    pypi
cpm-kernels               1.0.11                   pypi_0    pypi
cycler                    0.12.1                   pypi_0    pypi
exceptiongroup            1.3.0                    pypi_0    pypi
fastapi                   0.115.12                 pypi_0    pypi
ffmpy                     0.5.0                    pypi_0    pypi
filelock                  3.16.1                   pypi_0    pypi
fonttools                 4.57.0                   pypi_0    pypi
fsspec                    2025.3.0                 pypi_0    pypi
gradio                    4.44.1                   pypi_0    pypi
gradio-client             1.3.0                    pypi_0    pypi
h11                       0.16.0                   pypi_0    pypi
httpcore                  1.0.9                    pypi_0    pypi
httpx                     0.28.1                   pypi_0    pypi
huggingface-hub           0.31.4                   pypi_0    pypi
idna                      3.10                     pypi_0    pypi
importlib-metadata        8.5.0                    pypi_0    pypi
importlib-resources       6.4.5                    pypi_0    pypi
jinja2                    3.1.6                    pypi_0    pypi
kiwisolver                1.4.7                    pypi_0    pypi
latex2mathml              3.77.0                   pypi_0    pypi
ld_impl_linux-64          2.40                 h12ee557_0  
libffi                    3.4.4                h6a678d5_1  
libgcc-ng                 11.2.0               h1234567_1  
libgomp                   11.2.0               h1234567_1  
libstdcxx-ng              11.2.0               h1234567_1  
markdown                  3.7                      pypi_0    pypi
markdown-it-py            3.0.0                    pypi_0    pypi
markupsafe                2.1.5                    pypi_0    pypi
matplotlib                3.7.5                    pypi_0    pypi
mdtex2html                1.3.1                    pypi_0    pypi
mdurl                     0.1.2                    pypi_0    pypi
mpmath                    1.3.0                    pypi_0    pypi
ncurses                   6.4                  h6a678d5_0  
networkx                  3.1                      pypi_0    pypi
numpy                     1.24.4                   pypi_0    pypi
nvidia-cublas-cu12        12.1.3.1                 pypi_0    pypi
nvidia-cuda-cupti-cu12    12.1.105                 pypi_0    pypi
nvidia-cuda-nvrtc-cu12    12.1.105                 pypi_0    pypi
nvidia-cuda-runtime-cu12  12.1.105                 pypi_0    pypi
nvidia-cudnn-cu12         9.1.0.70                 pypi_0    pypi
nvidia-cufft-cu12         11.0.2.54                pypi_0    pypi
nvidia-curand-cu12        10.3.2.106               pypi_0    pypi
nvidia-cusolver-cu12      11.4.5.107               pypi_0    pypi
nvidia-cusparse-cu12      12.1.0.106               pypi_0    pypi
nvidia-nccl-cu12          2.20.5                   pypi_0    pypi
nvidia-nvjitlink-cu12     12.9.41                  pypi_0    pypi
nvidia-nvtx-cu12          12.1.105                 pypi_0    pypi
openssl                   3.0.16               h5eee18b_0  
orjson                    3.10.15                  pypi_0    pypi
packaging                 25.0                     pypi_0    pypi
pandas                    2.0.3                    pypi_0    pypi
pillow                    10.4.0                   pypi_0    pypi
pip                       24.2             py38h06a4308_0  
protobuf                  5.29.4                   pypi_0    pypi
psutil                    7.0.0                    pypi_0    pypi
pydantic                  2.10.6                   pypi_0    pypi
pydantic-core             2.27.2                   pypi_0    pypi
pydub                     0.25.1                   pypi_0    pypi
pygments                  2.19.1                   pypi_0    pypi
pyparsing                 3.1.4                    pypi_0    pypi
python                    3.8.20               he870216_0  
python-dateutil           2.9.0.post0              pypi_0    pypi
python-multipart          0.0.20                   pypi_0    pypi
pytz                      2025.2                   pypi_0    pypi
pyyaml                    6.0.2                    pypi_0    pypi
readline                  8.2                  h5eee18b_0  
regex                     2024.11.6                pypi_0    pypi
requests                  2.32.3                   pypi_0    pypi
rich                      14.0.0                   pypi_0    pypi
ruff                      0.11.10                  pypi_0    pypi
safetensors               0.5.3                    pypi_0    pypi
semantic-version          2.10.0                   pypi_0    pypi
sentencepiece             0.2.0                    pypi_0    pypi
setuptools                75.1.0           py38h06a4308_0  
shellingham               1.5.4                    pypi_0    pypi
six                       1.17.0                   pypi_0    pypi
sniffio                   1.3.1                    pypi_0    pypi
sqlite                    3.45.3               h5eee18b_0  
starlette                 0.44.0                   pypi_0    pypi
sympy                     1.13.3                   pypi_0    pypi
tk                        8.6.14               h39e8969_0  
tokenizers                0.13.3                   pypi_0    pypi
tomlkit                   0.12.0                   pypi_0    pypi
torch                     2.4.1                    pypi_0    pypi
tqdm                      4.67.1                   pypi_0    pypi
transformers              4.27.1                   pypi_0    pypi
triton                    3.0.0                    pypi_0    pypi
typer                     0.15.4                   pypi_0    pypi
typing-extensions         4.13.2                   pypi_0    pypi
tzdata                    2025.2                   pypi_0    pypi
urllib3                   2.2.3                    pypi_0    pypi
uvicorn                   0.33.0                   pypi_0    pypi
websockets                12.0                     pypi_0    pypi
wheel                     0.44.0           py38h06a4308_0  
xz                        5.6.4                h5eee18b_1  
zipp                      3.20.2                   pypi_0    pypi
zlib                      1.2.13               h5eee18b_1  

二、权重下载:

1.好运版

如果你的主机和服务器能够直接连接外网的话,理论上直接执行上面的cli_demo.py文件程序会自动从huggingface上下载权重并能直接执行。

python cli_demo.py

2.正常版

当然学校服务器内网不太可能直接访问外网,所以官方也有解决方案,具体如下,先下载git large file storage,因为权重十几个G传统git无法clone,git large file storage链接如下:

Git Large File Storage | Git Large File Storage (LFS) replaces large files such as audio samples, videos, datasets, and graphics with text pointers inside Git, while storing the file contents on a remote server like GitHub.com or GitHub Enterprise.https://git-lfs.com/不太确定是否在不下git的时候也能正常使用,因为安装的时候它报了个警告说我的git安装在D盘不在系统文件目录下,是可疑的,是否信任该git,如果你看到这个警告选择信任即可。

然后就和正常git使用一样,就能下载权重部分的文件了

git clone https://huggingface.co/THUDM/chatglm-6b

3.直接版

当然如果你嫌正常官方版本太麻烦还需要安这安那,那也可以直接去对应仓库一个个文件下载,仓库链接如下:

THUDM/chatglm-6b at mainhttps://huggingface.co/THUDM/chatglm-6b/tree/main

下载的按钮在上图框框中间,强烈建议一个个文件下载,否则全下一半来个网络问题就知道有多无语了,如果你出现下载出错情况,重新下载时注意下载的文件名称是否与原来一致,因为浏览器重新下载时会自动把文件名后面加个(1),但配置中指定了文件名所以需要保持一致。

4.保底版

如果很不幸因为网络问题下载不了,也可以直接使用下面的网盘链接,注意这个和上面的链接东西不一样。

chatglm-6b.zip_免费高速下载|百度网盘-分享无限制https://pan.baidu.com/s/1GoQt25nBfvwPafcVGkBfjg?pwd=6666


三、运行

打开之前第一次下载的cli_demo.py文件,将其中的THUDM/chatglm-6b替换为你本机上chatglm-6b路径。

替换后如下效果:

然后执行这个python文件即可

python cli_demo.py

就能看到下面效果:


最后:

        当模型权重开源后,部署一个模型远比训练一个模型要简单,对这些开源的同僚们致以最高的敬意,后续可能会研究如何微调这个模型可以关注一下。


网站公告

今日签到

点亮在社区的每一天
去签到