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

大家好啊,我是董董灿。

这几天 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 上部署大模型的介绍到这,如果体验成功的小伙伴记得回来点个赞哦。

相关推荐
天才在此6 分钟前
汽车加油行驶问题-动态规划算法(已在洛谷AC)
算法·动态规划
莫叫石榴姐1 小时前
数据科学与SQL:组距分组分析 | 区间分布问题
大数据·人工智能·sql·深度学习·算法·机器学习·数据挖掘
茶猫_2 小时前
力扣面试题 - 25 二进制数转字符串
c语言·算法·leetcode·职场和发展
肥猪猪爸4 小时前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
readmancynn4 小时前
二分基本实现
数据结构·算法
萝卜兽编程4 小时前
优先级队列
c++·算法
盼海4 小时前
排序算法(四)--快速排序
数据结构·算法·排序算法
一直学习永不止步5 小时前
LeetCode题练习与总结:最长回文串--409
java·数据结构·算法·leetcode·字符串·贪心·哈希表
Rstln5 小时前
【DP】个人练习-Leetcode-2019. The Score of Students Solving Math Expression
算法·leetcode·职场和发展
芜湖_6 小时前
【山大909算法题】2014-T1
算法·c·单链表