如何创建GGUF模型文件?让你在本地电脑上体验Llama2大型语言模型

7648d2ac3002b62f146186ea85ef7da0.png

Llama 2 是 Meta 公司发布的最新一代开源大模型,训练数据集达2万亿 Token,上下文长度由 llama 1 的 2048 扩展到 4096,能理解和生成更长的文本,在开源大模型中各基准的测试上表现突出,最重要的是,该模型可免费用于商业用途。

关于模型量化

大语言模型在各种领域都有着广泛的应用,但是也面临着一些挑战,比如模型的大小、计算量和内存占用都很大,这限制了模型在某些设备上的部署和运行。为了解决这些问题,模型量化应运而生。模型量化是一种将浮点计算转成低比特定点计算的技术,它可以有效的降低模型计算强度、参数大小和内存消耗,从而提高模型的推理速度和效率。

什么是 GGUF 文件?

它是一种新的二进制模型文件,它可以对深度学习模型进行高效的压缩,大大减少模型的大小和内存占用,从而提高模型的推理速度和效率,同时兼顾模型的推理质量。其中,一个突出的优点是可以跨平台和跨设备地加载和运行模型,无需安装任何额外的依赖库。

GGUF 有多种格式,主要区别在于浮点数的位数和量化的方式。不同的格式会影响模型的大小、性能和精度,一般来说,位数越少,量化越多,模型越小,速度越快,但是精度也越低。

例如:Q4_K_M 是一种 GGUF 模型文件的量化方式,它表示使用 4 位整数来量化模型的权重,其中 K 表示 Kernel,M 表示 Medium,意味着只有卷积核的权重被量化,而且使用中等的量化精度。

什么是 llama.cpp?

llama.cpp 是一个用 C/C++ 编写的 Llama 2 的运行时,可以在普通的笔记本电脑上运行 Llama 2 的模型,用来将模型转换并量化为 GGUF 文件,从而实现更多的功能和交互。

接下来,进入正题,这里通过 Windows 11 中的 wsl 2 来安装 Ubuntu 20.04 系统进行操作,先点个关注吧👇

第一步:下载 Llama 2 模型

首先,从 Hugging Face 上下载你想要使用的 Llama 2 模型,比如 Atom-7B-Chat,这是一个基于 Llama2-7B 采用大规模的中文数据进行预训练的对话模型。如下所示:

# 克隆模型仓库
git clone https://huggingface.co/FlagAlpha/Atom-7B-Chat

克隆完成后,你可以在 Atom-7B-Chat 文件夹中查看到模型的文件,包括 config.txt、pytorch_model.bin、tokenizer_config.txt 等。

第二步:下载 llama.cpp 库

接着还需要下载 llama.cpp 库,如下所示:

# 克隆 llama.cpp 库的源码
git clone https://github.com/ggerganov/llama.cpp
# 进入 llama.cpp 目录
cd llama.cpp

第三步:转换模型格式

然后,你需要把模型的文件转换成 GGUF 格式,使用 llama.cpp 库中的 convert.py 脚本来完成。转换时需要指定模型的路径和上下文长度(模型可以处理的最大的文本长度),不同的模型可能有不同的上下文长度。

如果模型是 LLaMA v1,则使用 --ctx 2048,如果你的模型是 LLaMA v2,则使用 --ctx 4096。这里使用 --ctx 4096。如下所示:

# 转换模型文件
python3 convert.py models/Atom-7B-Chat --ctx 4096

这个脚本会把模型的文件转换成生成一个  ggml-model-f16.gguf 文件,并保存在 Atom-7B-Chat 文件夹中,这就是 16 位浮点数的 GGUF 格式的模型文件。

在转换过程中,你可能会遇到安装一些依赖库的问题,比如 numpy 和 sentencepiece。先更新 apt-get,再使用以下命令来安装:

# 安装 numpy
sudo apt-get install python3-numpy
# 安装 pip
sudo apt-get install python3-pip
# 安装 sentencepiece
pip install sentencepiece
# 国内 pip 速度很慢,这里改用清华镜像来下载
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sentencepiece

这样,你就可以顺利地运行 convert.py 脚本了。

第四步:量化模型文件

使用 llama.cpp 库中的 quantize 程序来进行模型量化,先编译 quantize 程序,然后运行它,如下所示:

# 进入 llama.cpp 文件夹
cd llama.cpp
# 创建 build 文件夹
mkdir build
# 进入 build 文件夹
cd build
# 安装 cmake
sudo apt install cmake
# 编译 quantize 程序
cmake --build . --config Release
# 运行 quantize 程序,指定输入和输出的模型文件和量化方式
bin/quantize ../models/Atom-7B-Chat/ggml-model-f16.gguf ../models/Atom-7B-Chat/ggml-model-Q4_K_M.gguf Q4_K_M

这样,在 Atom-7B-Chat 文件夹中就生成一个 4 位整数的 GGUF 模型文件。然后,你就可以用常规的编程方法来调用这个模型,实现聊天、嵌入等功能啦。

5c128a47c5c0ba64af883860e65b4faa.png

参考资料:

https://github.com/FlagAlpha/Llama2-Chinese
https://github.com/ggerganov/llama.cpp
### 使用 `llama.cpp` 在本地运行 DeepSeek 模型 为了在本地环境中使用 `llama.cpp` 运行 DeepSeek 模型,需遵循特定流程来准备环境并加载模型。DeepSeek 是一种基于 LLaMA 架构的语言模型,而 `llama.cpp` 提供了一种高效的方法来部署这些模型。 #### 准备工作 安装依赖库和工具链对于成功编译和运行 `llama.cpp` 至关重要。建议从官方 GitHub 仓库获取最新版本的源码[^1]: ```bash git clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp make ``` #### 获取 DeepSeek 模型权重 由于 DeepSeek 并不是一个公开的标准名称下的预训练模型集合的一部分,因此需要确认具体使用的 DeepSeek 版本及其对应的权重文件格式。通常情况下,LLaMA 类型的模型会提供 `.bin` 或者 GGML/GGUF 格式的量化参数文件。如果手头有的是 Hugging Face PyTorch checkpoint,则应先将其转换成适合 `llama.cpp` 的格式[^2]。 #### 转换模型至兼容格式 当前推荐的做法是从 Hugging Face checkpoints 转换成 GGUF 格式,这可以通过脚本 `convert-hf-to-gguf.py` 完成而不是旧版的 `convert.py`: ```bash python3 convert-hf-to-gguf.py path/to/hf/checkpoint output.gguf ``` 此命令假设用户已下载好来自 Hugging Face 的原始checkpoint,并指定了输出路径保存转换后的GGUF文件。 #### 加载与推理 一旦拥有了正确的模型文件(如上述过程产生的`.gguf`),就可以通过如下方式启动交互式shell来进行测试: ```cpp ./main -m path/to/output.gguf ``` 该指令将会调用 `llama.cpp` 中实现的功能读取指定位置上的模型数据,并进入一个简单的命令行界面允许输入提示词获得回应。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值