嵌入式大模型边缘部署(MTK方向)
第一章大模型运行本质与边缘部署核心逻辑1.1 大模型运行的本质是什么?大语言模型LLM的运行本质是一个自回归Autoregressive的下一个词预测过程。它接收人类语言转化为数学矩阵并通过庞大的神经网络不断计算概率生成下一个最优结果。其运行过程严格分为两个核心阶段·Prefill预填充/Prompt阶段模型一次性接收用户的全部输入Prompt并行计算所有输入 Token 的注意力Attention特征生成首个输出词。这个阶段是典型的“计算密集型”对芯片的算力峰值要求极高。·Decode解码/生成阶段模型基于已有的输入和刚刚生成的词逐个生成后续的词。每次只输入一个 Token长度为 1这个阶段是典型的“访存密集型”对内存带宽Memory Bandwidth的考验极大。1.2 边缘侧部署我们需要对模型做什么与云端拥有数百 GB 显存的集群不同MTK 等移动端 SoC边缘设备面临着极其严苛的资源限制内存有限、带宽受限、且必须控制功耗与发热。为了让庞大的 LLM 在边缘设备流畅运行我们需要对它进行以下“改造”·模型量化 (Quantization)将模型原始的 FP16 浮点权重进行压缩。例如采用asym4W_sym16A权重非对称 4-bit激活值对称 16-bit策略。这能把模型体积缩小约 75%大幅降低内存占用突破带宽瓶颈。·图结构分离 (Split Prompt Generative)针对上文提到的 Prefill 和 Decode 特性我们将模型切分为两套执行图。处理长上下文的编译为长图如 128t单次处理 1 个 token 的编译为单图如 1t。·特定硬件后端映射将模型的算子通过专用编译器如 Neuron SDK翻译使其完全适配底层硬件加速模块如 MTK 的 MDLA 深度学习加速核心和 EDMA 内存搬运引擎。1.3 部署所需文件及其关系解构在端侧跑起一个大模型绝非一个文件就能搞定它是一个软硬协同的系统工程。核心文件及其相互关系如下端侧大模型推理架构与底层组件详解表核心模块层级包含的组件/文件运行硬件核心职能概述底层运行逻辑与系统级优化细节文本处理层(Tokenizer)vocab.txtmerges.txtadded_tokens.yamlCPU文本与数字化 ID 的双向翻译枢纽。预/后处理查表转换基础词(vocab)按 BPE 算法规则合并字符(merges)并赋予系统控制符最高保留优先级(added_tokens)。调度与环境层(Runtime HAL)libmtk_llm.somainchat_loop.shCPU(Host)异构计算的指挥中心与全生命周期管理。底层大脑负责初始化环境、分配物理内存/显存管理 Tensor 的数据搬移并将不同的计算任务精准派发给 CPU 或 NPU 处理。策略控制层(Configuration)config_*.yamlCPU定义生成多样性策略与系统边界。生成控制通过 Temperature 和 Top-P 超参数调节输出的随机性。底层通过比对输出的 ID 是否等于设定的 EOS来触发硬件中断并结束推理循环。权重复用层(Shared Weights)shared_weight.bin存储 -内存映射大幅降低端侧物理内存RAM占用防溢出。内存优化Prefill首字与 Decode逐字两张计算图复用同一套神经网络参数。通过内存映射避免权重双重加载防止端侧设备 OOM。特征映射层(Embedding)embedding_int16.binCPU将离散的 Token ID 映射为多维连续向量。异构拆分本质是内存密集型的“查表(Look-up)”操作。将其剥离交由 CPU 执行可避免挤占 NPU 宝贵的片上 SRAM (高速缓存)提升整体运行效率。硬件算力层(Execution Graph)qwen_128t.dlaqwen_1t.dlaNPU核心矩阵乘加(MAC)运算负责推理执行。离线编译图128t(Prefill图) 负责高并发吃透全量 Prompt追求吞吐量1t(Decode图) 负责自回归的单字生成此时主要受限于内存带宽瓶颈。第二章MTK 边缘部署实战演练以 Qwen2.5 为例2.1 模型量化准备与执行 (PTQ)在获得了原始模型后需对其进行后训练量化并固定模型形状npu对内存的格式很严格固定能够做到npu的内存消耗减少示例如下# 1. 提取校准数据集保证量化后精度不会大幅下降 bash 1_make_ptq_calibration_dataset.sh # 2. 执行量化过程 (此处应用 asym4W_sym16A 策略) bash 2_ptq.sh # 3. 固定模型形状 bash 3_shape_fixer.sh # 4. 可选在 PC 上运行 TFLite 格式以验证模型正确性 bash 4_optional_inference_tflite.sh2.2 适配目标芯片的硬件规格MTK不同平台的APU硬件能力不一。这里我们需要针对特定芯片及配合其指定的Neuron_SDK进行编译脚本改造我之前因为没有指定sdk出现过段错误打开编译脚本找到 BACKEND 等参数并进行修改修改这一步也特别重要如果size和平台设置错误后果也是很严重的# 修改前 (例如适配高端多核平台) BACKENDmdla5.5 L1_SIZE_KB7168 NUM_MDLA4 # 修改后 (适配当前平台芯片配置) BACKENDmdla5.3,edma3.6 # 指定具体的加速引擎版本 L1_SIZE_KB256 # 调整 L1 缓存大小 NUM_MDLA1 # 设置 MDLA 核心数2.3 模型编译与权重抽离硬件参数配置无误后使用 Neuron SDK 将网络编译为底层指令 DLA并将双流程复用的权重剥离出来以节约内存开销# 5. 编译预填充模型 (Prompt, 示例路径 1t2048c) bash compile_prompt_qwen2.5_0.5B_7B.sh ../post_training_quantize/tflite/ Qwen2.5-0.5B-Instruct_asym4W_..._1t2048c ~/work/MTK/neuron-8.0-release # 6. 编译生成模型 (Generative) bash compile_generative.sh ~/work/MTK/GAI-.../Qwen2.5-0.5B-Instruct_..._0.tflite ~/work/MTK/neuron-8.0-release # 7. 编译权重提取 (extract-shared.sh) # 将 128t (多Token) 与 1t (单Token) 模型中相同的权重提取至 shared_weight.bin bash extract-shared.sh ~/work/MTK/neuron-8.0-release shared_weight.bin path/ to/..._128t2048c_0.dla path/to/..._1t2048c_0.dla2.4 Tokenizer 提词器的准备C 的推理引擎无法直接读取 Python 生态的 tokenizer.json。必须经过转化。目前社区主要有两大流派其处理方式如下对于 HuggingFace 体系适用于 Qwen2.5: 需要借助提供的 Python 脚本将 JSON 提取为底层的 txt 与 yaml。python3 inference/scripts/prepare_huggingface_tokenizer.py ~/work/Qwen2.5-0.5B- Instruct/tokenizer.json # 生成附加特殊 Token 的 yaml python3 inference/scripts/prepare_added_tokens.py ~/work/Qwen2.5-0.5B-Instruct/ tokenizer.json对于 SentencePiece 体系适用于 Phi 等: 需对 .model 文件处理以剥除生成的虚拟前缀。python3 ./scripts/prepare_sentencepiece_tokenizer.py /path/to/tokenizer.model2.5 终极部署向设备进发完成所有编译后使用 Android 调试桥 (adb) 将产物统一推送到设备端。我们准备推送的文件分为两类核心模型库业务数据包含qwen_128t.dla qwen_1t.dla shared_weight.bin embedding_int16.bin config_qwen2.5_0.5b_instruct.yaml 及由上一步生成的 Tokenizer 系列文件vocab.txt、merges.txt 等。动态链接库与可执行程序驱动环境包含基础依赖 libc_shared.so libre2.so libyaml-cpp.so 分词引擎 libhf-tokenizer.so libsentencepiece.so libtokenizer.soMTK 推理框架主核心libmtk_llm.so libcommon.so libdrafter.so 以及执行程序入口 main至此只需在终端中执行 main即可成功在联发科平台设备的边缘侧唤醒该大语言模型并开始流畅对话参考资料Deploying Qwen2.5-0.5B onto Genio-720 with Android 15 - NeuroPilot / NeuroPilot - GenAI - MediaTek Genio Community

相关新闻

TS2007FC与STM32L053R8音频系统设计与优化

TS2007FC与STM32L053R8音频系统设计与优化

1. 硬件选型解析:为什么是TS2007FCSTM32L053R8这对组合?在音频处理领域,硬件选型往往决定了项目的性能上限和开发难度。TS2007FC作为一款D类音频功率放大器,其90%以上的效率和2x20W的输出功率,使其成为便携式设备和高能…

2026/7/13 14:12:03 阅读更多 →
3个核心功能:用Gramps免费高效管理你的完整家谱

3个核心功能:用Gramps免费高效管理你的完整家谱

3个核心功能:用Gramps免费高效管理你的完整家谱 【免费下载链接】gramps Source code for Gramps Genealogical program 项目地址: https://gitcode.com/gh_mirrors/gr/gramps 家谱不仅仅是名字和日期的简单罗列,它承载着家族的记忆、文化和传承。…

2026/7/13 14:12:03 阅读更多 →
四种爬虫实现:从GitHub、Medium、LinkedIn到通用文章

四种爬虫实现:从GitHub、Medium、LinkedIn到通用文章

一、基类BaseCrawler与BaseSeleniumCrawler设计 在实现具体爬虫之前,先定义统一的抽象基类。BaseCrawler是一个ABC接口,要求所有子类实现extract(link, **kwargs)方法,并通过model属性指定对应的MongoDB文档类型。 from abc import ABC, abstractmethodclass BaseCrawler(…

2026/7/13 14:10:02 阅读更多 →

最新新闻

终极WeMod增强指南:5分钟免费解锁Pro高级功能的完整教程

终极WeMod增强指南:5分钟免费解锁Pro高级功能的完整教程

终极WeMod增强指南:5分钟免费解锁Pro高级功能的完整教程 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer Wand-Enhancer是一款专为WeMod…

2026/7/13 15:03:24 阅读更多 →
华为OD机试真题 新系统 2026-07-05 JavaGoC 实现【二叉树两节点间的最小跳数】

华为OD机试真题 新系统 2026-07-05 JavaGoC 实现【二叉树两节点间的最小跳数】

目录 题目 思路 Code 题目 题目内容 给定一棵完全二叉树的层序遍历序列,用逗号分隔的节点值字符串表示,以及两个目标节点值 frm 和 to,求这两个节点之间的最小跳数,也就是最短路径经过的边数。 完全二叉树按数组下标表示&#…

2026/7/13 15:03:24 阅读更多 →
RT-Thread快速入门(七)之互斥量

RT-Thread快速入门(七)之互斥量

前言 在上篇文章的信号量示例中,我们把信号量初始值设为 1,用做"二值信号量",也能实现互斥访问: 线程A take(信号量) → 使用资源 → release(信号量) 线程B take(信号量) → 阻塞等待 → …… → 被唤醒 但这有一个…

2026/7/13 15:01:23 阅读更多 →
硅胶包胶的难点在哪里:固转液复合工艺拆解

硅胶包胶的难点在哪里:固转液复合工艺拆解

“硅胶包胶"这个词在代工询价里出现频率很高,但很多人对它的理解就是"把硅胶包在别的东西外面”。实际上,硅胶包胶是LSR代工里技术难度偏高的一类工艺,难不在"包"这个动作本身,而在于让硅胶和基材真正粘在一起…

2026/7/13 14:57:13 阅读更多 →
三步解锁Wand专业版:终极免费增强工具让你的游戏修改体验更完美

三步解锁Wand专业版:终极免费增强工具让你的游戏修改体验更完美

三步解锁Wand专业版:终极免费增强工具让你的游戏修改体验更完美 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer 还在为游戏修改工具Wan…

2026/7/13 14:57:13 阅读更多 →
2026年电子合同行业五大趋势:从“能用“到“智能“的三级跳

2026年电子合同行业五大趋势:从“能用“到“智能“的三级跳

摘要:2026年电子合同行业正经历从"能用"到"好用"再到"智能"的加速转型。本文系统梳理了五大核心趋势:1) AI深度介入合同全生命周期,从辅助工具升级为智能中台;2) 区块链存证从概念走向刚需&#xf…

2026/7/13 14:57:13 阅读更多 →

日新闻

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾经想要调整Palwor…

2026/7/13 0:01:19 阅读更多 →
浦东旧模块回收哪家强?专业评测带你一探究竟

浦东旧模块回收哪家强?专业评测带你一探究竟

于科技迅猛飞速迭代的当下此刻, 旧模块的回收处置, 不但关联着资源的再度利用, 而且更牵扯到数据安全以及环保合规事宜。你是不是也正为那堆积得如同山峦般的旧模块而发愁? 是不是不清楚该怎样安全且高效地去处理它们? 别忧心烦恼, 就在今日, 我会以具备权威影响力的自媒体博…

2026/7/13 0:01:19 阅读更多 →
卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

卡梅德生物技术快报|重组蛋白的表达和纯化:IMAC 金属螯合色谱全流程工艺手册|基质 - 配基 - 金属离子匹配与蛋白质分离纯化参数优化

1 研究背景与现存技术痛点(提出问题)基因工程、蛋白质组学、生物制药研发流程中,蛋白质分离纯化是决定下游实验成败的关键环节。当前实验室常规蛋白质分离纯化工艺存在三类难以标准化的技术瓶颈:传统离子交换、分子筛层析无特异性…

2026/7/13 0:05:20 阅读更多 →

周新闻

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨

互联网大厂 Java 求职面试:燕双非的搞笑回答与技术探讨 在一个阳光明媚的上午,互联网大厂的面试官坐在桌前,准备迎接他的面试候选人——燕双非,一个以搞笑和幽默著称的程序员。第一轮提问 面试官:燕双非,作…

2026/7/13 4:38:36 阅读更多 →
车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估

车载以太网PMA测试设备选型:示波器、VNA、信号源3类仪器关键参数与预算评估在智能驾驶和车联网技术快速发展的今天,车载以太网作为新一代车载网络的核心传输技术,其物理层性能直接决定了数据传输的可靠性和稳定性。1000BASE-T1作为当前主流的…

2026/7/13 4:38:38 阅读更多 →
VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战,5步完成Keil工程转换

VSCode EIDE 插件 2.0:APM32/STM32 项目迁移实战指南嵌入式开发领域正经历一场工具链的静默革命。当传统Keil用户首次打开VSCode的扩展市场搜索EIDE时,往往会惊讶于这个看似简单的插件竟能重构十余年的开发习惯。本文将揭示如何用五个精准步骤&#xff0…

2026/7/13 4:38:40 阅读更多 →

月新闻