llama.cpp制作GGUF文件

llama.cpp的介绍

llama.cpp是一个开源项目,由Georgi Gerganov开发,旨在提供一个高性能的推理工具,专为在各种硬件平台上运行大型语言模型(LLMs)而设计。这个项目的重点在于优化推理过程中的性能问题,特别是针对CPU环境。以下是关于llama.cpp的几个关键特性:

  1. 高性能推理引擎:llama.cpp使用C语言编写的机器学习张量库ggml,这使得它能够高效地处理大规模的张量运算,从而加速模型推理。

  2. 模型量化工具:项目包含模型量化的功能,允许用户将原本的32位浮点数模型参数量化为16位浮点数,甚至是更低精度的8位或4位整数,从而减少模型大小并显著提高推理速度,这对于在资源受限的设备上运行大模型尤其重要。

  3. 跨平台兼容性:除了支持CPU推理外,llama.cpp还支持CUDA和OpenCL,这意味着它能够在包括桌面计算机、服务器乃至某些移动设备上的GPU上运行,提供了广泛的硬件兼容性。

  4. 易于部署:由于其优化的C++实现,llama.cpp使得在本地CPU上部署大型语言模型变得更加容易,即便是配置较低的设备也能运行这类模型,降低了部署大型AI应用的门槛。

  5. 代码可读性和教育价值:尽管功能强大,llama.cpp的代码结构相对直观且可读性强,适合开发者通过阅读源码来学习大型语言模型的推理技术和底层实现细节。项目文件数量不多,但每个都是精心设计的,便于理解和修改。

  6. 社区支持和活跃度:在GitHub上,该项目拥有大量的stars,表明了其在开发者社区中的高关注度和活跃度。这通常意味着更好的文档、示例以及持续的维护更新。

综上所述,llama.cpp是一个专为性能优化和广泛兼容性设计的工具,它不仅能够帮助研究人员和开发者在不同类型的硬件上高效运行大型语言模型,同时也是学习现代语言模型推理技术的一个优秀资源。

GGUF文件的制作

设备环境如下:Ubuntu20.04、NVIDIA-A800、CUDA Version: 12.0、python 3.10

markup 复制代码
#代码准备
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

#编译
make

# 获取官方模型权重并将其放入./models中
ls ./models
llama-2-7b tokenizer_checklist.chk tokenizer.model
# [可选] 对于使用 BPE 分词器的模型
ls ./models
<folder containing weights and tokenizer json> vocab.json
# [可选] 适用于 Mistral-7B 等 PyTorch.bin 模型
ls ./models
<folder containing weights and tokenizer json>

# 安装Python依赖项
python3 -m pip install -r requirements.txt

# 将模型转换为ggml FP16格式
python3 convert.py models/mymodel/

# [可选] 对于使用 BPE 分词器的模型
python convert.py models/mymodel/ --vocab-type bpe

# 将模型量化为 4 位(使用 Q4_K_M 方法)
./quantize ./models/mymodel/ggml-model-f16.gguf ./models/mymodel/ggml-model-Q4_K_M.gguf Q4_K_M

# 如果现在不支持旧版本,请将 gguf 文件类型更新为当前版本
./quantize ./models/mymodel/ggml-model-Q4_K_M.gguf ./models/mymodel/ggml-model-Q4_K_M-v2.gguf COPY

运行量化模型

markup 复制代码
# 开始推理 gguf 模型
./main -m ./models/mymodel/ggml-model-Q4_K_M.gguf -n 128

简单记录一下,感兴趣的可访问官方GitHub,未完待续。。。。

相关推荐
默_笙3 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
qq_426003963 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
长沙三为智能科技3 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
只睡四小时3 天前
Canvas 弹道联机实战:700 行 + 固定时间步长
python·websocket·html5·游戏开发·canvas
奇思妙想聪明勤奋的小羊3 天前
DeepAgents第5章:子Agent 与上下文隔离—让 Agent学会委派
人工智能·python·学习·语言模型
lpfasd1233 天前
2026年第38周GitHub趋势周报
python·科技·github
IZero073 天前
Jev 与 Laya
python·语言模型