技术
BigMoeOnEdge:端侧 MoE 专家流式推理原理与实测
更新于:结合 BigMoeOnEdge 的架构图和两组 Android 端实验,解释专家权重流式加载、缓存与 I/O 调度,并比较 mmap、repack 和 HTP Prefill 的性能边界。
Jev 到底是什么:结构化决策 API、开源生态与工程边界
从 TypeSafe 官方资料、Jev 解读站、Datawhale Cookbook 和独立论文出发,解释 Jev 的类型化决策 API、概率与置信度,并梳理闭源服务与开源生态的边界。
QNN W8A16 的 INT32 Bias Overflow:从极小 Scale 到稳定部署
记录 QNN HTP W8A16 中 INT32 bias 溢出的根因、公式、QueOpt 修复方式,以及在真实板端的验证结果。
从 LoRA 到 QLoRA、QA-LoRA:低秩更新如何进入量化模型
用一个完整的数值例子解释 LoRA、QLoRA 和 QA-LoRA 的训练、推理与合并流程,并拆开 QA-LoRA 官方实现中的 group pooling 和 qzeros 写回。
从权重角度理解均匀量化与向量量化
用权重矩阵、scale/offset、码本和索引,拆开解释均匀量化与向量量化到底在压缩什么、如何反量化,以及为什么码本大小会决定 bit 数。
HQQ 算法解读:不用校准数据,怎样把大模型权重压到 4 bit
从 Dropbox HQQ 源码出发,拆解分组非对称量化、half-quadratic 零点优化、bit packing 与推理路径,并说明 axis、group size 和 backend 该怎样选。
DINOv3 做 W8A8 PTQ:一次 FP 激活分布定位,把问题从猜测变成证据
DINOv3 ViT-B/16 的标准全图 W8A8 为何失效?64 张图的逐层 FP32 激活 profile 表明,block 2 MLP 的 learned register 与 patch token 出现数百倍动态范围差。
project 的 GitLab CI/CD 与 Python 包发版流程
记录 project 从专用 GitLab Runner、部署回归,到 wheel 构建、隔离验证、包发布和 Release 创建的完整流程。
Agent 时代的基础设施:从 lark-cli 看执行 Harness 应该怎么建
Agent 需要的不是更多工具,而是一条可验证、可约束、可恢复的执行链。以 lark-cli 源码为例,拆解命令层、身份、策略、输出契约与测试如何组成 Harness。
QAIRT 2.42 适配 Streaming Spatial Speech Enhancement Network 的 GRU
Streaming Spatial Speech Enhancement Network 的 HTP 部署排查:GRU 展开、长序列 native cell、QAIRT 源码开关、Einsum layout bug 与流式 I/O 对齐。
MNN QNN 里为什么 chunk size 会影响 PPL
记录一次 Qwen3-0.6B 在 MNN QNN 上排查 PPL 异常的过程,解释为什么 chunk size 不只是输入切块参数,而是同时决定 prefill 图 shape、padding 路径和 ppl_eval 的上下文窗口,因此会真实影响困惑度。
SeqMSE 原理:用输出重构误差选择量化 Encoding
SeqMSE 的核心思想、候选 encoding 搜索、reconstruction loss 计算、block-wise 优化方式,以及它和 min/max、AdaRound、GPTQ 的区别。
RKNN OCR Rec INT8 量化:Weight Outlier、CLE 与 Hybrid 的取舍
记录一次 OCR recognition presoftmax 模型在 RKNN W8A8 量化下的精度排查:对比 normal、KL、MMSE,尝试手动 Cross-Layer Equalization 处理 weight outlier,并分析为什么最终仍需要 hybrid。
MNN QNN 离线模式跑通 Qwen3-4B 大模型
完整记录从本地编译 MNN、生成 QNN 离线模型、准备高通 QNN 依赖,到在 QCS8550/8 Gen 2 板端按 MNN 文档跑通 Qwen3-4B 的全过程,以及中间遇到的权限、路径和库问题。
llama.cpp Hexagon HTP 长 Prompt 默认 ubatch=512 卡住的定位与修复
本来只是想在 Hexagon HTP 上跑一条稍长一点的总结题,结果 `llama.cpp` 默认 `ubatch=512` 直接卡在 prefill。最后一路排到 HMX matmul,发现是小 remainder batch 走异步 pipeline 后没回来。
llama.cpp 里的 lm-head:Q6_K、Q4_0,以及为什么 4B 不一定提速
从 Qwen3/Qwen3.5 的 tied embedding 看 lm-head 性能瓶颈:0.6B 改 output-q4_0 有收益,4B 上收益有限甚至可能变慢。
llama.cpp HTP 调优:少用 CPU 为什么反而慢
用 Qwen3-0.6B 的 profile 解释一个朴素误区:减少 CPU 参与不等于更快。HTP attention、SET_ROWS、图切分和真实 token/s 的关系。
llama.cpp 跑 Qwen3-0.6B:HTP 上从 20 到 70 token/s
一次 Snapdragon Hexagon HTP 上的真实调优记录:OPPOLL、算子过滤、lm-head 量化,以及为什么 70 token/s 不是“全上 NPU”跑出来的。
llama.cpp Hexagon NPU 量化:Q4_0 / IQ4_NL / MXFP4 / Q8_0
对比 llama.cpp Hexagon HTP 支持的 Q4_0、Q4_1、IQ4_NL、MXFP4、Q8_0 格式,解释存储表示、反量化 kernel 和格式选择。
TVM 是什么:层级架构与编译流水线
通过 TVM 的 Relax、TIR、Target 和 Runtime 分层,跟踪一个 matmul + add 模型如何从图表示逐步编译为目标设备代码。
llama.cpp 高通 Hexagon NPU 初跑 Qwen3.5 4B 模型
记录 llama.cpp 在 Snapdragon 8 Gen 2 / Hexagon HTP v73 上部署 Qwen3.5-4B 的模型转换、交叉编译、板端运行和实测速度。
TVM FFI(三):多语言绑定与工具链
Python/Rust 绑定 SDK、JIT 即时编译、stubgen 类型标注生成、全局注册表、stream 管理及 addons。
TVM FFI(二):类型系统与容器
Any/AnyView 所有权语义、Array/Map/Variant/Expected 容器、结构相等性与哈希、反射系统与 Dataclass。
TVM FFI(一):对象系统与调用约定
TVM FFI 的核心骨架:引用计数对象系统、类型擦除容器 TVMFFIAny、Packed Function 调用约定,以及 DLPack 零拷贝张量传递。