用Tesla M24 24G在Windows上低成本部署ChatGLM2-6B全攻略
最近在二手市场淘到一块Tesla M40 24G计算卡,价格只有主流游戏显卡的1/3,但显存却大得多。这种专业计算卡原本用于数据中心,现在淘汰后流入二手市场,成了跑AI模型的性价比之选。本文将手把手教你如何在普通Windows电脑上,用这块"捡漏"的计算卡成功部署ChatGLM2-6B模型。
1. 硬件准备与BIOS关键设置
Tesla M40与普通显卡不同,它没有视频输出接口,需要搭配核显或亮机卡使用。我用的是一台i5-13600K处理器配微星B760主板的机器,核显负责显示输出,M40专门用于计算。
必须完成的BIOS设置:
Above 4G Decoding:在微星主板的BIOS中,进入Settings > Advanced > PCI Subsystem Settings,找到"Above 4G memory/Crypto Currency mining"选项并启用。这个设置让系统能识别超过4GB的显存,对M40的24GB显存至关重要。
UEFI模式:在Boot设置中,确保CSM/UEFI Mode设置为纯UEFI模式。传统BIOS(CSM)模式可能导致驱动兼容性问题。
提示:不同品牌主板的BIOS选项位置可能不同,但关键词都是"Above 4G"和"UEFI"。
安装M40后开机,进入设备管理器应能看到"3D视频控制器"或其他未识别设备,这说明硬件已被检测到,但需要安装驱动。
2. 驱动安装与模式切换
Tesla M40使用NVIDIA标准驱动,但需要特别注意版本和模式设置:
驱动下载:访问NVIDIA驱动下载页面,选择Tesla M40对应的最新驱动。虽然M40已停产,但NVIDIA仍提供支持。
安装验证:安装完成后,以管理员身份打开命令提示符,输入:
nvidia-smi如果看到M40的信息和24GB显存,说明驱动安装成功。
- 切换至WDDM模式:Windows默认使用WDDM显示驱动模型,但计算卡更适合TCC模式。不过为了兼容性,我们保持WDDM:
nvidia-smi -dm 03. CUDA与PyTorch环境配置
CUDA Toolkit选择:Tesla M40最高支持CUDA 11.8,新版本(如12.x)会导致兼容性问题。从NVIDIA CUDA Toolkit Archive下载11.8版本。
安装时选择"自定义安装",只勾选:
- CUDA
- Development组件
- Documentation(可选)
PyTorch安装:必须使用与CUDA 11.8兼容的版本。在命令提示符中执行:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118验证安装:
import torch print(torch.__version__) # 应显示1.x版本 print(torch.cuda.is_available()) # 应为True如果torch.cuda.is_available()返回False,可能是:
- 安装了CPU版本的PyTorch
- CUDA版本不匹配
- 驱动未正确安装
4. ChatGLM2-6B部署与优化
ChatGLM2-6B相比第一代在中文理解和生成能力上有显著提升,同时对硬件要求更友好。部署步骤如下:
- 克隆仓库:
git clone https://github.com/THUDM/ChatGLM2-6B cd ChatGLM2-6B- 安装依赖:
pip install -r requirements.txt- 下载模型权重: 需要先安装Git LFS:
git lfs install git clone https://huggingface.co/THUDM/chatglm2-6b- 修改模型加载路径: 编辑web_demo.py,将模型路径改为本地路径:
tokenizer = AutoTokenizer.from_pretrained("../chatglm2-6b", trust_remote_code=True) model = AutoModel.from_pretrained("../chatglm2-6b", trust_remote_code=True).quantize(8).half().cuda()- 启动Web界面:
python web_demo.py性能优化技巧:
- 使用
.half()将模型转为半精度(float16),显存占用减半 quantize(8)进行8-bit量化,进一步降低显存需求- 在M40 24G上,可以尝试不量化直接加载,获得最佳生成质量
5. 常见问题与解决方案
问题1:模型加载时报CUDA内存不足
- 解决:添加
.quantize(8).half()减少显存占用,或关闭其他占用显存的程序
问题2:nvidia-smi显示显存被占用但无进程
- 解决:重启系统或使用
nvidia-smi -i 0 -r重置GPU
问题3:生成速度慢
- 解决:在web_demo.py中调整
max_length和top_p参数,降低生成长度和采样范围
问题4:Windows Defender阻止Python访问GPU
- 解决:在Windows安全中心中添加Python解释器路径到排除项
这块二手Tesla M40 24G的表现超出预期,在量化后能流畅运行ChatGLM2-6B,响应速度与消费级RTX 3090相当,而成本只有后者的1/4。对于想低成本体验大语言模型的开发者,这是目前最具性价比的方案之一。