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,未完待续。。。。

相关推荐
sp_fyf_20247 分钟前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-04
人工智能·神经网络·算法·机器学习·语言模型·数据挖掘
hai4058742 分钟前
ELMo模型介绍:深度理解语言模型的嵌入艺术
人工智能·语言模型·自然语言处理
西农小陈1 小时前
Python-简单病毒程序合集(一)
windows·python·网络安全·系统安全
龙的爹23332 小时前
论文翻译 | Learning to Transfer Prompts for Text Generation
人工智能·深度学习·语言模型·自然语言处理·nlp·prompt
卫龙~2 小时前
Django token 生成与验证
python·django·token
chenchihwen3 小时前
大型语言模型综述 A Survey of Large Language Models
人工智能·语言模型·自然语言处理
vivid_blog3 小时前
大语言模型(LLM)入门级选手初学教程 四
人工智能·语言模型·自然语言处理
Ashleyyyi3 小时前
论文阅读:Mixture-of-Agents Enhances Large Language Model Capabilities
人工智能·语言模型·自然语言处理
凌虚3 小时前
RAG 示例:使用 langchain、Redis、llama.cpp 构建一个 kubernetes 知识库问答
人工智能·后端·python
知否&知否4 小时前
Path does not exist: file:/D:/pythonProject/spark/main/datas/input/u.data
大数据·分布式·python·spark