在Windows 10上部署ChatGLM2-6B:掌握信息时代的智能对话

news/2025/2/6 20:49:13/

在Windows 10上部署ChatGLM2-6B:掌握信息时代的智能对话

    • 硬件环境
    • ChatGLM2-6B的量化模型最低GPU配置说明
    • 准备工作
    • ChatGLM2-6B安装部署
    • ChatGLM2-6B运行模式
    • 解决问题
    • 总结

随着当代科技的快速发展,我们进入了一个数字化时代,其中信息以前所未有的速度传播。在这个信息爆炸的时代,我们不仅面临着巨大的机遇,还面临着挑战。为了更好地应对和充分利用这一趋势,我们需要掌握一些关键技能和工具。本文将向您介绍如何在Windows 10专业版22H2 x64操作系统上部署ChatGLM2-6B,这是一个强大的自然语言处理模型,用于智能对话。

本文面向的操作系统为 window10 专业版 22H2 x64,基于GPU的运算

硬件环境

名称参数
PCHP Elite Tower 880 G9
CPU16G
GPUNVIDIA RTX3060
处理器 12th Gen Intel® Core™i7-12700 2.10GHz
操作系统window 10 专业版 22H2 x64

ChatGLM2-6B的量化模型最低GPU配置说明

名称参数显存要求
ChatGLM2-6BFP1613G
ChatGLM2-6BINT46G
ChatGLM2-6B-32KFP1620G
ChatGLM2-6B-32KINT413G

注意:如果仅使用CPU部署,则ChatGLM2-6B的量化模型最低CPU 32G

准备工作

在部署ChatGLM2-6B之前,您需要进行一些准备工作

  1. 安装Git和Git LFS: 您可以从Git官方网站下载Git,并在安装时务必选择安装Git LFS选项,以支持大型文件的版本控制。
# window版Git安装时注意勾选git LFS选项即可
# Linux系统在安装完Git后,需额外安装git LFS
# 验证git是否正常: 出现版本信息为正常
git --version
# 验证git lfs是否正常:出现Git LFS initalized为正常
git lfs install
  1. 安装CUDA: CUDA是NVIDIA的并行计算平台,用于加速深度学习任务。您需要确保安装了与您的NVIDIA显卡驱动程序兼容的CUDA版本【CUDA下载地址】
# 查看NVIDIA CUDA version 和 Driver Version,一定要注意相关版本信息
nvidia-smi
# 在下载页面选择相关版本和信息后,下载安装包进行安装即可

在这里插入图片描述
在这里插入图片描述

  1. 安装Python【下载地址】: 安装Python,建议使用Python 3.10.10版本,并在安装时勾选将Python添加到系统变量PATH中。

注意:无需下载最新版本,本文选用python v3.10.10
更据安装包进行即可,注意勾选将python添加至系统变量PATH

  1. 安装PyTorch【下载地址】: 根据您的CUDA版本选择合适的PyTorch版本,并使用pip安装。确保PyTorch与CUDA版本兼容。
# 注意pytorch的版本,保证其和CUDA版本兼容
# 选择stable版,其余更据自己系统和情况选择,本文使用CUDA 11.8为最新版本(虽然CUDA版本为12.2,但是其支持向下兼容)
# 复制红框内容,在命令行中进行安装,等待完成
# 验证pytorch是否正常:进入命令行或PowerShell
python
>>> import torch
>>> print(torch.cuda.is_available())
>>> True
# 返回True即为正常
>>> quit()

在这里插入图片描述

ChatGLM2-6B安装部署

  1. 下载仓库代码: 使用Git克隆ChatGLM2-6B仓库并安装依赖。
git clone https://github.com/THUDM/ChatGLM2-6B.git
cd ChatGLM2-6B
pip install -r requirements.txt
  1. 下载ChatGLM2-6B模型: 在项目目录下创建一个名为“model”的文件夹,并下载ChatGLM2-6B的模型文件。
mkdir model && cd model
git clone https://huggingface.co/THUDM/chatglm2-6b
git clone https://huggingface.co/THUDM/chatglm2-6b-int4
git clone https://huggingface.co/THUDM/chatglm2-6b-32k
git clone https://huggingface.co/THUDM/chatglm2-6b-32k-int4

请确保您下载了标记为LFS(Large File Storage)的文件,以获取完整的模型文件。

ChatGLM2-6B运行模式

在部署ChatGLM2-6B时,您可以选择不同的运行模式,包括Gradio网页模式、Streamlit网页模式、命令行模式和API模式。以>下是每种模式的简要说明:


Gradio网页模式

  1. 准备工作
# 进入项目目录
cd ChatGLM2-6B
#  复制一份web_demo.py
copy web_demo.py web_demo_bak.py

2.模型参数调整

tokenizer = AutoTokenizer.from_pretrained("model\\chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("model\\chatglm2-6b", trust_remote_code=True).cuda()

在这里插入图片描述

3.服务参数调整

# demo.queue().launch(share=False, inbrowser=True)
# concurrency_count: 表示可以同时使用网页的人数,超过就需要排队等候
# server_name: 开启局域网访问
# server_port: 指定端口访问
demo.queue(concurrency_count=5,
).launch(share=False, inbrowser=True, server_name="0.0.0.0", server_port=8080)
  1. 启动
python web_demo.py

在这里插入图片描述


Streamlit网页

# 同Gradio配置类似,进行调整web_demo2.py
# 启动
streamlit run web_demo2.py
# 此命令会开启局域网服务,端口:8501

在这里插入图片描述


CLI模式

# 配置一致,调整cli_demo.py
# 启动
python cli_demo.py
# 命令行中输入只是并回车即可生成回复,输入clear:清空对话历史;输入stop:终止程序

API模式

# 安装fastapi uvicorn依赖
pip install fastapi uvicorn
# 配置api.py
python api.py
# 补充:可设置ip和端口
# api.py
...
uvicorn.run(app, host='x.x.x.x', port=8000, workers=1)

访问接口: http://x.x.x.x:8000/; 请求方式:POST

在这里插入图片描述


特别说明: 如果显存不足,可使用量化方式加载模型

# int4
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).quantize(4).cuda()
# int8
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code=True).quantize(8).cuda()

解决问题

在部署过程中,可能会遇到一些问题。以下是一些常见问题和解决方法:


运行web_demo.py报错:AssertionError:Torch not compiled with CUDA enabled(torch和CUDA版本不匹配)

# 首先检查cuda能否使用
python -c "import torch; print(torch.cuda.is_availabled())"
# 返回False, 说明torch版本与CUDA不匹配
# 使用指令 nvidia-smi查看CUDA版本,然后到pytorch官方网站下载相应的CUDA安装
# 先卸载原torch
pip uninstall torch
# 安装指定CUDA版本的torch
pip install --pre torch --index-url https://download.pytorch.org/whl/nightly/cu121

gcc不是内部或外部命令

安装TDM-GCC,注意勾选 openmp 【TDM-GCC下载】

总结

通过按照以上步骤进行操作,您将能够成功在Windows 10上部署ChatGLM2-6B,从而掌握信息时代的智能对话能力。这将为您提供一个有趣而强大的工具,用于与ChatGLM2-6B进行智能对话,并深入了解自然语言处理的潜力。希望本文能帮助您充分利用信息时代的机遇,同时也能够解决可能出现的问题。


http://www.ppmy.cn/news/1081368.html

相关文章

冬天坐高铁热吗-冬天高铁车厢冷吗

冬天坐高铁靠窗位置冷吗是很多人在买票的时候都有的疑问,毕竟高铁因为行驶速度快能很好地帮大家节约时间,所以很多出行的人都近期作为出行的首选,下面小编就和大家一起看看冬天坐高铁需要带外套吗。 冬天坐高铁靠窗位置冷吗1 冬天坐高铁靠窗…

web之利用延迟实现复杂动画、animation

文章目录 效果图htmlstyleJavaScript 效果图 html <div class"container"><div class"ball"></div><input type"range" min"0" max"1" step"0.01" /> </div>style body {display…

【4.Vue兄弟组件之间传值-Bus总线】

1.概述 通过创建一个新的vm对象,专门统一注册事件,供所有组件共同操作,达到所有组件随意隔代传值的效果 也就是:各个组件内部要传输的数据或者要执行的命令信息,靠bus来通信。 2. 代码实现 2.1 全局引入 全局引入的话,就直接在main.js里面引入即可: // 创建 bus总线 V…

day-36 代码随想录算法训练营(19)part05

435.无重叠区间 思路&#xff1a;首先对数组排序&#xff0c;只需要关注重叠区间就行&#xff0c;有重叠时计数1&#xff0c;然后更新当前右边界为重叠区间中的最小右边界。 763.划分字母区间 思路&#xff1a;记录每一个字母的最远位置&#xff0c;然后从头开始遍历&#xf…

【Datawhale】AI夏令营第三期——基于论文摘要的文本分类笔记(上)

暑期参加了Datawhale的第三期AI夏令营&#xff0c;学习的是NLP方向&#xff0c;在此期间&#xff0c;我们通过比赛打榜的形式进行NLP的学习。今天&#xff0c;主要分享和记录一下这一期夏令营的学习历程和笔记。 文章目录 赛题背景赛题任务赛题数据集评价指标解题思路任务一&am…

【sgLazyTree】自定义组件:动态懒加载el-tree树节点数据,实现增删改、懒加载及局部数据刷新。

特性 可以自定义主键、配置选项支持预定义节点图标&#xff1a;folder文件夹|normal普通样式多个提示文本可以自定义支持动态接口增删改节点 sgLazyTree源码 <template><div :class"$options.name" v-loading"rootLoading"><div class&qu…

如何将字典排序

如何将字典排序 要按照字典中的键或值进行排序&#xff0c;可以使用Python中的sorted()函数。sorted()函数可以接受一个可迭代对象作为参数&#xff0c;并返回一个新的已排序的列表。 如果要按照字典中的键进行排序&#xff0c;可以将字典的items()方法作为参数传递给sorted(…

JavaScript基础语法03——JS注释、结束符

哈喽&#xff0c;大家好&#xff0c;我是雷工&#xff01; 今天继续学习JavaScript基础语法知识&#xff0c;注释和结束符&#xff0c;以下为学习笔记。 一、JavaScript注释 JavaScript注释有什么作用&#xff1f; JavaScript注释可以提高代码的可读性&#xff0c;能够帮助像…