首页 > 其他分享 >使用llama.cpp量化模型

使用llama.cpp量化模型

时间:2024-07-13 18:55:13浏览次数:20  
标签:8b 模型 gguf llama cpp 量化 model

文章目录

概要

大模型量化是指在保持模型性能尽可能不变的情况下,通过减少模型参数的位数来降低模型的计算和存储成本。本次实验环境为魔搭社区提供的免费GPU环境(24G),使用Llama.cpp进行4bit量化可以大幅减少大语言模型的内存占用,并提高推理效率。本次采用的模型为前一篇博客所写的基准模型与LoRA微调后的合并模型。

整体实验流程

  1. 由于基准模型较大就直接在服务器上下载并上传LoRA参数合并。

    连不上huggingface,就用的魔搭社区的模型。
    
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
from modelscope import snapshot_download
#模型下载 
model_dir = snapshot_download('ChineseAlpacaGroup/llama-3-chinese-8b-instruct-v3')
tokenizer = AutoTokenizer.from_pretrained(model_dir)
model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto", torch_dtype=torch.float16)

!pip install -q peft==0.3.0
from peft import PeftModel
# 载入预训练的 LoRA 模型
model_lora = PeftModel.from_pretrained(
    model,
    'lora',
    torch_dtype=torch.float16
)
# 合并和卸载模型
model_lora = model_lora.merge_and_unload()
# 保存模型
model_lora.save_pretrained('ddd/conbine')
tokenizer.save_pretrained('ddd/conbine')
  1. 下载Llama.cpp,用的github的。并make编译,接下来的代码部分均在Linux终端上操作。
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make

在这里插入图片描述
make过程比较久,耐心等待一会。
在这里插入图片描述

  1. 模型文件类型为safetensors,需要将其转换成gguf格式,如果本身是gguf则跳过这一步。

    标记出来的这个三个为接下来使用到的文件或者文件夹
    

在这里插入图片描述

python convert_hf_to_gguf.py  /原模型路径/     --outfile  ./输出路径/gguf格式文件名.gguf
python convert_hf_to_gguf.py  ../ddd/conbine/ --outfile  ./models/ggml-8b-f16.gguf

在这里插入图片描述
加载完后得到一个ggml-8b-f16.gguf的文件,大小为16.1G

  1. 接下来开始量化操作,可以量化到8位,也可以4位,我就采用的4位。
./llama-quantize ./新模型路径/新模型名.gguf  ./输出路径/4位gguf格式文件名.gguf Q4_K_M 采用4位  如果8位就Q8_K_M
./llama-quantize ./models/ggml-8b-f16.gguf      ./models/ggml-8b-Q4.gguf         Q4_K_M

在这里插入图片描述
这个加载时间也久,加载完后得到一个ggml-8b-Q4.gguf文件,大小只有4685MB。

  1. 量化完成了部署试一下
这里有很多参数设置比如top_k啥的,可以百度一下。如下图所示。
./llama-cli -m ./models/ggml-8b-Q4.gguf -c 512 -b 64 -n 256 -t 12 --repeat_penalty 1.0 --top_k 20 --top_p 0.5 --color -i -r "助手:" -f prompts/chat-with-baichuan.txt

在这里插入图片描述
结果展示:这个结果不太好,之前微调的模型还有很多问题,这里只是给大家演示一下。
在这里插入图片描述

技术细节

  • 如果是用的官方的Llama.cpp有时候需要注意库是否有更新,命令不正确可以去看看github是不是命令改了。

小结

Llama.cpp 是一个轻量级的C++库,旨在帮助用户在资源受限的环境中高效地运行大型语言模型。

  • 轻量级:Llama.cpp设计简单,代码库小,易于理解和修改,适合在嵌入式设备或移动设备上运行。

  • 高效:通过优化的内存管理和计算,Llama.cpp能够在性能有限的硬件上高效运行大模型。

  • 跨平台:支持多种操作系统,包括Linux、Windows和MacOS。

  • 量化支持:内置了对模型进行量化的支持,如4bit、8bit等,能够显著降低内存使用和计算需求。

  • 易用性:提供了简单的API,用户可以方便地加载模型并进行推理。

标签:8b,模型,gguf,llama,cpp,量化,model
From: https://blog.csdn.net/zc1226/article/details/140403837

相关文章

  • LoRA微调中文版Llama3模型
    文章目录概要整体微调流程疑难问题有哪些小结概要LoRA(Low-RankAdaptation)是一种微调大模型的方法,通过引入低秩矩阵来减少参数量和计算复杂度,主要应用于大型预训练语言模型的微调过程。本文章讲解的是使用LoRA技术微调Llama3中文版模型。实验环境为kaggle、GPU环境......
  • llama.cpp 和 SYCL oneMKL 后端
    在cpu下运行llama.cpp用https://github.com/flame/blis计算库是目前最好的选择。SYCLSYCLisahigh-levelparallelprogrammingmodeldesignedtoimprovedevelopersproductivitywritingcodeacrossvarioushardwareacceleratorssuchasCPUs,GPUs,andFPGAs.......
  • 关于SVD-LLM的应用-基于SVD量化
    关于SVD-LLM的应用-基于SVD量化一背景论文连接:https://arxiv.org/pdf/2403.07378这是论文github:https://github.com/AIoT-MLSys-Lab/SVD-LLM 二什么是SVD SVD可能是可以把矩阵向量转化到另外一个空间角度,以方便数据处理。2.1概念SVD(Singular......
  • 快速入门算法竞赛必修课(cpp)--stl库的使用
    stl目录向量vector常用方法构造动态二维数组尾接&尾删获取长度清空改变长度获取下标.erase(pos).begin().end().front().back()适用情形注意事项提前指定长度当心size_t溢出栈stack常用方法适用情形注意事项不可访问内部元素!下面都是错误用......
  • 高盛开源的量化金融 Python 库
    GSQuantGSQuant是用于量化金融的Python工具包,建立在世界上最强大的风险转移平台之一之上。旨在加速量化交易策略和风险管理解决方案的开发,凭借25年的全球市场经验精心打造。它由高盛的定量开发人员(定量)创建和维护,以支持交易策略的开发和衍生产品的分析。GSQuant可用于......
  • T5架构和主流llama3架构有什么区别和优缺点、transformer中encoder 和decoder的不同、
    T5架构和主流llama3架构有什么区别和优缺点T5和LLaMA是两种在自然语言处理(NLP)领域广泛应用的大型语言模型,它们在架构和应用上有显著的区别和各自的优缺点。T5架构架构特点:Encoder-Decoder结构:T5(Text-to-TextTransferTransformer)采用了经典的Encoder-DecoderTransform......
  • 本地 AI RAG 系列之 使用 OpenLlama、Postgres、Node.js 和 Next.js 进行 100% 免费矢
    简介所以你想尝试向量搜索,但你不想付钱给OpenAI,或者使用Huggingface,也不想付钱给向量数据库公司。我来帮你。让我们在自己的机器上免费开始向量搜索吧。推荐文章《知识图谱大模型系列之01利用KeyBERT、HDBSCAN和Zephyr-7B-Beta构建知识图谱,LLM增强的自然语言处......
  • Ollama完整教程:本地LLM管理、WebUI对话、Python/Java客户端API应用
    老牛同学在前面有关大模型应用的文章中,多次使用了Ollama来管理和部署本地大模型(包括:Qwen2、Llama3、Phi3、Gemma2等),但对Ollama这个非常方便管理本地大模型的软件的介绍却很少。目前,清华和智谱AI联合发布开源的GLM4-9B大模型也能支持Ollama进行本地部署了(本地部署GLM-4-9B清华......
  • Franka Robot demo 关节阻抗控制(joint_impedance_control.cpp)
    //Copyright(c)2023FrankaRoboticsGmbH//UseofthissourcecodeisgovernedbytheApache-2.0license,seeLICENSE#include<array>#include<atomic>#include<cmath>#include<functional>#include<iostream>#include&......
  • 量化交易入门:如何在QMT中配置Python环境,安装第三方依赖包
    哈喽,大家好,我是木头左!引言QMT,作为量化交易系统中的佼佼者,以其强大的功能和灵活的操作性,受到了广大投资者的青睐。但是,对于很多新手来说,如何在QMT中配置Python环境,安装第三方依赖包,却是一个让人头疼的问题。本文将从零开始,手把手教你如何在QMT中配置Python环境,安装第三方依赖包......