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

news2025/1/31 2:52:04

在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.coloradmin.cn/o/965066.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python数据分析基础—pandas中set_index()、reset_index()的使用

文章目录 一、索引是什么?二、set_index()三、reset_index() 一、索引是什么? 在进行数据分析时,通常我们要根据业务情况进行数据筛选,要求筛选特定情况的行或列,这时就要根据数据类型(Series或者DataFrame)的索引情况…

小苹果他爹V5.8版本最强小苹果影视盒子增加46条内置优质单仓线路

这款软件直接使用了俊版的小苹果接口,并且许多资源似乎都是直接调用的小苹果官方资源。这样一来,小苹果的作者可能会面临版权方面的问题,而且也让更多的用户对小苹果的收费模式产生质疑。在这个信息传播如此快速的时代,开发者们应…

816. 模糊坐标

816. 模糊坐标 原题链接:完成情况:解题思路:参考代码:错误经验吸取 原题链接: 模糊坐标 完成情况: 解题思路: 参考代码: package 西湖算法题解___中等题;import java.util.Arra…

公司文件防泄密系统——「天锐绿盾透明加密系统」

「天锐绿盾透明加密系统」是一种公司文件防泄密系统,从源头上保障数据安全和使用安全。该系统采用文件过滤驱动实现透明加解密,对用户完全透明,不影响用户操作习惯。 PC访问地址: isite.baidu.com/site/wjz012xr/2eae091d-1b97-4…

贝叶斯神经网络 - 捕捉现实世界的不确定性

贝叶斯神经网络 - 捕捉现实世界的不确定性 Bayesian Neural Networks 生活本质上是不确定性和概率性的,贝叶斯神经网络 (BNN) 旨在捕获和量化这种不确定性 在许多现实世界的应用中,仅仅做出预测是不够的;您还想知道您对该预测的信心有多大。例…

ARM Cortex-M 的 SP

文章目录 1、栈2、栈操作3、Cortex-M中的栈4、MDK中的SP操作流程5、Micro-Lib的SP差别1. 使用 Micro-Lib2. 未使用 Micro-Lib 在嵌入式开发中,堆栈是一个很基础,同时也是非常重要的名词,堆栈可分为堆 (Heap) 和栈 (Stack) 。 栈(Stack): 一种…

2010-2021年上市公司和讯网社会责任评级CSR数据/和讯网上市公司社会责任数据

2010-2021年上市公司和讯网社会责任评级CSR数据 1、时间:2010-2021年 2、指标:股票名称、股票代码、年份、总得分、等级、股东责任、员工责任、供应商、客户和消费者权益责任、环境责任、社会责任、所属年份 3、样本量:4万 4、来源&#…

网工内推 | 上市公司,IT工程师、服务器工程师,IP以上优先

01 烟台睿创微纳技术股份有限公司 招聘岗位:IT工程师 职责描述: 1、负责网络及安全架构的规划、设计、性能优化; 2、负责网络设备的安装、配置、管理、排错、维护,提供网络设备维护方案; 3、负责防火墙、上网行为管理…

微机原理 || 第7章:中断系统8259 经典例题+手写解析

学习这件事应该和少菲学习,她会一个问题一个问题挨个解决,不会磨磨唧唧的, 这也不想干,那也不想做,一事无成! 新的学期,预祝姝垚和少菲可以学习进步,生活愉快,事业有成&a…

lv3 嵌入式开发-3 linux shell命令(权限、输入输出)

1 Shell概述 随着各式Linux系统的图形化程度的不断提高,用户在桌面环境下,通过点击、拖拽等操作就可以完成大部分的工作。 然而,许多Ubuntu Linux功能使用shell命令来实现,要比使用图形界面交互,完成的更快、更直接。…

系列五、Java操作RocketMQ简单消息之同步消息

一、概述 同步消息的特征是消息发出后会有一个返回值,即RocketMQ服务器收到消息后的一个确认,这种方式非常安全,但是性能上却没有那么高,而且在集群模式下,也是要等到所有的从机都复制了消息以后才会返回,适…

【vue2第九章】组件化开发和根组件以及style上的scoped作用

组件化开发和根组件 什么是组件化开发? 一个页面可以拆分为多个组件,每个组件有自己的样式,结构,行为,组件化开发的好处就是,便于维护,利于重复利用,提升开发的效率。 便于维护&…

输出归一化位置式PID(完整梯形图代码)

SMART PLC单自由度和双自由度位置式PID的完整源代码,请参看下面文章链接: 位置式PID(S7-200SMART 单自由度、双自由度梯形图源代码)_RXXW_Dor的博客-CSDN博客有关位置型PID和增量型PID的更多详细介绍请参看PID专栏的相关文章,链接如下:SMART PLC增量型PID算法和梯形图代码…

已解决‘jupyter‘ 不是内部或外部命令,也不是可运行的程序或批处理文件报错

本文摘要:本文已解决‘jupyter‘ 不是内部或外部命令,也不是可运行的程序或批处理文件的相关报错问题,并系统性地总结提出了几种可用解决方案。同时结合人工智能GPT排除可能得隐患及错误。 😎 作者介绍:我是程序员洲洲…

利用frps搭建本地自签名https服务的透传

nginx的搭建就不介绍了,教程很多,基本上油手就会。 在本例中,frp服务器的域名是 www.yourfrp.com,同时也是反向代理nginx服务器; 本地网站要用的域名: test.abcd.com 请事先将 test.abcd.com 解析到 frp所在服务器…

java.sql.SQLException: com.mysql.cj.jdbc.Driver

这篇文章分享一下Springboot整合Elasticsearch时遇到的一个问题,项目正常启动,但是查询数据库的时候发生了一个异常java.sql.SQLException: com.mysql.cj.jdbc.Driver java.sql.SQLException: com.mysql.cj.jdbc.Driverat com.alibaba.druid.util.JdbcU…

docker-compose 部署 Seata整合nacos,Postgresql 为DB存储

docker-compose 部署 Seata整合nacos,Postgresql 为DB存储 环境 详情环境可参考 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 我这里 <spring.cloud.alibaba-version>2021.1</spring.cloud.alibaba-version>所…

【前端入门案例1】HTML + CSS

案例一 <!DOCTYPE html> <html lang"en-US"><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width"><title>My test page</title> </head><body><…

浅析Linux SCSI子系统:错误恢复

文章目录 概述SCSI错误恢复处理添加错误恢复命令错误恢复线程scsi_eh_ready_devs IO超时处理相关参考 概述 IO路径是一个漫长的过程&#xff0c;从SCSI命令请求下发到请求完成返回&#xff0c;中间的任何一个环节出现问题都会导致IO请求的失败。从SCSI子系统到低层驱动&#x…

002图的基本概念与表示方法

文章目录 一. 图的组成二. 本体图2.1 什么是本体图2.2 怎么设计本体图 三. 图的种类3.1 按连接是否有向分3.2 按本体图分3.3 按连接是否带权重分 四. 节点连接数&#xff08;节点的度&#xff09;4.1 无向图节点的度4.2 有向图节点的度 五. 图的表示方法5.1 邻接矩阵5.2 连接列…