小白必看!ChatGLM3-6B保姆级安装教程(附Docker镜像)
1. 为什么你需要这个本地智能助手?
你是不是也遇到过这些问题:
- 想用大模型写周报、改文案、查代码,却总被API调用限制卡住?
- 在线服务响应慢、对话断连、隐私数据上传到不明服务器?
- 下载模型动辄几十GB,配环境像解谜——PyTorch版本对不上、Transformers报错、Streamlit和Gradio冲突到崩溃?
别折腾了。今天这篇教程,就是为你量身定制的「零踩坑」方案。
我们不讲抽象原理,不堆技术参数,只做一件事:让你在一台装了RTX 4090D(或同级别显卡)的机器上,30分钟内跑起一个真正好用、丝滑稳定、完全私有的ChatGLM3-6B对话系统。它不是网页Demo,不是云端试用版,而是真正在你本地显存里加载、32k上下文不丢记忆、刷新页面不用重载模型、打字一样流式输出的“桌面级AI助手”。
更重要的是——它已经打包成开箱即用的Docker镜像。你不需要从git clone开始,不用手动pip install一百遍,更不用查“ModuleNotFoundError: No module named 'xxx'”这种报错。本教程提供两条路径:
推荐路径:直接加载预构建镜像(适合95%的新手)
进阶路径:从零构建镜像(适合想理解每一步的同学)
下面,咱们就从最基础的准备开始,一步一截图(文字描述),手把手带你落地。
2. 前置条件检查:三件事,缺一不可
在敲任何命令前,请先确认你的机器已满足以下三个硬性条件。少一个,后续步骤都会失败。
2.1 Docker 已正确安装并可运行
打开终端,执行:
docker --version正常应返回类似Docker version 24.0.7, build afdd53b。
如果提示command not found,请先安装Docker:
→ Ubuntu/Debian:sudo apt update && sudo apt install docker.io
→ CentOS/RHEL:sudo yum install -y docker
→ 安装后务必启动服务:sudo systemctl start docker && sudo systemctl enable docker
→ 验证权限:sudo usermod -aG docker $USER,然后退出终端重新登录
2.2 NVIDIA驱动与nvidia-container-toolkit已就绪
本镜像依赖GPU加速,必须能识别显卡并分配算力。执行:
nvidia-smi你应该看到类似下图的显卡信息(重点看右上角CUDA Version ≥ 11.7,以及GPU名称如RTX 4090D):
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 535.129.03 Driver Version: 535.129.03 CUDA Version: 12.2 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 NVIDIA RTX 4090D Off | 00000000:01:00.0 On | N/A | | 30% 38C P8 24W / 350W | 1234MiB / 24564MiB | 0% Default | +-------------------------------+----------------------+----------------------+若命令不存在或报错,请按官方指南安装NVIDIA驱动:https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/index.html
驱动装好后,还需安装容器工具包:
# Ubuntu/Debian curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker2.3 显存≥16GB,且为NVIDIA消费级或计算卡
ChatGLM3-6B-32k模型加载需约14–15GB显存(FP16精度)。RTX 4090D(24GB)、4090(24GB)、A10(24GB)、A100(40GB)均完美支持。
注意:RTX 3090(24GB)可运行但可能偶发OOM;RTX 3060(12GB)及以下显卡无法运行本镜像,请勿尝试。
确认以上三项全部通过,我们进入正题。
3. 推荐方案:一键加载预构建Docker镜像(新手首选)
这是最快、最稳、成功率最高的方式。整个过程只需4个命令,5分钟搞定。
3.1 下载镜像文件(含模型权重)
镜像已打包为单个.tar文件,包含:
- 完整的Ubuntu 22.04基础环境
- PyTorch 2.0.1 + CUDA 11.7 + cuDNN 8
- Transformers 4.40.2(黄金稳定版,规避新版Tokenizer兼容问题)
- Streamlit 1.32.0(轻量无冲突)
- ChatGLM3-6B-32k模型权重(已量化优化,加载快、显存省)
- 预配置好的Web Demo(
basic_demo/web_demo2.py)
下载地址(百度网盘,分卷压缩):
链接:https://pan.baidu.com/s/1wY3QqaWrMyBR39d2ZhN_Kg
提取码:9zdd
下载后你会得到3个文件:
chatglm3-6b.tar.001chatglm3-6b.tar.002chatglm3-6b.tar.003
将它们放在同一目录下,然后执行解压(Linux/macOS):
cat chatglm3-6b.tar.* | tar -xvf -Windows用户可用7-Zip等支持分卷的解压工具,解压出chatglm3-6b.tar单一文件。
3.2 加载镜像到本地Docker
确保你当前终端位于解压出的chatglm3-6b.tar所在目录,执行:
docker load -i chatglm3-6b.tar等待几秒,看到类似输出即成功:
Loaded image: chatglm3-6b:1.1验证是否加载成功:
docker images | grep chatglm3应显示:
chatglm3-6b 1.1 abc123def456 2 days ago 12.4GB3.3 启动容器并映射端口
执行以下命令启动容器(请将/path/to/your/ChatGLM3替换为你本地存放ChatGLM3代码的绝对路径,如/home/user/ChatGLM3):
docker run -itd \ --name chatglm3 \ --gpus=all \ -e NVIDIA_DRIVER_CAPABILITIES=compute,utility \ -e NVIDIA_VISIBLE_DEVICES=all \ -v /path/to/your/ChatGLM3:/data \ -p 8501:8501 \ -p 8000:8000 \ chatglm3-6b:1.1关键参数说明:
--gpus=all:让容器使用全部GPU-v /path/to/your/ChatGLM3:/data:将你本地代码目录挂载为容器内/data,方便后续修改Demo或微调-p 8501:8501:Streamlit Web界面端口(必须)-p 8000:8000:OpenAI兼容API端口(可选,用于程序调用)
启动后,用docker ps查看容器状态,STATUS列应显示Up X seconds。
3.4 进入容器并启动Web服务
docker exec -it chatglm3 bash你已进入容器内部。现在启动Streamlit服务:
cd /data streamlit run basic_demo/web_demo2.py --server.port=8501 --server.address=0.0.0.0你会看到类似输出:
You can now view your Streamlit app in your browser. Network URL: http://0.0.0.0:8501成功!打开浏览器,访问http://你的服务器IP:8501(例如http://192.168.1.100:8501),即可看到清爽的对话界面。
小贴士:首次访问可能需10–20秒加载模型(仅第一次),之后所有刷新都秒开,因为模型已驻留内存。
4. 进阶方案:从零构建Docker镜像(适合想知其所以然者)
如果你希望完全掌控构建过程,或需要定制依赖(如更换Python版本、添加新库),可按此路径操作。全程无需下载模型文件,镜像构建时自动拉取。
4.1 准备工作目录结构
新建一个空文件夹,例如glm3-docker-build,并在其中创建以下结构:
glm3-docker-build/ ├── Dockerfile ├── requirements.txt └── start.sh4.2 编写Dockerfile
创建Dockerfile,内容如下(已针对稳定性深度优化):
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-devel # 设置国内源加速 RUN pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ && \ pip config set install.trusted-host mirrors.aliyun.com # 安装核心依赖(锁定黄金版本) RUN pip install --no-cache-dir \ transformers==4.40.2 \ streamlit==1.32.0 \ sentencepiece==0.1.99 \ accelerate==0.27.2 \ torch==2.0.1+cu117 -f https://download.pytorch.org/whl/torch_stable.html # 创建工作目录 WORKDIR /data # 复制启动脚本 COPY start.sh /start.sh RUN chmod +x /start.sh # 暴露端口 EXPOSE 8501 8000 # 启动命令 CMD ["/start.sh"]4.3 编写requirements.txt(可选,本例已内置)
若你有额外Python依赖,可在此文件中列出。本镜像已内置全部必需依赖,故该文件可为空。
4.4 编写启动脚本start.sh
创建start.sh,内容为:
#!/bin/bash # 自动加载模型并启动Streamlit echo " 正在加载ChatGLM3-6B-32k模型(约15GB,请稍候...)" cd /data streamlit run basic_demo/web_demo2.py --server.port=8501 --server.address=0.0.0.04.5 构建并运行镜像
确保你当前在glm3-docker-build目录下,执行:
docker build -t chatglm3-6b:custom .构建耗时约8–12分钟(取决于网络速度,主要下载模型权重)。完成后,按3.3节方式启动容器,唯一区别是镜像名改为chatglm3-6b:custom。
5. 使用与验证:三步确认一切正常
启动成功后,务必完成以下三步验证,确保系统健康运行。
5.1 Web界面基础对话测试
打开http://你的IP:8501,在输入框中输入:
你好,用一句话介绍你自己正常响应应为:
“我是ChatGLM3-6B,一个由智谱AI研发的开源大语言模型,具备32K超长上下文理解能力,支持多轮对话、代码生成、逻辑推理等任务。”
5.2 长文本记忆测试(验证32k上下文)
连续发送两段话:
第一句:
请记住:我的名字叫小明,我住在杭州,职业是前端工程师。第二句:
小明的家乡在哪里?正确响应应为:
“小明的家乡在杭州。”
这证明模型成功记住了上文信息,未出现“健忘症”。
5.3 流式输出体验测试
输入一个稍长请求,例如:
请用Python写一个快速排序函数,并附带详细注释你应该看到文字像打字一样逐字出现(非整块弹出),且无卡顿、无转圈加载图标。
6. 常见问题速查手册(小白友好版)
遇到报错?先别慌,90%的问题都在这里。
6.1 “nvidia-container-runtime not found”
→ 原因:nvidia-container-toolkit未安装或未配置
→ 解决:回到2.2节,完整执行安装与配置命令,重启docker。
6.2 启动后浏览器打不开,提示“连接被拒绝”
→ 原因:端口未正确映射,或防火墙拦截
→ 解决:
- 检查
docker ps中容器PORTS列是否含0.0.0.0:8501->8501/tcp - Ubuntu/Debian执行:
sudo ufw allow 8501 - CentOS/RHEL执行:
sudo firewall-cmd --permanent --add-port=8501/tcp && sudo firewall-cmd --reload
6.3 第一次访问极慢(>2分钟),之后正常
→ 原因:模型首次加载需从磁盘读取并加载至显存,属正常现象
→ 解决:耐心等待,后续所有会话均秒开。
6.4 输入后无响应,控制台报“CUDA out of memory”
→ 原因:显存不足(常见于16GB卡跑满)
→ 解决:
- 在
web_demo2.py中找到model = AutoModel.from_pretrained(...)行,在其后添加:model = model.quantize(4) # 启用4-bit量化,显存降至约8GB - 或升级至24GB显卡(推荐RTX 4090D)。
6.5 提示“ModuleNotFoundError: No module named 'streamlit'”
→ 原因:镜像加载失败或Dockerfile构建中断
→ 解决:重新执行docker load或docker build,观察终端是否有ERROR字样。
7. 总结:你已掌握本地AI部署的核心能力
回顾一下,你刚刚完成了什么:
🔹绕过了所有环境陷阱:不用再为Transformers版本、CUDA兼容、Streamlit与Gradio冲突而熬夜debug;
🔹获得了真正私有的AI能力:所有数据留在你自己的硬盘和显存里,断网也能聊,企业内网也能用;
🔹拥有了工业级稳定性:32k上下文不丢失、模型驻留内存不重载、流式输出不卡顿;
🔹打通了后续扩展路径:这个容器就是你的AI实验沙盒——微调、API封装、集成进业务系统,全部基于它展开。
这不是一个“玩具项目”,而是一个可立即投入生产力的本地智能中枢。接下来,你可以:
→ 尝试微调(参考文档中finetune_demo目录,已预装)
→ 调用OpenAI兼容API(访问http://你的IP:8000/docs查看Swagger文档)
→ 把它嵌入你的笔记软件、IDE或自动化工作流中
真正的AI自由,从拥有一个完全属于你的大模型开始。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。