首页 > 系统相关 >16G内存+CPU本地部署ChatGLM2/Baichuan2推理(Windows/Mac/Linux)

16G内存+CPU本地部署ChatGLM2/Baichuan2推理(Windows/Mac/Linux)

时间:2023-09-19 16:00:38浏览次数:62  
标签:Windows ChatGLM2 16G 内存 chatglm cpp 量化 Baichuan2 模型

概述

本文使用chatglm.cpp对中文大语言模型(LLM)进行量化与推理,支持ChatGLM2-6B、Baichuan2-13B-Chat等模型在CPU环境16G内存的个人电脑上部署,实现类似ChatGPT的聊天功能。支持的操作系统包括Windows、Mac OS、Linux等。

其中,量化过程需要临时使用一台内存较大的服务器。4bit量化后的模型较小(Baichuan2-13B量化后约8G),可在16G内存的个人电脑上部署。过程中还需要从github下载代码,从huggingface下载模型。

本文使用的chatglm.cpp版本为0.2.6,后续版本的命令可能有变化,请以readme为准。

接下来先介绍相关背景,而后以Baichuan2-13B-Chat为例介绍部署过程。

背景

大语言模型(LLM)是计算机领域今年的一大研究热点。一些AI公司相继推出了开源的中文LLM,使广大用户得以自由体验LLM的强大功能。

然而,LLM的部署对硬件资源有较高要求。对于不愿花钱租用服务器的用户而言,如何在个人电脑上进行本地化部署,成为了一大难题。

以16G内存、英伟达显卡4G显存的家用电脑为例。目前效果较好的中文LLM,参数量至少为6B或7B规模,例如ChatGLM2-6B与Baichuan2-7B-Chat。这样规模的模型无法完整放入16G内存进行推理,只能offload到硬盘,速度极慢,且对硬盘有损伤。若使用4bit量化的模型,则无法完整放入4G显存运行,目前也没有现成的代码能将其offload到内存。因此,只能考虑完全在CPU内存环境运行4bit量化模型。

对于ChatGLM2,其量化方式支持用CPU版PyTorch运行int4版本的模型,但速度较慢。对于Baichuan2,其提供的int4版本采用bitsandbytes库进行量化,目前没有找到在CPU环境运行的方法。对于一般用户而言,自行编写相关代码有很大难度。

所幸,基于C语言的GGML张量库提供了在CPU环境高速运行量化版模型的机会,而基于GGML的开源代码库chatglm.cpp提供了对ChatGLM2-6B、Baichuan2-13B-Chat等模型的4bit量化支持。对于Baichuan2模型,虽然暂不支持7B版本,但13B量化后也只有约8G,对于16G内存的个人电脑而言完全可以接受。

利用chatglm.cpp,用户可在16G内存的个人电脑上部署ChatGLM2-6B、Baichuan2-13B-Chat等中文LLM推理,实现类似ChatGPT的聊天功能。下文将以Baichuan2-13B-Chat模型为例,介绍如何用chatglm.cpp进行本地部署。ChatGLM2-6B的部署方式也是基本相同的,因此不再赘述。

步骤1-量化

首先,需要对Baichuan2-13B-Chat模型进行4bit量化。不能直接使用百川提供的int4版本。如果没有现成的GGML版4bit量化模型,就只能自己做量化。

即使不想采用量化,为了兼容chatglm.cpp,也需要将原模型转为GGML版本。

量化前的模型约28G,量化后约8G,因此需要临时使用一台内存较大的服务器。

环境与文件准备

在服务器上安装Python环境,例如使用Anaconda,安装过程请参考其他文章。本文使用的Python版本为3.9。

从Github上克隆chatglm.cpp,方法参考readme,即运行以下命令:

git clone --recursive https://github.com/li-plus/chatglm.cpp.git

如果服务器能连接huggingface,就不需要自己下载模型。否则,就需要自行从huggingface下载Baichuan2-13B-Chat模型,只能是以下版本:

https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat/tree/main

下载以上链接的所有文件即可。

执行量化

将前述文件全部放至大内存服务器,然后就可以生成4bit量化的GGML版模型了。

进入 chatglm.cpp 目录,参考readme执行以下命令:

python chatglm_cpp/convert.py -i baichuan-inc/Baichuan2-13B-Chat -t q4_0 -o baichuan2-13b-chat-ggml-int4.bin

如果是自行下载的模型,就将 baichuan-inc/Baichuan2-13B-Chat 替换为模型所在的目录。

提示有缺的库就安装一下。其中pytorch要参考官网的安装方式。

最终得到的 baichuan2-13b-chat-ggml-int4.bin 就是本地化部署所需的模型文件,文件名称可以任意修改。

步骤2-本地部署

本地部署需要至少16G内存,不需要使用GPU。可以在配置较好的个人电脑上进行部署。

环境与文件准备

将上一步得到的模型文件保存到本地。

安装Python环境,建议使用Anaconda。本文使用的Python版本为3.9。

chatglm.cpp是基于GGML的,不需要安装PyTorch。

安装chatglm-cpp库,过程中需要用到 cmakeg++ 。MAC电脑需要先自行配置安装这些软件,然后运行以下命令:

pip install -U chatglm-cpp

Windows和Linux可以用相同的方法,但在Windows上容易报错。一种替代的方法是直接下载whl安装包:

https://github.com/cczhong11/chatglm.cpp/actions/runs/6161193495

在已登录Github的状态下,单击下方 linux-wheelswindows-wheels 即可下载对应操作系统的whl安装包。解压后可以看到多个whl文件,要选择对应的Python版本,例如 cp39 对应的是Python 3.9。

之后执行以下命令安装(Windows系统):

pip install chatglm_cpp-0.2.6-cp39-cp39-win_amd64.whl

这样就不需要安装 cmakeg++ 了。

chatglm.cpp提供的web demo可以实现类似ChatGPT的聊天功能,为此还需安装gradio:

pip install gradio

如果网速过慢,可以使用镜像

pip install pytest -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

web demo的代码在chatglm.cpp的 examples/web_demo.py ,将这个代码单独拿出来使用即可。

运行web demo

web_demo.py 和模型文件放在同一目录下,执行:

python web_demo.py -m baichuan2-13b-chat-ggml-int4.bin --top_k 5 --top_p 0.85 --temp 0.3 --repeat_penalty 1.05

在弹出的网页中可以进行聊天对话。该过程不需要连接互联网。

如果希望局域网的其他设备访问该网页,则需要修改 web_demo.py

先在开头添加以下代码:

import os
os.environ['no_proxy']='localhost,127.0.0.1,::1'

再修改最后一行为:

demo.queue().launch(server_name='0.0.0.0', server_port=7860)

这样启动后,即可在其他设备上用浏览器进行访问。端口号可以自行定义。

以上就是用16G内存+CPU本地部署ChatGLM2/Baichuan2推理的方法介绍,希望能帮助到有相关需求的人。

标签:Windows,ChatGLM2,16G,内存,chatglm,cpp,量化,Baichuan2,模型
From: https://www.cnblogs.com/hjhhsy120/p/17714893.html

相关文章

  • windows 上 ffmpeg 库的安装
    真复杂啊安装ffmpeg库有两种途径,一种是自己下载源码再去编译,另一种是使用vcpkg自动安装一般情况下,第二种是最简单方便的,但是如果你需要使用ffmpeg的特定历史版本,那就有点困难了下面记录下我遇到的坑,借助这篇文章,我打算使用vcpkg切换到ffmpeg的历史提交并安装1.cmd......
  • windows jenkins安装
    jenkins 2.414.1版本对应jdk或jre版本7,11jenkins下载https://www.jenkins.io/download/ jdk7,17下载https://www.oracle.com/java/technologies/downloads/#jdk17-windows 安装jenkins 1,修改安装路径,点击Next下一步 2,选择第一个,将Jenkins作为windows系统服务,......
  • 获得详细错误信息-windows核心编程
    windows程序员想要知道系统出错信息,一般使用GetLastError()来获取,该API获取的是错误码,如通过GetLastError返回123我们可以查询VS自带工具errorloop得到出错码123的错误信息:文件名、目录名或卷标语法不正确。这是一件挺麻烦的事。所以如果开发过程中我们能直接得到错误码的错误信息......
  • linux上交叉编译windows的VLC
    1.目标目标:在linux上交叉编译windows的VLC版本,并实现功能的裁剪 2.搭建环境2.1编译环境系统版本:UnionTechOSDesktop20Home内核版本:5.10.0-amd64-desktopVLC版本:3.0.18预构建版本:vlc-contrib-x86_64-w64-mingw32-latest2.2.安装工具和依赖apt-getinstallgcc-mingw......
  • Windows系统安装docker
    1.打开电脑中的Hyper-v服务打开控制面板:如果找不到可以搜索控制面板注意是点程序,而不是卸载程序选择:启用或关闭Windows功能点击Hyper-V进行打开如果没有Hyper-v服务解决办法如下:打开CMD窗口或者PowerShell输入systeminfo命令:在最后可以看到Hyper-V要求,查看四个要......
  • [FAQ] Git远程仓库想把目录大写改为小写,windows本地不识别的的处理
     通过四步操作:1.先把忽略大小写设为false,即区分大小写gitconfigcore.ignorecasefalse2.拷贝出来备份那几个大写的目录,随后分支上操作删除,提交到远程。3.备份出来的目录改为小写,拷贝到代码分支的目录里,提交到远程。4.恢复成原来的设置gitconfigcore.ignorecasetrue......
  • 有许多注册表监视工具可用于监视和跟踪Windows操作系统中的注册表更改
    有许多注册表监视工具可用于监视和跟踪Windows操作系统中的注册表更改。以下是几个常用的注册表监视工具:ProcessMonitor:由Sysinternals开发的免费工具,能够实时监视和记录Windows系统上的文件系统、注册表和进程/线程活动。它提供了强大的过滤和搜索功能,以便轻松筛选所需的注册表......
  • Windows平台配置VSCode编写MinGW Qt
    Windows平台配置VSCode编写MinGWQt下载Qt官网下载链接,此处下载了开源版的在线安装器:!DownloadQt:GetQtOnlineInstaller(需要其他版本或下载源可自行搜索相关文章)VSCode官网:VisualStudioCode-Codeediting.RedefinedQt安装该版本在线下载器刚打开需要登录......
  • WPF禁用Windows窗口自带的关闭按钮(非关闭拦截)
    #region禁用关闭按钮[DllImport("USER32.DLL",CharSet=CharSet.Unicode)]privatestaticexternIntPtrGetSystemMenu(IntPtrhWnd,UInt32bRevert);[DllImport("USER32.DLL",CharSet=CharSet.Unicode)]privatestaticexternUInt32RemoveMenu(......
  • RubyMine 2023:高效Ruby编码工具,适用于macOS和Windows
    RubyMine是JetBrains开发的一款为Ruby开发者量身定制的集成开发环境(IDE)。它为Ruby语言提供了全面的支持,包括代码编辑、调试、测试和集成版本控制系统等功能,帮助开发者更加高效地进行Ruby编程。→→↓↓载RubyMine2023mac+win版代码编辑与自动补全:RubyMine提供了强大的代码编......