部署大模型门槛这么低了吗?

大家好啊,我是董董灿。

这几天 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 源码。

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_hub
pip 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 网站上找一些支持中文的模型来下载,其余的步骤不变。

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

相关推荐
逸狼22 分钟前
【JavaEE初阶】多线程6(线程池\定时器)
java·开发语言·算法
no_play_no_games1 小时前
[模板]树的最长路径
算法·深度优先·图论·树形结构
tan77º1 小时前
【C++】异常
c++·算法
ymchuangke1 小时前
数据清洗-缺失值处理-缺失值可视化图(竖线)
python·算法·数学建模
我要学编程(ಥ_ಥ)2 小时前
滑动窗口算法专题(1)
java·数据结构·算法·leetcode
niceffking2 小时前
JVM 一个对象是否已经死亡?
java·jvm·算法
大油头儿2 小时前
排序算法-冒泡排序
数据结构·算法·排序算法
地平线开发者2 小时前
地平线占用预测 FlashOcc 参考算法-V1.0
算法·自动驾驶
LluckyYH2 小时前
代码随想录Day 46|动态规划完结,leetcode题目:647. 回文子串、516.最长回文子序列
数据结构·人工智能·算法·leetcode·动态规划
源代码:趴菜3 小时前
LeetCode118:杨辉三角
算法·leetcode·动态规划