资讯详情

资讯详情

无独显也能跑DeepSeek:Ollama本地部署与量化选型避坑

简介这份PDF图解教程面向希望低成本上手大模型本地部署的初学者、技术爱好者与研发人员围绕DeepSeek的安装运行、LLM与Transformer基础、预训练/监督微调/强化学习流程展开并重点拆解DeepSeek-R1及R1-Zero的推理模型训练与通用强化学习思路。压缩包仅含1个PDF文件约2.64MB以图文步骤和目录化章节组织便于按本地部署、零基础概念、R1精华图解三部分检索学习。已有2202人学习下载。读者可据此快速完成本地对话环境搭建理解推理模型从预训练到强化学习的完整脉络并通过操作界面截图和案例分析掌握排错与验证方法适合作为入门实操与前沿技术参考资料。1. 一台没有独立显卡的办公本把 DeepSeek 跑起来了上周帮同事在一台 16G 内存的轻薄本上做 DeepSeek 本地部署机器没有独立显卡之前他照着某篇教程拉了个大参数模型磁盘直接下去四十多个 G风扇狂转对话还卡成幻灯片。换成deepseek-r1:1.5b之后从装 ollama 到出第一句回答前后不到十分钟。这种翻车太常见了模型本身没有问题问题出在版本和量化档位没对上。这篇按我实际装机的顺序把 DeepSeek 大模型本地部署、ollama 安装配置以及后面强化学习训练流程怎么理解写一遍。适合想在自己机器上跑通推理、又不想被显存和参数绕晕的开发者熟手可以直接跳到版本取舍和排查那两章。2. 装前定版本显存、量化档位与 deepseek-r1 标签怎么选本地部署最容易犯的错是拿到一个模型名就直接 pull完全不看后面的参数规模。大型语言模型的参数量直接决定了推理时的内存占用选大了跑不动选小了答非所问中间那档才是普通机器该用的。这一章先把版本这件事定下来后面装起来才不返工。2.1 参数 b 标的是参数量不是内存占用deepseek-r1:1.5b里的b是 billion十亿的意思。1.5b 就是 15 亿参数7b 是 70 亿8b 是 80 亿。这里的参数量指的是模型里权重weight和偏置bias的总数目前主流大模型都基于 Transformer 架构堆很多层最后接全连接层所有参数加起来就是这个数。它和磁盘占用、内存占用不是一回事但正相关参数越多量化后的文件越大推理时需要装进内存的权重也越多。下面这张表是我在几台机器上实际拉过的档位磁盘占用取的是 ollama 模型库页面的常见值具体以你拉取时显示的为准模型标签参数量量化后磁盘占用约内存建议适用机器deepseek-r1:1.5b15 亿1.1 GB4 GB 起轻薄本、办公机deepseek-r1:7b70 亿4.7 GB8 GB 起16G 内存台式机deepseek-r1:8b80 亿5 GB 左右810 GB有 6G 显存的机器deepseek-r1:14b140 亿9 GB 左右16 GB12G 显存以上deepseek-r1:32b320 亿20 GB 左右24 GB 以上24G 显存工作站选型逻辑不复杂先看内存再看显存最后看你能接受多慢。1.5b 在纯 CPU 上也能跑出可用的速度适合先跑通链路7b 和 8b 是质量和资源的平衡点普通开发机基本能扛14b 以上没有独立显卡就别勉强了内存交换一开回答速度会掉到难以忍受。这里提到的 Scaling Laws 说的是参数越多、数据越多元模型能力越强但这条规律对本地部署的指导意义是「在资源允许的范围内选最大」不是「无脑选最大」。提示第一次装建议直接从 1.5b 开始跑通之后再换大档位。这样即使环境有问题也能快速判断是配置问题还是模型太重。2.2 量化后缀怎么读q4_K_M 与文件体积的关系ollama 的模型 tag 后面有时会带q4_K_M、q5_K_M、q8_0这类后缀这是量化格式不是版本号。q4表示 4bit 量化q5是 5bitq8是 8bitK指 k-quants 系列量化方法M是 medium 档位。量化位宽越低文件越小、推理越快但精度损失越大。对 1.5b 这种小模型q4 已经够用再往上压容易把本来就不多的推理能力压没7b 以上如果内存宽裕可以选 q5 或 q8回答的连贯性会好一些。判断方法很直接拉之前看 tag拉之后看ollama list里的 SIZE 列。同一个参数规模下SIZE 越小说明量化越狠。我一般会给小模型留 q4给 7b 以上留 q5除非磁盘实在紧张否则不建议碰 q2、q3 这类极低比特量化那种模型说话会开始重复和断片。2.3 环境清单装之前把这五项对一遍装 ollama 本身不挑环境但模型跑不跑得动取决于下面这几项。先把清单对一遍能省掉后面一半的排查时间检查项要求怎么查操作系统Windows 10 以上、macOS 12 以上、主流 Linux 发行版系统设置里看版本内存1.5b 至少 4 GB7b 至少 8 GB任务管理器或free -h磁盘剩余至少留出模型体积的 2 倍df -h或资源管理器CPU支持 AVX2 指令集Linux 下lscpu看 Flags网络能稳定访问模型下载源先 pull 一个小模型试磁盘这一项要单独说ollama 默认把模型放在用户目录下Linux 是~/.ollama/modelsWindows 是C:\Users\用户名\.ollama\models。1.5b 才 1G 多问题不大7b 以上再加上你反复拉不同 tagC 盘很快会被吃满。常见做法是在装完之后、拉模型之前把OLLAMA_MODELS环境变量指到空间大的盘这个操作放在下一章第一步做。3. ollama 安装与 DeepSeek-R1 拉取三条命令的参数取舍ollama 的好处是把模型下载、加载、对话接口都包在一个命令行里不需要自己配 Python 环境、装推理框架。整个 AI 本地部署链路可以压到三条命令装 ollama、pull 模型、run 模型。但每条命令背后都有几个参数值得停一下尤其是模型目录和 tag 这两处改错地方后面要重来。3.1 装 ollama先把模型目录挪出系统盘Windows 和 macOS 直接到 ollama 官方站点下载对应系统的安装包双击后基本一路下一步。Linux 用官方提供的安装脚本装完先验证命令面# Linux 下按官方站点当前给出的安装命令执行装完验证版本 ollama --version # 看一遍子命令后面常用的就是 pull、run、list、rm、serve ollama --helpollama --version输出的是客户端和服务端版本号两者不一致时以服务端为准重启一下。ollama --help会列出十来个命令实际高频使用的就五个pull拉模型、run跑模型、list看本地模型、rm删模型、serve手动起服务。装完先别急着 pull把模型目录改掉# Linux/macOS把模型存储目录指到大容量磁盘 export OLLAMA_MODELS/data/ollama/models # 写进 shell 配置避免每次开终端都要重新 export echo export OLLAMA_MODELS/data/ollama/models ~/.bashrc source ~/.bashrc这两行做的是同一件事让 ollama 去/data/ollama/models存模型文件而不是默认的用户目录。export只对当前终端生效写进~/.bashrc才是永久的。Windows 用户不用命令在「系统属性 → 环境变量」里新建OLLAMA_MODELS值填D:\ollama\models这类路径然后重启 ollama 服务。改完目录后可以用ollama list确认一下此时列表应该是空的说明新目录生效了。注意改完环境变量要重启 ollama 服务Linux 下systemctl restart ollamaWindows 下退出托盘图标再重新启动否则它还在读旧路径。3.2 拉模型ollama pull deepseek-r1:1.5b 的 tag 选择装好之后就是拉模型。命令本身很短关键是 tag 要写全# 显式指定 1.5b 量化版适合 4G 内存以上的机器 ollama pull deepseek-r1:1.5b # 拉完确认本地模型列表和体积 ollama listollama pull是按层下载的中途断网重新执行会续传不会从头开始。tag 不写会默认拉latest但deepseek-r1的 latest 不一定是你要的档位可能是更大的参数版本所以这里建议永远显式写 tag。ollama list输出四列NAME、ID、SIZE、MODIFIEDSIZE 和你表里预估的体积对得上就说明拉的是正确的量化档。拉取过程有几个细节值得知道模型文件按 blob 存在models/blobs下manifests里存的是 tag 到 blob 的映射同一个基础模型的不同 tag 会共享部分层所以先拉 1.5b 再拉 7b磁盘增量不一定等于两个体积相加。删模型用ollama rm deepseek-r1:1.5b只删 manifest 和独占的 blob共享层会留着这是正常行为。3.3 跑起来ollama run 的交互、think 标签与 API 调用模型到位后直接跑# 进入交互式对话首次加载会把权重读进内存等几秒 ollama run deepseek-r1:1.5b进入对话界面后直接输入问题比如「用三句话解释什么是监督微调」。DeepSeek-R1 系列有个明显特征回答里会先出现think标签里面是思考过程等response闭合之后才是正式回复。这个标签不是装饰它是 R1 训练方式留下来的痕迹第四章会讲清楚它从哪来。如果你用脚本调用要按标签把思考段和正式段切开别把思考过程直接当成答案展示给用户。除了交互模式更常用的是 HTTP 接口。ollama 默认在11434端口起服务用 curl 就能调# 非流式调用一次性拿完整 JSON curl http://localhost:11434/api/generate -d { model: deepseek-r1:1.5b, prompt: 用三句话解释什么是监督微调, stream: false }三个参数分别管什么model必须和ollama list里的名字完全一致prompt是输入文本stream设成false表示等生成完再返回设成true会一行一行推流适合做打字机效果。返回的 JSON 里response字段是正文done为true表示生成结束。如果要接自己的程序把stream设true再用 SSE 解析会更顺但调试阶段建议先用false把链路跑通。4. 训练流程拆解从预训练、SFT 到 R1-Zero 的纯强化学习装完之后很多人会问为什么 1.5b 和 32b 的回答质量差这么多为什么 R1 回答问题前要先「想一想」。这两个问题的答案都在训练流程里。这一章不讲论文推导只把预训练、监督微调、强化学习三个阶段和 R1 的两个核心创新拆开让你在调参和选模型时知道自己在取舍什么。4.1 预训练与监督微调模型为什么会答题预训练阶段用的是大规模无标注文本书籍、新闻、网页都算训练目标是预测下一个词。模型在这个过程中学到的是词语之间的概率分布和句子结构本质上是把语言规律压缩进 Transformer 的权重里。这个阶段数据量最大、算力消耗最高产出的是一个「会接话但不太听话」的基础模型。监督微调SFT接在预训练后面用的是人工标注的问答对让模型在特定任务上调整参数更符合人类期望的回答格式。SFT 的数据量比预训练小几个数量级但质量要求高一条脏数据可能带偏一类问题的回答风格。本地部署时你拿到的模型基本都是「预训练 SFT 后续对齐」的成品不需要自己从头跑这两步但如果你要做行业微调SFT 就是主要动手的环节准备几百到几千条高质量问答对是常见起点。4.2 强化学习与 RLHF奖励模型怎么给分强化学习阶段解决的是「回答对不对、好不好」的问题。常见做法是 RLHF分三步第一步人类标注者给模型的一批回答打分排出优劣第二步用这批数据训练一个奖励模型让它学会模仿人类的评分标准第三步用强化学习让语言模型去最大化奖励模型的分数。奖励模型在这里扮演裁判语言模型是运动员训练过程就是让运动员学会拿高分。这套流程的难点在奖励模型裁判的标准一旦有偏模型就会学会钻空子输出看起来分数高但实际没用的内容。所以实际训练里会同时挂多个奖励模型帮助性、安全性、格式各管一摊最后加权。理解这一点对本地部署的启发是你如果拿开源模型做二次微调别只盯着损失函数准备好一套自己的评估集否则调完可能只是「评分高了」回答质量没变。4.3 R1-Zero跳过 SFT 的冷启动DeepSeek-R1 的训练起点是 V3 的基础模型不是最终的 V3 成品。它有两个核心创新第一个是 R1-Zero完全跳过监督微调直接做推理导向的强化学习。这样训出来的模型推理能力提升很明显能生成大量长链式思维示例也就是我们在对话里看到的think段。这些思考数据反过来又可以作为 SFT 的语料减少人工标注的依赖。但 R1-Zero 有两个明显问题回复时中英文混着说非推理任务的回答质量差。原因也不难理解纯强化学习只奖励「答对」没有教它「好好说话」格式和语言一致性没人管。这就像只按结果打分、不看过程的训练方式分数上去了表达却散了。所以 R1-Zero 是一个中间产物用来产出推理数据不是最终交付给用户的版本。4.4 通用强化学习与最终 R1可读性和安全奖励第二个创新是通用强化学习。做法是在 SFT checkpoint 上继续做强化学习但奖励模型不止一个推理任务用正确性奖励非推理任务引入帮助性和安全性奖励让模型在两类场景下都不跑偏。这一步解决的是 R1-Zero 留下的语言混合和通用能力差的问题。最终 R1 是两条线的合并R1-Zero 贡献推理能力和思考数据的生成方式通用强化学习贡献任务适应性和表达规范。落到本地使用上你能感知到的差异是R1 系列回答前会先输出思考段思考段质量随参数量下降而下降1.5b 的思考经常绕圈子32b 的思考则明显更有条理。这不是 bug是参数量对推理链深度的影响选型时要把这一点算进去。5. 避坑与排查五条踩坑记录装 ollama 这个链路本身不复杂但环境差异大下面五条是我在不同机器上真实遇到过的按「现象 → 原因 → 解决」记遇到了直接对号入座。5.1 拉完模型跑不起来报内存不足现象ollama run之后进度条卡住或者直接报model requires more system memory than available。原因模型体积是按量化后的磁盘占用算的加载时要展开到内存7b 模型实际占用往往比 4.7G 的磁盘体积大不少。解决换小一档的 tag比如从 7b 降到 1.5b或者关掉其他吃内存的程序再试。Linux 下用free -h看可用内存Windows 看任务管理器的「可用」而不是「已用」。5.2 ollama 命令找不到或者服务没起来现象终端输入ollama提示 command not found或者ollama list报连接拒绝。原因Linux 下安装脚本装完没把二进制放进 PATH或者 systemd 服务没启动Windows 下装完没重新开终端。解决Linux 先systemctl status ollama看服务状态没起来就systemctl start ollamaPATH 问题用which ollama确认安装位置手动加进~/.bashrc。Windows 关掉终端重新开一个让环境变量刷新。5.3 C 盘被模型文件吃满现象拉了几个模型之后系统盘飘红其他软件开始报错。原因默认模型目录在用户目录下跟着系统盘走。解决按 3.1 节设OLLAMA_MODELS指到大盘然后把旧目录下的models文件夹整个挪过去重启服务。挪之前先ollama list记下已有模型挪完再ollama list对一遍确认没丢。已经拉过的模型不用重新下载blob 文件是完整的。5.4 回答一直停在 think 标签里不出来现象对话时屏幕上一直显示思考内容迟迟不出现正式回答或者脚本拿到的response里只有思考段。原因小参数模型的思考链容易发散1.5b 在复杂问题上可能绕很久另外stream模式下思考段和正式段是连续推的解析逻辑没按标签切分就会误判。解决换大一点的模型或者在 prompt 里明确要求「直接给结论不要展开思考」脚本侧按think和response做切分闭合标签出现前的 token 不计入正式回复。5.5 端口 11434 被占用API 调不通现象curl 调localhost:11434报连接失败或者提示端口已被占用。原因本机已有其他服务占了 11434或者 ollama 服务没起。解决先ollama list确认服务活着再用ss -lntp | grep 11434Linux或netstat -ano | findstr 11434Windows看占用进程。确实冲突的话用OLLAMA_HOST0.0.0.0:11435 ollama serve换端口启动调用方同步改地址。6. 装完怎么验证跑通三条命令和一张对照表验证这件事我一般分三层模型在不在、对话通不通、接口能不能被程序调。三层都过才算这套环境真的可用而不是「命令没报错」。第一层看模型清单。执行ollama list输出里要有你拉的 tagSIZE 列和你预期的量化体积对得上。如果列表为空说明OLLAMA_MODELS指到了新目录但模型还在旧目录或者 pull 根本没成功回到 3.2 节重拉。第二层跑一次可验证的对话。别问「介绍一下你自己」这种没有标准答案的问题问一个能对答案的# 用非交互方式跑一次方便脚本判断 ollama run deepseek-r1:1.5b 1 加 1 等于几先思考再回答预期输出里先出现think段再出现 最后给出「2」。思考段可以绕但最终答案必须对。这一步过不了通常是模型加载不完整或者量化档位太低换 tag 重试。第三层走 API。用 3.3 节的 curl 命令调一次检查返回 JSON 里response非空、done为true。如果要在程序里接再加一个流式调用的用例确认 token 是逐段推出来的。三层验证的对照表如下验证项命令通过标准不通过先看什么模型在位ollama list有目标 tagSIZE 合理模型目录、pull 日志对话可用ollama run提可验证问题思考段闭合答案正确内存占用、tag 档位接口可用curl 调/api/generateresponse非空、done为 true端口、服务状态资源正常top或任务管理器内存不持续飙高模型是否过大最后说一个习惯。从那以后我每次装完 ollama都先用 1.5b 跑一遍上面这张表确认链路通了再决定要不要上 7b 或 14b。这个冒烟测试只花两分钟但能把「环境问题」和「模型太重」区分开省掉大量瞎猜。装大模型这件事慢就是快先把小档位跑顺后面的参数取舍才有参照。希望帮到你。本文还有配套的精品资源点击获取
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →