大家好啊,我是董董灿。
这几天 Meta 把 LLaMA3 都开源了,反观 OpenAI 的 GPT 系列都已经是闭源产品,可以说 Meta 现在才是AI界的 OpenAI。
如果你对大模型感兴趣,可是还未接触过大模型的话,不用着急,本文带你在自己的笔记本上亲自搭建一个大模型出来。
本文基于 LLaMA2 模型来进行的,可以快速完成搭建并体验。
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 这个神经网络的性能优化。
总的来说,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 源码。
git clone git@github.com:ggerganov/llama.cpp.git
下载完成后,进入 llama.cpp 目录。
cd llama.cpp
执行 make 命令,完成编译。
make
编译完成后,在 llama.cpp 目录下,会看到一个名称为 main 的可执行文件,这个就是等会要启动聊天的执行文件。
只要网络链接没问题,这一步很快就可以完成。
2. 下载量化后的模型文件
很多文章把这部分讲复杂了,我今天看了一些文章感觉也很吃力,跟别提新手了。
所以这部分我不打算介绍任何知识点,我们不用关心什么是量化操作,直接下载一个已经量化好的模型使用就行。
这一步需要从 huggingface (这是一个专门保存大模型的网站) 下载大模型(主要就是70 亿的参数)。
第一次下载估计很多人都会遇到问题,因此,我直接给出可行的步骤,一定按步骤来做。
复制以下 3 条命令,在 Linux 环境下执行:
pip3 install -U huggingface_hub
pip install -U "huggingface_hub[cli]"
export HF_ENDPOINT=https://hf-mirror.com
简单来说就是访问 huggingface 的国内镜像网站,而不去访问国外的 huggingface 网站。
执行完上面两步后,执行:
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 目录下执行:
./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 网站上找一些支持中文的模型来下载,其余的步骤不变。
好啦,今天关于如何在 CPU 上部署大模型的介绍到这,如果体验成功的小伙伴记得回来点个赞哦。
最近开始撰写《Transformer专栏》了,会以最通俗的讲解方式来讲透其中的所有算法原理和使用动机。欢迎关注。移步:我的 Transformer 专栏来了