当前位置: 首页 > news >正文

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

在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进行智能对话,并深入了解自然语言处理的潜力。希望本文能帮助您充分利用信息时代的机遇,同时也能够解决可能出现的问题。

相关文章:

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

在Windows 10上部署ChatGLM2-6B:掌握信息时代的智能对话 硬件环境ChatGLM2-6B的量化模型最低GPU配置说明准备工作ChatGLM2-6B安装部署ChatGLM2-6B运行模式解决问题总结 随着当代科技的快速发展,我们进入了一个数字化时代,其中信息以前所未有的…...

LRU和LFU算法的简单实现

LRU #include <iostream> #include <unordered_map> #include <list> struct Node{int key;int value;Node(int key, int value):key(key),value(value){} }; class LruCache{ private:int maxCapacity;// 最大容量std::list<Node>CacheList;// 缓存链…...

OCR多语言识别模型构建资料收集

OCR多语言识别模型构建 构建多语言识别模型方案 合合&#xff0c;百度&#xff0c;腾讯&#xff0c;阿里这四家的不错 调研多家&#xff0c;发现有两种方案&#xff0c;但是大多数厂商都是将多语言放在一个字典里&#xff0c;构建1w~2W的字典&#xff0c;训练一个可识别多种语…...

倍增的经典题目:扩大区间、st表

1. 扩大区间 P4155 [SCOI2015] 国旗计划例题1&#xff1a;P4155 [SCOI2015] 国旗计划 计算能覆盖整个圆圈的最少区间&#xff0c;题目给定的所有区间互相不包含&#xff0c;按区间左端点排序后&#xff0c;区间的右端点也是单增的。 我们首先需要化圆为线&#xff0c;然后贪…...

LeetCode——和为K的子数组(中等)

题目 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的连续子数组的个数 。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2示例 2&#xff1a; 输入&#xff1a;nums [1,2,3], k 3 输出&#xff1a;2 题解 …...

Truncation Sampling as Language Model Desmoothing

本文是LLM系列文章&#xff0c;针对《Truncation Sampling as Language Model Desmoothing》的翻译。 截断采样作为语言模型的去平滑性 摘要1 引言2 背景3 截断作为去平滑性4 方法5 实验与结果6 相关工作7 结论8 不足 摘要 来自神经语言模型的长文本样本可能质量较差。截断采…...

docker安装jenkins

运行jenkins docker run -d \--name jenkins \ --hostname jenkins \-u root \-p 29090:8080 \--restart always \-v D:\springcloud\学习\jekins\jenkins\jks_home:/var/jenkins_home \ jenkins/jenkins获取root登录密码 密码在jekins_home/secrets/initalAdminPassword文件…...

学习pytorch8 土堆说卷积操作

土堆说卷积操作 官网debug torch版本只有nn 没有nn.functional代码执行结果 B站小土堆视频学习笔记 官网 https://pytorch.org/docs/stable/nn.html#convolution-layers 常用torch.nn, nn是对nn.functional的封装&#xff0c;使函数更易用。 卷积核从输入图像左上角&#xf…...

pytest自动化测试两种执行环境切换的解决方案

目录 一、痛点分析 方法一&#xff1a;Hook方法pytest_addoption注册命令行参数 1、Hook方法注解 2、使用方法 方法二&#xff1a;使用插件pytest-base-url进行命令行传参 一、痛点分析 在实际企业的项目中&#xff0c;自动化测试的代码往往需要在不同的环境中进行切换&am…...

说说TIME_WAIT和CLOSE_WAIT区别

分析&回答 TCP协议规定&#xff0c;对于已经建立的连接&#xff0c;网络双方要进行四次握手才能成功断开连接&#xff0c;如果缺少了其中某个步骤&#xff0c;将会使连接处于假死状态&#xff0c;连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接&#xf…...

Docker的优势

Docker是一种开源的容器化平台&#xff0c;提供了一种将应用程序、库和其它依赖项封装在容器中的方法。以下是Docker的基本概念和优势&#xff1a; 基本概念&#xff1a; 镜像&#xff1a;一个Docker镜像是一个可运行的软件包&#xff0c;包括应用程序、库和其它依赖项。它是D…...

C++——string使用

string的常见构造接口 string() 构造空的srting类对象&#xff0c;空字符串 string(const char* str) 用字符串初始化 string(const string& str)拷贝构造&#xff0c;使用string类初始化string(size_t n, char c) 用n个字符c初始化 string s1; string s2("hello …...

10. selenium API (二)

目录 1. 多层框架/窗口定位 2. 下拉框处理 2.1 前端界面 2.2 代码 3. 针对 alert 弹窗进行操作 3.1 前端界面 3.2 代码 4. 文件提交 4.1 前端界面 4.2 代码 5. 显示等待 6. 操作浏览器滚动条 7. 截图 8. 浏览器关闭 9. 窗口切换 在上篇文章中&#xff0c;我们学…...

[国产MCU]-W801开发实例-用户报文协议(UDP)数据接收和发送

用户报文协议(UDP)数据接收和发送 文章目录 用户报文协议(UDP)数据接收和发送1、UDP简单介绍2、W801的UDP创建逻辑2.1 UDP使用步骤2.2 代码实现1、UDP简单介绍 用户数据报协议 (UDP) 是一种跨互联网使用的通信协议,用于对时间敏感的传输,例如视频播放或 DNS查找。它通过在数…...

JavaScript 生成 16: 9 宽高比

这篇文章只是对 for 循环一个简单应用&#xff0c;没有什么知识含量。 可以跳过这篇文章。 只是我用来保存一下我的代码&#xff0c;保存在本地我嫌碍眼&#xff0c;总想把他删了。 正文部分 公式&#xff1a;其中 width 表示宽度&#xff0c;height 表示高度 16 9 w i d t…...

HTML5之drawImage函数

参数说明&#xff1a; drawImage(image, x, y) //按原图片大小绘制。 drawImage(image, x, y, width, height) //按指定大小绘制。 drawImage(image, sourceX, sourceY, sourceWidth, sourceHeight, destX, destY, destWidth, destHeight) //常用于图片裁剪。 其中&#xff1a…...

leetcode7.整数反转-Java

题目 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] &#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff09;。 7. 整数反转 - 力扣&a…...

操作系统备考学习 day2 (1.3.2 - 1.6)

操作系统备考学习 day2 计算机系统概述操作系统运行环境中断和异常的概念系统调用 操作系统体系结构操作系统引导虚拟机 计算机系统概述 操作系统运行环境 中断和异常的概念 中断的作用 CPU上会运行两种程序&#xff0c;一种是操作系统内核程序&#xff0c;一种是应用程序。…...

Django-跨域

一、基础概念 cors 跨域资源共享 二、跨域请求-简单请求 满足以下全部条件的请求为 简单请求 1.请求方法如下&#xff1a; GET or HEAR or POS 2.请求头仅包含如下&#xff1a; Accept、Accept-Language、Content-Language、Content-Type 3.ConTent-Type 仅支持如下三种&…...

wireshark抓包体验

目录 1、使用基础 1.1 数据包筛选 1.2 MAC地址筛选 1.3 端口筛选 1.4 协议筛选 1.5 包长度筛选 1.6 http请求筛选 2.数据包搜索 3.数据包还原 2、例题复现 1、使用基础 1.1 数据包筛选 ip.src 源ip地址 同理可以得到筛选目标地址&#xff1a; ip.dst 目的ip地址 1.2 …...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...