<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>十六夜的个人博客</title>
    <link>https://www.zelystaric.com/</link>
    <description>Recent content on 十六夜的个人博客</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sun, 27 Sep 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.zelystaric.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>7900 XT 上跑本地大模型，走不通的那些路</title>
      <link>https://www.zelystaric.com/posts/rdna3-ninfer-bonsai-failures/</link>
      <pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://www.zelystaric.com/posts/rdna3-ninfer-bonsai-failures/</guid>
      <description>&lt;p&gt;我的显卡是 AMD RX 7900 XT（RDNA3）。前一阵子一直在折腾本地大模型，跑通了不少东西，也留下一些没能继续走下去的方向。这篇文章记录的是后者，也就是试过、但行不通或者不划算的部分。&lt;/p&gt;
&lt;p&gt;这块卡没有独立张量核，唯一的矩阵指令是 CU 上的 WMMA，规格只到 16×16×16，支持 fp16/bf16/int8/int4。实测 bf16 峰值约 16–17 TFLOP/s，与 NVIDIA 的专用张量核不在一个量级。fp8、tf32 都没有；TMA、cp.async、mbarrier 这类异步与同步原语也缺失。&lt;/p&gt;
&lt;p&gt;预填（prefill）因此是算力受限，在这块卡上很难做快；解码（decode）则是带宽受限，722 GB/s，实测大约只能跑到 56%。&lt;/p&gt;
&lt;h2 id=&#34;ninfer-移植正确但代价递增&#34;&gt;NInfer 移植，正确但代价递增&lt;/h2&gt;
&lt;p&gt;NInfer 是一个从零实现的 CUDA 单卡推理引擎，原本只支持 NVIDIA sm_120a。我把它移植到了 ROCm / gfx1100。&lt;/p&gt;
&lt;p&gt;移植是成功的。能跑，输出正确，PPL 也正常。但越往深处优化，代价越大。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MMA 只能用 SIMT 模拟，靠 &lt;code&gt;__shfl&lt;/code&gt; 手工实现 &lt;code&gt;m16n8k16&lt;/code&gt;。结果正确，速度有限。&lt;/li&gt;
&lt;li&gt;q8 的 grouped 内核共享内存超过 64 KiB，只能缩小 tile。&lt;/li&gt;
&lt;li&gt;GDN 的 gating_proj 协作网格超出上限，需要限流。&lt;/li&gt;
&lt;li&gt;fp8 KV 的预填直接崩溃，共享内存需求超过 64 KiB LDS。&lt;/li&gt;
&lt;li&gt;q4/q8 的线性测试会在 &lt;code&gt;~DeviceArena&lt;/code&gt; 走到 &lt;code&gt;hipFree&lt;/code&gt; 时死锁。问题不在算子，而在 ROCm 7.2.3 的运行时。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;还有两条本想推进，评估之后停掉了。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 RDNA3 的 WMMA 重写。它只支持 16×16×16，fragment 布局与 PTX 的 mma 完全不同，预计需要 15–20 天，收益不划算。&lt;/li&gt;
&lt;li&gt;外挂 draft 做投机。需要改动 Engine 架构，涉及双模型、双 KV 与 draft/verify，预计 10–15 天，同样不划算。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最终停在 prefill 249、decode 41.5 tok/s（带 MTP）。可用，但继续提升的空间已经很小。&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于</title>
      <link>https://www.zelystaric.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://www.zelystaric.com/about/</guid>
      <description>&lt;p&gt;你好，我是 &lt;strong&gt;十六夜&lt;/strong&gt;（ZelyStaric）。👋&lt;/p&gt;
&lt;p&gt;一个喜欢折腾的开发者。日常捣鼓些自认为有意思的东西：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;本地大模型&lt;/strong&gt; —— 在 AMD 显卡（RDNA3）上跑 27B 级模型，做推理加速与显存优化（ROCm、量化、投机解码、KV 分页……），喜欢把速度一点点榨出来；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自建服务&lt;/strong&gt; —— 家里有一台常开的 Linux 服务器，跑着这个博客、Minecraft 整合包，还有各种小工具；&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;编程&lt;/strong&gt; —— 享受从零把东西搭起来、再反复调优的过程。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我信「&lt;strong&gt;淡泊以明志，宁静以致远&lt;/strong&gt;」——不求喧哗，只把喜欢的事做深一点。&lt;/p&gt;
&lt;p&gt;这里用来记录一些思考、笔记与踩过的坑，聊作存档。&lt;/p&gt;
&lt;p&gt;若你也对这些感兴趣，欢迎来 &lt;a href=&#34;https://github.com/ZelyStaric&#34;&gt;GitHub&lt;/a&gt; 找我聊聊。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
