llama-cpp模型轻量化部署与量化

server/2024/11/19 2:29:12/

一、定义

  1. 定义
  2. 配置环境
  3. 遇到的问题,交互模式下模型一直输出,不会停止
  4. 模型量化
  5. Qwen1.5-7B 案例demo

二、实现

  1. 定义
    主要应用与cpu 上的部署框架。由c++完成。
  2. 配置环境
    https://github.com/ggerganov/llama.cpp
    https://github.com/echonoshy/cgft-llm/blob/master/llama-cpp/README.md
    安装:
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

编译环境

sudo apt update
sudo apt install cmake
cpu:
cmake -B build_cpu
cmake --build build_cpu --config Release

部署:

cd /root/code/llama.cpp/build_cpu/bin/
#交互模式
./llama-cli -m /home/Llama3-8B-Chinese-Chat-GGUF/Llama3-8B-Chinese-Chat-q8_0-v2_1.gguf \-n -1 \-t 12 \                    #多线程--color \                 #输入有颜色-r "User:" \              #-r: 遇到User: 停止,等待输入--in-prefix " " \         #输入前缀-i \                      #交互模式-p \                      #输入prompt
'User: 你好
AI: 你好啊,我是光屿,要聊聊吗?
User: 好啊!
AI: 你想聊聊什么话题呢?
User:'#接口模式
./llama-server \-m /home/Llama3-8B-Chinese-Chat-GGUF/Llama3-8B-Chinese-Chat-q8_0-v2_1.gguf \--host "0.0.0.0" \--port 8080 \-c 2048 \-ngl 128 \            --api-key "echo in the moon"

在这里插入图片描述
在这里插入图片描述
3. 遇到的问题,交互模式下模型一直输出,不会停止,参数-r 不起作用
原因: 容器内不支持中文,添加上中文输入法,问题解决。

安装语言包
apt update
apt install -y language-pack-zh-hans
设置环境变量
export LANG=zh_CN.UTF-8
启动终端
exec bash
  1. Qwen1.5-7B 案例demo
    1. 将qwen1.5 转为gguf
python convert-hf-to-gguf.py /home/Qwen1.5_7b --outfile /home/Qwen1.5_7b-GGUF/Qwen1.5_7b_v1.gguf

在这里插入图片描述
量化

cd llama.cpp/build_cuda/bin
./llama-quantize --allow-requantize /home/Qwen1.5_7b-GGUF/Qwen1.5_7b_v1.gguf /home/Qwen1.5_7b-GGUF/Qwen1.5_7b-q4_1-v1.gguf Q4_1

在这里插入图片描述
3. 测试

./llama-cli -m /home/Qwen1.5_7b-GGUF/Qwen1.5_7b-q4_1-v1.gguf \
-n -1 \
-ngl 256 \
-t 12 \
--color \
-r "user:" \
--in-prefix " " \
-i  \
-p \
"user:: 你好
AI: 你好啊,我是光屿,要聊聊吗?
user: 好啊!
AI: 你想聊聊什么话题呢?
user:"

在这里插入图片描述


http://www.ppmy.cn/server/143049.html

相关文章

理解Go中的append函数及其返回值

在Go语言的编程世界中,切片(slice)是一种非常灵活且常用的数据结构。它提供了一种方便的方式来处理动态数组。而append函数,作为向切片追加元素的内置函数,其设计和使用方式体现了Go语言的安全性和效率。本文将深入探讨…

【高等数学学习记录】函数的求导法则

一、知识点 (一)常数和基本初等函数的导数公式 ( C ) ′ 0 (C)0 (C)′0 ( x n ) ′ n x n − 1 (x^n)nx^{n-1} (xn)′nxn−1 ( s i n x ) ′ c o s x (sinx)cosx (sinx)′cosx ( c o s x ) ′ − s i n x (cosx)-sinx (cosx)′−sinx ( t a n x ) ′…

Vue的局部使用

文章目录 什么是Vue?局部使用Vue快速入门 常用指令v-forv-bindv-if & v-showv-onv-model Vue生命周期 Axios案例 什么是Vue? Vue是一款构建用户界面的渐进式的JavaScript框架. 局部使用Vue 快速入门常用指令声明周期 快速入门 准备: 准备html页面,并引入Vue模块(…

golang HTTP基础

http.ListenAndServe http.ListenAndServe 是 Go 语言标准库 net/http 包中的一个函数,用于启动一个 HTTP 服务器并监听指定的端口,以便接收和处理来自客户端的 HTTP 请求。这个函数是构建 Web 服务器和 Web 服务的基础。 函数签名 func ListenAndSer…

室内定位论文精华-无人机与机器人在地下与室内环境中的自主导航与定位新技术

天文导航算法在低成本视觉系统中的应用 关键词 天文导航;自主无人机;GNSS拒止环境;稳定成像系统;星图识别;姿态估计;位置估算 研究问题 现代无人驾驶飞行器(UAV)中,很少使用天文学导航技术。传统的天文学导航依赖于稳定的成像系统,这不仅体积大且重量重,难以满足…

Linux:进程的优先级 进程切换

文章目录 前言一、进程优先级1.1 基本概念1.2 查看系统进程1.3 PRI和NI1.4 调整优先级1.4.1 top命令1.4.2 nice命令1.4.3 renice命令 二、进程切换2.1 补充概念2.2 进程的运行和切换步骤(重要) 二、Linux2.6内核进程O(1)调度队列(重要&#x…

<Project-23 Navigator Portal> Python flask web 网站导航应用 可编辑界面:添加图片、URL、描述、位置移动

目的: 浏览器的地址簿太厚,如下图: 开始,想给每个 Web 应用加 icon 来提高辨识度,发现很麻烦:create image, resize, 还要挑来挑去,重复性地添加代码。再看着这些密密麻麻的含有重复与有规则的…

HbuilderX 插件开发-模板创建

实现思路 使用HbuilderX 打开某个文档时右键点击的时候获取当前打开的文档内容使用 API 替换为自己的模板 示例 package.json {"id": "SL-HbuilderX-Tool","name": "SL-HbuilderX-Tool","description": "快速创建h…