公司要求数据不出内网,你想把 DeepSeek 放进自己的机器跑,翻了几篇教程却卡在「装完了然后呢」。这篇不堆概念,直接按准备、起服务、接业务三步走,每步告诉你先量什么、怎么验证、哪里最容易翻车。判断标准和动作都给到,具体版本号、显存数字、跑分和价格,去站内对应页面看当时的数。
公司要求数据不出内网,你想把 DeepSeek 放进自己的机器跑,翻了几篇教程却卡在「装完了然后呢」。这篇不堆概念,直接按准备、起服务、接业务三步走,每步告诉你先量什么、怎么验证、哪里最容易翻车。判断标准和动作都给到,具体版本号、显存数字、跑分和价格,去站内对应页面看当时的数。
先明确一件事:本地部署不是「下载权重然后运行」这么简单,它是一条从硬件估算到业务接入的链路。任何一环没想清楚,后面都会返工。下面三步按顺序走,每步末尾都有一个能验证的落地动作,做完再进下一步,别跳。
第一步:先量基线,再动手装
很多人第一步就去装依赖,装到一半发现卡不够、上下文放不下,又回头改硬件。正确顺序是先算三笔账:并发多少人同时用、单次上下文大概多长、能接受的响应延迟是多少。这三个数直接决定你选什么卡、开几个实例、要不要做量化。别凭感觉估,宁可写保守一点。
- 并发数:是 1 个人自测,还是 5 人小团队同时打,还是几十路并发,差距直接决定要不要多实例
- 上下文长度:日常提问几百字和贴整篇文档进去是两回事,显存占用差别很大
- 延迟容忍度:内部工具能接受慢一点,实时对话就不行,这影响你选推理框架还是轻量运行器
- 网络与目录:模型权重从哪来、放哪个盘、服务监听哪个端口、是否只对内网开放
按模型规模倒推硬件时,显存要同时装下权重和推理缓存,还要给长上下文留余量。粗略算法和对照表去 /models/deploy 和 /compute/sizing 翻当时的数,别硬背。落地动作是写一张一页纸的部署前提表,把并发、上下文、延迟、机器、端口、负责人列清楚,贴进项目文档。后面出问题,先回来对这张表。
| 要量的项 | 怎么估 | 量错了的后果 |
|---|---|---|
| 并发人数 | 问业务方峰值同时在线数,乘以 1.5 留余量 | 实例开少了,请求排队超时 |
| 上下文长度 | 取业务里最长的一次输入,再留一段余量 | 长请求直接报显存不足 |
| 延迟容忍 | 和业务方确认可接受的首字延迟区间 | 选型偏保守,成本白花 |
| 端口与暴露范围 | 只对内网开放,写清端口和防火墙策略 | 误开公网,数据出内网 |
第二步:起推理服务,把端点跑通
部署方式按场景分:单机个人自测走轻量运行器就够,多人并发或有吞吐要求再上高性能推理框架。对比口径看 /stacks/frameworks,里面按场景列了各自适合和不适合的情况。选定之后,启动参数里要把并发上限、单请求超时、最大上下文长度这三个显式写进去,不要让默认值替你决定,默认值往往偏保守或偏激进,出问题很难定位。
- 启动服务按选定框架的启动方式拉起进程,确认日志里没有加载失败、显存不足之类的报错
- 本地 curl 一把用命令行直接请求本机端点,确认返回结构正常、流式输出能一段段吐出来,别急着接客户端
- 记录冷启动耗时量一次从进程启动到能吃请求的时间,这是后面排查「服务没挂但很慢」的参照线
- 压一下并发用简单脚本并发打若干请求,看错误率和响应时间曲线,确认在预期并发内不崩
这一步最容易翻车的地方是「以为跑起来了,其实是降级跑的」。比如上下文被悄悄截断、流式被关掉、并发被限成 1。验证方法是拿一个偏长的请求和一次流式请求各打一遍,对比返回是否符合预期。具体参数和框架差异,到 /stacks/frameworks 核对当时的说明。
第三步:接进业务,把兼容层对上
业务侧一般按 OpenAI 兼容格式调用,请求体、鉴权头、响应字段的结构去 /openai-compatible-endpoint-ops 和 /openai-compatible-api-setup 核对,别凭记忆拼参数。最容易被忽略的是 Base URL:本机、容器内、局域网三种地址写法不一样,写错就是 404。写法纠错看 /openai-compatible-base-url-fix。
| 调用场景 | 地址写法要点 | 常见坑 |
|---|---|---|
| 本机自测 | 指向回环地址加端口 | 端口写错或被别的进程占用 |
| 容器内互调 | 用服务名或容器网络地址,不是回环 | 容器里写 127.0.0.1 必然连不上 |
| 局域网内其他机器 | 用部署机的内网 IP 加端口 | 防火墙没放行,端口通但被拦 |
- 上线前跑通非流式请求,确认返回结构完整
- 跑通流式请求,确认不中断、不吞字,参考 /streaming-output-troubleshoot
- 确认超时和重试策略生效,别让一次超时拖垮整条链路
- 留一个只走内网的健康检查接口,监控脚本定时打
别只靠人肉发现服务挂了。一个定时打健康检查接口的监控脚本,比任何日志都直观。这一步的落地动作就是把健康检查接口和监控脚本一起交付,写进运维文档。
上线验收与翻车排查顺序
验收清单五项:连通性、首字延迟、完整回答耗时、并发下的错误率、显存占用曲线。五项都量出基线,再去谈优化。没有基线的优化都是瞎调,调完也不知道是好了还是环境变了。这五项的具体参考区间,去站内对应页面看当时的数字,别照搬别人的。
- 先查网络和端口确认目标地址和端口能通,防火墙放行,排除最外层问题
- 再看服务日志有没有拒请求、加载失败、进程被杀记录,日志是最快的线索
- 再查资源显存是否不够导致进程被杀,内存和 CPU 是否打满
- 最后怀疑模型本身前三步都干净,才去查量化、上下文、参数配置这类模型层问题
常见错分三类:连不上,多半是地址、端口、防火墙;连上但报鉴权或字段错,多半是 header 或参数名对不上;能返回但断流或超时,多半是超时设置和并发挤爆。按这个分类先归位,再进对应路径,比漫无目的地翻日志快很多。
本地部署的难点从来不是装,而是装完之后每一步都能验证。下一步先把你自己的三项基线(并发、上下文、延迟)写下来,再拿它去对站内硬件与框架对照表,选型一步就不会偏。→
常见问题
三步走下来大概要多久,需要专职运维吗?
时间取决于机器是否就绪和模型大小,没法一概而论。个人自测通常一个下午能跑通;要接业务、扛并发,就得算上压测和监控配置,多半需要有人能看日志、调参数。团队里没人管服务器的话,先问自己是不是真的必须内网跑。
部署完了效果不好,是模型问题还是部署问题?
先分清两类现象。延迟高、并发一大就报错,基本是部署侧的资源与参数问题;回答质量差、格式不稳,多半是提示词或参数设置。建议先固定一组测试用例做对照,改一处测一次,别同时动多个变量,具体测法参考站内评测相关页面。
内网跑起来了,业务侧要改代码吗?
多数情况改的不多,把请求地址和密钥换成内网端点即可,前提是服务对外暴露的是通用兼容格式。但流式解析、超时设置、重试逻辑往往要按本地服务的实际表现再调一遍,尤其本地服务重启期间的请求会直接失败,需要业务侧兜住。