【短小精悍】仅需6GB显存,你就可以跑起来清华智谱的ChatGLM-6B-Int4大模型

【短小精悍】仅需6GB显存,你就可以跑起来清华智谱的ChatGLM-6B-Int4大模型

  • 版本环境
  • 一、序
  • 二、ChatGLM-6B-Int4大模型
    • 2.1 简介
    • 2.2 模型
  • 三、运行环境
    • 3.1 下载模型
    • 3.2 下载环境
    • 3.3 下载代码
  • 四、运行
    • 4.1 运行代码
    • 4.2 运行结果
    • 4.3 GPU使用情况
  • 五、相关问题
    • 5.1 windows环境问题

版本环境

  • 操作系统 Windows 10
  • python v3.10.12
  • conda 24.1.2
  • NVIDIA-SMI 552.22 Driver Version: 552.22 CUDA Version: 12.4
  • CUDA Toolkit 12.1
  • torch 2.3.0+cu121
  • torchaudio 2.3.0+cu121
  • torchvision 0.18.0+cu121

一、序

问:大模型跑起来分几步?
在这里插入图片描述

答:分三步。

问:哪三步?

答:第一步下模型;第二步下环境;第三步下代码。

二、ChatGLM-6B-Int4大模型

2.1 简介

ChatGLM-6B 是一个开源的、支持中英双语问答的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数。结合模型量化技术,用户可以在消费级的显卡上进行本地部署(INT4 量化级别下最低只需 6GB 显存,实际测试时候5GB也行)。ChatGLM-6B 使用了和 ChatGLM 相同的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。

ChatGLM-6B-INT4 是 ChatGLM-6B 量化后的模型权重。具体的,ChatGLM-6B-INT4 对 ChatGLM-6B 中的 28 个 GLM Block 进行了 INT4 量化,没有对 Embedding 和 LM Head 进行量化。量化后的模型理论上 6G 显存(使用 CPU 即内存)即可推理,具有在嵌入式设备(如树莓派)上运行的可能。

在 CPU 上运行时,会根据硬件自动编译 CPU Kernel ,请确保已安装 GCC 和 OpenMP (Linux一般已安装,对于Windows则需手动安装),以获得最佳并行计算能力。

2.2 模型

图中标红的是主模型文件。

在这里插入图片描述

三、运行环境

3.1 下载模型

可以通过网页下载魔搭社区下载。
也可以通过命令行下载。

 git clone https://www.modelscope.cn/ZhipuAI/ChatGLM-6B-Int4.gitgit lfs pull

下载完成后,文件目录如图所示。
在这里插入图片描述

3.2 下载环境

使用conda多python环境。

版本是3.10.12
在这里插入图片描述
安装pytorch相关依赖,注意根据GPU型号、CUDA版本下载对应的torch。笔者前期就下载了仅CPU类型的依赖,导致GPU算力没用上。

3.3 下载代码

 git clone https://github.com/THUDM/ChatGLM2-6B

在这里插入图片描述

四、运行

以下代码是笔者根据魔搭社区中的代码范例进行改写。
在这里插入图片描述

4.1 运行代码

from modelscope.utils.constant import Tasks
from modelscope.pipelines import pipeline
from modelscope.models import Model
import time# 指定本地模型文件路径,替换成你自己的
local_model_path = 'F:\\glm-2-model\\ChatGLM-6B-Int4'
# 加载本地模型
model = Model.from_pretrained(local_model_path)
pipe = pipeline(task=Tasks.chat, model=model)# 定义一个函数来处理用户输入和模型回复,并计时
def chat_with_model():while True:# 获取用户输入query = input("\n用户:")if query.strip() == "退出":break# 开始计时start_time = time.time()# 发送输入到模型inputs = {'text': query, 'history': []}result = pipe(inputs)# 停止计时end_time = time.time()# 计算用时elapsed_time = end_time - start_time# 打印用时print(f"\n用时:{elapsed_time:.2f}秒")# 逐字打印模型回复内容if 'response' in result and result['response']:for char in result['response']:print(char, end='', flush=True)print()  # 打印换行符,以便于下一次输入else:print("\nChatGLM:这道题我不会,请尝试其他问题。")# 启动聊天
chat_with_model()

4.2 运行结果

在这里插入图片描述
红色框中的提示无关紧要,笔者进行一次提问,用时8秒回答出来了。

笔者再次提问,这个回答就很牛逼了。通义千问是什么?

在这里插入图片描述

4.3 GPU使用情况

在这里插入图片描述
可以看到GPU内存使用了5GB。

五、相关问题

5.1 windows环境问题

缺少相关的依赖就按照提示进行安装即可。有的依赖针对Windows环境进行设计的,如pyreadline3等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3227407.html

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

相关文章

Jenkins 构建 Web 项目:构建服务器和部署服务器分离, 并且前后端在一起的项目

构建命令 #!/bin/bash cd ruoyi-ui node -v pnpm -v pnpm install pnpm build:prod # 将dist打包成dist.zip zip -r dist.zip dist cp dist.zip ../dist.zip

(一)、python程序--模拟电脑鼠走迷宫

一、绪论 1、简介 电脑鼠走迷宫是一种比赛,制作实物电脑鼠小车在迷宫找目标点,用时最短者获胜。考验参赛选手软硬件结合的能力。 2、走迷宫模拟软件中已实现功能 1、点击迷宫墙壁可编辑迷宫,并且可保存和加载迷宫形状文件; 2、…

【记录】LaTex|LaTex 代码片段 Listings 添加带圆圈数字标号的箭头(又名 LaTex Tikz 库画箭头的简要介绍)

文章目录 前言注意事项1 Tikz 的调用方法:newcommand2 标号圆圈数字的添加方式:\large{\textcircled{\small{1}}}\normalsize3 快速掌握 Tikz 箭头写法:插入点相对位移标号node3.1 第一张图:插入点相对位移3.2 第二张图&#xff1…

MySQL CONCAT函数的简单使用

CONCAT函数用于将mysql中查询多列的值拼成一列显示, 使用示例: SELECT CONCAT(attr_name,":",attr_value) FROM pms_sku_sale_attr_value WHERE sku_id1; 上面SQL语句使用CONCAT函数将attr_name、attr_value两列的值拼成一列&am…

计算机组成原理:408考研|王道|学习笔记II

系列目录 计算机组成原理 学习笔记I 计算机组成原理 学习笔记II 目录 系列目录第四章 指令系统4.1 指令系统4.1.1 指令格式4.1.2 扩展操作码指令格式 4.2 指令的寻址方式4.2_1 指令寻址4.2_2 数据寻址 4.3 程序的机器级代码表示4.3.1 高级语言与机器级代码之间的对应4.3.2 常用…

非线性系列(三)—— 非线性求解器算法分类

1. 总体认知 CAE中的非线性方程组求解主要依赖牛顿法(及牛顿法的变体),步骤如下 以线搜索方法为例,流程如下: 2. 方法分类 适用范围大类小类描述牛顿法雅可比矩阵难获取拟牛顿法 Broyden(Secant method)、…

Linux基础指令解析+项目部署环境

文章目录 前言基础指令部署项目环境总结 前言 Linux的魅力在于其强大的可定制性和灵活性,这使得它成为了众多开发者和运维人员的首选工具。然而,Linux的指令系统庞大而复杂,初学者往往容易迷失其中。因此,本文将带领大家走进Linu…

【第27章】MyBatis-Plus之Mybatis X 插件

文章目录 前言一、安装指南二、核心功能1.XML 映射跳转2.代码生成3. 重置模板 三、JPA 风格提示四、常见问题解答1. JPA 提示功能无法使用?2. 生成的表名与预期不符? 五、代码生成模板配置1. 默认模板2. 重置默认模板3. 自定义模板内容3.1 实体类信息3.2…

前端JS特效第28集:JQuery电影选座插件

JQuery电影选座插件&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下(全部代码在文章末尾)&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">&l…

2024-07抖音/快手/小红书/视频号/美团无人直播技术:最新不封号无人直播的操作方法详细介绍

2024年最新研究出来的无人直播技术&#xff0c;目前不封号&#xff0c;用途大大的&#xff0c;可带货&#xff0c;可引流&#xff0c;可获客。 手机自动直播源码通常涉及到实时流媒体技术和应用开发&#xff0c;它涉及以下几个关键部分&#xff1a; 摄像头接入&#xff1a;使用…

YOLOv8改进 | 注意力机制| 利用并行子网络构建深度较浅但性能卓越的网络【全网独家】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

[Spring] SpringBoot基本配置与快速上手

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

“LNMP环境搭建实战指南:从零开始配置CentOS 7下的Nginx、MySQL与PHP“

目录 1.前言 2.准备工作 2.1.环境信息 2.2.关闭SELinux和firewalld 3.安装Nginx 3.1.运行以下命令&#xff0c;安装Nginx 3.2.运行以下命令&#xff0c;查看Nginx版本 4.安装MySQL 4.1.更新秘钥 4.2.配置MySQL的YUM仓库 4.3.安装MySQL 4.4.查看MySQL版本 4.5.启动…

Let‘s Encrypt性价比最高的申请SSL证书

SSL/TLS证书作为确保网站数据传输安全性的重要手段&#xff0c;受到了广大网站运营者的青睐。然而&#xff0c;高昂的证书费用往往成为许多小型网站和个人博客的负担。 申请Lets Encrypt免费泛域名SSL证书步骤 1. 登录来此加密网站&#xff0c;输入域名&#xff0c;可以勾选泛…

二分查找算法【折半查找算法】

二分查找算法 二分查找算法&#xff0c;也称为折半查找&#xff0c;是一种在有序数组中查找特定元素的高效算法。它的工作原理是通过不断地将搜索区间减半来缩小目标值可能存在的范围&#xff0c;直至找到目标值或确定目标值不存在于数组中。二分查找的关键在于每次比较都能排…

节点流与处理流:深入解析Java中的IO流

节点流与处理流&#xff1a;深入解析Java中的IO流 1、节点流&#xff08;Node Stream&#xff09;1.1 定义1.2 好处1.3 示例 2、处理流&#xff08;Processing Stream&#xff09;2.1 定义2.2 好处2.3 创建特征2.4 示例 3、总结 &#x1f496;The Begin&#x1f496;点点关注&…

国产大模型第一梯队玩家,为什么pick了CPU?

AI一天&#xff0c;人间一年。 现在不论是大模型本身&#xff0c;亦或是AI应用的更新速度简直令人直呼跟不上—— Sora、Suno、Udio、Luma……重磅应用一个接一个问世。 也正如来自InfoQ的调查数据显示的那般&#xff0c;虽然AIGC目前还处于起步阶段&#xff0c;但市场规模已…

Java方法入门(006)

♦️方法的概念 什么是方法&#xff1f; 方法是将一组完成特定功能的代码整合在一起&#xff0c;以达到简化开发&#xff0c;减少代码耦合&#xff0c;提高代码复用性的结构&#xff0c;类似与C语言中的函数。方法是程序中最小的执行单元&#xff0c;可降低代码的重复性。 如用…

前后端如何实现非对称加解密-使用RSA为例讲解!

写在最前面&#xff0c;RSA是一种非对称加密算法&#xff0c;使用不同的公钥和私钥进行加密和解密。 下面是使用RSA进行加密和解密的代码示例&#xff1a; 前端&#xff1a;使用CryptoJS进行RSA加密 在前端JavaScript中&#xff0c;使用jsencrypt库来进行RSA加密&#xff1a…

MT3046 愤怒的象棚

思路&#xff1a; a[]存愤怒值&#xff1b;b[i]存以i结尾的&#xff0c;窗口里的最大值&#xff1b;c[i]存以i结尾的&#xff0c;窗口里面包含✳的最大值。 &#xff08;✳为新大象的位置&#xff09; 例&#xff1a;1 2 3 4 ✳ 5 6 7 8 9 则ans的计算公式b3b4c4c5c6b7b8b9…