LLama.cpp轻量化模型部署及量化

LLama.cpp轻量化模型部署及量化

    正在检查是否收录...
一言准备中...

模型文件下载

首先说一下用到的模型,这次用的是Llama3-8B-Chinese-Chat-GGUF-8bit模型,想要快速的从huggingface下载模型可以参考我的另一篇博文。

从huggingface更快的下载模型

1.准备模型文件

export HF_ENDPOINT=https://hf-mirror.com huggingface-cli download shenzhi-wang/Llama3-8B-Chinese-Chat-GGUF-8bit --local-dir /home/xintk/workspace/model/Llama3-8B-Chinese-Chat-GGUF

2.安装

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

3.编译

编译会用到CMake。起初对CMake不是很了解,对CMake和Make傻傻分不清。

查资料了解到:

   CMake是一个跨平台的系统生成工具,它的主要作用是通过配置文件(通常是 CMakeLists.txt)生成适合于目标平台的构建脚本或文件。

   Make是一个构建自动化工具。通过读取Makefile 来执行编译和构建过程。

编译过程:

CMake 生成 Makefile。 Make 读取 Makefile 并调用 g++ 进行编译和链接。 g++ 是实际执行编译和链接的编译器。

CPU版本

cmake -B build_cpu
cmake --build build_cpu --config Release

CUDA版本

cmake -B build_cuda -DLLAMA_CUDA=ON # cmake -B:新建一个文件夹build_cuda,然后把所有需要被编译的文件都放到build_cuda文件下面 # -DLLAMA_CUDA=ON:打开cuda开关,表示支持cuda cmake --build build_cuda --config Release -j 12 # --build:编译命令  # --config:配置使用Release模式 # -j:使用多核性能,12核加速编译 

执行cmake -B build_cuda -DLLAMA_CUDA=ON报错

检查了一下,我的cmake版本是cmake version 3.30.0,cuda是12.2,一开始以为cmake版本不对应,后来发现gcc版本的原因,于是调整了gcc版本。

更换之前我的gcc版本是13.2,太新了。

安装gcc

 sudo apt install gcc-9 g++-9 gcc-10 g++-10

设置gcc优先级为gcc-10

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10 --slave /usr/bin/gcov gcov /usr/bin/gcov-10

重新执行cmake -B build_cuda -DLLAMA_CUDA=ON成功了。效果如下

执行cmake --build build_cuda --config Release -j 12命令,过程需要一点点时间

cmake --build build_cuda --config Release -j 12

编译完成之后会在build_cuda/bin目录下生成可执行文件

4.具体使用

cmake的功能很强大,这里主要用到了三个功能。

    1)主功能main

         编译完成之后先进入到build_cuda/bin目录下,可以看到这里有llama-cali文件,然后执行如下命令。    main参数介绍

cd /home/xintk/workspace/llama.cpp/build_cuda/bin ./llama-cli -m /home/xintk/workspace/model/Llama3-8B-Chinese-Chat-GGUF/Llama3-8B-Chinese-Chat-q8_0-v2_1.gguf \ -n -1 \ -ngl 256 \ -t 12 \ --color \ -r "User:" \ --in-prefix " " \ -i \ -p \ 'User: 你好 AI: 你好啊,我是小明,要聊聊吗? User: 好啊! AI: 你想聊聊什么话题呢? User:'

   参数介绍:

-m 指定模型路径

-n 预测多少token,假设指定128:预测到128个token结束,-1表示一直生成

-ngl 使用 GPU 支持进行编译时,允许将某些层卸载到 GPU 进行计算。通常可提高性能

-t 使用多核性能

--color 启用彩色输出以在视觉上区分提示、用户输入和生成的文本

-r 反向提示,遇到某个字符停下来,营造一种交互,这里指定为User:

--in-prefix 输入之前给一个空格

-i 交互模型(chat)

-p 等价--prompt

官方给的参数解析

    2)  服务部署功能server

           这一部分由build_cuda/bin/llama-server控制,执行如下命令

cd /home/xintk/workspace/llama.cpp/build_cuda/bin ./llama-server \ -m /home/xintk/workspace/model/Llama3-8B-Chinese-Chat-GGUF/Llama3-8B-Chinese-Chat-q8_0-v2_1.gguf \ --host "127.0.0.1" \ --port 8080 \ -c 2048 \ -ngl 128 \

启动这个服务,效果如下:

访问这个服务

# Openai 风格 curl --request POST \ --url http://localhost:8080/v1/chat/completions \ --header "Content-Type: application/json" \ --header "Authorization: Bearer echo in the moon" \ --data '{ "model": "gpt-3.5-turbo", "messages": [ {"role": "system", "content": "你叫蜡笔小新,是一个ai助手,是由哆唻爱梦开发实现的."}, {"role": "user", "content": "你好啊!怎么称呼你呢?"} ] }'

   效果如下:会快速地给一个结果

3)量化功能

量化指的是把一个高精度的浮点数,改变成一个低精度的浮点数或Int

     1.fp16  ---int8

     2.fp16  ---fp16

  1)将 gguf 格式进行(再)量化

cd /home/xintk/workspace/llama.cpp/build_cuda/bin 

./llama-quantize

可以先执行./llama-quantize -h 查看一下参数

./llama-quantize
./llama-quantize --allow-requantize /home/xintk/workspace/model/Llama3-8B-Chinese-Chat-GGUF/Llama3-8B-Chinese-Chat-q8_0-v2_1.gguf /home/xintk/workspace/model/Llama3-8B-Chinese-Chat-GGUF/Llama3-8B-Chinese-Chat-q4_1-v1.gguf Q4_1

  2)将 safetensors 格式转成 gguf

cd /home/xintk/workspace/llama.cpp

python convert-hf-to-gguf.py /home/xintk/workspace/model/Llama3-8B-Chinese-Chat --outfile /home/xintk/workspace/model/Llama3-8B-Chinese-Chat-GGUF/Llama3-8B-Chinese-Chat-q8_0-v1.gguf --outtype q8_0

5.实验代码

实验中用到的代码我放到了github上,地址如下 。

https://github.com/850977164/llama.cpp

参考资料

1.https://github.com/ggerganov/llama.cpp/tree/master/examples/main

2.https://github.com/echonoshy/cgft-llm/tree/master/llama-cpp

总结

文章总结:
本文详细介绍了如何下载、安装、编译并使用Llama3-8B-Chinese-Chat-GGUF-8bit模型,同时提供了CUDA版本编译过程中可能遇到的问题及其解决方法。
### 主要步骤总结:
1. **模型文件下载**:
- 使用指定命令从huggingface下载Llama3-8B-Chinese-Chat-GGUF-8bit模型。
2. **准备模型文件**:
- 通过`huggingface-cli`工具下载指定模型到本地目录。
3. **安装llama.cpp**:
- 使用`git clone`命令下载llama.cpp的源代码。
4. **编译**:
- **CPU版本**:使用CMake生成Makefile,并通过Make工具进行编译。
- **CUDA版本**:详细解释了CMake与Make的区别,使用CMake支持CUDA编译。遇到版本不匹配问题时,调整了gcc版本并设置优先级。
- 编译完成后,在`build_cuda/bin`目录下生成可执行文件。
5. **具体使用**:
- 介绍了`llama-cli`命令行工具的使用,包括主要参数的说明和示例。
- 部署`llama-server`服务,并展示了通过HTTP请求与其交互的示例。
- 描述了模型量化的基本概念并展示了如何将.gguf格式模型再进行量化或使用脚本将.safetensors格式转换为.gguf格式。
6. **资源提供**:
- 共享了实验中用到的代码GitHub仓库地址。
- 提供了相关参考资料链接,以便于进一步学习和研究。
通过本文,读者可以系统地了解如何从模型下载到部署以及使用Llama3-8B-Chinese-Chat-GGUF-8bit模型的全部过程,并在实际应用中遇到问题时找到相应的解决方案。 llamachatgitgithubhuggingfacecpucliganurlclonetoken参考资料可执行文件文件下载fixgpugpt-3自动化高精度gpt
  • 本文作者:WAP站长网
  • 本文链接: https://wapzz.net/post-19275.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
本站部分内容来源于网络转载,仅供学习交流使用。如涉及版权问题,请及时联系我们,我们将第一时间处理。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
2.7W+
9
1
2
WAP站长官方

2024年最新ComfyUI汉化及manager插件安装详解!

上一篇

Stable Diffusion【真人模型】:人脸特美&光效&氛围感增强摄影大模型wuhaXL_realisticMixV4.0

下一篇
  • 复制图片
按住ctrl可打开默认菜单