跳到正文

实测过的创作工具 · 参数 · 出图 · 账单

订阅更新
Shelf Notes货架手记

货架上只放我跑过的工具。没留下参数和废片的,不写。

RTX 3080 + Tesla T10,36G 显存塞下 763B:DeepSeek-V4.1-Flash 2-bit 双卡实测,鹈鹕骑单车对比官方

家用双卡 36G 跑 2.00bpw 的 DeepSeek-V4.1-Flash:魔塔拉 132GB、闲置 300 秒自动卸载、32K 撞顶升 64K、补 sm_75 重编双卡提速到 10.73 tok/s;Harness 自主 15 轮写 SVG 动画,和官方版并排对比,附两份 HTML 下载。

Contents目录· 11 节

AI 工具实战 · 本地大模型 · 双卡实录

763B 参数的 MoE 模型,官方 API 用起来很香,但本地化的门槛看起来是「8 张 H100 起步」。我手里只有一张捡垃圾淘来的 Tesla T10(16G) 和一张 RTX 3080 20G,两张卡加起来 36G 显存,更糟的是 3080 因为主板槽位拆分,只能跑在 PCIe x4 上。

这次要跑的是压到 2.00bpw(每个权重只有 2 个比特)的 DeepSeek-V4.1-Flash。很多人的第一反应是:2-bit 早就「脑萎缩」了,能用吗?

我的做法是不争论,直接让它干活:在 DeepSeek-harness 里丢一句「用 SVG 制作一个鹈鹕骑单车的 html」,让它自己跑完,再和官方原生模型做的同一题并排放。

硬件:一张「垃圾佬」T10 + 一张跑在 x4 上的 3080

组件配置与实际状态在这次部署里干什么
GPU 0(副卡)Tesla T10 16GB(Turing / sm_75),PCIe Gen3 x8承载第 0–19 层,提供 15.3GB 显存
GPU 1(主卡)RTX 3080 20GB(Ampere / sm_86),PCIe 协商降到 x4承载第 20–39 层 + 输出头,提供 19.5GB 显存
双卡合计35.8GB 聚合显存Dense 层常驻 + 约 3,000 个激活专家
主机内存64GB DDR4(可用约 60GB)41.6GB RAM Store,常驻 3,790+ 个高频专家,免掉 NVMe 寻道
总线约束PCIe x4,带宽只有 2–6 GB/s专家在内存和显存之间换入时是最大瓶颈
共存要求机器上常驻 8080(llama.cpp)和 8081(Notion AI)两个服务推理模型必须用时拉起、闲置彻底卸载显存

最后一行是很多人忽略的:这不是一台专门跑 DeepSeek 的机器,它平时还要干别的活。所以下面的每一步,都绕着「别把别的服务挤死」来做。

四次部署攻坚

1. 下载:HuggingFace 老断,改走魔塔

763B 模型的 GGUF 有 6 个分卷、约 132GB。走 HuggingFace 国际源,带宽一抖就断连。

解决办法很朴素:写了一个拉取流水线,直接锁定国内魔塔社区(ModelScope)镜像 CDN,多线程稳态拉取 6 个分卷,加上 Engram 联想库和 DSpark 路由表,最后按 Strata 格式校验打包成 data/packs/dsv41_2.00bpw。

2. 显存不能常驻:写一个按需唤醒的代理

36G 显存如果被 DeepSeek 长期占满,8080 和 8081 两个现有服务会直接 OOM。

我写了一个独立守护代理 strata-proxy.py(端口 8090),下游是 systemd 服务 strata-backend.service(端口 8091):

  • 首个请求冷启动:客户端打到 8090 时,代理现场拉起后端,完成双卡权重加载和 RAM 专家映射;
  • 流式零缓冲:SSE 逐块直通,打字机手感不受影响;
  • 闲置自动回收:300 秒(5 分钟) 没有请求就停掉服务,两张卡的显存回到 0 MiB / 1 MiB。

3. 任务「爆了」:32K 撞顶,升到 64K

之前跑长程多轮 Agent 任务,客户端提示「任务爆了,被迫中断」。查下来是这么一串:

  1. DeepSeek-harness 连续跑了 10 多轮脚本和代码,Prompt 累积到 32,169 Tokens;
  2. 服务配置的硬上限是 32,768(32K),留给生成的只剩 32768 - 32169 = 599 Tokens;
  3. 思考链先吃掉约 300 Tokens,代码写到一半撞顶截断(done: 599 tokens (length)),吐出残破的 XML,Harness 解析器直接崩。

好消息是 DeepSeek-V4.1-Flash 用的是 MLA 注意力,KV Cache 很小——64K 上下文全层只占约 60MB 显存。于是全链路把 --max-context 翻倍到 65,536(64K),单次补全预算上限放宽到 32K。后面实测上下文冲到 4.7 万 Tokens,就是靠这一步。

4. 核心提速:T10 起不来、3080 慢如龟

最初只有 RTX 3080 单卡在跑,速度 4–5 tok/s,T10 根本起不来。

3080 为什么慢:lspci -vvv 一查,3080 协商在 PCIe x4。763B 模型有 122GB 专家放在内存里,单卡 20G 只能放下 1,155 个专家(不到 8%)。每解码一个 Token,GPU 都要通过窄窄的 x4 去内存拉专家,大部分时间在 Memory Stall 空转。

T10 为什么起不来:官方预编译的 strata-dsv41 只打包了 sm_86/89/120,没有 Turing 需要的 sm_75 算子,一调用 T10 就报 cudaErrorNoKernelImageForDevice。

解决:本地源码重编,打双架构

  1. 用本地 CUDA 12.6 工具链配 CMake,目标架构写 sm_75 + sm_86;
  2. Ninja 编完 63 个底层算子单元,把 libcudart、libcublas、libcublasLt 这些 CUDA 12 动态库一起收进来,做成自包含包 0.1.55-linux-x86_64-cuda-dual;
  3. 打开双卡流水线切分 --gpus 0,1:T10 扛第 0–19 层,3080 扛第 20–39 层和 LM Head。
指标单 3080双卡 T10 + 3080
显存常驻专家1,1402,999(2.63 倍)
走慢速通道的专家比例74%4%–7.9%
生成速度4–5 tok/s7.5–10.73 tok/s

加上内存 Cache,总共 6,795 个专家不用碰磁盘。一张被官方二进制「忽略」的 T10,补上 sm_75 之后直接让速度翻倍。

实战:Harness 自主跑 15 轮,写一只骑车的鹈鹕

在 DeepSeek-harness 里下发「用 SVG 制作一个鹈鹕骑单车的 html」,模型自己跑了 15 轮工具链,用时 1 小时 1 分 42 秒。引擎启动日志:

文本
[strata] engine started: strata-dsv41 --serve --pack dsv41_2.00bpw --gpus 0,1 --max-context 65536
ds4: CUDA0 (Tesla T10)  layers [0, 19]: weights 2.81 GB, experts 11.10 GB (1325 in VRAM)
ds4: CUDA1 (RTX 3080)   layers [20, 39] + head: weights 3.05 GB, experts 15.21 GB (1674 in VRAM)
ds4: RAM store: 3796 of the profile's hottest experts read in (29.5 GB) in 18.7 s

关键轮次的真实监控数据

轮次与行为上下文总 Token前缀缓存复用新增计算本轮生成 Token速度 (tok/s)走慢速总线专家
Turn 1 规划与构思9,0168,457(93.8%)5593,7068.891.8%
Turn 2 骨架与脚本计算12,79512,721(99.4%)747,4919.164.3%
Turn 3 核心 SVG 大段代码29,12129,106(99.9%)159,65510.736.2%
Turn 4 坐标反思与包围盒校准43,95943,392(98.7%)5679037.707.6%
Turn 5 收尾与 HTML 交付47,26147,223(99.9%)381205.987.9%

几个值得记下来的点:

  • 前缀缓存复用 98%–99.9%:4 万多 Token 的长会话,每轮新增 Prefill 只要 4–8 秒;
  • 单次最大吞吐:在 29K 上下文时一口气吐出 9,655 Tokens,平均 10.73 tok/s;
  • 92% 以上的激活专家直接在双卡显存和 RAM 里命中,PCIe x4 不再是死结;
  • 它不只是写代码:会自己写 Python 脚本算 Bounding Box 防穿模,还会先画 ASCII 字符画预演构图。

顺带一提默认参数:thinking_mode = "thinking",reasoning_effort = "high"(映射为 75/100),服务端默认思考预算 DS41_DEFAULT_BUDGET = 32768;客户端 max_tokens 给得小(4K、8K)时,服务端会把思考预算压到 max_tokens 的 50%–75%,至少给正文留 512–1024 Tokens,避免「想太多、正文写不出来」。

对决:官方原生 vs 本地 2.00bpw

同一个需求,两边各自独立写出的页面:

官方原生模型生成的鹈鹕骑单车:扁平复古风,珊瑚红车架、白色鹈鹕戴绿色围巾、橙色大喙,蓝天白云太阳,灰色公路

官方全精度 / FP8 原生模型:北欧复古平面风,珊瑚红车架(#E4572E)+ 绿围巾(#2A9D8F)撞色。

本地 2.00bpw 量化版生成的鹈鹕骑单车:暖调绘本风,青绿渐变车架、奶油色鹈鹕与红领巾、柔和车影,米黄色路面

本地双卡 2.00bpw:暖调手绘绘本风,青绿渐变车架(#3e8b94–#1b5f6b)+ 暖阳金与奶油白,地面车影用 feGaussianBlur 柔化。

维度官方原生(全精度 / FP8)本地 2.00bpw
整体画风北欧复古现代平面风暖调治愈系手绘绘本风
动力学12 帧反向运动学(IK 连杆计算),大腿、小腿角度跟着踏板联动插画式复合微动效:全车微起伏、车轮自转、围巾摆动、路面后退
细节与光影线条块面硬朗,喉囊带弹性微抖动三层渐变尾羽、高斯模糊柔和车影
动画实现SVG SMIL 原生动效(<animateTransform>)CSS3 @keyframes
代码370 行,标签 100% 闭合372 行,标签 100% 闭合

截图是静态的,动画要打开 HTML 才看得到(纯本地文件,双击用浏览器打开即可):

我的判断

官方赢在硬核推理。 它在深度思考下真的把蹬车的连杆反向运动学算出来了,腿的动作有物理感——这是全精度模型数学推理深度的体现,2-bit 版这次没做到。

2-bit 版赢在「没塌」。 每个权重只剩 2 个比特,它没有结构崩坏、没有审美降级:

  • 严格照着要求来(青绿车架、奶油色羽毛、长喙朝前);
  • 构图和配色有修养,渐变和高斯模糊的用法,插画质感我甚至更喜欢;
  • 自主工具链能力完整:自己写脚本测包围盒、先画字符画预演。

我的主观结论:本地 36G 跑的 2.00bpw,保留了官方原生模型九成以上的「心智」和交付水准——至少在这道题上,「2-bit 干不了正经工程」的说法站不住。差距主要在需要深度数学推演的地方。

这套方案适合谁

  • 适合:手里有闲置的老卡(比如这张 T10)和一张游戏卡、内存 64G 左右、想在本地跑大 MoE 模型做 Agent 长任务的人。慢一点(7.5–10.73 tok/s)能接受,但要上下文长、要隐私、要不按 Token 计费。
  • 适合:机器上还有别的服务的人——按需唤醒 + 闲置 300 秒卸载这一套,比模型本身更值得抄。
  • 不适合:要求实时对话手感、或者任务重度依赖精密数学推演的场景,官方 API 仍然更稳。
  • 最值钱的三条经验:
    1. 先 lspci -vvv 看清每张卡的 PCIe 通道,速度瓶颈常常不在卡本身;
    2. 官方二进制不认你的老卡,先查它打包了哪些 sm_xx,自己补编;
    3. Agent 长任务「爆了」,先算一下上下文硬上限还剩多少生成配额。

2.00bpw 曾经被当成不可用的极限玩具。这次在家用双卡上,它能保持审美直觉、工程逻辑和完整的 Agent 工具调用。配合合理的双卡切分和按需卸载,个人家用服务器也能把 700B 级别的模型跑起来干活。

前几期都在折腾图和视频,比如开源 Toonflow 保姆级实测 1 分钟漫剧;这期换成本地大模型,后面会继续记录这台双卡机器能接的活。

  1. 工具实测18 分钟阅读

    不会写分镜也能拍:开源 Toonflow 保姆级实测,1 分钟漫剧从剧本到成片

    Docker 装 Toonflow、稍后配置进画布、雨夜便利店扩到 60 秒 14 镜;附分镜模板、定妆图、失败账单、协议红绿灯。

  2. 工具实测4 分钟阅读

    同一个剧本,三家 AI 拍 15 秒漫剧:Muse vs Grok vs 本地 H3

    同剧本同关键帧,Muse、Grok Imagine Video 1.5、本地 MiniMax H3 各拼一条 15 秒漫剧;记下耗时、分辨率、拼镜 vs 单段、显存坑与接缝。