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.json、model.safetensors、tokenizer.json、tokenizer_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
目录
相关文章
|
24天前
|
人工智能 Ubuntu 数据可视化
Ubuntu 本地部署Ollama+OpenWebUI教程
本文详解Ubuntu下零基础部署Ollama+OpenWebUI:一键安装Ollama(支持CPU/GPU)、拉取轻量qwen3.5:0.8b模型、虚拟环境隔离安装OpenWebUI、配置systemd自启服务,最终建成可远程访问、离线运行、稳定易用的本地AI对话网页。
379 2
|
23天前
|
人工智能 自然语言处理 语音技术
阿里云大模型介绍:全模态生态全能力拆解,千问+第三方生态选型落地指南
本文全面盘点阿里云百炼平台191款大模型,系统梳理通义千问全系列及DeepSeek、智谱GLM等第三方生态的全模态能力、官方收费标准与适用场景,同步汇总2026年最新Token Plan套餐、7000万新用户免费额度、夜间错峰低至1折等省钱攻略,为开发者与企业用户提供从POC验证到规模化落地的全链路选型与成本优化参考。
|
23天前
|
人工智能 缓存 移动开发
秒悟meoo官网:套餐费用、秒悟积分使用、AI模型扣费标准、支持功能及问题解答
秒悟Meoo是阿里云推出的AI应用创作平台,支持一句话生成网页、H5、PPT及数据可视化,零代码门槛。提供免费版、Pro版(9.9元/月限时)、Max版(89元/月),含积分体系、多模型调用与一键部署功能。
459 1
|
26天前
|
人工智能 Linux iOS开发
CC Switch下载+安装+使用5分钟搞定(Win/Mac/Linux全支持)
CC Switch 是一款开源免费的AI编程工具配置管理器,支持Claude、Codex、Gemini等8大主流工具,一键切换多套配置(JSON/TOML/.env),免手动修改。跨平台(Win/macOS/Linux),自带简体中文,轻量易用。(239字)
|
24天前
|
JSON 自然语言处理 物联网
基于魔搭 MS-Swift 实现大模型微调落地指南
MS-Swift是阿里达摩院魔搭社区开源的一站式大模型开发框架,支持预训练、微调、对齐、推理、量化与部署全链路,兼容600+文本及300+多模态模型,助力企业高效落地Agent定制。
286 2
|
24天前
|
并行计算 API 开发者
Windows 环境下 llama.cpp 编译运行指南
本文详解Windows下用llama.cpp本地部署大模型:从VS2026编译(支持CPU/GPU)、ModelScope下载GGUF格式Qwen2.5-1.5B模型,到启动llama-server API服务及Python调用验证,全程轻量、低延迟、高隐私,助力开发者快速落地。
504 2
|
24天前
|
人工智能 自然语言处理 测试技术
LangGraph Server Agent 框架本地部署指南
本文详解如何在Windows本地离线部署LangGraph Server构建AI Agent:全程不依赖公网大模型,适配llama.cpp等本地模型,提供纯净环境安装、项目模板搭建、UTF-8编码配置及内存调试服务。强调MIT协议核心库免费无限制,但LangGraph Server Lite版年节点执行上限100万次。
154 2
|
24天前
|
机器学习/深度学习 人工智能 自然语言处理
轻量化小模型MiniMind从训练到落地指南
本文基于Ubuntu 22.04与RTX显卡,手把手教你用原生PyTorch从零训练MiniMind轻量大模型(26M–200M),涵盖数据部署、全流程训练、Web服务搭建及GGUF量化。3小时可完成基础对话训练,低成本适配新手入门、私有化部署与原理学习。
360 1
|
24天前
|
机器学习/深度学习 数据采集 人工智能
千问大模型完整RLHF全参数微调指南
本文详解Qwen3.5-0.8B-Base全参数微调全流程,覆盖SFT监督微调、RM奖励建模、PPO强化学习与DPO直接偏好优化四大环节,提供可运行脚本与医疗领域实践案例,助力开发者低成本完成小模型垂直定制。(239字)
227 1
|
22天前
|
人工智能 安全 算法
AI时代,终端防拍照发展到那一步了?
AI防拍照技术已突破“能否识别”阶段,主流方案准确率超99%,响应快至100毫秒,实现事中锁屏拦截。技术路线分化为纯软件、端侧硬件与光学对抗三类;水印用于溯源威慑,拦截专注实时阻断。二者协同构建防护闭环,但复杂场景适配与新设备盲区仍是挑战。