【AI实战】llama.cpp 量化部署 llama-33B

2024-01-30 16:20
文章标签 实战 ai 部署 量化 llama cpp 33b

本文主要是介绍【AI实战】llama.cpp 量化部署 llama-33B,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【AI实战】llama.cpp 量化部署 llama-33B

  • llama.cpp 量化介绍
  • 环境配置
  • 安装 llama.cpp
    • 拉取 llama.cpp 仓库代码
    • 编译llama.cpp
  • 生成量化版本模型
    • 模型准备
    • 将上述.pth模型权重转换为ggml的FP16格式
    • 对FP16模型进行4-bit量化
  • 推理速度测试
    • 加载并启动模型
    • 量化方法选择及推理速度
    • 33B推理速度表格
  • 参考

llama.cpp 量化介绍

量化模型是将模型中的高精度浮点数转化成低精度的int或其他类型得到的新的,花销更小,运行更快的模型。

Inference of LLaMA model in pure C/C++。

llama.cpp 运行期占用内存更小,推断速度也更快,同样的模型,7B 基础模型举例,32位浮点数的模型占用空间 27G,llama.cpp 量化后占用内存 9G 左右,推断速度为15字/秒。

对于使用 LLaMA 模型来说,无论从花销还是使用体验,量化这个步骤是不可或缺的。

环境配置

环境配置过程详情参考我的这篇文章;
【AI实战】从零开始搭建中文 LLaMA-33B 语言模型 Chinese-LLaMA-Alpaca-33B

llama-33B 模型下载、合并方法也是参考这篇文章:
【AI实战】从零开始搭建中文 LLaMA-33B 语言模型 Chinese-LLaMA-Alpaca-33B
得到的模型保存路径:“./Chinese-LLaMA-33B”

安装 llama.cpp

拉取 llama.cpp 仓库代码

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

编译llama.cpp

使用GPU执行【推荐】:

cd llama.cpp
make LLAMA_CUBLAS=1

使用CPU执行【安装简单】:

cd llama.cpp
make 

生成量化版本模型

模型准备

将合并模型(选择生成pth格式模型)中最后一步生成的tokenizer.model文件放入zh-models目录下,模型文件consolidated.*.pth和配置文件params.json放入zh-models/33B目录下。

执行:

mkdir zh-models/
cp /notebooks/Chinese-LLaMA-Alpaca/Chinese-LLaMA-33B-pth/tokenizer.model zh-models/
mkdir zh-models/33B
cp /notebooks/Chinese-LLaMA-Alpaca/Chinese-LLaMA-33B-pth/consolidated.0* zh-models/33B/
cp /notebooks/Chinese-LLaMA-Alpaca/Chinese-LLaMA-33B-pth/params.json zh-models/33B/

其中:路径 /notebooks/Chinese-LLaMA-Alpaca/Chinese-LLaMA-33B-pth/ 是 pth 格式模型路径。

结果如下:

llama.cpp/zh-models/- 33B/- consolidated.00.pth - consolidated.01.pth - consolidated.02.pth - consolidated.03.pth - ggml-model-f16.bin - params.json- tokenizer.model

将上述.pth模型权重转换为ggml的FP16格式

执行:

python convert.py zh-models/33B/

生成文件路径为: zh-models/33B/ggml-model-f16.bin

在这里插入图片描述
在这里插入图片描述

对FP16模型进行4-bit量化

执行:

./quantize ./zh-models/33B/ggml-model-f16.bin ./zh-models/33B/ggml-model-q4_0.bin q4_0

生成量化模型文件路径为zh-models/33B/ggml-model-q4_0.bin

在这里插入图片描述
在这里插入图片描述

推理速度测试

加载并启动模型

./main -m zh-models/33B/ggml-model-q4_0.bin --color -f prompts/alpaca.txt -ins -c 2048 --temp 0.2 -n 256 --repeat_penalty 1.1

一些常用的参数:

-c 控制上下文的长度,值越大越能参考更长的对话历史(默认:512)
-ins 启动类ChatGPT对话交流的instruction运行模式
-f 指定prompt模板,alpaca模型请加载prompts/alpaca.txt
-n 控制回复生成的最大长度(默认:128)
-b 控制batch size(默认:8),可适当增加
-t 控制线程数量(默认:4),可适当增加
--repeat_penalty 控制生成回复中对重复文本的惩罚力度
--temp 温度系数,值越低回复的随机性越小,反之越大
--top_p, top_k 控制解码采样的相关参数
  • 测试
    在这里插入图片描述

量化方法选择及推理速度

相关结论:

  • 默认的量化方法为q4_0,虽然速度最快但损失也是最大的,其余方法各有利弊,按实际情况选择
  • 需要注意的是F16以及q8_0并不会因为增加线程数而提高太多速度
  • 线程数-t与物理核心数一致时速度最快,超过之后速度反而变慢(M1 Max上从8改到10之后耗时变为3倍)
  • 如果使用了Metal版本(即启用了苹果GPU解码),速度还会有进一步显著提升,表中标注为-ngl 1
  • 综合推荐(仅供参考):7B推荐Q5_1或Q5_K_S,13B推荐Q5_0或Q5_K_S
  • 机器资源够用且对速度要求不是那么苛刻的情况下可以使用q8_0或Q6_K,接近F16模型的效果

33B推理速度表格

在这里插入图片描述

  • 其他大小的模型推理速度参考
    https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/llama.cpp%E9%87%8F%E5%8C%96%E9%83%A8%E7%BD%B2

在这里插入图片描述

参考

【AI实战】从零开始搭建中文 LLaMA-33B 语言模型 Chinese-LLaMA-Alpaca-33B
https://github.com/ymcui/Chinese-LLaMA-Alpaca
https://github.com/ymcui/Chinese-LLaMA-Alpaca/wiki/llama.cpp%E9%87%8F%E5%8C%96%E9%83%A8%E7%BD%B2
https://github.com/ggerganov/llama.cpp

这篇关于【AI实战】llama.cpp 量化部署 llama-33B的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/660819

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

nginx部署https网站的实现步骤(亲测)

《nginx部署https网站的实现步骤(亲测)》本文详细介绍了使用Nginx在保持与http服务兼容的情况下部署HTTPS,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录步骤 1:安装 Nginx步骤 2:获取 SSL 证书步骤 3:手动配置 Nginx步骤 4:测