有手就会!chatglm2_6b模型本地部署与首次推理全流程实战
写在前面:硬件门槛
在开始之前,请确保你的设备满足以下最低硬件要求:
- 推理需求:至少需要6GB显存的GPU(如NVIDIA GTX 1060及以上)。
- 微调需求:建议使用显存更大的GPU(如NVIDIA RTX 3090及以上),并确保有足够的存储空间。
如果你的设备不满足这些要求,可能会在运行过程中遇到性能问题或显存不足的错误。
环境准备清单
在部署模型之前,你需要准备好以下环境:
- Python 3.8或更高版本:确保你的系统中安装了Python,并可以通过命令行运行。
- PyTorch 2.0或更高版本:这是运行模型的核心框架。
- 其他依赖库:包括
transformers、cpm_kernels、sentencepiece等。
你可以通过以下命令安装所有依赖:
pip install protobuf transformers==4.30.2 cpm_kernels torch>=2.0 gradio mdtex2html sentencepiece accelerate openmind
模型资源获取
- 下载模型权重:你需要从官方渠道获取
chatglm2_6b的模型权重文件。确保下载的文件完整且未被修改。 - 保存到本地:将下载的模型权重文件保存到一个易于访问的目录中,例如
./chatglm2_6b。
逐行解析“Hello World”代码
以下是从官方文档中提取的“快速上手”代码片段,我们将逐行解析其功能:
from openmind import is_torch_npu_available, AutoTokenizer, AutoModel
# 检查设备类型,优先使用NPU,其次是CUDA,最后是CPU
if is_torch_npu_available():
device = "npu:0"
elif torch.cuda.is_available():
device = "cuda:0"
else:
device = "cpu"
# 加载分词器和模型
tokenizer = AutoTokenizer.from_pretrained("PyTorch-NPU/chatglm2_6b", trust_remote_code=True)
model = AutoModel.from_pretrained("PyTorch-NPU/chatglm2_6b", trust_remote_code=True, device_map=device).half()
model = model.eval()
# 首次对话
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
# 继续对话
response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
print(response)
代码解析:
-
设备检查:
is_torch_npu_available():检查是否支持NPU设备。torch.cuda.is_available():检查是否支持CUDA设备。- 如果都不支持,则默认使用CPU。
-
加载分词器和模型:
AutoTokenizer.from_pretrained:加载预训练的分词器。AutoModel.from_pretrained:加载预训练的模型,并指定设备。.half():将模型转换为半精度(FP16),以减少显存占用。
-
对话生成:
model.chat:生成对话响应,history参数用于保存对话历史。
运行与结果展示
-
运行代码:将上述代码保存为一个Python文件(如
chatglm_demo.py),然后在命令行中运行:python chatglm_demo.py -
预期输出:
- 首次对话会返回一个简单的问候响应,例如“你好!”。
- 第二次对话会返回关于“晚上睡不着”的建议。
常见问题(FAQ)与解决方案
1. 显存不足
- 问题:运行时报错“CUDA out of memory”。
- 解决方案:尝试使用量化版本的模型,或者减少输入长度。
2. 模型加载失败
- 问题:无法加载模型权重。
- 解决方案:确保权重文件路径正确,并且文件未被损坏。
3. 依赖库冲突
- 问题:安装依赖时提示版本冲突。
- 解决方案:创建一个新的虚拟环境,并重新安装依赖。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



