LLM - 基于LM Studio本地部署DeepSeek-R1的蒸馏量化模型

文章目录

  • 前言
  • 开发环境
  • 快速开始
    • LM Studio
    • 简单设置
    • 模型下载
    • 开始对话
  • 模型选择
  • 常见错误
  • 最后


前言

目前,受限于设备性能,在本地部署的基本都是DeepSeek-R1的蒸馏量化模型,这些蒸馏量化模型的表现可能并没有你想象的那么好。绝大部分人并不需要本地部署,直接用现成的服务是更好的选择(特别是只能部署14B参数以下模型的设备)。

screenshot1

本文章基于macOS以及LM Studio本地部署,全程无需代理,力求让你快速学会部署自己的大语言模型。当然,你也可以参考其他文章使用Ollama部署。

开发环境

  • macOS: 15.3
  • LM Studio: 0.3.9
  • 芯片: Apple M2 Pro (10核CPU/16核GPU/16核ANE)
  • 内存: 32GB

快速开始

LM Studio

下载地址:LM Studio

下载完成后打开拖拽LM Studio.appApplications目录完成安装。

简单设置

  1. 设置语言

LM Studio提供简体中文(beta版,不完全中文),可以通过右下角的设置按钮进入设置:

screenshot2

这个设置不是必须的,可以不设置,这里是为了降低使用难度。

  1. 用户界面复杂度级别

在左下角有三个级别选项:User / Power User / Developer,请至少切换到Power User级别。在User级别下,不会显示左侧边栏,里面有本地模型管理功能:

screenshot3

模型下载

如果你想在LM Studio下载模型,大概率会遇到这种情况:Model details error: fetch failed

screenshot4

这是因为huggingface.co在国内没办法直接访问,配置了代理实测也不行,他应该不走。macOS上我没找到有设置的地方,可能只能修改LM Studio.app。不过,这不重要,我们可以将模型下载后复制到指定模型目录。

这是huggingface.co的国内镜像hf-mirror.com,我们先下载一个 DeepSeek-R1-Distill-Qwen-14B-Q4_K_M.gguf 模型:

screenshot5

除了网页下载,你也可以通过命令行工具下载(感觉下载速度更快点):

export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download lmstudio-community/DeepSeek-R1-Distill-Qwen-14B-GGUF DeepSeek-R1-Distill-Qwen-14B-Q4_K_M.gguf

下载完成后将模型复制到指定模型目录(默认是/User/用户名/.lmstudio/models):

screenshot6

开始对话

新建会话,然后点击顶部的选择要加载的模型

screenshot7

模型设置先默认就行,后面可以自行研究。接下来就可以发消息开始对话:

screenshot8

实测本地跑这模型生成速度大概15 tok/sec,内存占用9GB+。

模型选择

先简单了解一下知识蒸馏:用一个大模型训练一个小模型,让小模型学习大模型的知识,从而减少计算量,提升推理速度,并保留大部分性能

例如前面模型名称中的DeepSeek-R1-Distill-Qwen-14B部分,即表示用DeepSeek-R1模型训练Qwen-14B模型,以Qwen-14B模型的结构去学习DeepSeek-R1模型的知识。

DeepSeek-R1模型有671B参数,而Qwen-14B模型只有14B参数,就像是能力有限的学生跟随能力强大的老师,只能挑点重点学习。同时,学生之间的能力也有区别,参数更多的Qwen-32B模型也普遍比Qwen-14B模型能学的更多更强。并且,学生之间的底子也有区别,有些学生是基于Qwen(通义千问),有些是基于Llama(Meta),不同的底子对不同知识点的学习能力也有所差别,比如Qwen更擅长中文任务。

可见,本地部署的这个蒸馏模型并不是原版的模型,该模型已经可以看作是一个新模型,性能要求降低的同时你也别指望结果能和原版一样。

然后再简单了解一下模型量化:降低模型参数的数值精度来减少模型的存储需求和计算成本,从而加快推理速度,降低功耗

例如前面模型名称中的Q4_K_M部分,Q4表示4-bit量化K_M代表特定量化方案。Q后面的数字越低量化程度越高精度越低。

可见,模型量化通过牺牲精度,进一步降低模型大小以及内存等要求。同时,对结果的预期你也要降低。

最后简单了解一下模型格式:格式本身不会直接影响模型的推理精度或本质性能,但它可能间接影响加载效率和兼容性,需要关注的是当前支持运行什么格式

例如LM Studio目前支持两种模型格式,分别是GGUFMLX

screenshot9

DeepSeek默认提供的是.safetensors格式模型,虽然下载后自己也能转格式,但是这个模型没经过量化大很多,LM Studio又提供了现成的,所以这就是为什么前面没有从deepseek-ai下载的原因。

看到这,你会选模型了吗?别急,再看一组我电脑的实测数据:

模型名称模型大小内存占用(GB)生成速度(tok/sec)
DeepSeek-R1-Distill-Qwen-1.5B-Q4_K_M.gguf1.12GB1.4+75
DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf4.68GB4.8+25
DeepSeek-R1-Distill-Qwen-14B-Q4_K_M.gguf8.99GB9.4+15
DeepSeek-R1-Distill-Qwen-32B-Q4_K_M.gguf19.85GB内存不足N/A

注意:以上内存占用和生成速度仅供参考,提示词/上下文越长,内存占用越多,生成速度越慢。

除了32B参数的没能跑起来,其他运行没什么问题,如果精度再降低到Q3可能能行,但是太勉强会影响其他软件的日常使用没有意义。

再补充一个CPU/GPU/ANE(Apple神经引擎)的使用情况:1.5B/7B/14B参数模型的CPU使用率很低,GPU差不多在14B参数模型时接近满载(更小的模型如果提示词/上下文长也可能满载),ANE没有使用。

screenshot10

注:功耗数据通过sudo powermetrics命令查看。

综上,为了更好的体验,建议先追求更大参数量的模型,然后再根据可用内存选择量化程度。至于选Qwen还是Llama,中文任务的话建议选Qwen

个人建议,16GB内存选7B参数量Q4量化的模型,32GB内存选14B参数量Q4量化的模型。补充一点,由于macOS使用统一内存(内存显存共享),所以这只是基于macOS的建议,Windows还是要注意显存大小,好像显存不够可以使用内存,不知道性能怎么样没测试。

最后,还是提一句暂时不推荐本地部署,本地部署对于大部分人是伪需求。

常见错误

  1. The model has crashed without additional information. (Exit code:5)

通常是内存不足,换个内存要求更低的模型吧。

  1. Trying to keep the first xxx tokens when context the overflows. However, the model is loaded with context length of only 4096 tokens, which is not enough. Try to load the model with a larger context length, or provide a shorter input.

输入文本的长度超过了模型能够处理的最大上下文长度。可以尝试以下解决方法:

  1. 减小输入文本长度或改为发送文本附件
  2. 在模型设置中增加上下文长度
  3. 更换支持更长上下文长度的模型

最后

如果这篇文章对你有所帮助,点赞👍收藏🌟支持一下吧,谢谢~


本篇文章由@crasowas发布于CSDN。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/11919.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

csapp笔记3.6节——控制(1)

本节解决了x86-64如何实现条件语句、循环语句和分支语句的问题 条件码 除了整数寄存器外,cpu还维护着一组单个位的条件码寄存器,用来描述最近的算数和逻辑运算的某些属性。可检测这些寄存器来执行条件分支指令。 CF(Carry Flag&#xff09…

电路研究9.2.8——合宙Air780EP中IP 应用相关命令使用方法研究

这个有点吐血了,之前研究的时候只想着网络了,所以我对AT指令的那几个基本等指令以外,是跳到后面看的网络,加上IP也算网络里面的,就没注意,当时使用搜索查找时候并没有搜到ATSAPBR指令,结果这里打…

ubuntu解决普通用户无法进入root

项目场景: 在RK3566上移植Ubuntu20.04之后普通用户无法进入管理员模式 问题描述 在普通用户使用sudo su试图进入管理员模式的时候报错 解决方案: 1.使用 cat /etc/passwd 查看所有用户.最后一行是 若无用户,则使用 sudo useradd -r -m -s…

深度学习之“缺失数据处理”

缺失值检测 缺失数据就是我们没有的数据。如果数据集是由向量表示的特征组成,那么缺失值可能表现为某些样本的一个或多个特征因为某些原因而没有测量的值。通常情况下,缺失值由特殊的编码方式。如果正常值都是正数,那么缺失值可能被标记为-1…

Pandoc, Zotero, JabRef 管理论文引用,生成参考文献 | 撰写论文 paper

书接上回,使用 Obsidian, Zotero, JabRef, Pandoc, Markup-Markdown | 撰写论文 paper 管理论文引用,生成参考文献 TL; DR导出 bibliography 文件JabRefZotero 参考文献引用语法reference-docLinks TL; DR 安装 pandoc v3.6.2. 使用一下命令&#xff0c…

FFmpeg:多媒体处理的瑞士军刀

FFmpeg:多媒体处理的瑞士军刀 前言 FFmpeg 是一个功能强大且跨平台的开源多媒体框架,广泛应用于音视频处理领域。 它由多个库和工具组成,能够处理各种音视频格式,涵盖编码、解码、转码、流处理等多种操作。 无论是专业视频编辑…

优化代码性能:利用CPU缓存原理

在计算机的世界里,有一场如同龟兔赛跑般的速度较量,主角便是 CPU 和内存 。龟兔赛跑的故事大家都耳熟能详,兔子速度飞快,乌龟则慢吞吞的。在计算机中,CPU 就如同那敏捷的兔子,拥有超高的运算速度&#xff0…

oracle:索引(B树索引,位图索引,分区索引,主键索引,唯一索引,联合索引/组合索引,函数索引)

索引通过存储列的排序值来加快对表中数据的访问速度,帮助数据库系统快速定位到所需数据,避免全表扫描 B树索引(B-Tree Index) B树索引是一种平衡树结构,适合处理范围查询和精确查找。它的设计目标是保持数据有序,并支持高效的插入…

【DeepSeek背后的技术】系列一:混合专家模型(MoE)

目录 1 概述2 稀疏性3 微调3.1 令牌的负载均衡3.2 使用HuggingFace微调MoE模型3.3 专家如何学习3.4 专家的数量3.5 微调 4 提速4.1 并行计算4.2 容量因子和通信开销4.3 部署技术4.4 高效训练 5 MoE和稠密模型对比6 为什么是替换FFN层6.1 FFN层的角色与特性6.2 MoE的优势与FFN的…

AI技术在SEO关键词优化中的应用策略与前景展望

内容概要 在数字营销的快速发展中,AI技术逐渐成为SEO领域的核心驱动力。其通过强大的数据分析和处理能力,不仅改变了我们优化关键词的方式,也提升了搜索引擎优化的效率和效果。在传统SEO中,关键词的选择与组合常依赖人工经验和直…

!力扣 84. 柱状图中最大矩形

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights [2,1,5,6,2,3] 输出:10 解释:最大的矩形为…

ieee模版如何修改参考文献的格式以及多作者省略等

在用latex写论文的时候,会遇到各种模板,如果你要投IEEE的期刊或者会议,就得使用相应的latex模板。对于参考文献很多模版不一样的有些使用文本导入 有些使用的是bib 格式,因此记录一下如何修改IEEE参考文献的格式已经对应的多作者进…

【产品经理学习案例——AI翻译棒出海业务】

前言: 本文主要讲述了硬件产品在出海过程中,翻译质量、翻译速度和本地化落地策略是硬件产品规划需要考虑的核心因素。针对不同国家,需要优化翻译质量和算法,关注市场需求和文化差异,以便更好地满足当地用户的需求。同…

Jenkins 触发构建的几种常见方式

为了实现自动化构建,Jenkins 提供了多种触发构建的方式。这些触发方式可以根据开发团队的需求来选择,使得构建过程更加灵活和高效。 1. 手动触发构建 手动触发构建是最简单的一种方式,通常用于开发人员或管理员手动启动构建任务。 步骤: 登录 Jenkins 后,进入某个项目(…

全栈开发:使用.NET Core WebAPI构建前后端分离的核心技巧(一)

目录 cors解决跨域 依赖注入使用 分层服务注册 缓存方法使用 内存缓存使用 缓存过期清理 缓存存在问题 分布式的缓存 cors解决跨域 前后端分离已经成为一种越来越流行的架构模式,由于跨域资源共享(cors)是浏览器的一种安全机制,它会阻止前端应用…

Python写一个爱心

项目代码: import random from math import sin, cos, pi, log from tkinter import *# 定义窗口的大小 CANVAS_WIDTH 640 CANVAS_HEIGHT 480 CANVAS_CENTER_X CANVAS_WIDTH / 2 CANVAS_CENTER_Y CANVAS_HEIGHT / 2 IMAGE_ENLARGE 11 # 定义爱心的颜色 HEART_…

leetcode——二叉树的最近公共祖先(java)

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的…

Android学习制作app(ESP8266-01S连接-简单制作)

一、理论 部分理论见arduino学习-CSDN博客和Android Studio安装配置_android studio gradle 配置-CSDN博客 以下直接上代码和效果视频,esp01S的收发硬件代码目前没有分享,但是可以通过另一个手机网络调试助手进行模拟。也可以直接根据我的代码进行改动…

20250202在Ubuntu22.04下使用Guvcview录像的时候降噪

20250202在Ubuntu22.04下使用Guvcview录像的时候降噪 2025/2/2 21:25 声卡:笔记本电脑的摄像头自带的【USB接口的】麦克风。没有外接3.5mm接口的耳机。 缘起:在安装Ubuntu18.04/20.04系统的笔记本电脑中直接使用Guvcview录像的时候底噪很大! …

MySQL子查询

一、子查询的概述 1、理解:可以理解为嵌套查询,查询的内部进行查询 2、称谓规范:外查询(主查询)、内查询(子查询),这种称呼是相对的。 子查询(内查询)在主查…