手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%

这篇具有很好参考价值的文章主要介绍了手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,我是微学AI,今天教你们本地CPU环境部署清华大ChatGLM-6B模型,利用量化模型,每个人都能跑动大模型。ChatGLM-6B是一款出色的中英双语对话模型,拥有超过62亿个参数,可高效地处理日常对话场景。与GLM-130B模型相比,ChatGLM-6B在对话场景处理能力方面表现更加卓越。此外,在使用体验方面,ChatGLM-6B采用了模型量化技术和本地部署技术,为用户提供更加便利和灵活的使用方式。值得一提的是,该模型还能够在单张消费级显卡上顺畅运行,速度较快,是一款非常实用的对话模型。

ChatGLM-6B是清华开发的中文对话大模型的小参数量版本,目前已经开源了,可以单卡部署在个人电脑上,利用 INT4 量化还可以最低部署到 6G 显存的电脑上,在 CPU 也可以运行起来的。

项目地址:mirrors / THUDM / chatglm-6b · GitCode

第1步:下载:

git clone https://gitcode.net/mirrors/THUDM/chatglm-6b.git

第2步:进入ChatGLM-6B-main目录下,安装相关依赖

pip install -r requirements.txt

其中 torch安装CPU版本即可。

第3步:打开ChatGLM-6B-main目录的web_demo.py文件,源代码:

from transformers import AutoModel, AutoTokenizer
import gradio as gr
import mdtex2html

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm-6b", trust_remote_code=True).half().cuda()
model = model.eval()

这个是在GPU版本下的代码,现在改为CPU版本下的代码:

from transformers import AutoModel, AutoTokenizer
import gradio as gr
import mdtex2html

tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm-6b-int4", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm-6b-int4", trust_remote_code=True).float()
model = model.eval()

模型下载改成THUDM/chatglm-6b-int4,也就是int4量化版本。模型量化到int4是一种将神经网络模型中的参数从浮点数格式调整为4位精度的整数格式的技术,可以显著提高硬件设备的效率和速度,并且适用于需要在低功耗设备上运行的场景。

INT4量化的预训练文件下载地址:https://huggingface.co/THUDM/chatglm-6b-int4/tree/main

 第4步:kernel的编译

CPU版本的安装还需要安装好C/C++的编译环境。这里大家可以安装TDM-GCC。

下载地址:https://jmeubank.github.io/tdm-gcc/,大家选择选取TDM-GCC 10.3.0 release下载安装。特别注意:安装的时候在选项gcc选项下方,勾选openmp,这个很重要,踩过坑,直接安装的话后续会报错。

手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%

手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%

 安装完在cmd中运行”gcc -v”测试是否成功即可。

手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%

安装gcc的目的是为了编译c++文件,quantization_kernels.cquantization_kernels_parallel.c手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%

 quantization_kernels.c文件:

void compress_int4_weight(void *weight, void *out, int n, int m)
{
    for(int i=0;i<n*m;i++)
    {
        (*(unsigned char*)(out)) = ((*(unsigned char*)(weight)) << 4);
        weight += sizeof(char);
        (*(unsigned char*)(out)) |= ((*(unsigned char*)(weight)) & 15);
        weight += sizeof(char);
        out += sizeof(char);
    }
}

void extract_int8_weight_to_float(void *weight, void *scale_list, void *out, int n, int m)
{
	for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            (*(float*)(out + sizeof(float) * (i * m + j))) = (*(float*)(scale_list + sizeof(float) * i)) * (*(char*)(weight + sizeof(char) * (i * m + j)));
}

void extract_int4_weight_to_float(void *weight, void *scale_list, void *out, int n, int m)
{
	for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            (*(float*)(out)) = (*(float*)(scale_list)) * ((*(char*)(weight)) >> 4);
            out += sizeof(float);
            (*(float*)(out)) = (*(float*)(scale_list)) * (((char)((*(unsigned char*)(weight)) << 4))>> 4);
            out += sizeof(float);
            weight += sizeof(char);
        }
        scale_list += sizeof(float);
    }
}

以上C++程序对于每个8位的输入权重值,都会被压缩成一个4位的输出权重值,并存储到指定的输出数组中。这种权重量化方式可以有效减小模型的内存占用,提高模型的推理速度。

 第5步:运行web_demo.py文件

注意:如果大家在运行中遇到了错误提示,说明两个文件编译出问题。我们可以手动去编译这两个文件:即在上面下载的D:..\chatglm-6b-int4本地目录下进入cmd,运行两个编译命令:

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

没有报错说明运行成功,目录下看到下面两个新的文件:quantization_kernels_parallel.soquantization_kernels.so。说明编译成功,后面我们手动载入,这里要多加一行代码

model = model.quantize(bits=4, kernel_file="D:..\\chatglm-6b-int4\\quantization_kernels.so")

如果原来代码没有错可以去掉这行。

 第6步:web_demo.py文件运行成功

手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%

 出现地址就大功告成了。

 第7步:测试问题

1.鲁迅和周树人是同一个人吗?

ChatGLM的结果:

手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%

 ChatGPT的结果:

手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%

 2.树上9只鸟,用枪打掉1只,还剩几只?

ChatGLM的结果:

手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%

 ChatGPT的结果:

手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%

ChatGLM在某些中文问题和常识问题上超过ChatGPT,但是总体上是不如ChatGPT,他在总结任务上,代码编写上不如ChatGPT,总体达到ChatGPT的80%左右,可以做简单的任务。

 文章来源地址https://www.toymoban.com/news/detail-428572.html

到了这里,关于手把手教你本地CPU环境部署清华大模型ChatGLM-6B,利用量化模型,本地即可开始智能聊天,达到ChatGPT的80%的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手把手教你设计字长8位的简单CPU-Verilog实现

    首先声明,所实现的8字长简单CPU所支持的指令不多,结构也很简单,只是演示讲解下如何根据任务书设计一个属于自己的CPU,不喜勿喷,谢谢。 转载请注明出处 作者:雪天鱼 更多博客、资料和业务承接发布在我的个人网站上,欢迎交流学习。 此设计要求来源于一个课程设

    2024年02月05日
    浏览(29)
  • 手把手教你如何免费Midjourney Adobe FireFly AI绘图—Window本地快速部署stable diffusion AI绘图及使用指南(小白也能学会)

    最近看到朋友圈最近各种文字生图、图生图,眼花缭乱的图片AI生成,我也心动了,于是赶紧研究了下目前业内认为最强大的 Midjourney、Adobe FireFly ,本来想试用下,奈何全球人民太热情了, Midjourney 被薅羊毛薅的不行了,原本 Midjourney 刚注册可以免费玩25次,现在也被Midjour

    2024年02月04日
    浏览(51)
  • 手把手带你linux部署清华大学大模型最新版 chaglm2-6b

    准备工作: 如果安装出现问题,可尝试手动分别安装torch 1 # 1第一步安装虚拟环境并激活环境 3 安装torch第一种方式 pytorch官网:https://pytorch.org/ 经过多次尝试,发现conda装,真的很快,真香。前几次尝试用pip装torch都会出现timeout的错误,这个跟服务器有关系,视情况而定。

    2024年02月12日
    浏览(40)
  • 手把手教你SAM(segment anything)官方代码本地调用

    更新一下如何下载官方本地github代码并在本地进行调用,更新的比较晚,截止发布前已经有28.1k的star了。接下来教大家如何分割一切!   首先我们可以下载SAM在官方的代码链接:https://github.com/facebookresearch/segment-anything 下载好之后需要配置一下SAM需要的环境,用pycharm打开配置

    2024年02月05日
    浏览(45)
  • 【手把手教你】将本地的项目上传到github(两种方法)

    方法一的步骤如下: 在 github 上创建一个新的仓库,给它一个合适的名字,比如 my-project。 在本地创建一个文件夹,用来存放你的项目文件,比如 my-project。 在本地文件夹中打开 git bash,输入 git init 命令,初始化一个本地仓库。 将你的项目文件复制或移动到本地文件夹中,

    2024年02月12日
    浏览(34)
  • 手把手教你5分钟搭建RabbitMq开发环境

    演示环境 1、使用Vagrant 和 VirtualBox创建linux虚拟机 不知道Vagrant怎么使用的可以看这里。 ①在cmd窗口执行命令 vagrant init generic/centos7 ,初始化linux启动环境 ②执行启动命令 vagrant up 启动Linux虚拟机 ③修改当前目录的Vagrantfile文件,为虚拟机配置内网ip,后面登录的时候会用到

    2023年04月12日
    浏览(47)
  • 手把手教你用 Jenkins 自动部署 SpringBoot

    CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法。 CI/CD 的核心概念可以总结为三点: 持续集成 持续交付 持续部署 CI/CD 主要针对在集成新代码时所引发的问题(俗称\\\"集成地狱\\\")。 为什么会有集成地狱这个“雅称”呢?大家想想我们一个项目部署的

    2024年02月02日
    浏览(44)
  • 手把手教你搭建ARM32 QEMU环境

    我们知道嵌入式开发调试就要和各种硬件打交道,所以学习就要专门购买各种开发版,浪费资金,开会演示效果还需要携带一大串的板子和电线,不胜其烦。然而Qemu的使用可以避免频繁在开发板上烧写版本,如果进行的调试工作与外设无关,仅仅是内核方面的调试,Qemu模拟

    2024年02月19日
    浏览(47)
  • 【Git】手把手教你使用Git将本地文件上传到远程仓库

    最近在学习Git,写篇博客记录一下,如有错误还请指正。 文章内容大致如下:         1.新建本地仓库,并上传本地仓库中的文件到远程仓库         2. 修改远程仓库文件内容,同步更新到本地仓库中 准备:         1. 需要在Gitee注册自己账号         2. 已在电

    2024年02月05日
    浏览(47)
  • 手把手教你将项目部署到服务器!

    一、导入centos7虚拟机: 打开VMWare,点击“打开虚拟机”,选择centos7.ova之后,选择存储路径: 点击导入: 选择“不再显示此消息”,点击“重试”按钮: 点击“编辑虚拟机设置”,修改处理器、内存、硬盘等信息后,启动 按Ctrl+Alt键可以切换到windows下。 启动成功后,输入

    2023年04月20日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包