Ubuntu 大模型HF转GGUF全流程实践指南

简介: 本文基于Ubuntu 26.04纯CPU环境,详解llama.cpp部署全流程:从Swap配置、依赖安装、源码编译,到Qwen2-0.5B模型下载、HF→GGUF格式转换(convert_hf_to_gguf.py)及Q4_K_M量化(llama-quantize),零CUDA实现轻量中文大模型本地运行。(239字)

本文基于 Ubuntu 26.04 系统、纯CPU无CUDA硬件环境,完整演示基于 llama.cpp 实现 HF 原始模型转换 GGUF 格式与CPU量化的落地实操流程。以 Qwen2-0.5B-Instruct 中文对话模型为案例,循序渐进讲解Swap分区配置、系统依赖安装、llama.cpp源码编译、Python虚拟环境部署、原生HF模型下载、HF模型转GGUF格式封装、Q4_K_M等级量化的完整步骤。

1、首先HF模型加载、格式转换、权重量化均会产生高额内存占用,可提前配置大容量磁盘Swap虚拟内存,本次配置8G缓存。

root@localhost:~/# sudo fallocate -l 8G /swapfile
root@localhost:~/# sudo chmod 600 /swapfile
root@localhost:~/# sudo mkswap /swapfile
root@localhost:~/# sudo swapon /swapfile
root@localhost:~/# echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

2、安装编译工具、运行依赖、虚拟环境工具,为llama.cpp编译、模型转换提供基础环境。

root@localhost:~/# sudo apt update
root@localhost:~/# sudo apt install -y git build-essential cmake python3 python3-pip python3-full python3-venv tmux

3、在官方仓库中拉取llama.cpp源程序,并执行make命令完成编译,编译通过后会在根目录下生成所需要的转换脚本。

root@localhost:~/# git clone https://github.com/ggerganov/llama.cpp.git
root@localhost:~/# cd llama.cpp

root@localhost:~/# mkdir build
root@localhost:~/# cd build
root@localhost:~/# cmake ..
root@localhost:~/# make -j2

[100%] Building CXX object app/CMakeFiles/llama-app.dir/llama.cpp.o
[100%] Building CXX object app/CMakeFiles/llama-app.dir/download.cpp.o
[100%] Building CXX object app/CMakeFiles/llama-app.dir/__/license.cpp.o
[100%] Linking CXX executable ../bin/llama
[100%] Built target llama-app
[100%] Building CXX object tools/cli/CMakeFiles/llama-cli.dir/main.cpp.o
[100%] Linking CXX executable ../../bin/llama-cli
[100%] Built target llama-cli
[100%] Linking CXX executable ../bin/test-chat
[100%] Built target test-chat

root@localhost:~/# cd ..
root@localhost:~/# ls -lh convert*
-rwxr-xr-x 1 root root 13K Aug 27 16:19 convert_hf_to_gguf.py
-rwxr-xr-x 1 root root 28K Aug 27 16:19 convert_hf_to_gguf_update.py
-rwxr-xr-x 1 root root 19K Aug 27 16:19 convert_llama_ggml_to_gguf.py
-rwxr-xr-x 1 root root 23K Aug 27 16:19 convert_lora_to_gguf.py

4、模型转换脚本依赖Python生态,使用独立虚拟环境,避免污染系统全局Python,同时适配低配内存,关闭缓存写入。

root@localhost:~/# python3 -m venv ~/myvenv
root@localhost:~/# source ~/myvenv/bin/activate

(myvenv) root@localhost:~/llama.cpp# export TMPDIR=$HOME/tmp
(myvenv) root@localhost:~/llama.cpp# mkdir -p "$TMPDIR"
(myvenv) root@localhost:~/llama.cpp# pip install --upgrade pip
(myvenv) root@localhost:~/llama.cpp# pip install --no-cache-dir torch transformers sentencepiece protobuf safetensors huggingface_hub modelscope
(myvenv) root@localhost:~/llama.cpp# pip list

Package                Version
---------------------- ---------
annotated-doc          0.0.5
anyio                  4.14.2
certifi                2026.7.22
charset-normalizer     3.5.1
click                  8.4.2
cuda-bindings          13.3.1
cuda-pathfinder        1.7.0
cuda-toolkit           13.0.3.0
filelock               3.32.4
fsspec                 2026.7.0
h11                    0.16.0
hf-xet                 1.6.0
httpcore               1.0.9
httpx                  0.28.1
huggingface_hub        1.28.0
idna                   3.19
Jinja2                 3.1.6
markdown-it-py         4.2.0
MarkupSafe             3.0.3
mdurl                  0.1.2
modelscope             1.39.1
modelscope-hub         0.2.0
mpmath                 1.3.0
networkx               3.6.1
numpy                  2.5.2
nvidia-cublas          13.1.1.3
nvidia-cuda-cupti      13.0.85
nvidia-cuda-nvrtc      13.0.88
nvidia-cuda-runtime    13.0.96
nvidia-cudnn-cu13      9.20.0.48
nvidia-cufft           12.0.0.61
nvidia-cufile          1.15.1.6
nvidia-curand          10.4.0.35
nvidia-cusolver        12.0.4.66
nvidia-cusparse        12.6.3.3
nvidia-cusparselt-cu13 0.8.1
nvidia-nccl-cu13       2.29.7
nvidia-nvjitlink       13.3.33
nvidia-nvshmem-cu13    3.4.5
nvidia-nvtx            13.0.85
packaging              26.3
pip                    26.2.1
protobuf               7.36.0
Pygments               2.21.0
PyYAML                 6.0.3
regex                  2026.7.19
requests               2.34.2
rich                   15.0.0
safetensors            0.8.0
sentencepiece          0.2.2
setuptools             84.0.0
shellingham            1.5.4
sympy                  1.14.0
tokenizers             0.22.2
torch                  2.13.0
tqdm                   4.70.0
transformers           5.15.1
triton                 3.7.1
typer                  0.27.1
typing_extensions      4.16.0
urllib3                2.7.0

5、直接在魔搭社区拉取Qwen2-0.5B-Instruct源程序,文件中包含 config.jsonmodel.safetensorstokenizer.jsontokenizer_config.json 如果缺少任意一个,代表下载不完整,重新执行下载命令。

(myvenv) root@localhost:~/llama.cpp# modelscope download --model Qwen/Qwen2-0.5B-Instruct --local_dir ./Qwen2-0.5B-Instruct
(myvenv) root@localhost:~/llama.cpp# (myvenv) root@wintcp:~/llama.cpp/Qwen2-0.5B-Instruct# ls -lhA
total 954M
-rw-r--r-- 1 root root 1.5K Aug 27 16:58 .gitattributes
-rw-r--r-- 1 root root  12K Aug 27 16:58 LICENSE
-rw-r--r-- 1 root root 3.5K Aug 27 16:58 README.md
-rw-r--r-- 1 root root  659 Aug 27 16:58 config.json
-rw-r--r-- 1 root root   48 Aug 27 16:58 configuration.json
-rw-r--r-- 1 root root  242 Aug 27 16:58 generation_config.json
-rw-r--r-- 1 root root 1.6M Aug 27 16:58 merges.txt
-rw-r--r-- 1 root root 943M Aug 27 16:59 model.safetensors
-rw-r--r-- 1 root root 6.8M Aug 27 16:58 tokenizer.json
-rw-r--r-- 1 root root 1.3K Aug 27 16:58 tokenizer_config.json
-rw-r--r-- 1 root root 2.7M Aug 27 16:58 vocab.json

6、执行HF转GGUF文件,此处很多新手混淆格式转换与权重量化两者的区别,此处重点说明:

  • HF转GGUF(convert_hf_to_gguf.py):仅做文件格式翻译,不压缩、不损失精度。将HuggingFace的safetensors权重封装为llama.cpp专属的GGUF容器格式,输出的 f16.gguf 为FP16全精度模型,体积大、内存占用高,仅作为中间过渡文件。
  • GGUF量化(llama-quantize):真正的权重压缩,将FP16高精度权重压缩为4bit/5bit低精度,大幅缩小模型体积、降低内存占用。

简单总结就是GGUF是文件容器格式,不是量化格式,GGUF可存放全精度(f16)和量化精度(Q4_K_M)权重。

转换完成后生成 Qwen2-0.5B-Instruct-f16.gguf 全精度模型

(myvenv) root@localhost:~/llama.cpp# mkdir -p ./models
(myvenv) root@localhost:~/llama.cpp# python convert_hf_to_gguf.py ./Qwen2-0.5B-Instruct \
  --outtype f16 \
  --outfile ./models/Qwen2-0.5B-Instruct-f16.gguf \
  --no-lazy

通过llama-quantize工具将Qwen2-0.5B-Instruct-f16.gguf文件进行量化,此处选用Q4_K_M等级,对全精度GGUF进行4bit量化,并最终生成可用模型。

(myvenv) root@localhost:~/llama.cpp# ./build/bin/llama-quantize
  ./models/Qwen2-0.5B-Instruct-f16.gguf \
  ./models/Qwen2-0.5B-Instruct-Q4_K_M.gguf \
  Q4_K_M
目录
相关文章
|
15小时前
|
JSON 文字识别 API
open-code-review 接百炼:7 档 qwen 模型审同一份代码,一次 PR 的总账与耗时实测
本文实测 open-code-review 接入百炼 qwen 系列模型的完整方案:内置 dashscope provider,支持 7 档 qwen 模型;单价差 40 倍,单次审查成本差 545 倍;qwen3.7-plus 为性价比拐点(23.4 秒、满分、¥0.0799 内);详解配置、成本估算与门禁选型。
open-code-review 接百炼:7 档 qwen 模型审同一份代码,一次 PR 的总账与耗时实测
UMI多环境配置
一般来说项目不止有dev和prod两个环境,umi可以通过环境变量 UMI_ENV 区分不同环境来指定配置。
1830 0
|
15小时前
|
JSON 调度 数据格式
LangChain+FastMCP 搭建大模型工具调用服务
本文基于MCP协议与轻量级FastMCP框架,构建标准化大模型工具调用方案:支持Streamable HTTP通信,集成LangChain生态;通过天气查询与系统时间两大实战案例,完整演示自定义工具开发、静态资源封装、提示词模板配置及多服务协同调用,附可运行代码与环境配置,助力开发者快速落地轻量化、可复用的AI工具链。(239字)
34 3
LangChain+FastMCP 搭建大模型工具调用服务
|
1天前
|
人工智能 自然语言处理 容灾
模型越接越多,管理越来越乱?LiteLLM 与 New API 到底该怎么选
当多模型接入导致API Key分散、额度难管、环境混乱时,LiteLLM与New API两类开源模型网关提供自建解决方案:LiteLLM侧重研发侧统一调用、路由容灾与成本管控,适合技术团队;New API聚焦多用户管理、令牌分发与运营看板,适合需API商业化或精细化运营的场景。二者均支持OpenAI兼容接口,可私有化部署,比OpenRouter更可控、更安全。(239字)
|
1天前
|
人工智能 运维 监控
告警转工单为什么总是断在“最后一公里”?从ITSM与ITOM的联动机制谈起
运维工单系统的核心价值不在于“记录”,而在于“驱动”。本文从告警与工单脱节、变更缺乏闭环、配置数据漂移等实际问题出发,拆解运维工单系统与监控、CMDB、自动化工具联动的技术原理,分析不同实现路径的适用条件与限制,并给出选型评估的关键维度。
|
10天前
|
JSON Ubuntu 物联网
千问大模型二次LoRA‑SFT指令微调指南
大模型微调是实现模型领域定制的核心方案。本文基于 Ubuntu 22.04 服务器环境,依托 NVIDIA RTX 家用高性能显卡,选用千问 Qwen3.5‑0.8B‑Instruct 指令模型,完整演示二次 LoRA‑SFT 微调全流程,包含环境搭建、模型选型、ChatML 数据集制作校验、LoRA 参数配置、SFT 训练、效果验证、权重合并,附带可直接运行的工程脚本,便于开发者快速实现千问模型轻量化定制与上线部署。
176 2
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
轻量化小模型MiniMind从训练到落地指南
本文基于Ubuntu 22.04与RTX显卡,手把手教你用原生PyTorch从零训练MiniMind(26M–200M)轻量大模型:涵盖环境配置、预训练、SFT微调、LoRA垂域适配、DPO对齐、Web服务搭建及GGUF量化全流程。3小时可跑通基础对话,低成本、可复现、适合新手入门与私有化部署。(239字)
193 2
|
15小时前
|
存储 数据采集 人工智能
LangChain 实现NaiveRAG朴素向量检索生成
本文详解Naive RAG(朴素检索增强生成)——RAG技术最简实现:基于语义向量检索+大模型生成,支持PDF/TXT/网页等多源文档本地化知识库构建。含环境部署、向量服务双端口配置、Chroma持久化、LCEL链式调用及增量更新全流程,适合新手入门与轻量问答场景。(239字)
26 0
|
15小时前
|
存储 人工智能 自然语言处理
Python 原生封装 Llama.cpp 大模型推理接口
本文以通义千问Qwen量化GGUF模型为例,基于Llama.cpp框架,用原生Python实现本地大模型调用:涵盖模型元数据解析、单次/多轮对话、记忆持久化及自定义工具调用(如时间、计算),无需重型AI框架,轻量高效,助开发者深入理解本地大模型运行原理与工程落地实践。(239字)
33 0