当前位置: 首页 > news >正文

纯新手教程:用llama.cpp本地部署DeepSeek蒸馏模型

0. 前言

llama.cpp是一个基于纯C/C++实现的高性能大语言模型推理引擎,专为优化本地及云端部署而设计。其核心目标在于通过底层硬件加速和量化技术,实现在多样化硬件平台上的高效推理,同时保持低资源占用与易用性。

最近DeepSeek太火了,就想用llama.cpp在本地部署一下试试效果,当然在个人电脑上部署满血版那是不可能的,选个小点的蒸馏模型玩一玩就好了。

1. 编译llama.cpp

首先从Github上下载llama.cpp的源码:

git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp

llama.cpp支持多种硬件平台,可根据实际的硬件配置情况选择合适的编译参数进行编译,具体可以参考文档docs/build.md

编译CPU版本

cmake -B build
cmake --build build --config Release -j 8

编译GPU版本

编译英伟达GPU版本需要先装好驱动和CUDA,然后执行下面的命令进行编译

cmake -B build -DGGML_CUDA=ON -DGGML_CUDA_ENABLE_UNIFIED_MEMORY=1
cmake --build build --config Release -j 8

编译完成后,可执行文件和库文件被存放在build/bin目录下。

2. 模型转换与量化

本文以DeepSeek R1的蒸馏模型DeepSeek-R1-Distill-Qwen-7B为例进行介绍。

2.1 模型下载与转换

首先从魔搭社区下载模型:

pip install modelscope
modelscope download --model deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --local_dir DeepSeek-R1-Distill-Qwen-7B

下载好的模型是以HuggingFacesafetensors格式存放的,而llama.cpp使用的是GGUF格式,因此需要先要把模型转换为GGUF格式:

# 安装python依赖库
pip install -r requirements.txt
# 转换模型
python convert_hf_to_gguf.py DeepSeek-R1-Distill-Qwen-7B/

转换成功后,在该目录下会生成一个FP16精度、GGUF格式的模型文件DeepSeek-R1-Distill-Qwen-7B-F16.gguf

2.2 模型量化

FP16精度的模型跑起来可能会有点慢,我们可以对模型进行量化以提升推理速度。

llama.cpp主要采用了分块量化(Block-wise Quantization)和K-Quantization算法来实现模型压缩与加速,其核心策略包括以下关键技术:

  1. 分块量化(Block-wise Quantization)
    该方法将权重矩阵划分为固定大小的子块(如3264元素为一组),每个子块独立进行量化。通过为每个子块分配独立的缩放因子(Scale)和零点(Zero Point),有效减少量化误差。例如,Q4_K_M表示每个权重用4比特存储,且子块内采用动态范围调整。

  2. K-Quantization(混合精度量化)
    在子块内部进一步划分更小的单元(称为“超块”),根据数值分布动态选择量化参数。例如,Q4_K_M将超块拆分为多个子单元,每个子单元使用不同位数的缩放因子(如6bit的缩放因子和4bit的量化值),通过混合精度平衡精度与压缩率。

  3. 重要性矩阵(Imatrix)优化
    通过分析模型推理过程中各层激活值的重要性,动态调整量化策略。高重要性区域保留更高精度(如FP16),低重要性区域采用激进量化(如Q2_K),从而在整体模型性能损失可控的前提下实现高效压缩。

  4. 量化类型分级策略
    提供Q2_KQ8_K等多种量化级别,其中字母后缀(如_M_S)表示优化级别:

    • Q4_K_M:中等优化级别,平衡推理速度与精度(常用推荐)。
    • Q5_K_S:轻量化级别,侧重减少内存占用

    典型场景下,Q4_K_M相比FP16模型可减少70%内存占用,推理速度提升2-3倍,同时保持95%以上的原始模型精度。实际部署时需根据硬件资源(如GPU显存容量)和任务需求(如生成文本长度)选择量化策略。

执行下面的命令可将FP16精度的模型采用Q4_K_M的量化策略进行量化:

./build/bin/llama-quantize DeepSeek-R1-Distill-Qwen-7B/DeepSeek-R1-Distill-Qwen-7B-F16.gguf DeepSeek-R1-Distill-Qwen-7B/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf Q4_K_M

量化完成后,模型文件由15.2G减少到4.7G

3. 运行模型

模型量化完后,我们就可以运行模型来试试效果了。llama.cpp提供了多种运行模型的方式:

命令行方式

执行下面的命令就可以在命令行与模型进行对话了:

./build/bin/llama-cli -m DeepSeek-R1-Distill-Qwen-7B/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf -cnv

HTTP Server方式

由于模型是以Markdown格式输出内容,因此用命令行的方式看着不太方便。llama.cpp还提供HTTP Server的方式运行,交互性要好很多。

首先在终端执行命令

./build/bin/llama-server -m DeepSeek-R1-Distill-Qwen-7B/DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf --port 8088

然后打开浏览器,输入地址http://127.0.0.1:8088就可以在网页上与模型进行交互了,非常方便!

相关文章:

纯新手教程:用llama.cpp本地部署DeepSeek蒸馏模型

0. 前言 llama.cpp是一个基于纯C/C实现的高性能大语言模型推理引擎,专为优化本地及云端部署而设计。其核心目标在于通过底层硬件加速和量化技术,实现在多样化硬件平台上的高效推理,同时保持低资源占用与易用性。 最近DeepSeek太火了&#x…...

JDK 8+新特性(Stream API、Optional、模块化等)

JDK 8新特性(Stream API、Optional、模块化等) 一、Stream API 1.1 概述 Stream API 是 Java 8 引入的一个新的抽象概念,它允许以声明式的方式处理数据集合。Stream 不是一个数据结构,而是对数据源(如集合、数组等&…...

国产编辑器EverEdit - 独门暗器:自动监视剪贴板内容

1 监视剪贴板 1.1 应用场景 如果需要对剪贴板的所有历史进行记录,并进行分析和回顾,则可以使用监视剪贴板功能,不仅在EverEdit中的复制会记录,在其他应用的复制也会记录。 1.2 使用方法 新建一个空文档(重要:防止扰乱…...

贪心算法-买卖股票的最佳时机

买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天 的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股 票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易…...

文本操作基础知识:正则表达式

目录 摘要: 一、语法 二、匹配模式pattern 1、普通字符[ ] 2、限定字符 3、定位字符 4、运算字符( ) 三、修饰符flags 四、各语言的正则使用 1、Python的re 参考资料: 摘要: 常用匹配:[A-C]、[^A-C]、\w、\d、\n、\r、…...

【Scrapy】Scrapy教程6——提取数据

前一小节我们拿到了页面的数据,那页面中那么多内容,我们想要其中的部分内容,该如何获取呢?这就需要对我们下载到的数据进行解析,提取出来想要的数据,这节就讲讲如何提取数据。 引入 我们编辑保存下来的shouye.html文件看下,发现这是什么鬼,全是如下图的代码。 没错…...

PHP 网络编程介绍

PHP 学习资料 PHP 学习资料 PHP 学习资料 在当今数字化时代,网络编程是开发各类应用必不可少的技能。PHP 作为一门广泛应用于 Web 开发的编程语言,同样具备强大的网络编程能力。接下来,我们将深入探讨 PHP 中网络连接的建立、Socket 编程、…...

【C语言】C语言 食堂自动化管理系统(源码+数据文件)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 【C语言】C语言 食堂自动化管理系统(源…...

mybatis存储过程返回list

在MyBatis中&#xff0c;要想通过调用存储过程返回一个List集合&#xff0c;你需要在Mapper接口中定义一个方法&#xff0c;并使用Param注解来传递存储过程的参数。同时&#xff0c;你需要在Mapper XML文件中配置相应的<select>标签&#xff0c;并指定statementType"…...

【vue】nodejs版本管理利器:nvm

nvm&#xff08;Node Version Manager&#xff09;即 Node 版本管理器&#xff0c;是一个用于在系统中轻松安装、管理和切换不同版本 Node.js 的工具。 在实际开发中&#xff0c;不同的项目可能基于不同版本的 Node.js 构建。比如一个旧项目依赖于 Node.js 12.x 版本的特定功能…...

负载测试工具有哪些?

Apache JMeter Apache JMeter 是一款开源的性能测试工具&#xff0c;主要用于对 Web 应用程序进行功能、负载和压力测试。JMeter 支持多种协议和技术&#xff0c;包括 HTTP, HTTPS, FTP 和 WebSocket 等。通过模拟大量并发用户访问来评估应用程序的表现1。 jmeter -n -t testp…...

路由基础 | 路由引入实验 | 不同路由引入方式存在的问题

注&#xff1a;本文为 “路由基础 | 路由表 | 路由引入” 相关文章合辑。 未整理去重。 路由基本概念 1—— 路由表信息、路由进表以及转发流程、最长掩码匹配原则 静下心来敲木鱼已于 2023-11-26 14:06:22 修改 什么是路由 路由就是指导报文转发的路径信息&#xff0c;可以…...

网络安全不分家 网络安全不涉及什么

何为网络安全 信息安全是指系统的硬件、软件及其信息受到保护&#xff0c;并持续正常运行和服务。信息安全的实质是保护信息系统和信息资源免受各种威胁、干扰和破坏&#xff0c;即保证信息的安全性。 网络安全是指利用网络技术、管理和控制等措施&#xff0c;保证网络系统和…...

智能编程助手功能革新与价值重塑之:GitHub Copilot

引言&#xff1a; GitHub Copilot 的最新更新为开发者带来了显著变化&#xff0c;其中 Agent Mode 功能尤为引人注目。该模式能够自动识别并修复代码错误、自动生成终端命令&#xff0c;并具备多级任务推理能力&#xff0c;这使得开发者在开发复杂功能时&#xff0c;可大幅减少…...

wordpress企业官网建站的常用功能

WordPress 是一个功能强大的内容管理系统(CMS)&#xff0c;广泛用于企业官网的建设。以下是企业官网建站中常用的 WordPress 功能&#xff1a; 1. 页面管理 自定义页面模板&#xff1a;企业官网通常需要多种页面布局&#xff0c;如首页、关于我们、产品展示、联系我们等。Wor…...

讯方·智汇云校华为官方授权培训机构

1.官方授权 讯方智汇云校是华为领先级授权培训机构&#xff08;华为授权培训合作伙伴&#xff08;HALP&#xff09;体系&#xff0c;分为认证、优选、领先三个等级&#xff0c;领先级是HALP最高级&#xff09;&#xff0c;代表着华为对培训合作伙伴在专业能力、师资队伍、合作…...

C语言中的文件

文章目录 文件1. 流1.1 文件缓冲1.2 标准流1.3 文本文件和二进制文件 2. 打开/关闭文件2.1 fopen2.2 fclose 3. 读写文件3.1 fgetc & fputc3.2 fgets & futs3.3 fscanf & fprintf3.4 fread & fwrite 4. 文件定位5. 错误处理5.1 errno 文件 1. 流 在 C 语言中…...

利用分治策略优化快速排序

1. 基本思想 分治快速排序&#xff08;Quick Sort&#xff09;是一种基于分治法的排序算法&#xff0c;采用递归的方式将一个数组分割成小的子数组&#xff0c;并通过交换元素来使得每个子数组元素按照特定顺序排列&#xff0c;最终将整个数组排序。 快速排序的基本步骤&#…...

前端工程化的具体实现细节

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

数据分析--数据清洗

一、数据清洗的重要性&#xff1a;数据质量决定分析成败 1.1 真实案例警示 电商平台事故&#xff1a;2019年某电商大促期间&#xff0c;因价格数据未清洗导致错误标价&#xff0c;产生3000万元损失医疗数据分析&#xff1a;未清洗的异常血压值&#xff08;如300mmHg&#xff…...

macOS桌面歌词终极指南:LyricsX 2.0快速上手教程

macOS桌面歌词终极指南&#xff1a;LyricsX 2.0快速上手教程 【免费下载链接】Lyrics Swift-based iTunes plug-in to display lyrics on the desktop. 项目地址: https://gitcode.com/gh_mirrors/lyr/Lyrics LyricsX是一款基于Swift开发的macOS桌面歌词显示工具&#x…...

如何用WeChatMsg将微信聊天记录变成你的数字记忆宝库?

如何用WeChatMsg将微信聊天记录变成你的数字记忆宝库&#xff1f; 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…...

如何用AI守护你的健康?首个中医大语言模型仲景GPT完整指南

如何用AI守护你的健康&#xff1f;首个中医大语言模型仲景GPT完整指南 【免费下载链接】CMLM-ZhongJing 首个中医大语言模型——“仲景”。受古代中医学巨匠张仲景深邃智慧启迪&#xff0c;专为传统中医领域打造的预训练大语言模型。 The first-ever Traditional Chinese Medic…...

音乐搜索器前端实现原理:Amaze UI + Aplayer打造极致用户体验

音乐搜索器前端实现原理&#xff1a;Amaze UI Aplayer打造极致用户体验 【免费下载链接】music 音乐搜索器 - 多站合一音乐搜索解决方案 项目地址: https://gitcode.com/gh_mirrors/mus/music 音乐搜索器作为一款多站合一的音乐搜索解决方案&#xff0c;通过简洁高效的…...

Qwen3.5-27B企业落地指南:电商客服/教育答疑/办公提效三大场景应用

Qwen3.5-27B企业落地指南&#xff1a;电商客服/教育答疑/办公提效三大场景应用 1. 企业级AI助手的新选择 在数字化转型浪潮中&#xff0c;企业正寻求更智能的解决方案来提升运营效率。Qwen3.5-27B作为一款视觉多模态理解模型&#xff0c;为企业提供了全新的AI助手选择。这款模…...

告别桌面混乱:3步用NoFences打造高效整洁的Windows工作空间

告别桌面混乱&#xff1a;3步用NoFences打造高效整洁的Windows工作空间 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你的Windows桌面是不是经常被各种图标、文件和快捷方式…...

Phi-4-Reasoning-Vision详细步骤:TextIteratorStreamer流式输出精准解析

Phi-4-Reasoning-Vision详细步骤&#xff1a;TextIteratorStreamer流式输出精准解析 1. 项目概述 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具&#xff0c;专为双卡RTX 4090环境优化设计。该工具严格遵循官方SYSTEM PR…...

生产参数追溯难,产品质量问题找不到源头怎么办?——2026制造企业全链路数字化追溯实战方案

站在2026年工业4.0深度普及的节点回看&#xff0c;制造业的竞争早已从单纯的产能比拼转向了“数据主权”的博弈。尽管MES、ERP等系统已成为工厂标配&#xff0c;但许多企业依然面临一个尴尬的现实&#xff1a;生产参数追溯难&#xff0c;产品质量问题找不到源头。 当一批次产品…...

云端还是本地?哪种RFID固定资产系统更合适你的企业?

在数字化转型的浪潮中&#xff0c;越来越多的企业认识到RFID固定资产管理系统的重要性。但当真正准备引进系统时&#xff0c;一个关键却绕不开的问题便摆在面前&#xff1a;到底该选云端还是本地部署&#xff1f;这不仅仅是技术路线的选择题&#xff0c;更关乎企业的成本结构、…...

Python程序打包为EXE

PowerShell 用anaconda创建虚拟环境 conda -n create XXXconda initconda activate xxx进入要打包的文件夹中安装依赖pip install -r requirements.txt 打包pyinstaller -F -w main.py --clean --noconfirm...