DeepSeek本地性能调优

技术背景

大模型性能调优是一个很复杂的工程,涉及到很多细节,如果真要对模型动刀子,还需要对模型和数据集本身有非常好的理解。这里我们仅仅考虑模型加载过程中,可以优化的一些参数配置。关于DeepSeek在本地的部署,以及PageAssist插件的使用,可以参考DeepSeek合集。

调优思路

一句话总结一下调优思路,如果你已经尝试过了,那么可以略过本文:

GPU内存 > 多GPU内存 > CPU > 共享内存

遵循这个逻辑,对模型的加载层数进行配置,从而达到本地性能优化的目的。

DeepSeek-R1-32B-Q4_0测试

首先尝试用命令行启动,作为一个基线:

PS A:\DeepSeek\models> ollama run deepseek-r1-32B-Q4:latest --verbose
>>> 简述拉格朗日乘子法在生物学中的应用场景。</think>拉格朗日乘子法是一种优化技术,用于在有约束条件下寻找函数的极值。在生物学中,该方法可以应用于以下场景:1. **生态模型**:在研究生态系统时,可能需要在资源有限的情况下最大化物种数量或最小化灭绝风险。拉格朗日乘子法可以帮助
找到这些条件下的最优解。2. **基因表达分析**:在基因调控网络中,优化基因表达水平以满足特定的生物目标(如蛋白质产量最大化)时,可以使用拉格朗
日乘子法来处理约束条件。3. **资源分配问题**:例如,在种群动态模型中,如何在有限的食物资源下分配给不同物种以达到某种平衡状态,拉格朗日乘子法
可以帮助找到最优的资源分配方案。4. **进化生物学中的适应性优化**:研究生物体在环境压力下的最佳适应策略时,可以利用拉格朗日乘子法来求解在特定约束条件
下的最优适应度。总之,拉格朗日乘子法为生物学中涉及优化和约束的问题提供了一种有力的工具。total duration:       54.8643183s
load duration:        16.1375ms
prompt eval count:    21 token(s)
prompt eval duration: 5.23s
prompt eval rate:     4.02 tokens/s
eval count:           241 token(s)
eval duration:        49.611s
eval rate:            4.86 tokens/s

速度大约是4.86t。默认参数下的内存占用情况如下:

PS C:\Users\dechin> ollama ps
NAME                         ID              SIZE     PROCESSOR          UNTIL
deepseek-r1-32B-Q4:latest    d4a2da196dc7    19 GB    23%/77% CPU/GPU    4 minutes from now

Windows平台还可以用任务管理器查看资源占用:

这里我们发现一个问题:Ollama默认的加载配置是GPU > CPU的策略。也就是说:

GPU内存 > 多GPU内存 > 共享内存 > CPU

如果说,你的本地有众多的显卡,可以完全的把模型加载到显存里面,那么毫无疑问这个策略是对的。问题就在于,现在是大语言模型有小型化、本地化的趋势,所以如何让大模型在本地有限的硬件条件下跑起来,能用,才是最关键的。我们尝试去修改参数num_gpu:

这里使用的是PageAssist来进行加载了,可以用终端查看一下资源分配的情况:

PS C:\Users\dechin> ollama ps
NAME                         ID              SIZE     PROCESSOR          UNTIL
deepseek-r1-32B-Q4:latest    d4a2da196dc7    20 GB    23%/77% CPU/GPU    4 minutes from now

需要提醒的是,不论是内存还是共享内存,在Ollama这里就是属于CPU那一列。虽然跟默认配置都是23%/77% CPU/GPU,但是如果我们用系统资源管理器来查看,就会发现此时没有占用共享内存:

tokens表现:

在这个配置下,tokens速度达到了6.45t,比默认配置的速度4.86t要优化了一些。再者考虑到这里显存并没有占满,所以还有优化的空间,可以再把层数拉大:

再次运行起来,我们可以看到显存资源基本上是占满了,再加大有可能报OOM错误:

tokens表现:

此时tokens速度来到了7.54,进一步优化了模型的性能。此时模型加载的比例有一点点变化:

PS C:\Users\dechin> ollama ps
NAME                         ID              SIZE     PROCESSOR          UNTIL
deepseek-r1-32B-Q4:latest    d4a2da196dc7    20 GB    22%/78% CPU/GPU    4 minutes from now

虽然CPU的比例只是降了1%,但是因为不涉及到共享内存的使用,性能反而得到了优化。

DeepSeek-R1-70B-Q2_K测试

其实原本以为70B-Q2K已经是我的本地可以运行的模型的极限了,所以甚至没有使用Q4_0。首先我们使用70B num_gpu=64进行测试:

此时资源的占用比例为:

PS C:\Users\dechi> ollama ps
NAME                          ID              SIZE     PROCESSOR          UNTIL
deepseek-r1-70B-Q2K:latest    eb199ae0e147    28 GB    45%/55% CPU/GPU    4 minutes from now

tokens表现:

这里tokens速度仅有0.28,说实话已经是一个不太能接受的性能了,不如直接用API。不过我们这里以优化性能为主要考量,继续考虑调参方向。如果设置num_gpu=56:

PS C:\Users\dechi> ollama ps
NAME                          ID              SIZE     PROCESSOR          UNTIL
deepseek-r1-70B-Q2K:latest    eb199ae0e147    29 GB    46%/54% CPU/GPU    4 minutes from now

比例有一点点微小的变化,但是主要还是得从资源管理器里面去查看共享内存的使用情况:

可以看到GPU内存基本占满,共享内存接近于0,这里把CPU也拉起来了:

tokens表现:

这里我们优化后的tokens性能在3.09t,说实话吐字速度勉强是可以接受的,比默认配置优化了10倍的性能。不过这里Q2_K模型的语言能力实在是有点一言难尽,建议还是使用Q4_0以上的模型。

总结概要

对于本地模型的加载来说,除了使用KTransformer等工具进行指令集层面的优化之外,还可以调整模型加载层数,做一个简单的优化。这里提供了一个num_gpu和num_ctx参数调整的策略,实测Tokens性能最大可优化10倍左右。

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/share-memory.html

作者ID:DechinPhy

更多原著文章:https://www.cnblogs.com/dechinphy/

请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

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

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

相关文章

开箱即用!一条命令部署雷池WAF,安全从此“躺平”

作者:HACK之道Web应用已成为企业的核心入口,但随之而来的SQL注入、XSS攻击、爬虫窃密等问题层出不穷。传统WAF依赖规则库的被动防御模式,面对自动化工具和0day漏洞时显得捉襟见肘。长亭雷池WAF(SafeLine)凭借“动态防护”和“智能语义分析”两大核心技术,重新定义了Web应…

Beszel搭建和使用

官网 https://beszel.dev/zh/ 简介 Beszel 是一个轻量级的服务器监控平台,包含 Docker 统计信息、历史数据和警报功能。 它拥有友好的 Web 界面、简单的配置,并且开箱即用。它支持自动备份、多用户、OAuth 身份验证和 API 访问。环境查看 系统环境# cat /etc/redhat-release …

定制化流程,私有化未来:工作流管理软件的私有化转型之路

工作流管理软件私有化是指将工作流管理软件部署在组织内部的私有服务器或专有云环境中,以确保数据的安全性、隐私性和组织的完全控制权。以下是对工作流管理软件私有化的详细分析: 一、私有化的优势 数据安全: ○ 私有化部署确保所有数据存储在组织内部的服务器或私有云中,…

京东零售数据资产能力升级与实践

开篇 京东自营和商家自运营模式,以及伴随的多种运营视角、多种组合计算、多种销售属性等数据维度,相较于行业同等量级,数据处理的难度与复杂度都显著增加。如何从海量的数据模型与数据指标中提升检索数据的效率,降低数据存算的成本,提供更可信的数据内容和多种应用模式快速…

【稳定性】稳定性建设之依赖设计

背景 随着分布式微服务的发展,一个普通的应用可能会依赖于许多其他服务,这给系统的限流降级、优化改造等操作带来了困难。在没有明确强弱依赖关系的情况下,我们很难有效地进行这些操作。为了解决这个问题,强弱依赖治理成为了一种科学的手段。通过强弱依赖治理,我们可以持续…

牛客题解 | 反转链表-2

牛客输入输出题单题解题目 题目链接 描述 这是一篇针对初学者的题解,共用2种方法解决。 知识点:单链表 难度:一星 题解 方法一:构造链表 如果此类型的题出现在笔试中,如果内存要求不高,可以采用如下方法: 可以先用一个vector将单链表的指针都存起来,然后再构造链表。 此…

uni-app实现小程序复制功能失败

1.先准备好要实现粘贴复制的代码<view class="form_left"><text class="form_one">订单编号</text><text class="form_two">{{ order_id }}</text><text class="form_copy" @click="copy(order…

牛客题解 | 链表相加(二)

牛客输入输出题单题解题目 题目链接 题目主要信息:给定两个链表,每个链表中节点值都是0-9,每个链表就可以表示一个数字 将两个链表表示的数字相加,结果也存在链表中举一反三: 学习完本题的思路你可以解决如下题目: BM1.反转链表 BM86.大数加法 方法:反转链表法(推荐使用…

牛客题解 | 顺时针旋转矩阵

牛客输入输出题单题解题目 题目链接 题目主要信息:给定一个\(n*n\)的矩阵,返回其顺时针90度旋转后的结果举一反三: 学习完本题的思路你可以解决如下题目: BM97. 旋转数组 方法:倒置翻转(推荐使用) 知识点:矩阵转置 矩阵转置是将上三角矩阵元素与下三角矩阵元素依据对角线…

牛客题解 | 链表中倒数最后k个结点

牛客输入输出题单题解题目 题目链接 题目的主要信息:一个长度为\(n\)的链表,返回原链表中从倒数第k个节点至尾节点的全部节点 如果该链表长度小于k,请返回一个长度为 0 的链表举一反三: 学习完本题的思路你可以解决如下题目: BM4.合并有序链表 BM5.合并k个已排序的链表 BM…

打造专属任务管理利器:智慧工具私有化部署策略与实践

智慧任务管理工具私有化是指将智慧任务管理工具部署在组织内部的私有服务器或云环境中,以确保数据的安全性、隐私性和完全控制权。以下是对智慧任务管理工具私有化的详细解析: 一、私有化的优势 ● 数据安全:私有化部署确保所有数据存储在组织内部的服务器或私有云中,避免数…

牛客题解 | 设计LFU缓存结构

牛客输入输出题单题解题目 题目链接 题目的主要信息:实现LFU的set与get函数,且复杂度为\(O(1)\) 每次调用这两个函数会给一个频率赋值,超出长度则移除频率最少的,若有频率相同,则移除访问时间最早的举一反三: 学习完本题的思路你可以解决如下题目: BM100. 设计LRU缓存结…