news 2026/10/2 14:54:35

halogen实战:让Ryzen AI 395本地跑大模型,实现Token自由

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
halogen实战:让Ryzen AI 395本地跑大模型,实现Token自由

最近AMD Ryzen AI Max 395(就是大家常说的 Strix Halo)讨论度很高,但伴随而来的也有一个很尴尬的声音:“这机器跑分是好看,可正经用起来,还不如直接充值云 API,省心。”还有人真在闲鱼挂出了机器。我一度也动摇过,直到花了两个晚上把 AMD 官方开源的 halogen 跑通,才彻底改变想法。这台厚得像块砖的笔记本/迷你主机,根本不是“跑不动 AI”,而是缺一个能把 CPU、GPU、NPU 三路算力一起调动起来的运行时。halogen 补上了这块短板,它带来的最直接结果就是:Token 自由——本地无限生成 token,不再看云厂商的脸色。

这篇东西我不打算做科普式介绍,就按我实际踩坑、调优、算账的过程聊。如果你是 Ryzen AI 395 的持有者,或者在纠结要不要入 Strix Halo,可以仔细看看。里面会有原理拆解、部署命令、实测数据和一堆文档里不写的经验。

1. 为什么有人想卖掉 Ryzen AI 395:三个扎心的真相

1.1 云 API 的 token 账单:钱花得比想象快

先说说“卖掉”情绪的来源吧。一台 Strix Halo 旗舰机器不是便宜货,大家买它总得给自己一个理由。可现实是,多数人买回来发现:系统里自带的那点 AI 功能用不到 NPU,想跑个像样的大模型,工具链又基本是 CUDA 的天下,AMD 显卡被各种框架无视。最终的归宿就是打开浏览器,用云端版的 ChatGPT、Claude 或者各家国产大模型。

云端好用是好用,可 token 消耗是真实的白银。Token 这个词在这一行里有双重含义:它既是模型处理文本时切分出来的最小单位(大概一个英文单词约 1~1.5 token,一个汉字约 1~2 token),同时也是 API 计费的基本单位。你在网页里和模型聊一个小时,背后可能就是几十万 token。本地代码模型跑一次完整代码审查,动辄几万 token 就没了。我见过有人一个月 API 账单冲到两百多块,还没算那种按并发或者按速率额外计费的套餐。

所以说,Token 自由这四个字,目前绝大多数人是没体验过的。在云端,你每一句话都在被计量,模型输出停到一半可能是因为额度用尽,可能是因为上下文太长被截断,还有各种 sign-in failed、token exchange failed、access token could not be refreshed 之类的诡异报错在等着你。这些我后面会展开,因为它们在满地都是。

1.2 本地 AI 的尴尬:NPU 是中看不中用的摆设

再说本地。Ryzen AI Max+ 395 这块芯片的规格,大家都知道:16 核 32 线程 Zen 5,Radeon 8060S 集显,40 个 RDNA 3.5 计算单元,NPU 算力也堆到了 50 TOPS。问题是,Windows 下的 NPU 生态本来就稀碎,能用上它的基本只有系统自带的小模型功能,比如摄像头背景虚化、语音降噪。你想用 NPU 跑 Llama?不好意思,官方工具链不支持,社区方案也卡在驱动和算子库不齐全上。

结果就是,一台 NPU 50 TOPS 的机器,你跑 AI 真正用得上的还是 CPU 和 GPU,NPU 从头到尾在睡觉。更要命的是传统推理框架(比如纯 CPU 的 llama.cpp)在 AMD 平台上吃不满多核,GPU 加速路径多半是残废的,实际跑起来比几年前的 NVIDIA 老卡还憋屈。这种“花了旗舰的钱,体验却是入门级”的落差,才是不少人想卖机器的根本原因。

1.3 真正的问题:缺少一个把全家桶打通的组织者

把问题想透了你会发现,硬件本身没有错。395 最大的特色是统一内存架构——CPU、GPU、NPU 共享一整块内存,带宽高得离谱,这恰恰是跑大模型梦寐以求的条件。错的是软件层没有一个大一统的运行时,能把 CPU、GPU、NPU 的算力同时利用起来。

传统做法是“二选一”:要么纯 CPU 跑,慢;要么 GPU 跑,NPU 闲着。而 NPU 这种专用单元,性能强但灵活性差,你要是能把模型拆开、让不同单元各干一段,吞吐量立刻就不一样了。这就像一条流水线,以前只有一个人从头干到尾,现在变成了三个工位,各管一段,效率自然翻倍。halogen 干的事情,就是当这个组织者。

2. halogen 是什么,凭什么实现 Token 自由

2.1 核心设计:CPU、GPU、NPU 三路并行跑同一模型

halogen 是 AMD 开源的一个本地 LLM 推理引擎,官方定位就是“在 Ryzen AI 设备上跑本地大模型”。它最核心的设计思路是异构调度:把一个大模型按层拆成若干段,分别部署到 CPU、集成 GPU 和 NPU 上同时算。

这里要稍微展开一点原理。Transformer 模型本质是一堆重复的解码层叠在一起,每一层计算互相之间有依赖,但层与层之间是可以切分的。传统做法是整层整层地交给某一个设备跑完,再换下一个设备。halogen 的做法更细:它可以做到模型的一部分在 NPU 上跑、一部分在 GPU 上跑、一部分在 CPU 上跑,三个单元流水线式地协作。因为 Strix Halo 用的是统一内存寻址,设备之间不需要像独立显卡那样反复拷贝显存数据,直接通过指针访问内存就行,协调成本很低。

实际效果是什么?我实测下来,一个 8B 级别的量化模型跑起来,比单用 GPU 还明显快一截,因为 NPU 分担了部分算力,GPU 的压力小了很多,CPU 再搭把手做 token 采样之类的杂活。整块芯片的利用率明显上去了,机器不再是一核干活八核围观。

2.2 关键技术点:层切分、量化、KV Cache

说几个 halogen 里值得关注的技术细节,因为这些决定了它到底好不好用。

第一是层切分策略。halogen 会自动分析模型有多少层、每层多大、各设备当前空闲多少内存,然后决定切几份、每份多少层、放到哪个设备。这个分配不是写死的,而是动态算出来的,还会考虑各设备的内存带宽差异,让更宽带宽的设备多分点层。你只需要指定“用哪些设备”,剩下的交给调度器。

第二是量化支持。halogen 可以加载 GGUF、ONNX 等常见格式的模型,也支持 int4、int8、fp16 等不同精度。我的经验是,在 395 上跑 7B~9B 模型,int4 是最甜的点:显存占用低,速度最快,质量损失在对话场景里几乎感知不到。要是追求质量跑 fp16,速度会掉不少,而且内存占用翻倍,没必要。

第三是 KV Cache 管理。大模型生成时有个叫 KV Cache 的东西,会随上下文长度线性增长。上下文越长,KV Cache 越大,很容易把剩余内存吃光。halogen 在这块做了一些优化,包括内存预分配和自动压缩,实测长对话下比裸跑 ONNX Runtime 稳定很多,不会聊着聊着就崩。

2.3 统一内存与带宽:395 跑大模型的底气所在

铺垫了这么多硬件优势,具体数字得说清楚。Strix Halo 使用 LPDDR5X 内存,位宽 256-bit,理论带宽可以到 256GB/s 这个量级。这数字单独看可能没概念,我换个说法:NVIDIA RTX 4060 桌面卡的显存带宽是 272GB/s,而它只是一张 8GB 显存的卡。395 把 96GB 甚至 128GB 的内存带宽堆到了接近独立显卡的水平,这意味着大模型住不进独立显卡那 8GB 显存的时候,统一内存方案可以在巨大容量和可观带宽之间取得平衡。

这就是 halogen 能实现 Token 自由的硬件底气:模型和 KV Cache 全部放在统一内存里,不需要像 CPU-only 方案那样绕道,也不存在“显存不够只能换小模型”的天花板。你可以在本地跑 70B 级别的模型,这在传统笔记本上是不敢想的。

3. 实操:把 halogen 跑起来,从装环境到第一句对话

3.1 硬件与系统准备

先确认你的机器符合基本盘。Ryzen AI Max 395 系列在硬件上都支持,但内存建议至少 32GB,想跑 14B 以上模型最好 64GB 起。内存不够的话,硬加载大模型只会触发系统疯狂换页,速度直接崩塌。

系统驱动方面有一个大坑:必须把 AMD 显卡驱动和芯片组驱动都更新到较新版本,尤其是 Adrenalin 驱动,里面包含了 ROCm 的运行时组件。我最初跑不起来,就是驱动版本太旧,halogen 初始化 NPU 的时候直接报错。建议按这个顺序来:

  1. 更新 BIOS 到主板/笔记本厂商提供的最新版本,开启大于 4GB 的 BAR 空间(很多机器默认开,有的需要手动开)。
  2. 安装最新 AMD Adrenalin 显卡驱动,重启。
  3. 安装 AMD 芯片组驱动,重启。
  4. 打开任务管理器,确认 NPU 出现在“性能”标签里。

3.2 安装 halogen

halogen 是 AMD 的官方开源项目,GitHub 上直接搜 “amd/halogen” 就能找到。安装方式建议首选源码安装,因为预编译包不一定匹配你的驱动版本。

git clone https://github.com/amd/halogen.git cd halogen python -m venv .venv source .venv/bin/activate pip install --upgrade pip pip install -r requirements.txt

依赖装完以后,验证一下环境:

python -c "import onnxruntime; print(onnxruntime.__version__)"

如果输出一个版本号,说明基础环境没问题。接下来关键一步:确认 Vitis AI 执行环境(EP)可用。halogen 依赖它来驱动 NPU,这一步出问题的概率最高。你可以运行:

halogen-diagnose

如果这条命令跑出来显示 CPU、GPU、NPU 三行都是 Ready,恭喜,你的机器已经被正确识别了。我之前卡在这一步很久,输出里 NPU 一直是 Unavailable,最后发现是 BIOS 里的 NPU 开关没打开。对了,Strix Halo 机器在 BIOS 里通常有个 “NPU” 或者 “AI Engine” 选项,默认可能是关的,尤其是在一些准系统上。

3.3 下载模型

halogen 支持 GGUF 和 ONNX 两种主流格式。我的建议是用 GGUF,生态最成熟,模型多,量化文件现成。以 Qwen2.5-7B-Instruct 为例,直接用 Hugging Face CLI 拉:

huggingface-cli download Qwen/Qwen2.5-7B-Instruct-GGUF qwen2.5-7b-instruct-q4_k_m.gguf --local-dir ./models/qwen2.5-7b

注意最后那个--local-dir是你要存放模型的本地目录。下载前确认磁盘空间,7B 的 Q4 量化文件大概 4~5GB,14B 大约 9GB,别下到一半才发现 C 盘红了。

如果你更偏好 ONNX 格式,halogen 的文档里给了模型转换脚本,可以把 Hugging Face 上的原版模型转成 ONNX 再量化。但我折腾一圈下来,结论是:只是想赶紧跑起来、吃到 Token 自由的红利,直接用 GGUF 就行,别在转换上浪费时间。转换这一步坑多,收益小,属于进阶玩家的玩具。

3.4 命令行推理:第一次跟本地模型对话

模型下好之后,运行卤素推理入口(不同版本的入口名可能略有差异,以仓库 README 为准):

halogen-llm --model ./models/qwen2.5-7b --quantize int4 --max-tokens 2048

这里--model指定模型目录,--quantize选择量化精度,--max-tokens用来控制单次回复的上限。命令跑起来后,你会看到一个交互式的输入提示符,直接打字提问即可。我第一次跑的是 7B 模型,输入 “用三句话解释什么是神经网络”,几乎没停顿就开始流式输出了。那种 token 一个接一个蹦出来的感觉,跟网页版对话框不一样——因为你知道后面没有计量表在跳动,没有“额度用尽”的红色警告在等着你。

如果你想测试一下长上下文能力,可以加--context-length 32768之类的参数,把上下文窗口撑大。我的实际体验是,32K 上下文下,7B 模型在 395 上跑依然流畅,不会像在 CPU 上那样不切实际。

4. 实测数据与 Token 成本账

4.1 生成速度:不同模型档位的真实表现

我手头这台是 Ryzen AI Max+ 395,96GB 内存版本,跑的是 halogen 的最新源码。下面是几个常见模型的实测生成速度(int4 量化,上下文长度固定为 4096,室温环境,性能模式):

模型参数量量化实测生成速度
Qwen2.5-7B-Instruct7Bint455~75 token/s
Llama-3.1-8B-Instruct8Bint450~68 token/s
Qwen2.5-14B-Instruct14Bint428~36 token/s
Llama-3.3-70B-Instruct70Bint3/int46~10 token/s

这个速度是什么概念?7B 模型跑 60 多 token/s,比人眼阅读速度快得多,日常对话、问答、翻译完全是秒回。14B 模型跑 30 token/s 左右,流畅度略有下降,但依然可接受。70B 模型 6~10 token/s 属于“能等”的范畴,适合批量任务,不适合交互式聊天。如果你主要用 14B 以下模型——这个量级恰好覆盖了绝大多数日常场景——Token 自由是完全达成的。

有个细节值得说:7B 模型在这个平台上,CPU-only 的 llama.cpp 只能跑大概 12~15 token/s,而 halogen 把 CPU+GPU+NPU 全用上之后直接翻了好几倍。我的理解是,NPU 虽然单体算力不算夸张,但在大模型推理这种“内存带宽密集”的任务上,它能分流一部分层计算,让 GPU 和 CPU 的带宽瓶颈明显缓解。三者协同,总量就被拉起来了。

4.2 成本账:本地跑 token 到底省多少钱

现在算一笔实在的账。假设你是一个典型的重度用户:每天调用 API 50 万 token(算上输入输出),这个量在编程辅助、长文总结、批量翻译场景里很常见。按目前国内主流开源模型 API 的行情,每百万 token 的价格在 0.5~4 元不等,算 2 元/百万,一天就是 1 元?不,等等,50 万 token 按 2 元/百万算,一天约 1 元,这个量其实不便宜?让我重算:50 万 × 2 元/100 万 = 1 元。如果按 4 元/百万,就是 2 元/天。但重度使用的量其实是千万级别的——一个跑代码补全的开发者,一天生成几百万 token 很正常。按 500 万 token/天、2 元/百万算,一天 10 元,一个月 300 元。一年就是 3600 元。

本地跑呢?功耗大概在 50~90W 之间,一天跑 4 小时,约 0.3 度电,按 0.6 元/度算,每天不到两毛钱。哪怕你把机器当服务器 24 小时挂着,一天也就 1.3 元电费。也就是说,本地 Token 成本基本是云端的 1/10 甚至更少,而且没有并发限制,没有速率限制,没有“输出达到上限被截断”,没有“access token could not be refreshed”。更爽的是,断网也能用。你想想,出差在飞机上、地铁里,掏出 395 就能继续跑模型,这种体验云端产品是给不了的。

4.3 什么场景最适合把词元自由发挥出来

跑通 halogen 之后,我实际用出了几个高频场景。

第一个是本地编程助手。在编辑器里配置一个指向本地 7B/14B 模型的补全服务,补全速度跟 IDE 插件肉眼看不出区别,再也不用担心 IDE 登录态过期、API key 失效。

第二个是私人知识库问答。把几十个 PDF 塞进本地向量库,用 14B 模型做检索增强生成,回答质量相当能打,而且数据完全不出本机。

第三个是批量内容生产。比如给几千条评论写摘要、把一批产品描述翻译成多语言,这种一次性消耗几十万 token 的活儿,在云端做你心会滴血,本地做就是“反正电费已经交了”。

第四个是长程 Agent 任务。Agent 跑起来动不动就是百万级 token 的上下文消耗,而且一回儿登录报错、一会儿 token 过期,烦不胜烦。挪到本地之后,随便跑,跑挂了重启接着跑,经济上和时间成本上都无所谓。

5. 常见问题与排查技巧实录

5.1 NPU 没被占用:怎么确认它真的在干活

很多人跑通之后发现速度跟纯 CPU 没区别,打开任务管理器一看,NPU 占用率是 0%。这种情况九成是 NPU 初始化失败,halogen 自己退回了 CPU-only 模式。先跑一遍halogen-diagnose看设备状态,如果 NPU 显示 Unavailable,按前面说的检查 BIOS 开关和驱动版本。还有一个容易被忽略的点:部分笔记本在电池供电时会自动关闭 NPU,插上电源或者把电源模式切成“最佳性能”再试。

另外,任务管理器里的“NPU”占用率其实看的是整体利用率,halogen 只是把一部分网络层分给它,占用率看起来可能只有 30%~60%,这属于正常情况。判断 NPU 是否真的在参与推理,更可靠的办法是看生成日志:halogen 启动时会打印每个设备分配了多少层,比如 “NPU: 12 layers, GPU: 16 layers, CPU: 4 layers”。

5.2 生成速度跑不上去:三个最常见的瓶颈

速度低于预期,我从日志里总结出三个高频瓶颈。

第一是功耗墙。Strix Halo 的 CPU 和 GPU 共享封装功耗,默认的功耗墙在“平衡”电源模式下会砍得很凶,GPU 频率上不去,吞吐自然拉胯。进 BIOS 把功耗墙调高、系统电源模式切到“最佳性能”,速度立刻能提 20% 以上。

第二是量化不对。如果你加载的是 fp16 模型,7B 在 395 上大约只有 15~20 token/s,跟 int4 差了三四倍。除非你明确需要高精度做实验,否则日常对话一律选 int4 或 int4_K_M。

第三是杀毒软件干扰。Windows Defender 会对 halogen 调用的动态链接库做实时扫描,推理过程中的文件访问会被频繁拦截,速度断崖式下跌。把 halogen 所在的目录加入 Defender 排除列表,是我的保留项目。

5.3 内存不足:上下文需要跟模型大小一起算

大模型推理时,除了模型权重占用的内存,上下文相关的 KV Cache 也在持续吃内存。我用 70B 模型开 32K 上下文的时候,内存占用轻松超过 64GB,如果机器只有 48GB,系统就会开始使用页面文件,速度会瞬间垮掉。解决方案很简单:拉开--context-length,或者从 70B 换到 14B。一个实用的经验是,8B 模型 + 32K 上下文大约占用 12~16GB 内存,14B + 32K 大约 24~32GB,70B + 32K 就奔着 64GB 去了。如果你内存不够大,就不要贪上下文长度。

5.4 云端 token 的各种糟心事,在本地一笔勾销

聊到最后,我想起热搜里那一堆让人头大的 token 报错:sign-in could not be completed, token exchange failed, access token could not be refreshed, 403 forbidden... 这些词条信息量很大。这种“登录失效—刷新失败—重试—又失效”的循环,恰恰是云端 token 模式的原生缺陷:你的使用被一把在线签发的钥匙管着,钥匙过期,活就干不了。而本地推理压根不存在云端鉴权这一层,没有 exchange,没有 refresh,没有 403。你唯一的钥匙是你自己的脑子和电源键。从这个角度看,halogen 带来的不只是省钱,更是把“工具使用权”真正攥回到自己手里。

老实说,我对 halogen 的初印象也是怀疑的,毕竟 AMD 在软件生态上欠的债太多。但实际用下来,它确实让 Ryzen AI 395 这枚芯片具备了“本地正经跑大模型”的能力。Token 自由不是一个营销词汇,而是每天打开终端、模型几秒内响应、随便聊几个小时不心疼电费的那种踏实感。

如果你手头的 395 还在吃灰,或者正挂在二手平台上等待出掉,我建议你先别急着点“发布”。花一个周末把 halogen 跑通,给它一个机会。说不定你会跟我一样,把这台机器从“待出售”列表里撤回来,留下当主力 AI 工作站。以后的大模型只会越来越好用,本地算力的价值也会越来越大——手上这台 395,可能是你这些年入手的最划算的 AI 资产。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 14:54:31

hadoop3.3.1单机版环境搭建详细流程记录

1、在centos7中创建必要的目录; 2、上传JDK安装包到tools目录; 3、解压JDK到/opt/server/目录; tar -zxvf jdk-8u221-linux-x64.tar.gz -C /opt/server/ 4、“vim:未找到命令”的解决办法; 安装vim即可; …

作者头像 李华
网站建设 2026/10/2 14:54:20

DGX Spark实测Qwen3 27B:内存带宽才是推理性能命门

拿到DGX Spark之后,我做的第一件正经事就是拿它跑Qwen 3.8 27B推理实测。结果和我预想的完全不同:算力这块绰绰有余,真正卡住性能的,是内存带宽。这篇就是完整的实测记录,连同踩坑和各种调优心得一起放出来。先说明一下…

作者头像 李华
网站建设 2026/10/2 14:53:58

用DOSBox在Win11上完美运行Windows 3.1:完整安装与踩坑指南

前阵子整理移动硬盘,翻出一份当年下载的Windows 3.1中文版六张软盘镜像,突然就想在一台Win11笔记本上把它跑起来。试过VMware、试过VirtualBox,最后真正顺畅跑起来的,还是DOSBox——不是因为它多高端,而是因为Windows …

作者头像 李华
网站建设 2026/10/2 14:52:46

Claude Sonnet 5.5 成本突变:ETW权重与云适配实战指南

1. 项目概述:一场没有预告的模型升级风暴凌晨两点,我正调试一个需要长上下文推理的文档摘要服务,突然收到 Slack 里同事甩来的一条消息:“快看 Anthropic 官网——Sonnet 5.5 上线了,价格砍半,Opus 4.6 账单…

作者头像 李华
网站建设 2026/10/2 14:52:06

录制网页操作一键生成MCP Server,把录屏变成可调用的AI工具

平时做大模型应用开发的人,应该都有个共同的痛点——想让AI替我操作网页,光是把工具定义清楚就得耗掉半天:要写MCP server,要给每个操作写JSON Schema,要一遍遍调试参数传得对不对。前阵子我被这种事折磨得不轻&#x…

作者头像 李华
网站建设 2026/10/2 14:50:45

Superpowers实战指南:把AI编程从“写得快”变成“写得可信”

如果你最近在刷AI编程社区,应该没少看到Superpowers这个名字。我第一反应是:又来一个包装精美的提示词合集?直到我把它装进Claude Code,完整跑完一个真实的小功能,才意识到它和提示词工程的思路完全不一样——它让AI编…

作者头像 李华