18.剪枝
1.剪枝的定义把神经网络里不重要的权重 / 神经元删掉在尽量少掉精度前提下减小模型体积、降低显存、加速推理常用于端侧部署。2.剪枝的分类非结构化剪枝 -- 减少权重NPU 无法加速且 RKNN 不支持稀疏推理RK3588上基本无意义RK3588不建议做。权重就是神经网络里那些被训练出来、用来“加权计算”的数字结构化剪枝 -- 删除Attention Head / 整个 Layer/某些通道改变矩阵形状需重新保存 HuggingFace 模型再由 RKLLM-Toolkit 量化转换这里的 FNN 通常指 Feedforward Neural Network前馈神经网络。 **FFN是 Transformer 中负责“特征变换和非线性增强”的部分它在每个 token 上独立计算不做注意力也不跨 token 交互。可以理解为Attention 负责“看哪里重要”FFN 负责“把信息加工得更丰富”。如果删减通道要按通道重要性排序再删而不是随机删3.剪枝示例结构化剪枝代码import torch from transformers import AutoModelForCausalLM, AutoTokenizer def prune_attention_heads(model, prune_num_heads: int): 结构化剪枝剪掉每一层末尾 prune_num_heads 个注意力头 :param model: causal lm model :param prune_num_heads: 每层要剪掉多少个head :return: pruned model config model.config num_heads config.num_attention_heads hidden_size config.hidden_size head_dim hidden_size // num_heads assert prune_num_heads num_heads, 剪枝head数不能大于总head keep_num_heads num_heads - prune_num_heads for layer_idx, layer in enumerate(model.model.layers): attn layer.self_attn # Q K V 权重结构化裁剪保留前 keep_num_heads 个head # weight shape: [hidden_size, hidden_size] q_proj attn.q_proj.weight k_proj attn.k_proj.weight v_proj attn.v_proj.weight # 只保留前 keep_num_heads head 对应的权重 keep_dim keep_num_heads * head_dim attn.q_proj.weight torch.nn.Parameter(q_proj.weight[:keep_dim, :].clone()) attn.k_proj.weight torch.nn.Parameter(k_proj.weight[:keep_dim, :].clone()) attn.v_proj.weight torch.nn.Parameter(v_proj.weight[:keep_dim, :].clone()) # bias同理 if attn.q_proj.bias is not None: attn.q_proj.bias torch.nn.Parameter(attn.q_proj.bias[:keep_dim].clone()) attn.k_proj.bias torch.nn.Parameter(attn.k_proj.bias[:keep_dim].clone()) attn.v_proj.bias torch.nn.Parameter(attn.v_proj.bias[:keep_dim].clone()) # output proj输入维度改变 # o_proj: [hidden_size, keep_dim] attn.o_proj.weight torch.nn.Parameter(attn.o_proj.weight[:, :keep_dim].clone()) if attn.o_proj.bias is not None: pass # 更新模型config必须推理时会读取这个配置 config.num_attention_heads keep_num_heads if hasattr(config, num_key_value_heads): # GQA模型需要同步修改KV头这里简单处理和num_attention_heads保持一致 config.num_key_value_heads keep_num_heads print(f剪枝完成原heads{num_heads}, keep heads{keep_num_heads}, prune{prune_num_heads}) return model if __name__ __main__: model_name Qwen/Qwen2-0.5B-Instruct tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained( model_name, torch_dtypetorch.float32, device_mapcpu ) print(原始模型 config num_attention_heads:, model.config.num_attention_heads) # 每层剪掉2个注意力头Qwen2‑0.5B 原12head →保留10head prune_model prune_attention_heads(model, prune_num_heads2) # 测试推理 prompt 讲一个简短小故事 inputs tokenizer(prompt, return_tensorspt) outputs prune_model.generate( **inputs, max_new_tokens100, do_sampleFalse ) print(\n剪枝后输出) print(tokenizer.decode(outputs[0], skip_special_tokensTrue)) # 保存剪后模型可以后续微调 prune_model.save_pretrained(./qwen2‑0.5b‑pruned‑head) tokenizer.save_pretrained(./qwen2‑0.5b‑pruned‑head)4.剪枝代码优化方向实际需要根据每个head重要性进行剪枝思路跑一部分校准数据统计每个注意力头的平均注意力熵 / 梯度排序移除分数最差的 head。

相关新闻

从单一提取到复合营养:蔓越莓补充剂的配方演进脉络

从单一提取到复合营养:蔓越莓补充剂的配方演进脉络

在当代都市人的膳食图谱中,蔓越莓正以一种温和而坚定的姿态,从北美沼泽地的野生浆果,逐步演变为日常营养补充体系中不可或缺的植物角色。它不张扬,却以独特的植物活性成分和深厚的地域文化根基,在全球范围内收获了持续…

2026/9/27 8:02:33 阅读更多 →
2026年上海新能源废料回收全攻略:一文看懂如何变废为宝!

2026年上海新能源废料回收全攻略:一文看懂如何变废为宝!

你可曾思索过, 一辆电动车报废之后, 那些电池去往何方, 电机去往何处, 芯片又流向哪里? 新能源汽车产业高速发展着, 动力电池、电机、电控系统等核心部件的新增报废量逐年攀升着, 据国家能源局数据显示, 2025年全国新能源汽车累计保有量突破8000万辆了, 按照8至10年的使用寿命…

2026/10/13 17:05:41 阅读更多 →
客户匹配证据校准工具:从输入校验到离线报告的完整实现

客户匹配证据校准工具:从输入校验到离线报告的完整实现

项目编号:20260813-007。本文代码、测试、文档、示例数据和效果图均为独立编写,不包含热点产品或开源项目源码、品牌素材与官方截图。 问题与目标 比较客户画像、匹配理由、缺失字段、人工反馈和实际推进结果,校准线索匹配分数并暴露证据不足…

2026/10/7 10:09:32 阅读更多 →

最新新闻

北航机试工程思维:输入解析、缓存优化与格式鲁棒性

北航机试工程思维:输入解析、缓存优化与格式鲁棒性

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:42:11 阅读更多 →
四寸液氮高低温真空探针台:从选型到实操的完整指南

四寸液氮高低温真空探针台:从选型到实操的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:42:11 阅读更多 →
ITK PointSet完全指南:离散点数据的存储、访问与实战避坑

ITK PointSet完全指南:离散点数据的存储、访问与实战避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:42:11 阅读更多 →
嵌入式SQLite交叉编译与部署实战:从源码到目标板全流程

嵌入式SQLite交叉编译与部署实战:从源码到目标板全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:42:11 阅读更多 →
USB HID免驱监控:破解UPS运维的通信脆弱与数据粗糙困局

USB HID免驱监控:破解UPS运维的通信脆弱与数据粗糙困局

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:42:11 阅读更多 →
轴角编码器与超声波传感器:VEX V5机器人精准定位与避障全解析

轴角编码器与超声波传感器:VEX V5机器人精准定位与避障全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 1:41:11 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →