当前位置:AIGC资讯 > AIGC > 正文

在低配Windows上部署原版llama.cpp

现在大语言模型的部署,通常都需要大的GPU才能实现,如果是仅仅想研究一下,大语言模型的算法,我们是很想能够直接在我们的工作电脑上就能直接运行的,llama.cpp就是很好的实现。

LLaMa.cpp使用int4这种数值格式,其显著降低了内存需求,并且在大多数硬件上其性能严重受到内存限制。LLaMa.cpp使用原始C ++的项目来重写LLaMa(长格式语言模型)推理代码。这使得可以在各种硬件上本地运行LLaMa,包括Raspberry Pi

在使用一些优化和量化技术来量化权重的情况下,LLaMa.cpp使得大型语言模型可以在本地的多种硬件上运行,而无需昂贵的GPU。内存带宽往往是推理的瓶颈,通过量化使用更少的精度可以减少存储模型所需的内存。

下载源码

LLaMa.cpp 的项目地址在:https://github.com/ggerganov/llama.cpp

只要用git命令就能下载下来:

git clone https://github.com/ggerganov/llama.cpp

准备编译工具

LLaMa.cpp 是cpp 跨平台的,在Windows平台下,需要准备mingwCmake

mingw

进入 powershell 下,输入如下的命令安装 mingw

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
iex "& {$(irm get.scoop.sh)} -RunAsAdmin"
scoop bucket add extras
scoop bucket add main
scoop install mingw
Cmake

Cmake 的下载地址:https://cmake.org/download/

下载二进制安装版本:


到这里,Windows上的编译工具已经齐全了。

编译LLaMa.cpp

编译LLaMa.cpp也非常的方便,进入刚下载的源码目录。

cd llama.cpp

编译:

cmake . -G "MinGW Makefiles"
cmake --build . --config Release

没碰到问题的话,在bin的目录下就会生成几个可执行的exe。

可执行的exe虽然多,但是用到的主要有两个,一个是quantize.exe,一个是main.exe

有了程序以后,我们还差一个模型。

模型下载

huggingface 放着很多的开源模型,为了简单和性能,使用的是LLaMA-7B模型,下载地址在:https://huggingface.co/nyanko7/LLaMA-7B/tree/main

这个模型接近14g,下载需要一点时间,慢慢的等待。

模型下载完成以后,在llama.cpp的目录下新建一个目录org-models

把下载的文件安排成这样的形式:

org-models/
- 7B/ #这是一个名为7B的文件夹
- consolidated.00.pth
- params.json
- tokenizer.model

模型就完成了,这个是llama 的模型,在普通电脑上是跑不起来的,llama.cpp 是量化。

量化模型

在目录下,运行:


bin\quantize.exe ./org-models/7B/ggml-model-f16.bin ./org-models/7B/ggml-model-q4_0.bin 2

python convert-pth-to-ggml.py org-models/7B/ 1

这时候,在org-models 的目录下生成了ggml-model-f16.bin,在这里就能输入命令:

bin\main.exe -m org-models/7B/ggml-model-f16.bin --color -f prompts/alpaca.txt -ins -c 2048 --temp 0.2 -n 256 --repeat_penalty 1.3 -t 16

让模型跑起来:


但是跑的时候,有点慢。

量化4-bit模型;

python convert-pth-to-ggml.py org-models/7B/ 1

继续跑:

bin\main.exe -m org-models/7B/ggml-model-q4_0.bin --color -f prompts/alpaca.txt -ins -c 2048 --temp 0.2 -n 256 --repeat_penalty 1.3 -t 16

这个时候就快多了。但是你是不是发现,他有时候会出错,而却还没有完全答完就结束了,对中文的支持,很一般,这是因为llama.cpp本身对中文就不怎么支持,github上有些人对llama.cpp进行了扩充和微调,使得他中文的理解能力大大的加强。


可以进一步的,把中文的模型,融合进来。

更新时间 2023-11-16