- 博客(47)
- 收藏
- 关注
原创 19.归一化
归一化(Normalization)是指把不同尺度、范围的数据,按一定规则映射到统一、稳定的数值范围或分布,目的是让模型更稳定、更快收敛,也避免某些特征“数值大就主导训练”的问题。(ImageNet 是大规模图像数据集,而 ResNet、MobileNet、ViT 是在这个数据集上训练和验证的神经网络模型架构)2)标准归一化(Standardization / Z-score)1)最小–最大归一化(Min-Max Normalization)二、常见归一化类型(重点在视觉/AIPipe里)
2026-08-14 15:20:58
159
原创 17.知识蒸馏
输出蒸馏也叫硬样本蒸馏、API 蒸馏,DeepSeek‑R1‑Distill、很多开源小推理模型都是这套流程准备一批 prompt(业务数据 / 公开数据集);调用教师 API,生成完整回答(包含 CoT 思考过程);清洗、过滤、去重,做成 prompt→response SFT 数据集;拿这份数据集对学生底座做 SFT 微调。输出蒸馏代码# ====================== 硬样本蒸馏链路相关代码 ======================import os。
2026-08-14 14:10:36
468
原创 16.小模型之MobileNet
MobileNet 是一种专为移动/嵌入式端侧设备设计的轻量级卷积神经网络(CNN),主要用于图像分类、目标检测等视觉任务。MobileNetV2:加入 Inverted Residual + Linear Bottleneck(最常用)1.深度可分离卷积(Depthwise Separable Convolution)。👉 大幅减少 参数量和计算量(FLOPs),通常只有同类 CNN 的 1/8~1/9。5.3 目标检测(配合 SSD / YOLO / Faster R-CNN)3.为什么端侧常用?
2026-08-12 09:14:22
192
原创 15.KV Cache
KV Cache(Key-Value Cache,键值缓存)是大语言模型(LLM)自回归推理(Autoregressive Inference)阶段中最核心的显存优化技术之一。在生成回答时,把已计算过的 Token 对应的 K 和 V 向量缓存起来,后续新 Token 不再重新计算,而是直接复用。输入:"我爱你" 第1步 → 生成 "我" 第2步 → 生成 "爱" 第3步 → 生成 "你" ...三、KV Cache 在 Attention 中如何工作?一、什么是 KV Cache?
2026-08-12 09:06:57
184
原创 14.板端Qwen3-VL知识库实现
技术栈 :cpp-httplib(轻量级C++ HTTP库)职责 :将上传的文本文档切割成合适大小的知识块。3.RK3588 使用RAG进行增强检索。职责 :提供HTTP接口供用户上传文档。检索算法 :IDF加权包含相似度。职责 :知识的持久化存储与检索。1.启动文档上传服务。
2026-08-11 08:27:51
238
原创 12.RK3588本地大模型性能评估优化
把板子CPU、NPU、DDR运行频率设置到最大,后续的性能分析都在这个基准上比较,避免动态调频导致性能表现出现误差。可以看到 Expand 和 Transpose是运行在CPU上的,可以通过算子替换等把它修改到NPU上以提高性能。整个部署程序的推理部分耗时的占用有如下三个方面:用户应用程序耗时、输入输出数据拷贝耗时、模型推理耗时。校准数据集作用:前向跑一遍模型,收集每层输出特征图所有数值,统计该层激活全局 min、max。量化核心:依靠校准数据集统计激活值范围 (min/max),决定量化缩放因子。
2026-08-11 08:27:26
217
原创 13.板端Qwen3-VL记忆实现
比如用户新问题 “电动车充满要多久”,它的向量和历史 “电动车续航、快充” 向量距离很近,和 “柯基小狗” 向量距离很远,程序就能自动筛选出相关历史对话,实现记忆匹配。向量就是一组数字数组,比如 [0.12, -0.35, 0.78, ...],这里用的轻量模型输出固定 384 个浮点数,也叫文本嵌入(Embedding)。新提问时先检索历史对话,把相关图文拼接进 prompt 喂给 Qwen3-VL,模拟 “长期记忆”,内存占用极低,适配 RK3588 嵌入式 Linux。语义完全无关,数字差距很大。
2026-08-11 08:26:10
369
原创 01.端侧AI量化部署最全实战指南
通过本系列文章的学习,读者将全面掌握端侧AI量化部署的核心技术,能够在RK3588等嵌入式平台上独立完成从模型训练、量化、板端部署、精度优化等全流程实践。随着AI的发展,大模型正从云端走向边缘,端侧AI成为释放AI潜力的关键。,涵盖环境搭建、模型量化、板端部署、性能调优以及高级功能实现。感兴趣的朋友可以添加QQ群,一起沟通交流端侧AI相关知识!
2026-08-11 08:25:24
1010
原创 11.RK3588本地大模型内存评估优化
例如,下图中有两个模型,模型 1 的 Internal Tensor 占用大于模型 2,如果模型 1 和模型 2 顺序地运行,可以只开辟 0x00000000~0x000c4000 地址的一块内存给模型 1 和 2 共用,模型 1 推理结束后,这块内存可以被模型 2 用来读写 Internal Tensor 数据,从而节省内存。,硬件之间只传递内存 fd(文件描述符),不搬运图像 / 张量原始数据,彻底消除 CPU 内存拷贝,降低带宽占用、减少延迟、节省 DDR 内存。1.板端C代码里评估内存。
2026-08-10 09:17:53
152
原创 10.K3588本地大模型精度评估优化
瑞芯微官方给出了一个精度评估工具这里有一个参数特别重要:target=None一般表示在 PC simulator 上做分析。它适合回答:量化模型在工具链模拟器里和浮点模型差多少?如果设置具体芯片目标,并连接了设备,例如:target=具体芯片平台device_id=设备 ID它更接近回答:真实 NPU 每一层输出和参考输出差多少?
2026-08-10 09:17:09
188
原创 08.RK3588本地ASR语音识别
选用shepa-onnx,它是Apache 2.0 协议的离线语音推理部署框架,仅做模型推理、不负责模型训练,底层基于 ONNX Runtime 运行 ONNX 格式语音模型,核心解决各类语音模型跨端离线部署难题。音频全设备本地运算,不上传云端,隐私性强、无网络延迟。Windows/macOS/Linux、Android/iOS、鸿蒙、树莓派、RK3588 等嵌入式、浏览器 Wasm、服务器;支持 RKNN、QNN、昇腾等 NPU 硬件加速。
2026-08-10 09:14:24
455
原创 07.RK3588部署Qwen3-VL - 板端部署
本节我们的工作目录切换至:rknn-llm/examples/multimodal_model_demo/deploy这个目录的作用是编译出测试Qwen3-VL大模型用的demo、so库等。
2026-08-10 09:11:31
846
1
原创 06.RK3588部署Qwen3-VL - 对外提供大模型服务
对外提供大模型推理API接口,或者UI界面板端Qwen3-VL提供了两种API调用方式:RKLLM-Server-Flask Demo和KLLM-Server-Gradio Demo两者底层共用一套 librkllmrt RKLLM 推理库,模型加载、NPU 推理逻辑完全一致,差异仅在对外交互方式、使用场景、部署目标。核心定位对比后端 API 服务,无界面,供程序调用基于 Flask 轻量 Web 框架,只提供 HTTP 接口(/chat、/stream、/generate 等)
2026-08-09 17:24:13
222
原创 05.RK3588部署Qwen3-VL - 模型量化
该过程使用rknn-toolkit2虚拟环境(因为要将模型转为rknn格式,所以要用到rknn-toolkit2工具),export_vision_rknn.py脚本,该脚本的目的是将上一节生成的qwen3-vl_vision.onnx转为rknn模型。在examples/multimodal_model_demo路径下,有个data文件夹,准备量化数据需要的脚本就在该路径下,即:data/make_input_embeds_for_quantize.py。推理速度快,但模型精度有一定损失。
2026-08-09 17:15:34
159
原创 04.RK3588部署Qwen3-VL - 环境搭建
rknn-llm-export 和rknn-llm环境类似,只不过rknn-llm需要transformers版本为4.57.3,rknn-llm-export 需要transformers版本为4.55.2。rknn-toolkit2是可以通过pip直接安装的,安装最新版即可(我这里使用的rknn-toolkit2是2.3.2版本)。这两个工具有些依赖是互斥的,所以需要用到虚拟环境来隔离,虚拟环境的实现有很多方式,这里使用conda。后续涉及非常多的pip安装,先设置全局的pip国内源,加速下载过程。
2026-08-09 17:13:05
248
原创 02.模型量化
从官网下载的 (.safetensors)格式的大模型,比如Qwen3-VL-2B,这个模型只能在显卡上跑,不能在RK3588的NPU上跑。权重、激活全部压缩,内存收益最大,但精度风险更高。量化后算子运行在NPU,速度快。此时就需要把.safetensors 格式的大模型量化转换为NPU可以运行的格式。原始模型一般较大,量化后体积会小很多,这样才有可能放到端侧AI芯片上运行。在W8A8 量化模式下,激活值位宽同步压缩,推理内存减少一半。未量化时激活为 BF16/FP16,占用大量内存。
2026-08-09 17:10:05
193
原创 zigbee远程抓取空中包
在客户环境,zigbee设备可能会有离线,离网,控制失败,响应不及时等各种问题。要分析这类问题,往往需要用ubiqua等抓包软件抓取空中报文,这样就需要技服和用户约定时间,带着抓包设备到达现场进行抓包。这样往往费时费力,效率很低,拉长问题排查周期,降低用户满意度,甚至影响产品最终能否成功交付。远程抓包,就是解决这个问题的,只要在应用服务器下发抓包命令,网关就会开始抓取空中报文,等抓包完成后,抓包文件自动上传到服务器供相关人员分析排查,避免上门出差,极大缩短问题排查周期。
2024-04-28 09:20:25
690
原创 习惯了SI的代码高亮,试试比这好用十倍的功能
每个高亮的词是一种颜色,最多支持9种颜色,比SourceInsight只能高亮一种颜色好用很多。
2024-02-01 10:57:43
1255
3
原创 应用是如何一步步调用到你编写的Linux底层驱动接口的
应用层调用字符设备的open,read,write,close时,是如何调用到驱动里对应的接口的?
2024-01-03 17:23:29
671
原创 zigbee Mac 模式
Connect MAC模式是实现IEEE802.15.4兼容/互操作设备的通用工具,具有Connect协议栈的所有API功能和特性。MAC模式适用于需要完全符合IEEE 802.15.4的应用。在射频范围内,设备支持相互连接。该模式的网络层未实现,因此在需要时,必须由应用程序实现网络层。
2023-10-23 11:15:27
427
原创 zigbee通信安全之install code
zigbee3.0之前协调器是使用Well-Known Key(5A:69:67:42:65:65:41:6C:6C:69:61:6E:63:65:30:39,即ZigBeeAlliance09)对network key进行加密,然后把network key传输到终端。设备入网方便的同时,也带来安全隐患,network key有被泄漏的风险。现在所有ZigBee 3.0 认证设备都需要支持install code,以提高安全性。
2023-10-10 15:01:26
704
原创 zigbee终端设备OTA升级(完整流程+抓包详解)
根据镜像传输的方式,可有镜像页和镜像块两种OTA升级方法1. 镜像块传输,即设备端按固定大小(即block,每个block镜像数据小于80 Bytes)向网关请求数据,设备不断请求,直至传完全部镜像数据,这种方式能确保每个包是可靠传输到终端的。但该方式需要花费大量的流量在客户端image block request请求上,会有额外的流量开销。2. 镜像页传输,即设备端向网关发送镜像页请求,网关收到后按固定大小向设备发送多次block,直至该页传完,设备继续发下一个镜像页请求,直至传完全部镜像数据。
2023-10-10 10:02:29
1840
原创 zigbee空中抓包
开发调试zigbee,抓取空中报文进行问题分析定位是非常常用的调试手段。zigbee抓包方式有很多种,比如wireshark,silicon的Network Analyzer,以及非常好用的Ubiqua Protocol AnalyzerUbiqua Protocol Analyzer在zigbee抓包领域是处于绝对头部地位的,此处以Ubiqua Protocol Analyzer进行说明。
2023-10-09 20:01:09
1570
8
原创 zigbee组网和入网(完整流程+抓包详解)
zigbee组建网络以及设备加入网络,一般分为以下几个步骤:协调器组建网络触发打开协调器入网开关触发终端设备尝试加入网络。
2023-10-09 11:13:22
8985
原创 makefile常见知识点及示例
Makefile提供了许多内置函数,用于处理字符串、文件和条件等。例如:1 . $(findstring find, in)函数用于查找一个字符串是否在另一个字符串中出现,其中,find是要查找的字符串,in是要在其中进行查找的字符串。findstring函数返回两种可能的结果:1)如果find在in中找到,则返回find;2)如果find没有在in中找到,则返回空字符串。2. $(subst from, to, text)函数用于将字符串中的某个子字符串替换为另一个子字符串。
2023-09-27 17:30:30
1073
原创 DB和DBm
这里面的信号指的是来自设备外部需要通过这台设备进行处理的电子信号,噪声是指经过该设备后产生的原信号中并不存在的无规则的额外信号(或信息),并且该种信号并不随原信号的变化而变化。同样是“原信号不存在”还有一种东西叫“失真”,失真和噪声实际上有一定关系,二者的不同是失真是有规律的,而噪声则是无规律的。功率的比,常常用分贝数表示,设备的信噪比越高表明它产生的噪声越少。信噪比的计量单位是dB,其计算方法是10lg(PS/PN),其中Ps和Pn分别代表信号和噪声的。里的噪声越小,声音回放的音质量越高,否则相反。
2023-09-26 11:44:01
1087
原创 LoraWan MAC命令
MAC指令会在NS和终端MAC层之间传递,AS对此不可见,终端应用层对MAC命令也不可见MAC命令可以搭载在数据帧的FOpts字段中(可以和数据payload一起传输),此时MAC命令不加密,并且不超过15字节。或者当作为单独的数据帧发送(FPort字段设置为0的FRMPayload字段中)。此时MAC命令会加密,并且不得超过FRMPayload最大长度MAC命令由命令ID(CID)开始,后面跟特定CID相关的数据(下图中标“X”的为使用)
2023-09-26 11:35:56
615
原创 LoraWan帧结构
所有的LoraWan数据帧都遵循如下结构:MACpayload的最大长度M,与地区参数和使用的数据速率有关。超过最大长度M的MACPaylaod数据,都会被丢弃。
2023-09-20 09:11:52
1022
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅