Ollama 底层的 llama.cpp 和 GGUF

GGUF = 大模型权重的「通用压缩格式」(类似视频的 MP4,适配所有播放器)
llama.cpp = 跑 GGUF 格式模型的「轻量级推理引擎」(类似视频播放器,能在低配电脑上流畅播 MP4)
两者配合:GGUF 让模型体积变小、适配性强,llama.cpp 让模型能在 CPU / 低配 GPU 上快速跑
这也是 Ollama 能做到 “一键本地运行” 的底层原因

GGUF 详解:大模型的 “通用压缩包”

核心定义

GGUF(Generic GGML Format)是 GGML 格式的升级版,是专门为大模型权重设计的二进制存储格式
核心目标是「通用、高效、压缩」

GGML 是什么?
GGML 最初是 Georgi Gerganov 为 llama.cpp 开发的轻量级机器学习张量库(核心是为 CPU 优化),早期大模型量化权重格式直接叫「GGML 格式」,但这个格式只适配 llama.cpp,通用性差

GGUF 为什么是 “升级版”?
随着 llama.cpp 支持的模型越来越多(Llama、Qwen、Phi 等),原 GGML 格式的局限性暴露(比如不支持多模态、跨框架适配差)
因此在 2023 年底推出 GGUF,把 “专属格式” 升级为 “通用格式”,全称里加「Generic」就是为了突出 “通用” 这个核心升级点

GGUF 的命名在 llama.cpp 官方仓库(https://github.com/ggerganov/llama.cpp)的 GGUF 规范文档中明确标注为「Generic GGML Format」

为什么需要 GGUF

早期大模型权重格式(如 PyTorch 的 .pth、Hugging Face 的 .bin)有如下问题:

  • 体积大:7B 模型原生权重约 13GB,普通电脑装不下
  • 适配差:不同推理框架(llama.cpp/transformers)需要转格式,门槛高
  • 速度慢:原生权重不做优化,CPU 推理卡成幻灯片

GGUF 针对性解决

量化压缩 支持 4bit/8bit/16bit 量化,7B 模型从 13GB → 4GB(4bit) 低配电脑(8G 内存)也能装下
通用适配 所有主流大模型(Llama 3/Qwen/Phi 3)都能转 GGUF,所有推理框架(llama.cpp/Ollama)都能读,不用为不同模型/框架反复转格式
加载加速 预编译权重结构,模型启动时间从分钟级 → 秒级,本地调用模型响应更快
跨平台 兼容 Windows/Mac/Linux/ 树莓派,甚至手机,任何设备都能跑

  1. 实战关联:Ollama 里的 GGUF
    Ollama 下载的所有模型(如 llama3:7b),底层都是 GGUF 量化格式(默认 4bit/8bit),这也是它能在 Mac M1 / 老旧电脑上运行的关键

llama.cpp 详解:跑 GGUF 模型的 “轻量级引擎”

核心定义

llama.cpp 是由开发者 Georgi Gerganov 开源的 C/C++ 编写的大模型推理框架
最初只为跑 Llama 模型设计,现在支持所有 GGUF 格式的模型(Llama 3、Qwen、Gemini 等)

核心优势(为什么 Ollama 选它做底层)

优势 具体效果 对应 Ollama 的表现
纯 CPU 友好 极致优化 CPU 推理(用 SIMD / 多线程),不用高端 GPU 也能跑 Ollama 不用装 CUDA,普通电脑直接运行
极简轻量化 无依赖(不用装 Python/PyTorch/TensorFlow),编译后就一个可执行文件 Ollama 一键安装,不用配复杂环境
支持 GGUF 原生支持 GGUF 量化格式,推理速度比原生权重快 2-5 倍 Ollama 模型启动快、响应快
跨平台 支持 x86/ARM 架构(Mac M 系列、树莓派、手机) Ollama 能跨 Windows/Mac/Linux 运行
低内存占用 4bit 量化的 7B 模型,仅需 4-6GB 内存就能跑 老旧笔记本也能跑大模型

极简使用示例

不用 Ollama,直接用 llama.cpp 跑 GGUF 模型的核心步骤:

# 1. 下载 llama.cppgit clone https://github.com/ggerganov/llama.cpp.git cd llama.cpp &&make# 编译(仅需 C 编译器,无其他依赖)# 2. 下载 GGUF 格式的模型(比如 Llama 3 7B 4bit)wget https://xxx.com/llama-3-7b-instruct-q4_0.gguf # 3. 运行模型(纯 CPU,无需 GPU) ./main -m llama-3-7b-instruct-q4_0.gguf -p "解释一下 Agent 集群"

执行后就能在终端看到模型的推理结果,这就是 Ollama 底层的核心操作(Ollama 只是把这些步骤封装成了 ollama run 命令)

llama.cpp + GGUF 与 Ollama 的关系

用户 → Ollama(一键命令/API)→ llama.cpp(推理引擎)→ GGUF 模型(量化压缩的权重)→ 本地硬件(CPU/GPU)

Ollama 是「用户友好的封装层」:把复杂的 llama.cpp 命令、GGUF 模型下载 / 管理封装成简单指令
llama.cpp 是「推理执行层」:负责实际的模型计算、token 生成
GGUF 是「模型存储层」:让模型体积小、加载快、适配性强

和其他推理框架的对比

框架 / 格式 核心特点
GGUF + llama.cpp 轻量、纯 CPU、低内存、跨平台
Hugging Face Transformers 功能全、支持所有模型、GPU 优化好
vLLM 高吞吐、动态批处理、GPU 专用

框架 / 格式 适用场景 缺点
GGUF + llama.cpp 本地低配设备、离线运行、快速原型 推理速度比 GPU 框架慢(适合轻量场景)
Hugging Face Transformers 云端 / 高端 GPU 部署、复杂微调 依赖多、低配设备跑不动、体积大
vLLM 高并发 API 服务、云端部署 仅支持 GPU、低配设备用不了

总结
GGUF 是大模型权重的通用量化格式,核心价值是「压缩体积、通用适配、加载加速」,让低配设备装得下模型
llama.cpp 是轻量级推理引擎,核心价值是「纯 CPU 优化、极简无依赖、跨平台」,让低配设备跑得动模型
两者是 Ollama 实现 “本地一键运行大模型” 的底层核心,也是目前本地 AI 部署的主流技术组合

Read more

宇树 G1 机器人开发入门:有线 & 无线连接完整指南

宇树 G1 机器人开发入门:有线 & 无线连接完整指南

适用读者:机器人二次开发者、科研人员 开发环境:Ubuntu 20.04(推荐) 机器人型号:Unitree G1 EDU+ 前言 宇树 G1 是一款面向科研与商业应用的高性能人形机器人,支持丰富的二次开发接口。在正式进行算法调试与功能开发之前,首要任务是建立稳定的开发连接。本文将详细介绍两种主流连接方式:有线(网线直连) 与 无线(WiFi + SSH),并附上完整的配置流程,帮助开发者快速上手。 一、有线连接(推荐新手优先使用) 有线连接通过网线直接将开发电脑与 G1 机器人相连,具有延迟低、稳定性高、不依赖外部网络的优势,是新手入门和底层调试的首选方式。 1.1 前置条件 所需物品说明开发电脑推荐安装 Ubuntu 20.04,或在 Windows 上使用虚拟机宇树 G1 机器人确保已开机且处于正常状态网线(

AI对话应用接口开发全解析:同步接口+SSE流式+智能体+前端对接

AI对话应用接口开发全解析:同步接口+SSE流式+智能体+前端对接

AI对话应用接口开发 我们平时开发的大多数都是同步接口,也就是扥后端处理完再返回。但是对于AI应用,特别是响应时间较长的应用,可能会让用户失去耐心等待,因此推荐使用SSE技术实现实时流式输出,类似打字机效果,大幅度提升用户体验 开发AI对话同步接口 接下来我们先开发AI同步接口,对比学习。首先我们编写一个与"科泰旅游大师"对话的接口,使用常规同步的方式获得对话结果。 在controller包中新建ChatWithAIController,如下图所示: 编写同步接口: @RestController @RequestMapping("/ai") public class ChatWithAIController { // 注入TravelApp实例 @Resource private TravelApp travelApp; /* * 前端可以通过此方法获得一个ID * */ @GetMapping("/chat/new") public String newChat(){ return UUID.randomUUID().toString(); } // 与AI聊天(同

手机检测WebUI截图保存功能:前端JS实现检测结果一键下载PNG方案

手机检测WebUI截图保存功能:前端JS实现检测结果一键下载PNG方案 1. 项目背景与需求 在实际的手机检测应用场景中,用户经常需要将检测结果保存下来用于后续分析、报告或证据保存。基于DAMO-YOLO和TinyNAS技术的实时手机检测系统虽然提供了准确的检测功能,但缺少将检测结果一键保存为图片的便捷功能。 传统的截图方式存在几个痛点: * 需要手动截屏然后裁剪,操作繁琐 * 截图质量可能受损,特别是检测框和文字标签 * 无法保留原始的检测置信度等元数据信息 * 批量处理时效率低下 本文将介绍如何在前端JavaScript中实现检测结果的一键下载功能,让用户可以轻松将带有手机检测框的图片保存为PNG格式。 2. 技术实现方案 2.1 整体架构设计 我们采用纯前端方案实现截图保存功能,主要基于以下技术栈: * HTML5 Canvas:用于将检测结果渲染到画布上 * FileSaver.js:处理文件保存操作 * 原生JavaScript:实现核心逻辑和用户交互 这种方案的优点在于: * 完全在浏览器端完成,不增加服务器负担 * 响应速度快,

如何前端对接豆包api并在抖音直播间实现互动(1/3):注册豆包apikey

如何前端对接豆包api并在抖音直播间实现互动(1/3):注册豆包apikey

前段时间,我女朋友公司正忙着抖音直播买红酒的业务,头疼的是,直播间的在线人数一直少得可怜,每次开播都是寥寥无几的观众,愁得唉声叹气。正好那段时间我手头没什么急事,闲着也是闲着,突然蹦出一个想法,能不能做个插件帮她盘活直播间的氛围。         核心思路就是用前端技术打通几个关键环节:一方面对接豆包的智能对话接口,另一方面嵌入计时器功能,再加上网页元素捕捉的模块。         我去市面上搜了一圈,发现好像还真没有类似的工具。其实这个插件的技术难度不算高,无非是把前端的页面交互、接口调用和网页抓取这些基础技能整合到一起,但感觉特别有意思,看到插件在直播间里正常运转,那种成就感真的很难得。更重要的是,这个小玩意儿能帮到她,让她不用再为直播间没说话而发愁,这就足够了。 首先我们要先去豆包api的官网,进行相关注册和申请权限。 1.访问官网进行相关注册: 火山引擎-你的AI云https://www.volcengine.com/ 2.注册完成后点击上面产品找到豆包大模型 3.进入控制台后点击进入apikey管理并创建apikey 此时我们已经完成api