使用CPU本地部署一个大模型

news2025/1/6 20:15:45

前言

不少人都想要部署一个自己的本地大模型,但是受限于昂贵的硬件资源只能作罢,即便是量化后的模型也通常要至少5G+(ChatGLM2-6B INT4)的显存。因此我们想到能不能使用CPU来进行部署,当然了,要接受比较慢的推理速度。下面介绍两个开源模型的本地CPU量化部署方案,前提当然是要会一点点魔法

Llama2

llama2是Meta推出的开源大模型llama的第二代版本,有比较好的效果和社区支持,可惜原始模型对中文不支持。我们这里主要介绍一下基于llama.cpp的cpu部署方案,以及一个中文微调的llama2模型。

这个部署方案主要是llama-gpt,有兴趣的小伙伴可以直接去看一下。下面来进行开始吧!

前期准备

首先还是看一下硬件要求吧,这是不同模型进行推理所需要的内存大小,我们选择的是量化的7b对话模型:
在这里插入图片描述

这是7b模型int4量化后的推理速度:
在这里插入图片描述
我们选用的平台是Linux,CPU型号当然是越好推理速度越快,但是内存实测至少要有6G。初次之外我们还需要有docker,要支持docker-compose的那种,你不知道自己的docker支不支持?运行docker-compose version看一下。

开始部署

首先把这个仓库:https://github.com/getumbrel/llama-gpt.git 下载到你的目录下,然后cd进去:cd llama-gpt

接着执行sudo docker compose up命令。这一步会去huggingface上下载Umbrel微调好的模型,顺便下载一个api服务和一个web ui界面。这个模型是比较大的,大概有4GB,另外还有一些依赖虽然比较小但也要看网络条件下载一会。然后等着它启动就可以了。

一切结束后,访问 http://localhost:3000 就可以了,进去以后大概是这样一个页面:
在这里插入图片描述

更换模型

但是这是英文模型啊!我们需要更换一下前面提到的中文模型才能进行中文对话。这里我们选用的是LinkSoul-AI提供的模型,g站地址是https://github.com/LinkSoul-AI/Chinese-Llama-2-7b。还是以7b int4量化模型为例,在这里进行下载。下完完后将这个.bin文件放到我们的llama-gpt/models目录里,然后将原来目录下的模型随便换个名字,然后将我们的中文模型换成刚才模型的模型。再cd ..回到上层目录,执行sudo docker compose down将服务关掉,然后再sudo docker compose up重启就可以了。下面是中文对话例子:
在这里插入图片描述
当然还可以换其他的模型,只是要注意只能用llama2的模型,比如https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML/tree/main 提供的模型。越大的模型推理起来会越慢哦。

ChatGLM2

接下来介绍一个汉语“母语”的模型,ChatGLM2。ChatGLM2-6B是清华大学开源的一款中英双语大模型,在中文开源大模型里是效果比较好的一个。贴两个链接:GitHub地址,HuggingFace地址。

我们这个部署方案是基于chatglm.cpp进行的,这是一个类似 llama.cpp 的 CPU 量化加速推理方案,这是g站链接:https://github.com/li-plus/chatglm.cpp。具体的部署步骤实际上在链接上已经写的比较清楚了,我也是按照说明一步一步进行复现是能够成功部署的。

另外这个项目还支持部署百川2 13b大模型,这个模型的效果也是不错的。不过模型需要自己下载,可以去huggingface搜索一下相关内容,关键字chatglm2、量化、q4_0。

ChatGLM2的量化部署方案相比Llama2来说,默认占用的内存资源较少(不推理时),但是推理速度较慢。

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

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

相关文章

Qt元对象系统

元对象系统 一 元对象系统的基本概念 qt 元对象系统主要提供功能:对象间通信的信号和槽机制,运行时类型信息和动态属性系统等。元对象系统是Qt对原有C进行的一些扩展,主要是为实现信号和槽机制引入的,信号和槽机制是Qt的核心特征…

二叉树题目:奇偶树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:奇偶树 出处:1609. 奇偶树 难度 4 级 题目描述 要求 如果一个二叉树满足下述条件,则称…

【深度学习】BLIP: 用于统一的视觉-语言理解和生成的引导式语言图像预训练

BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation BLIP:用于统一的视觉-语言理解和生成的引导式语言图像预训练 论文:https://arxiv.org/abs/2201.12086 代码:https://github.…

springboot对接rabbitmq并且实现动态创建队列和消费

背景 1、对接多个节点上的MQ(如master-MQ,slave-MQ),若读者需要自己模拟出两个MQ,可以部署多个VM然后参考 docker 安装rabbitmq_Steven-Russell的博客-CSDN博客 2、队列名称不是固定的,需要接受外部参数&…

【LRU】一文让你弄清 Redis LRU 页面置换算法

Q:一天同事问,我放在 redis 中的 key,为什么有时候过一段时间数据就没有了,我并没有设置过期时间呀??😳😳 A:你的 redis 淘汰策略是什么样的,这个 key 可能是…

dirname - return directory part of PATH.

用Visual Studio 2022开发Linux程序, 用ssh连接 函数单元测试 下载glibc解压到E:\library\GNU\glibc-2.38 mzhDESKTOP-GITL67P:~$ sudo /etc/init.d/ssh start * Starting OpenBSD Secure Shell server sshd …

【Spring】-Bean的作用域和生命周期

作者:学Java的冬瓜 博客主页:☀冬瓜的主页🌙 专栏:【Framework】 主要内容:Lombok的使用,Bean作用域的分类和修改。Singleton、Prototype。spring的执行流程,Bean的生命历程。 文章目录 一、Bea…

树莓派+墨水屏 = DIY一个超慢速电影播放器

安装电子墨水屏这里使用了 Waveshare 的一款墨水屏,带驱动板。将驱动板插入树莓派的 GPIO 即完成屏幕和树莓派的连接。驱动这个屏幕需要启用树莓派的 SPI 接口。运行 sudo raspi-config 进入配置工具来启用 SPI 运行python例程 安装函数库 sudo apt-get update su…

指针笔试题详解

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.前言 2.指针题写出下列程序的结…

Unity Windows上Inspector界面黑屏无法显示

问题描述:在Windows上Unity 打开工程Inspector显示黑色,不可用。如下图: 可能的问题。 Unity 设置Windows上默认渲染方式显卡不支持。 解决方案: 一、换一个好一点显卡 二、如下图:

Transformer的上下文学习能力

《Uncovering mesa-optimization algorithms in Transformers》 论文链接:https://arxiv.org/abs/2309.05858 为什么 transformer 性能这么好?它给众多大语言模型带来的上下文学习 (In-Context Learning) 能力是从何而来?在人工智能领域里&…

实验室安全教育与考试

目录 我的错题(2个)新知识题目(10个)刚开始不太理解的题目(10个)写在最后(免责声明) 我的错题(2个) 18.发生电气火灾时可以使用的灭火设备包括:&…

SAP Service服务重注册技术手册

当SAP服务被卸载后,或SAP虚拟机整机copy后(可能还需要涉及主机名更改),需要对SAP服务重注册。 在路径 \sapmnt\<SID>\ DVEBMGS00\exe下使用程序sapstartsrv.exe来卸载、安装SAP服务: 其中<SID>、NR参考Service中需要卸载的服务名(卸载后,Services列表中的SA…

【UE 粒子练习】08——LOD概述

目录 概念 应用举例 一、检查当前粒子系统中是否设置了LOD 二、添加LOD 三、LOD设置&#xff08;单个粒子发射器&#xff09; 四、LOD设置&#xff08;多个粒子发射器&#xff09; 概念 在 Unreal Engine 中&#xff0c;LOD&#xff08;Level of Detail&#xff0c;细…

Kubernetes 学习总结(37)—— Kubernetes 之 CoreDNS 企业级应用

前言 IP 地址会有变更&#xff0c;程序配置IP地址&#xff0c;所有涉及到此IP的地方都需要改变&#xff0c;对运维和研发都不友好。IP不容易被记住。引入域名来替换 IP&#xff0c;这样业务使用唯一标识域名&#xff0c;域名可以通过 DNS 服务器解析成 IP 供业务三层通信使用。…

时间复杂度、空间复杂度

一、时间复杂度 1、概念 时间复杂度&#xff1a;计算的是当一个问题量级增加的时间&#xff0c;时间增长的趋势&#xff1b; O&#xff08;大O表示法&#xff09;&#xff1a;渐进的时间复杂度 2、举例 ① 以下 for 循环的时间复杂度&#xff1a;O(1 3n) O(n) 去掉常数…

rom修改----安卓系列机型如何内置app 如何选择so文件内置

系统内置app的需求 在与各工作室对接中操作单中&#xff0c;很多需要内置客户特定的有些app到系统里&#xff0c;这样方便客户刷入固件后直接调用。例如内置apk 去开机引导 去usb调试 默认开启usb安全设置等等。那么很多app内置有不同的反应。有的可以直接内置。有的需要加so…

(十三)VBA常用基础知识:编程时各种常用操作之设值,取值,活动窗口设定

cell里设置内容的两个写法 Sub test() Range("A1").Value "帅哥" Cells(1, 2).Value "帅哥 too" End Sub2.cell里内容的取得 Sub test() Range("A1").Value "帅哥" Cells(1, 2).Value "帅哥 too" a Range(…

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C#)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切&#xff08;ROI&#xff09;功能&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的图像剪切&#xff08;ROI&#xff09;功能的技术背景CameraExplorer如何使用图像剪切&#xff08;ROI&#xff09;功…

[nodejs]NVM使用指南

安装 官网链接 使用 # 版本号 nvm version# 显示node是运行在32位还是64位。 nvm arch# 显示已安装的列表 nvm list nvm ls# 使用制定版本node。可指定32/64位 nvm use [version] [arch]# 显示可安装的所有版本 nvm list available# 安装最新版本 nvm install latest# 安装指…