超简单,不用GPU,3步教你轻松在笔记本上部署聊天大模型 LLaMA

今天带大家在自己的电脑(笔记本)上部署一个类似于 chatGPT 的 AI 聊天大模型。

部署完之后,你就拥有了一个私人 AI 聊天机器人,无需联网,随时进行实时对话。

0. 简单说下背景

大模型我们都不陌生了,但是以 chatGPT 为代表的大模型是闭源的,他们的源代码不开放,我们只能用他们的商业化产品。

好在 Meta(也就是原来的 FaceBook) 开源了他们家的大模型 LLaMa。

之所以叫"大"模型,是因为它的参数量巨大。

以 LLaMa举例子,它开源了 LLaMa-7B, LLaMa-33B 等模型,后面的数字就代表着参数数量。

7B,就意味着参数有 70 亿,但是很多人微调后,发现它的效果却一点也不输拥有几千亿的 chatGPT-3.5 模型。

但是参数量大,就会对计算机的算力有更高的要求,因此很多大模型,基本部署都是要求在 GPU 上进行。

后来有人为了在传统 CPU 电脑上运行大模型,就开发了比较牛的框架,我们今天要用的,就是其中的一个明星产品:llama.cpp 。

它是全部使用 C++ 语言来重写的 llama 项目,不像 python 那样需要依赖大量的包,显的臃肿。

而且这个 C++ 项目可以利用 CPU 的特性,完成模型的极致性能优化。

举个例子:llama.cpp 项目中,针对 Intel CPU 会利用 avx2 向量指令集来做优化。

avx2 指令集有些小伙伴可能不清楚,但是之前看过我的小册(计算机视觉从入门到调优)内容的同学肯定知道。

我在小册中就利用 avx2 指令集完成了对 resnet50 这个神经网络的性能优化,下图是小册中关于 avx2 部分的介绍。

总的来说,llama.cpp 项目不仅可以运行在 CPU 上,而且对于电脑的配置要求也不高。

一般有 4G 以上的内存就够了,这点要求基本上很多笔记本都可以满足要求。

另外需要说明的是,我本身很少用 Windows 和 MacOS 环境做开发,因此本篇文章以 Linux 环境来介绍,并且默认大家熟悉 Linux 操作。

如果没有Linux 环境,可以参考这篇文章快速搭建一个:不用虚拟机,10 分钟快速在 windows 下安装 linux 系统

至于 Windows 和 MacOS 环境的部署,可以去项目主页查看说明自行完成,llama.cpp 项目主页:github.com/ggerganov/l...

好了,话不多说,我们直接开始,以下 3 步轻松搞定。

1、下载 llama.cpp 源码并编译

以下所有命令均在 Linux Ubuntu 环境下执行。

如果缺少 Linux 命令,使用 `sudo apt-get install` 来安装。

如果缺少 python 包,使用 `pip3 install `命令来安装。

首先,利用 git 下载 llama.cpp 源码。

bash 复制代码
git clone git@github.com:ggerganov/llama.cpp.git

下载完成后,进入 llama.cpp 目录。

bash 复制代码
cd llama.cpp

执行 make 命令,完成编译。

go 复制代码
make

编译完成后,在 llama.cpp 目录下,会看到一个名称为 main 的可执行文件,这个就是等会要启动聊天的执行文件。

只要网络链接没问题,这一步很快就可以完成。

2. 下载量化后的模型文件

很多文章把这部分讲复杂了,我今天看了一些文章感觉也很吃力,跟别提新手了。

所以这部分我不打算介绍任何知识点,我们不用关心什么是量化操作,直接下载一个已经量化好的模型使用就行。

这一步需要从 huggingface (这是一个专门保存大模型的网站) 下载大模型(主要就是70 亿的参数)。

第一次下载估计很多人都会遇到问题,因此,我直接给出可行的步骤,一定按步骤来做。

复制以下 3 条命令,在 Linux 环境下执行:

arduino 复制代码
pip3 install -U huggingface_hubpip install -U "huggingface_hub[cli]" export HF_ENDPOINT=https://hf-mirror.com

简单来说就是访问 huggingface 的国内镜像网站,而不去访问国外的 huggingface 网站。

执行完上面两步后,执行:

css 复制代码
huggingface-cli download TheBloke/Llama-2-7b-Chat-GGUF llama-2-7b-chat.Q4_K_M.gguf --local-dir .

该命令会直接把模型文件下载到执行该命令的目录下,建议以上所有命令都在 llama.cpp 根目录下执行。

从上面的命令中我们可以看出,下载的是 llama-2-7b 模型,也就是有着 70 亿参数的那个模型。

需要说明一下,由于模型文件比较大,这一步下载时间会比较长,耐心等待即可,中途如果有问题可以多尝试几次。

3、开始聊天吧

下载完模型后,就可以直接开始聊天了。

在 llama.cpp 目录下执行:

css 复制代码
./main -m llama-2-7b-chat.Q4_K_M.gguf -c 4096 --temp 0.7 --repeat_penalty 1.1 -i

就会进入聊天交互界面,在交互界面里,就开始你的畅聊体验吧,你可以问这个模型任意问题,由它来回答。

比如,我问了一个问题:"Three birds in the tree, i killed one by a gun, how many birds left?"

模型竟然先反问了我一下,确认是不是这个问题,在我回答"yes"后,它才开始回答。

通过以上这 3 步就完成了大模型部署,是不是感觉挺简单的?

需要说明的是,上面的示例中我下载的是 llama-7b 模型,它还不支持中文。

如果你想要进行中文对话,可以去 hugging-face 网站上找一些支持中文的模型来下载,其余的步骤不变。

如果你想体验商用的 chatGPT-4,可以参考这个文章去升级GPT:手把手教你免费升级 GPT-4

好啦,今天关于如何在 CPU 上部署大模型的介绍到这,如果体验成功的小伙伴记得回来点个赞哦。

相关推荐
Paper Clouds11 分钟前
代码随想录|图论|15并查集理论基础
数据结构·算法·leetcode·深度优先·图论
Paper Clouds11 分钟前
代码随想录|图论|14有向图的完全可达性
数据结构·算法·深度优先·图论·宽度优先
遇见尚硅谷26 分钟前
C语言:游戏代码分享
c语言·开发语言·算法·游戏
不喜欢学数学er1 小时前
第二十八天:贪心算法part02(第八章)
算法·贪心算法
GGBondlctrl2 小时前
【leetcode】字符串,链表的进位加法与乘法
算法·leetcode·链表·字符串相加·链表相加·字符串相乘
让我们一起加油好吗2 小时前
【基础算法】倍增
数学·算法·快速幂·洛谷·倍增
Jess072 小时前
归并排序递归法和非递归法的简单简单介绍
c语言·算法·排序算法
徒慕风流2 小时前
使用球体模型模拟相机成像:地面与天空的可见性判断与纹理映射
算法·计算机视觉
7 972 小时前
C语言基础知识--柔性数组
数据结构·算法
打野二师兄3 小时前
LeetCode经典题解:21、合并两个有序链表
算法·leetcode·链表