【短小精悍】仅需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.git
 git 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等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

绝区捌--将GPT幻觉的发生率从20%以上降低到2%以下

总结:我们没有使用微调,而是结合使用提示链和预处理/后处理来将幻觉发生率降低一个数量级,但这确实需要对 OpenAI 进行 3-4 倍的调用。还有很大的改进空间! 使用 GPT 等大型语言模型面临的最大挑战之一是它们倾向于捏造信息。 这…

Phospho:LLM应用的文本分析利器

今天向大家介绍phospho文本分析平台,专门为大型语言模型(LLM)应用程序设计。它可以帮助开发者从用户或应用程序的文本消息中检测问题、提取洞见、收集用户反馈,并衡量成功。作为一个开源项目,phospho允许开发者查看和修…

Chat2DB:AI引领下的全链路数据库管理新纪元

一、引言 随着数据驱动决策成为现代企业和组织的核心竞争力,数据库管理工具的重要性日益凸显。然而,传统的数据库管理工具往往存在操作复杂、功能单一、不支持多类型数据库管理等问题,限制了数据的有效利用。为了打破这一局面,Ch…

致远漏洞(登陆绕过+任意文件上传)

漏洞复现 1.获得cookie POST /seeyon/thirdpartyController.do HTTP/1.1 Host: 192.168.1.9 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0 Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8 Accept-Langua…

迂回战术:“另类“全新安装 macOS 15 Sequoia beta2 的极简方法

概述 随着 WWDC 24 的胜利闭幕,Apple 平台上各种 beta 版的系统也都“跃跃欲出”,在 mac 上自然也不例外。 本次全新的 macOS 15 Sequoia(红杉)包含了诸多重磅升级,作为秃头开发者的我们怎么能不先睹为快呢&#xff1…

c++:面向对象的继承特性

什么是继承 (1)继承是C源生支持的一种语法特性,是C面向对象的一种表现 (2)继承特性可以让派生类“瞬间”拥有基类的所有(当然还得考虑权限)属性和方法 (3)继承特性本质上是为了代码复用 (4)类在C编译器的内部可以理解为结构体,派…

机器学习(五) -- 监督学习(7) --SVM1

系列文章目录及链接 上篇:机器学习(五) -- 监督学习(6) --逻辑回归 下篇: 前言 tips:标题前有“***”的内容为补充内容,是给好奇心重的宝宝看的,可自行跳过。文章内容被…

【进阶篇-Day7:JAVA中Date、LocalDate等时间API的介绍】

目录 1、概述2、JDK8(-) 时间类2.1 Date类:(1)构造方法:(2)常用成员方法: 2.2 SimpleDateFormat类:2.3 总结:2.4 Calendar类介绍: 3、JDK8() 时间类3.1 日历类…

案例开发-日程管理-第一期

九 案例开发-日程管理-第一期 共7期 9.1 登录页及校验 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>.ht{text-align: center;color: cadetblue;font-family: 幼…

多GPU系统中的CUDA设备不可用问题

我们在使用多GPU系统时遇到了CUDA设备不可用的问题&#xff0c;详细情况如下&#xff1a; 问题描述&#xff1a; 我们在一台配备有8块NVIDIA GeForce RTX 3090显卡的服务器上运行CUDA程序时&#xff0c;遇到了如下错误&#xff1a; cudaErrorDevicesUnavailable: CUDA-capabl…

【数据结构——链表的深度探索】从实现到应用,保姆级攻略

【数据结构——链表深度探索】从实现到应用&#xff0c;保姆级攻略 &#x1f341;1. 链表的介绍&#x1f341;2. 链表的实现&#x1f341;2.1 单向链表&#x1f341;2.1.1 size()&#x1f341;2.1.2 display()&#x1f341;2.1.3 contains(int key)&#x1f341;2.1.4 addFirst…

centOS79中安装jdk18

##red## &#x1f534; 大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff0c;雄雄的小课堂。 前言 在centos7.9中安装jdk1.8很简单&#xff0c;就一条命令即可。 安装命令 yum -y install java-1.8.0-openjdk然后回车就行。 然后我们来运行一下看看是否安装…

玩转HarmonyOS NEXT之组件导航与路由跳转一

组件导航 (Navigation) Navigation是路由容器组件&#xff0c;一般作为首页的根容器&#xff0c;包括单栏(Stack)、分栏(Split)和自适应(Auto)三种显示模式。Navigation组件适用于模块内和跨模块的路由切换&#xff0c;一次开发&#xff0c;多端部署场景。通过组件级路由能力实…

【多线程】线程同步--条件变量的原理及其使用

文章目录 前言线程同步的基本概念条件变量定义条件变量初始化条件变量销毁条件变量等待条件&#xff08;重要&#xff09;唤醒等待简单运用常见使用条件变量的格式 前言 线程同步意味着在多线程并发执行中&#xff0c;协调线程之间的执行顺序&#xff0c;以确保共享资源被正确…

本地部署,图片细节处理大模型Tile Controlnet

目录 什么是 Tile ControlNet&#xff1f; 工作原理 应用场景 优势与挑战 优势 挑战 本地部署 运行结果 未来展望 结论 Tip&#xff1a; 在近年来的深度学习和计算机视觉领域&#xff0c;生成对抗网络&#xff08;GAN&#xff09;和扩散模型等技术取得了显著的进展。…

Everything搜索无法搜索到桌面的文件(无法检索C盘 或 特定路径的文件)

现象描述 在Everything搜索框中输入桌面已存在的文件或随便已知位置的文件&#xff0c;无法找到。 搜索时检索结果中明显缺少部分磁盘位置的&#xff0c;例如无法检索C盘&#xff0c;任意关键字搜索时结果中没有位于C盘的&#xff0c;无论怎样都搜不到C盘文件。 解决方法 在…

新书速览|HTML5+CSS3 Web前端开发与实例教程:微课视频版

《HTML5CSS3 Web前端开发与实例教程&#xff1a;微课视频版》 本书内容 《HTML5CSS3 Web前端开发与实例教程&#xff1a;微课视频版》秉承“思政引领&#xff0c;立德树人”的教育理念&#xff0c;自然融入多维度、深层次的思政元素&#xff0c;全面对标企业和行业需求&#x…

IAR 编译优化等级详解

目录 1.编译时优化器何时介入 2.编译优化等级汇总 3.优化项解读 3.1 代码移动 3.2 函数内联 3.3 循环交换 3.4 循环展开 3.5 公用表达式消除 3.6 链接阶段的优化 4 小结 大家好&#xff0c;这里是快乐的肌肉。 最近在迁移工程到IAR编译器上&#xff0c;发现编译优化…

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

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

虚拟机因断电进入./#状态解决办法

现象&#xff1a; 解决&#xff1a;先查看错误日志&#xff1a;journalctl -p err -b查看自己虚拟机中标黄部分的名字 之后运行&#xff1a;xfs_repair -v -L /dev/sda #这里sda用你自己标黄的 最后重启 reboot 即可。