在CPU上安装部署chatglm-6b实用经验分享

news/2024/11/17 2:34:39/

chatglm-6b很强,很多同学都想自己试一试,但不是每个人都有GPU、高端显卡的环境,大多数同学都是一台普通的笔记本。

笔者这里分享一下在自己的8G内存,intel i3笔记本上安装部署chatglm-6b的实际经验。有很多网站都分享了一些经验,但不知道是不是环境的问题,笔者自己发现按照网上的文章,很多都走不通,也是自己综合各个文章,多次尝试,才勉强算是成功运行了!!!虽然运行特别慢,但也算是个小成果!废话不说了,走起:

第一大步: 首先下载,安装python依赖库这些呢,没什么特别的,事务性列举如下,就不多说了(在windows/linux下安装python什么的,就不多说了,笔者用的Python 3.10.6,版本不能太低):

(1)下载官方代码,安装Python依赖的库

下载地址:GitHub - THUDM/ChatGLM-6B: ChatGLM-6B: An Open Bilingual Dialogue Language Model | 开源双语对话语言模型

 然后找到文件requirements.txt并运行:

  pip install -r requirements.txt

 注意装完了,后不一定够用,反正缺啥装啥就完了,也不啰嗦了

(2)下载INT4量化后的预训练结果文件

注意,CPU上,反正笔者用的INT4,建议就用这个吧

INT4量化的预训练文件下载地址:THUDM/chatglm-6b-int4 at main

完了在上面github下载的chatglm-6b-main新建个目录model,把上面下载的一大堆文件,包括模型bin,py的一堆都拷贝进去

第二大步:这一步是最重要的了,大家可要注意了(最好需要先安装CPU版本的torch)

(1)需要安装GCC并配置环境变量

   网上有很多材料,有的说安装TDM-GCC,有的又说安装mingw64,有的又说安装win64devkit,反正笔者自己的经验是:win64devkit(注意,可以多装几个,因为编译.so文件时,和运行时要求的,可能有时候要用不同的gcc,如果不行,就换一个,反正win64devkit编译下面的.so是没问题的)

(2)编译quantization_kernels.so与quantization_kernels_parallel.so

  进行上面int4模型存放的目录,即chatglm-6b-main/model,运行如下命令:

  • gcc -fPIC -pthread -fopenmp -std=c99 quantization_kernels.c -shared -o quantization_kernels.so
  • gcc -fPIC -pthread -fopenmp -std=c99 quantization_kernels_parallel.c -shared -o quantization_kernels_parallel.so

   注:有可能只编译上面一个就够了,哈哈

(3)修改cli_demo.py(或者web_demo.py,看你想运行哪一个)

  找到如下代码,改成如下样子:

tokenizer = AutoTokenizer.from_pretrained("自己的目录\\ChatGLM-6B-main\\model", trust_remote_code=True)

model = AutoModel.from_pretrained("自己的目录\\ChatGLM-6B-main\\model", trust_remote_code=True).float()

model = model.quantize(bits=4, kernel_file="自己的目录\\ChatGLM-6B-main\\model\\quantization_kernels.so")

model = model.eval()

其实主要就是GPU版本后面是.half().cuda(),而这里是float();另外加载quantization_kernels.so

(4)运行python cli_demo.py,应该就可以对话了

祝成功!


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

相关文章

Zookeeper特性与节点数据类型详解

CAP&Base理论 CAP理论 cap理论是指对于一个分布式计算系统来说,不可能满足以下三点: 一致性 : 在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的 特性,等同于所有节点访问同一份最新的数据副本。在一致性的需…

博士申请推荐信范文

目录 1⃣邮件主题 2⃣邮件开头 3⃣邮件正文 4⃣ 结尾落款 一份完整规范的邮件格式包含:开头、正文、结尾、落款、附件 1⃣邮件主题 目的:让导师看出你的来意、你的专业、学校背景和入学时间如:徐XX-XX大学-XX专业-20XX年博士申请 2⃣邮件…

Vue项目npm run dev 启动报错TypeError: Cannot read property ‘upgrade‘ of undefined

vue项目启动报错 TypeError: Cannot read property upgrade of undefined 由于我的vue.config.js文件 里面的代理target为空导致的 修改: 结果就可以正常运行了 参考原文: vue项目运行时报Cannot read property ‘upgrade’ of undefined错误_cannot r…

ProComponent 用法学习

相信很多同学都用过 Ant Design 这一 react 著名组件库,而 ProComponents 则是在 antd 之上进行封装的页面级组件库(指一个组件就可以搞定一个页面)。它同时也是 Ant Design Pro 中后台框架所用的主要组件库。如果你手上有要用 react 开发的中…

简单的用Python获取一下视频弹幕,新手练手实战项目,非常简单

昨天看到个视频,弹幕挺有意思的,于是想着用Python给他全部扒下来。 代码非常简单,接下来我们看看 具体操作。 需要准备这些 软件 Python 3.8Pycharm 模块使用 import requests 数据请求import jieba 分词import wordcloud 词云import p…

缩略图更清晰了:imagecopysampled代替imagecopyresized

之前用 imagecopyresized() 生成缩略图,但是效果不是太理想,后来把 imagecopyresized() 换成 imagecopysampled() ,效果好太多了,图片变得更加清晰了。 通过对比图,很明显看出,imagecopysampled()生成的缩略图,清晰度高很多。 下面是imagecopysampled()生成缩略图的代…

\vendor\github.com\godror\orahlp.go:531:19: undefined: VersionInfo

…\goAdmin\vendor\github.com\godror\orahlp.go:531:19: undefined: VersionInfo 解决办法 降了go版本(go1.18),之前是go1.19 gorm版本不能用最新的,降至(gorm.io/gorm v1.21.16)就可以 修改交插编译参数 go env -w CGO_ENABLED1…

在springboot使用websocket时mapper无法注入

直接上代码 package cn.ujoined.combined.utils;import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Componen…