banner
andrewji8

Being towards death

Heed not to the tree-rustling and leaf-lashing rain, Why not stroll along, whistle and sing under its rein. Lighter and better suited than horses are straw sandals and a bamboo staff, Who's afraid? A palm-leaf plaited cape provides enough to misty weather in life sustain. A thorny spring breeze sobers up the spirit, I feel a slight chill, The setting sun over the mountain offers greetings still. Looking back over the bleak passage survived, The return in time Shall not be affected by windswept rain or shine.
telegram
twitter
github

无需GPU,windows本地部署llama2大模型,python接口生成文本

大家好,我们今天要讲的内容是,windows 本地部署 llama2 大模型。

在本节课中,我们将在 windows 环境,不使用 GPU,只使用 CPU 的情况下,基于 llama.cpp 这个库,部署并运行 llama2 大模型。

image
完成部署后,会直接使用 python 接口,进行文本生成。

1. 什么是 llama2 大模型

2023 年 7 月 19 日,Meta 发布了免费并且可商用的大语言模型 Llama 2。

这一举措,足以让大模型领域的格局,发生巨大变化。

772101f8bcff36df26b8347876841a8e
lama 2 系列模型,有 70 亿、130 亿和 700 亿,三种不同规模参数的模型。

经过评估 Llama2 的实际效果,已超过 GPT3,甚至已经接近 GPT3.5。

关于 Llama 2 本身,有非常多值得讨论的地方,尤其是对国内 AI 领域的深远影响,将来我会再专门出视频来讨论。

下面,我们进入正题,就用手头的个人电脑,来体验一下 Llama2。

2.llama-cpp 和 llama-cpp-python

我们都知道,大语言模型,动辄就是上百亿的参数,本身就不是在单机环境下使用的。

即使是 Llama 系列,最小的也有 70 亿参数,也需要英伟达 RTX4090 或 A10 来运行。

image
但是,有位超级大神,他基于 Meta 发布的 LLaMA 模型,开发出了一个运行 llama 模型的模块 llama.cpp。

该项目纯手工基于 C++ 打造,没有任何第 3 方编译依赖,使我们可以基于 cpu 条件,进行大模型推理。

f88739d9a87bcb1603c7c5663958b59d
另外,llama.cpp 不仅支持 llama2 模型,还支持 Alpaca、chiness-llama、WizardLM 等等其他模型,并且还提供了 Python、Go、Node.js 等其他语言的接口。

接下来,我们来一步步搭建 llama-cpp 的 python 环境,实现大语言模型的单机运行。

3. 基于 anaconda 搭建环境

在搭建环境前,需要提前安装 visual studio,在安装 llama-cpp-python 的过程中,用于编译 llama-cpp。

image
我们可以直接在 VS 的官网,下载 VS 2022 社区版,进行安装。

b21eb69ebaa27d2143fe36a5c096addc
完成 VS 的安装后,使用 anaconda,创建一个新的 python 环境,其中 python 版本选择 3.10。

aecdfa5e470a22ac003b405a9b03bc35

接着打开环境,使用 pip install llama-cpp-python 命令,安装 python 接口的 llama-cpp。
4. 在 huggingface 上,下载模型

我们可以在 huggingface 上,下载量化后的 llama2 模型。

具体登录 huggingface 后,找到 TheBloke 这个项目,再在其中找到 Llama-2-7B-Chat-GGML 模型。

cc5e0f64537d34c319049b3a4aaa1802
这里要说明的是,Llama-2-7B 是原始的 7B 版本,Chat 代表聊天微调版本,而 GGML 代表量化模型。

所谓模型量化,可以简单的理解为一种模型压缩技术。

在下载列表中,我们选择下载其中的 q4_0 这个版本。

列表中还有很多其他版本。

6021330a7bde741f472004872008e44c

简单来说,q4_0 表示每 4 个比特一个权重,q5_0 就是每 5 个比特一个权重。

其中的数越大,那么精度就越高,我们选择一个差不多的来使用就可以了。

5. 编写 python 程序,进行文本生成

完成环境的搭建和模型的下载后,就可以编写 python 代码了。

程序会依赖 llama-cpp-python 这个模块,它的接口使用方法,可以在项目的文档中找到。

838ef90b992fcabae68f8bbc2b2b8c94
打开项目文档,可以找到接口中的各个参数都怎么使用,这里就不过多介绍了,具体的使用效果,还需要大家自行调试。

6a1fce53284eee7b002f54012d362b21
下面,我们就来写一个简单的样例程序。

5bdc7d9ebfc06974e8026ccd10826416
首先导入 llama_cpp。

在 main 函数中,首先创建 Llama 模型,模型使用我们刚刚下好 q4_0 模型。

然后对模型输入 hello、who are you、how old are you,看一看模型的反应如何。

这里我们实现一个功能函数 generate_text。函数传入模型 model 和输入信息 message,函数返回模型的输出结果。

在函数中,首先需要将 message 转换为 prompt,然后将 prompt 输入至模型,得到输出 output。

输出结果的格式可以参考文档,我们将其中的 choices 中的 text 字符串取出,保存到 answer 中,并将 answer 返回。

运行程序,可以得到三个测试结果。

3d73c6a16ac0302e613e38afce04a4ff
发送 hello,llama2 会回复一个友善的回复。

发送 who are you,llama2 会自我介绍。

发送 how old are you,llama2 也会给出合适的结果。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。