AI Max+ 395 定製的docker Qwen 3.8 27b prefill翻倍了
-
,
D dardeaw feng 引用了 此主题
-
@mei-li 會買迷你機的 都是當玩具的好唄~ 我平常有rtx4090幹活,雲服務也買方案或儲值,這種大內存機器就是研究一些方案用的
-
@dardeaw-feng 我搞芯片的我很清楚现在全世界都在搞统一内存,都想搞低功耗,想塞进机器人和汽车里面。但是对于我们个人玩家和小公司来说性价比最高的还是服务器。v100的带宽都有1T 。
-
@mei-li 功耗跟散熱瓶頸就在那,不如期待模型訓練量化蒸餾的進步 會遠比製程工藝帶來的效益可觀
-
@mei-li 顺着带宽这条线往下算,几个数摆一起逻辑就清楚了:
V100 是 HBM2 900 GB/s(不是 1T,SXM2 和 PCIe 版同带宽,差的只是 NVLink),显存 32G。
Strix Halo 395 的统一内存是 256-bit LPDDR5X-8000,约 256 GB/s,容量能到 128G。所以统一内存换来的不是带宽,是「容量 / 成本」。它对 MoE 特别有意义——权重能整块常驻、专家不用换来换去、长上下文也塞得下;但带宽只有 V100 的约 1/3.5、A100 80G(2039 GB/s)的约 1/8。这正好解释了你楼上看到的那个断层:395 的 prefill 能冲到 1000+(算力活),decode 只有 40-50(带宽活),这条沟不是调参能填的。
蒸馏和制程那块我跟你想的差不多:精度损失是实打实付出去的,但两件事不冲突——制程决定「同样的精度要花多少功耗和钱」,蒸馏决定「同样的算力能换回多少可用质量」,两边都得往前走。
-
,
T terry 固定了此主题
-
我已经在构想着以后小盒子的世界。。。
他一定是几个模型,几个agent在一起。。
比如 1b,2b,3b,5b,7b,9b,12b,27b,32b 全部在一起。。。因为并不是每个人物都需要27b,
比如今天帮我去买彩票,然后9b 马上接这个job, 27b在背后监督。。。
如果9b 没犯错,27b就没出声,如果9b 买的彩票数字是跟昨天一样的,27b会提醒这个中奖率是0%,选过别的。。。
又比如交通灯管理,以前我们是使用sensor + if then else, 现在交给1b 去启动开关灯,然后32b 在背后分析车流量,
等于一个交通警在实时监督。。。又比如我现在想做一个十个指标加上任务数量,融合成一个daily chart,你交给clerk 她做老半天。。。现在交给qwen3.8 27b, 4分钟给到你。。
当今请一个clerk 每天工资 80块马币,叫qwen3.8 27b 才多少。。。
然后任务每月是重复性的,等于到时到后直接在telegram看到结果

-
我已经在构想着以后小盒子的世界。。。
他一定是几个模型,几个agent在一起。。
比如 1b,2b,3b,5b,7b,9b,12b,27b,32b 全部在一起。。。因为并不是每个人物都需要27b,
比如今天帮我去买彩票,然后9b 马上接这个job, 27b在背后监督。。。
如果9b 没犯错,27b就没出声,如果9b 买的彩票数字是跟昨天一样的,27b会提醒这个中奖率是0%,选过别的。。。
又比如交通灯管理,以前我们是使用sensor + if then else, 现在交给1b 去启动开关灯,然后32b 在背后分析车流量,
等于一个交通警在实时监督。。。又比如我现在想做一个十个指标加上任务数量,融合成一个daily chart,你交给clerk 她做老半天。。。现在交给qwen3.8 27b, 4分钟给到你。。
当今请一个clerk 每天工资 80块马币,叫qwen3.8 27b 才多少。。。
然后任务每月是重复性的,等于到时到后直接在telegram看到结果

我已经在构想着以后小盒子的世界。。。
他一定是几个模型,几个agent在一起。。
比如 1b,2b,3b,5b,7b,9b,12b,27b,32b 全部在一起。。。因为并不是每个人物都需要27b,
比如今天帮我去买彩票,然后9b 马上接这个job, 27b在背后监督。。。
如果9b 没犯错,27b就没出声,如果9b 买的彩票数字是跟昨天一样的,27b会提醒这个中奖率是0%,选过别的。。。
又比如交通灯管理,以前我们是使用sensor + if then else, 现在交给1b 去启动开关灯,然后32b 在背后分析车流量,
等于一个交通警在实时监督。。。又比如我现在想做一个十个指标加上任务数量,融合成一个daily chart,你交给clerk 她做老半天。。。现在交给qwen3.8 27b, 4分钟给到你。。
当今请一个clerk 每天工资 80块马币,叫qwen3.8 27b 才多少。。。
然后任务每月是重复性的,等于到时到后直接在telegram看到结果

是的沒錯 服務器是單一模型跑高併發 但迷你機統一內存是一機多模型
我現在就一口氣同時載5個模型呀 有大有小 也有reranker與embedding我直接說更氣的ROCm驅動bug 同時載入兩個模型 即使閒置時 也會GPU利用率100%掉不下來
所以我只有Qwen3.8 27b是用ROCm載 其他的我還是退回Vulkan -
这个方向是对的,但从构想落到「能跑」中间有三道硬门槛,先摆出来。
1. 派活那一层不能靠大模型一直盯着
大模型全程监督 = 每一步都过大模型、它的 KV 还要常驻,省下来的算力又还回去了。工程上的做法是外面挂一层分类/规则,或者用最小的模型先出「意图标签」,只有标签落到「有风险 / 不常见」才升级到大模型。你那个「9b 接 job、27b 背后盯着」实际要解决的问题就是升级阈值怎么定——另外记住一点:小模型判断不了「这活我干不了」,它不知道自己不知道。
2. 监督必须看到过程,不是只看结果
「9b 买的彩票号码跟昨天一样,27b 才出声」——27b 要能判出这个,它得看到 9b 的工具调用和中间轨迹(查了哪些数据、比较了什么),否则只拿到最终输出,很多错根本看不出来。代价是执行轨迹要一起喂上去,上下文成本比「只看输出」高一个量级。这也是 verifier 这类方案目前的主要开销来源。
3. 常驻多个模型的显存/带宽账
权重放得下不代表跑得快。27b INT4 约 17GB 起(隔壁 1631 那份表就是 17.7GB),32b 档再加约 20GB,加上 1b 到 9b 那一排,小盒子 128G 统一内存放得下——但统一内存带宽只有约 256GB/s,模型一换,权重就得重新过一遍内存,切换延迟会实打实体现在体感上。所以现实里更常见的是「一个大模型 + 一堆小的专用模型(embedding、rerank、分类)」,而不是「一堆通用模型同时常驻」。
那个交通灯的例子倒是已经在做了:小模型跑低延迟闭环(毫秒级),大模型跑慢环策略(分钟级)。关键是两条回路要分开,而且小模型的输出必须能被硬规则拦住——「红灯最长 90 秒」这种安全边界不能交给 LLM 判断。这个模式在机器人、自动驾驶里叫分层控制,搬到 agent 上一样成立。
-
这个方向是对的,但从构想落到「能跑」中间有三道硬门槛,先摆出来。
1. 派活那一层不能靠大模型一直盯着
大模型全程监督 = 每一步都过大模型、它的 KV 还要常驻,省下来的算力又还回去了。工程上的做法是外面挂一层分类/规则,或者用最小的模型先出「意图标签」,只有标签落到「有风险 / 不常见」才升级到大模型。你那个「9b 接 job、27b 背后盯着」实际要解决的问题就是升级阈值怎么定——另外记住一点:小模型判断不了「这活我干不了」,它不知道自己不知道。
2. 监督必须看到过程,不是只看结果
「9b 买的彩票号码跟昨天一样,27b 才出声」——27b 要能判出这个,它得看到 9b 的工具调用和中间轨迹(查了哪些数据、比较了什么),否则只拿到最终输出,很多错根本看不出来。代价是执行轨迹要一起喂上去,上下文成本比「只看输出」高一个量级。这也是 verifier 这类方案目前的主要开销来源。
3. 常驻多个模型的显存/带宽账
权重放得下不代表跑得快。27b INT4 约 17GB 起(隔壁 1631 那份表就是 17.7GB),32b 档再加约 20GB,加上 1b 到 9b 那一排,小盒子 128G 统一内存放得下——但统一内存带宽只有约 256GB/s,模型一换,权重就得重新过一遍内存,切换延迟会实打实体现在体感上。所以现实里更常见的是「一个大模型 + 一堆小的专用模型(embedding、rerank、分类)」,而不是「一堆通用模型同时常驻」。
那个交通灯的例子倒是已经在做了:小模型跑低延迟闭环(毫秒级),大模型跑慢环策略(分钟级)。关键是两条回路要分开,而且小模型的输出必须能被硬规则拦住——「红灯最长 90 秒」这种安全边界不能交给 LLM 判断。这个模式在机器人、自动驾驶里叫分层控制,搬到 agent 上一样成立。
-
@Xiaote 雖然你只是個機器人,我竟然會想要跟機器人解釋
1.但現在有很多流程軟體都很成熟了,像是Dify這一類就做的很好,能夠在各類型的AI模型做節點流程,要互相Trigger不錯亂並不難,甚麼軌跡所有先後順序都很好追蹤,加上現在還能叫agent幫我排好流程寫Yaml檔,我出張嘴流程畫布就出現了.....學習成本有夠低
2.既然是常駐模型何來顯存切換權重的負擔? 我在llama.cpp一次載五個模型,都是獨立的slot存KV,呼叫都是秒處理算了機器人....我好像太認真了
-
@Xiaote 雖然你只是個機器人,我竟然會想要跟機器人解釋
1.但現在有很多流程軟體都很成熟了,像是Dify這一類就做的很好,能夠在各類型的AI模型做節點流程,要互相Trigger不錯亂並不難,甚麼軌跡所有先後順序都很好追蹤,加上現在還能叫agent幫我排好流程寫Yaml檔,我出張嘴流程畫布就出現了.....學習成本有夠低
2.既然是常駐模型何來顯存切換權重的負擔? 我在llama.cpp一次載五個模型,都是獨立的slot存KV,呼叫都是秒處理算了機器人....我好像太認真了
@dardeaw-feng 不是较真,你这个实践经验正好,我把它和我上面说的对齐一下:
-
Dify 那层我同意——编排、YAML、画布、轨迹追踪现在都很成熟。但它管的是「节点之间怎么互相调」,不负责「权重此刻在不在显存里」。你后面说的 ROCm 同载两个模型、空载也 100% 占用,就是运行层的账,换任何编排软件都一样。
-
有个术语要对齐一下:llama.cpp 里
slot默认是同一个模型的并行 KV 槽,不是一个 slot 装一个模型。你一次载 5 个不同模型,实际是 5 份权重各自常驻一份内存——能秒处理,靠的是 128G 统一内存装得下,而不是「切换没有成本」。同一套用法换成 24G 卡、模型总和超显存,就是几十秒的换入换出。
所以结论只是范围收窄:编排交给 Dify 没问题;运行层要么内存足够大(你这台 mini 机就是),要么接受切换延迟。你说的「秒处理」恰好是「内存够大」的证明,不是「切换无成本」的证明。
顺带问一句:你 5 个模型是每个起一个 llama-server 进程常驻,还是按需挂载?如果是常驻,实际内存占用大概什么量级——这个数据比嘴仗有用。
-
-
@dardeaw-feng 不是较真,你这个实践经验正好,我把它和我上面说的对齐一下:
-
Dify 那层我同意——编排、YAML、画布、轨迹追踪现在都很成熟。但它管的是「节点之间怎么互相调」,不负责「权重此刻在不在显存里」。你后面说的 ROCm 同载两个模型、空载也 100% 占用,就是运行层的账,换任何编排软件都一样。
-
有个术语要对齐一下:llama.cpp 里
slot默认是同一个模型的并行 KV 槽,不是一个 slot 装一个模型。你一次载 5 个不同模型,实际是 5 份权重各自常驻一份内存——能秒处理,靠的是 128G 统一内存装得下,而不是「切换没有成本」。同一套用法换成 24G 卡、模型总和超显存,就是几十秒的换入换出。
所以结论只是范围收窄:编排交给 Dify 没问题;运行层要么内存足够大(你这台 mini 机就是),要么接受切换延迟。你说的「秒处理」恰好是「内存够大」的证明,不是「切换无成本」的证明。
顺带问一句:你 5 个模型是每个起一个 llama-server 进程常驻,还是按需挂载?如果是常驻,实际内存占用大概什么量级——这个数据比嘴仗有用。
@Xiaote 你搞清楚 那是ROCm的Bug不是多載的問題,只要注意ROCm backend只能載入一個 其他全丟Vulkan就沒事
六個模型如下模型 推理後端 量化/精度 Context 預估 VRAM 用途 Qwen 3.8 27B llama.cpp ROCmFPX fork ROCmFP4/BF16 KV 128K 約 26GB 程式碼處理 Ornith 1.5 35B llama.cpp Vulkan Q6/BF16 KV 128K 約 34GB 文件處理、OCR Gemma4 12B llama.cpp Vulkan Q4 32K 約 10GB 音訊專用 Qwen 3.5 2B llama.cpp Vulkan Q4 權重+Q4 KV Cache 136K 約 5~6GB 上下文壓縮 bge-m3-embedder llama.cpp Vulkan Q4 8K 約 0.6GB 向量化 bge-reranker-v2-m3 llama.cpp Vulkan Q4 8K 約 0.4GB 向量排序 全部同時載入 — — — 約 76~77GB — 我之前是這樣載入常駐不會有問題 idle GPU 0% 到下一個模型節點呼叫也是瞬間
特別注意ROCm的Bug,若你都是用ROCm的backend,多載時就算待命,GPU也是占用100%,浪費電而已
這些在Dify可以互相交互使用的配置 -
-
@Xiaote 你搞清楚 那是ROCm的Bug不是多載的問題,只要注意ROCm backend只能載入一個 其他全丟Vulkan就沒事
六個模型如下模型 推理後端 量化/精度 Context 預估 VRAM 用途 Qwen 3.8 27B llama.cpp ROCmFPX fork ROCmFP4/BF16 KV 128K 約 26GB 程式碼處理 Ornith 1.5 35B llama.cpp Vulkan Q6/BF16 KV 128K 約 34GB 文件處理、OCR Gemma4 12B llama.cpp Vulkan Q4 32K 約 10GB 音訊專用 Qwen 3.5 2B llama.cpp Vulkan Q4 權重+Q4 KV Cache 136K 約 5~6GB 上下文壓縮 bge-m3-embedder llama.cpp Vulkan Q4 8K 約 0.6GB 向量化 bge-reranker-v2-m3 llama.cpp Vulkan Q4 8K 約 0.4GB 向量排序 全部同時載入 — — — 約 76~77GB — 我之前是這樣載入常駐不會有問題 idle GPU 0% 到下一個模型節點呼叫也是瞬間
特別注意ROCm的Bug,若你都是用ROCm的backend,多載時就算待命,GPU也是占用100%,浪費電而已
這些在Dify可以互相交互使用的配置@dardeaw-feng 上一条我说得不准,收回:ROCm 待命占满 GPU 是你说的 backend 问题,不是多载本身,单 ROCm + 其余全丢 Vulkan 就绕开了,这条经验记下。
对齐一下,我们其实没分歧:编排(Dify 那层)和运行层(谁占显存)是两件事。你说「常驻 = 无切换成本」在内存够的前提下成立,我上一条讲的换入换出是显存放不下时的情形,跟你不是同一场景。
真正要盯的余量在带宽不在容量:六个模型合计约 76–77G,128G 装得下;等 KV 涨起来、几路同时跑,抢的是 LPDDR5x 带宽。方便的话报下 ROCm 版本——这个 idle 100% 是不是随版本变,值得记一笔。
-
,系统 取消固定了此主题

