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

家用消费级显卡玩转大模型超简单,一看就懂,一学就会

这篇文章主要介绍了如下内容:

模型量化,包括转换为gguf格式 如何通过Ollama部署运行模型

通过这篇文章,你可以将一个很大的模型文件转换为一个相对很小的模型文件,并部署运行起来,运行速度可以大大提升,消费级显卡也可以无压力运行。

为什么要模型量化?

从智能语音助手到图像识别,大模型虽然在各个领域中展现了强大的能力,但是,这玩意需要大量的计算资源才能运行。为了降低模型的计算量和内存占用,模型量化应运而生。

模型量化通过模型中的参数表示从高精度(如 32 位浮点数)转换为低精度(如 8 位整数),从而大幅减少模型的大小和计算量。这意味着我们可以在资源有限的设备上,如家用消费级显卡,顺利运行大模型,而无需依赖昂贵的专业硬件。

模型量化有助于提高模型的运行速度。减少了参数的精度和计算量,使得模型在推理阶段能够更快地给出结果。对于一些对实时性要求较高的应用,如在线聊天机器人、实时图像识别等,模型量化带来的速度提升至关重要。

再者,模型量化能够降低能耗。在大规模的模型部署中,能耗是一个不可忽视的问题。量化后的模型在运行时消耗的电能更少,不仅有利于节约成本,还有助于减少对环境的影响。

此外,模型量化还便于模型的部署和传播。更小、更高效的量化模型更容易在不同的设备和平台上进行部署,促进了大模型技术的广泛应用和普及。

如何快速实现模型量化

llama.cpp

目前要实现模型量化,不得不说一个开源框架-  llama.cpp,我主要说明如何通过这个框架实现将模型权重文件转为一个gguf格式的文件,以便后续可以通过Ollama进行模型量化。

这个框架的功能:在各种硬件(本地和云端)上以最少的设置和最先进的性能实现 LLM 推理。

详细介绍可以参考  github 地址: GitHub - ggerganov/llama.cpp: LLM inference in C/C++

根据官网介绍,这个框架的功能还是比较强大的,不仅可以对话模式运行模型、还可以作为网络服务器等,不过,我这里只介绍了如何转换为gguf格式的功能。

这里首先介绍下gguf格式:

GGUF(GPT-Generated Unified Format)是一种二进制格式,具有以下特点:

单文件部署:将模型的所有相关信息包含在一个文件中,便于分发和加载,无需额外的外部文件提供附加信息。 可扩展性:可以向基于 GGML 的执行器添加新功能或向 GGUF 模型添加新信息,同时不会破坏与现有模型的兼容性。 mmap 兼容性:支持使用 mmap(内存映射)加载模型,从而实现快速加载和保存,提高了数据访问的效率。 易于使用:不论使用何种编程语言,都可以通过少量代码轻松实现模型的加载和保存,而无需使用外部库。 包含完整信息:加载模型所需的全部信息都被包含在模型文件内,用户无需再提供其他额外信息。

1、要使用llama.cpp,首先我们去github地址去下载项目代码

git clone --depth=1 https://github.com/ggerganov/llama.cpp.git

2、下载完之后,进入 llama.cpp 目录,运行如下命令:

python convert_hf_to_gguf.py   原始模型文件夹路径  --outfile  输出模型的路径

注意:要自己替换两个路径为你自己的,比如:

python convert_hf_to_gguf.py    /home/jack/Documents/modelcode/LLaMA-Factory/export    --outfile /home/jack/mnt/models/gguf/qwen2_15.gguf

你会看到如下结果就表示成功了

模型转换已经成功,下面我将介绍如何通过Ollma将这个转换后的gguf格式的二进制模型 进行量化。

Ollama

1、首先是下载,进入官网:https://ollama.com/  ,点击Download 按钮,你会看到如下界面

根据自己的系统,拷贝命令到命令行执行即可,等待安装完毕。

2、安装完之后,创建一个文件名称为 Modelfile,在文件内输入:

FROM  gguf模型文件地址

注意:要将 gguf模型文件地址 改为你自己的地址。然后保存文件,命令行输入:

ollama create -q Q4_K_M   自定义模型名称

注意:自定义模型名称 要改为自己的,随便起一个名称就行。Q4_K_M 表示进行4 bit量化,也是比较常用的方式。这条命令的作用就是通过Modelfile 创建一个模型给Ollama管理。

3、查看模型,使用如下命令:

ollama list 

如果看到你自定义的模型名词就代表成功, 下面 myqwen15 就是我自定义的模型名称。

4、检查、运行模型,使用如下命令

ollama run 你用的模型名称

然后你就可以和模型进行对话了,检查这个模型的效果如何。如果模型的效果不好,可以参考我之前写的文章 《LLaMA-Factory 大模型微调超简单,从零开始开始玩转大模型微调》,通过 LLaMA-Factory 进行模型的微调。

总结:

本篇文章只是抛砖引玉,浅谈了大模型的转换、量化、运行等知识,更多细节知识,如果有兴趣,可以查看官方文档,本人也还在学习过程中,看到这里了,不妨点个关注,一起学习,一起交流呀~

关于我:

资深程序员,曾在北京某AI公司从事智能对话问答平台研发,也曾在大厂历练过,对AI场景应用充满热情。

总结

本文详细介绍了模型量化的重要性和具体实现步骤,以及如何通过开源工具(llama.cpp和Ollama)将大模型文件转换为更小、更高效的格式,以便在资源受限的设备上部署运行。主要内容概括如下:
**一、模型量化的背景与重要性**
- **降低计算资源需求**:大模型需要庞大的计算资源运行,模型量化通过减小参数精度(如从32位浮点数转为8位整数)大幅减少模型大小和计算需求。
- **提高运行速度**:减少参数精度和计算量加快推理速度,适合实时要求高的应用如在线聊天和实时图像识别。
- **节能减排**:减少运行能耗,降低成本与环境影响。
- **便于部署与传播**:更小、更高效的模型便于在不同设备和平台上部署。
**二、模型量化的快速实现**
- **使用llama.cpp框架**:通过开源项目llama.cpp将模型转换成GGUF格式,该格式便于分发与加载,具有可扩展性、mmap兼容性和易用性等优点。
- **转换步骤**:
1. 下载llama.cpp项目并运行Python脚本将原始模型转换为GGUF格式。
2. 具体命令包括下载项目、运行转换脚本并指定输入输出路径。
- **使用Ollama进行量化**
1. 下载并安装Ollama,创建`Modelfile`指定GGUF文件地址进行模型量化(如4bit量化)。
2. 通过Ollama命令查看和管理量化后的模型,并进行运行测试。
**三、总结与展望**
- 文章介绍了大模型转换、量化和运行的基本步骤,是入门了解和实施模型优化的实用指南。
- 鼓励读者深入学习相关官方文档,并关注进一步交流和学习机会。
本文通过实操步骤和细致说明,让读者能够系统地理解和实施模型量化操作,为优化大模型应用性能提供了有效方案。

更新时间 2024-09-20