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

[复制链接]
发表于 2025-5-24 21:40:16 | 显示全部楼层 |阅读模式
前言:

        最近刚拿到实验室一个装了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
  1. conda create --name chatgpt python=3.8
复制代码
创建后激活
Linux:
  1. source activate chatgpt
复制代码
Windows:
  1. activate
复制代码
  1. 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:
  1. protobuf
  2. transformers==4.27.1
  3. cpm_kernels
  4. torch>=1.10
  5. gradio
  6. mdtex2html
  7. sentencepiece
  8. accelerate
复制代码
cli_demo.py
  1. import os
  2. import platform
  3. import signal
  4. from transformers import AutoTokenizer, AutoModel
  5. import readline
  6. tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
  7. model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
  8. model = model.eval()
  9. os_name = platform.system()
  10. clear_command = 'cls' if os_name == 'Windows' else 'clear'
  11. stop_stream = False
  12. def build_prompt(history):
  13.     prompt = "欢迎使用 ChatGLM-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序"
  14.     for query, response in history:
  15.         prompt += f"\n\n用户:{query}"
  16.         prompt += f"\n\nChatGLM-6B:{response}"
  17.     return prompt
  18. def signal_handler(signal, frame):
  19.     global stop_stream
  20.     stop_stream = True
  21. def main():
  22.     history = []
  23.     global stop_stream
  24.     print("欢迎使用 ChatGLM-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序")
  25.     while True:
  26.         query = input("\n用户:")
  27.         if query.strip() == "stop":
  28.             break
  29.         if query.strip() == "clear":
  30.             history = []
  31.             os.system(clear_command)
  32.             print("欢迎使用 ChatGLM-6B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序")
  33.             continue
  34.         count = 0
  35.         for response, history in model.stream_chat(tokenizer, query, history=history):
  36.             if stop_stream:
  37.                 stop_stream = False
  38.                 break
  39.             else:
  40.                 count += 1
  41.                 if count % 8 == 0:
  42.                     os.system(clear_command)
  43.                     print(build_prompt(history), flush=True)
  44.                     signal.signal(signal.SIGINT, signal_handler)
  45.         os.system(clear_command)
  46.         print(build_prompt(history), flush=True)
  47. if __name__ == "__main__":
  48.     main()
复制代码
下载好后,命令行到requirement.txt的根目次下,linux就一路cd,windows打开对应文件夹然后输入cmd,linux激活一次anaconda背面就全局激活不消管了,windows打开后还需要重复一遍上面激活的两行命令。
  1. pip install -r requirements.txt
复制代码
等候安装完毕即可,可选输入下面命令检察conda安装的所有库和对应版本
  1. conda list
复制代码
版本如下:
  1. (chatgpt) wlf@3090-2:~/project/ChatGLM-6B-main$ conda list
  2. # packages in environment at /home/wlf/anaconda3/envs/chatgpt:
  3. #
  4. # Name                    Version                   Build  Channel
  5. _libgcc_mutex             0.1                        main  
  6. _openmp_mutex             5.1                       1_gnu  
  7. accelerate                1.0.1                    pypi_0    pypi
  8. aiofiles                  23.2.1                   pypi_0    pypi
  9. annotated-types           0.7.0                    pypi_0    pypi
  10. anyio                     4.5.2                    pypi_0    pypi
  11. ca-certificates           2025.2.25            h06a4308_0  
  12. certifi                   2025.4.26                pypi_0    pypi
  13. charset-normalizer        3.4.2                    pypi_0    pypi
  14. click                     8.1.8                    pypi_0    pypi
  15. contourpy                 1.1.1                    pypi_0    pypi
  16. cpm-kernels               1.0.11                   pypi_0    pypi
  17. cycler                    0.12.1                   pypi_0    pypi
  18. exceptiongroup            1.3.0                    pypi_0    pypi
  19. fastapi                   0.115.12                 pypi_0    pypi
  20. ffmpy                     0.5.0                    pypi_0    pypi
  21. filelock                  3.16.1                   pypi_0    pypi
  22. fonttools                 4.57.0                   pypi_0    pypi
  23. fsspec                    2025.3.0                 pypi_0    pypi
  24. gradio                    4.44.1                   pypi_0    pypi
  25. gradio-client             1.3.0                    pypi_0    pypi
  26. h11                       0.16.0                   pypi_0    pypi
  27. httpcore                  1.0.9                    pypi_0    pypi
  28. httpx                     0.28.1                   pypi_0    pypi
  29. huggingface-hub           0.31.4                   pypi_0    pypi
  30. idna                      3.10                     pypi_0    pypi
  31. importlib-metadata        8.5.0                    pypi_0    pypi
  32. importlib-resources       6.4.5                    pypi_0    pypi
  33. jinja2                    3.1.6                    pypi_0    pypi
  34. kiwisolver                1.4.7                    pypi_0    pypi
  35. latex2mathml              3.77.0                   pypi_0    pypi
  36. ld_impl_linux-64          2.40                 h12ee557_0  
  37. libffi                    3.4.4                h6a678d5_1  
  38. libgcc-ng                 11.2.0               h1234567_1  
  39. libgomp                   11.2.0               h1234567_1  
  40. libstdcxx-ng              11.2.0               h1234567_1  
  41. markdown                  3.7                      pypi_0    pypi
  42. markdown-it-py            3.0.0                    pypi_0    pypi
  43. markupsafe                2.1.5                    pypi_0    pypi
  44. matplotlib                3.7.5                    pypi_0    pypi
  45. mdtex2html                1.3.1                    pypi_0    pypi
  46. mdurl                     0.1.2                    pypi_0    pypi
  47. mpmath                    1.3.0                    pypi_0    pypi
  48. ncurses                   6.4                  h6a678d5_0  
  49. networkx                  3.1                      pypi_0    pypi
  50. numpy                     1.24.4                   pypi_0    pypi
  51. nvidia-cublas-cu12        12.1.3.1                 pypi_0    pypi
  52. nvidia-cuda-cupti-cu12    12.1.105                 pypi_0    pypi
  53. nvidia-cuda-nvrtc-cu12    12.1.105                 pypi_0    pypi
  54. nvidia-cuda-runtime-cu12  12.1.105                 pypi_0    pypi
  55. nvidia-cudnn-cu12         9.1.0.70                 pypi_0    pypi
  56. nvidia-cufft-cu12         11.0.2.54                pypi_0    pypi
  57. nvidia-curand-cu12        10.3.2.106               pypi_0    pypi
  58. nvidia-cusolver-cu12      11.4.5.107               pypi_0    pypi
  59. nvidia-cusparse-cu12      12.1.0.106               pypi_0    pypi
  60. nvidia-nccl-cu12          2.20.5                   pypi_0    pypi
  61. nvidia-nvjitlink-cu12     12.9.41                  pypi_0    pypi
  62. nvidia-nvtx-cu12          12.1.105                 pypi_0    pypi
  63. openssl                   3.0.16               h5eee18b_0  
  64. orjson                    3.10.15                  pypi_0    pypi
  65. packaging                 25.0                     pypi_0    pypi
  66. pandas                    2.0.3                    pypi_0    pypi
  67. pillow                    10.4.0                   pypi_0    pypi
  68. pip                       24.2             py38h06a4308_0  
  69. protobuf                  5.29.4                   pypi_0    pypi
  70. psutil                    7.0.0                    pypi_0    pypi
  71. pydantic                  2.10.6                   pypi_0    pypi
  72. pydantic-core             2.27.2                   pypi_0    pypi
  73. pydub                     0.25.1                   pypi_0    pypi
  74. pygments                  2.19.1                   pypi_0    pypi
  75. pyparsing                 3.1.4                    pypi_0    pypi
  76. python                    3.8.20               he870216_0  
  77. python-dateutil           2.9.0.post0              pypi_0    pypi
  78. python-multipart          0.0.20                   pypi_0    pypi
  79. pytz                      2025.2                   pypi_0    pypi
  80. pyyaml                    6.0.2                    pypi_0    pypi
  81. readline                  8.2                  h5eee18b_0  
  82. regex                     2024.11.6                pypi_0    pypi
  83. requests                  2.32.3                   pypi_0    pypi
  84. rich                      14.0.0                   pypi_0    pypi
  85. ruff                      0.11.10                  pypi_0    pypi
  86. safetensors               0.5.3                    pypi_0    pypi
  87. semantic-version          2.10.0                   pypi_0    pypi
  88. sentencepiece             0.2.0                    pypi_0    pypi
  89. setuptools                75.1.0           py38h06a4308_0  
  90. shellingham               1.5.4                    pypi_0    pypi
  91. six                       1.17.0                   pypi_0    pypi
  92. sniffio                   1.3.1                    pypi_0    pypi
  93. sqlite                    3.45.3               h5eee18b_0  
  94. starlette                 0.44.0                   pypi_0    pypi
  95. sympy                     1.13.3                   pypi_0    pypi
  96. tk                        8.6.14               h39e8969_0  
  97. tokenizers                0.13.3                   pypi_0    pypi
  98. tomlkit                   0.12.0                   pypi_0    pypi
  99. torch                     2.4.1                    pypi_0    pypi
  100. tqdm                      4.67.1                   pypi_0    pypi
  101. transformers              4.27.1                   pypi_0    pypi
  102. triton                    3.0.0                    pypi_0    pypi
  103. typer                     0.15.4                   pypi_0    pypi
  104. typing-extensions         4.13.2                   pypi_0    pypi
  105. tzdata                    2025.2                   pypi_0    pypi
  106. urllib3                   2.2.3                    pypi_0    pypi
  107. uvicorn                   0.33.0                   pypi_0    pypi
  108. websockets                12.0                     pypi_0    pypi
  109. wheel                     0.44.0           py38h06a4308_0  
  110. xz                        5.6.4                h5eee18b_1  
  111. zipp                      3.20.2                   pypi_0    pypi
  112. zlib                      1.2.13               h5eee18b_1  
复制代码

二、权重下载:

1.好运版

如果你的主机和服务器能够直接连接外网的话,理论上直接实行上面的cli_demo.py文件程序会自动从huggingface上下载权重并能直接实行。
  1. 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使用一样,就能下载权重部分的文件了
  1. git clone https://huggingface.co/THUDM/chatglm-6b
复制代码
3.直接版

当然如果你嫌正常官方版本太贫苦还需要安这安那,那也可以直接去对应仓库一个个文件下载,仓库链接如下:
THUDM/chatglm-6b at main
https://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文件即可
  1. python cli_demo.py
复制代码
就能看到下面效果:


最后:

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5

GMT+8, 2025-7-10 02:39 , Processed in 0.090819 second(s), 31 queries 手机版|qidao123.com技术社区-IT企服评测▪应用市场 ( 浙ICP备20004199 )|网站地图

快速回复 返回顶部 返回列表