news 2026/4/25 5:26:19

不只是压缩:当模型蒸馏开始复制人格

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
不只是压缩:当模型蒸馏开始复制人格

大模型为什么要进行瘦身?

一个原始的大模型(比如未压缩的Qwen-72B),在真实场景中会遇到四堵墙:

  1. 💾 存储墙 问题:72B参数的FP32模型,需要 72B × 4字节 ≈ 288GB 显存。一张A100(80GB)都装不下,更别说手机了。

    后果:无法单卡部署,必须多卡分布式,成本飙升。

  2. ⏱️ 推理速度墙 问题:大模型推理时,每个 token 都要搬运全部参数。权重越大,内存带宽越容易成为瓶颈,生成速度慢(比如不到10 tokens/秒)。

    后果:用户体验差,实时交互几乎不可能。

  3. 💰 成本墙 问题:云上部署一个原始大模型,单次推理的算力成本和电量成本都极高。如果对外提供免费API,亏本严重;收费又劝退用户。

    后果:商业模式难以为继。

  4. 📱 端侧部署墙 问题:手机、IoT设备、智能汽车芯片的算力和内存远不如服务器。FP32模型无法直接运行。

后果:AI功能必须联网,断网后变“智障”,且数据必须上传云端,隐私风险大。

:::
不压缩,大模型就永远困在机房,无法进入你的手机、笔记本、汽车和本地应用!!!
:::

三种“减肥方法”速览

类比三种运大象进城的方案:

方法类比核心压缩比精度损失是否需要重训
量化冻干(缩小体积)FP32→INT8/INT44x~8x0.5%~2%否(PTQ)/是(QAT)
剪枝切赘肉删不重要的连接/神经元2x~4x1%~3%是(微调)
蒸馏师带徒大模型教小模型10x+5%~10%是(完整训练)

🔢量化:降低精度,精简模型体积

把一个模型的数值精度降低,让它占用的内存更少、计算速度更快。

1.1 原理

一句话:把模型中的高精度浮点数(FP32)转换成低精度整数(INT8/INT4),减少每个数字占用的空间。

类比:你记录“3.141592653589793” vs “3”——后者省了 75% 的存储。

1.2 量化分类

类型全称说明优点缺点
PTQ训练后量化训练完直接转,无需重新训练极快,几分钟完成精度损失略大
QAT量化感知训练训练过程中模拟量化误差精度损失小需要重新训练/微调
动态量化Dynamic Quantization权重提前量化,激活动态计算平衡速度与精度实现稍复杂

对大多数应用,PTQ已足够;若精度敏感,可选用QAT

1.3 流程

  1. 训练:在 FP32 下训练好完整模型

  2. 校准:用一小批样本数据跑一遍,统计每层数值的范围(如 min=-1.2, max=2.4)

  3. 映射:将浮点范围线性映射到整数范围(如 INT8 的 -128~127)

  4. 转换:替换模型中的权重和激活函数

  5. 微调(可选):若精度下降,用少量数据微调恢复

1.4 工具链

  • PyTorchtorch.quantization

  • TensorRT(NVIDIA 生态)

  • ONNX Runtime(跨平台)

  • TFLite(移动端)

  • GGUF / llama.cpp(CPU 大模型专用)

  • GPTQ / AWQ(LLM 4-bit 量化)

量化大模型后缀:

🎓蒸馏:模仿学习

2.1原理

模型蒸馏(Model Distillation)最初由 Hinton 等人在2015年提出,其核心思想是通过模型缩减或知识迁移的方式,将一个复杂的大模型(教师模型)的知识传授给一个相对简单的小模型(学生模型)。

模型蒸馏分为结构拆解(模型剪枝)知识迁移(目前最主流)两大类。我这里将重点讲解实操性更强的知识迁移蒸馏方法。

2.2核心概念

  • 软标签(soft label):教师模型输出的概率分布(比如 0.7 猫 + 0.2 老虎 + 0.05 豹子)

  • 硬标签(hard label):真实答案(“猫”)

  • 损失函数:学生同时学硬标签 + 模仿教师的软标签

关键 insight:软标签里藏着“类别之间的关系”,这就是暗知识

2.3🔧 模型蒸馏操作指南

https://docs.jdcloud.com/cn/jdaip/distill-details

  1. 选择教师模型:一个性能顶尖的大模型(如 GPT-4、DeepSeek-V3、Qwen-Max)

  2. 准备学生模型:一个你想部署的小模型(如 Qwen-1.8B、Llama-3.2-1B)

  3. 准备数据集:覆盖目标领域的无标签或少量标签数据

  4. 教师生成软标签:用教师模型对数据集进行推理,得到每个样本的概率分布(可离线保存)

  5. 训练学生模型:学生同时学习硬标签(若有)和教师软标签,损失函数如上所述

  6. 评估与部署:测试学生性能,并可进一步量化学生模型

2.4 效果

  • 学生参数量可减少10 倍以上(如 100 亿 → 1 亿)

  • 学生能力可达教师的90% 以上

  • 推理速度提升5-10 倍(取决于模型结构)

✂️剪枝——结构性减脂

3.1 原理

模型训练后,很多权重值接近零或对输出影响极小。剪枝就是删除这些不重要的连接或整个神经元,让模型变得稀疏。

类比:修剪盆栽,剪掉多余的枝叶,让养分更集中。

3.2 剪枝分类

类型方式优点缺点
非结构化剪枝删除单个权重连接压缩率高稀疏结构对硬件不友好,实际加速有限
结构化剪枝删除整个通道 / 注意力头 / 层硬件友好,真正加速精度损失略大,需微调

实际应用中,结构化剪枝更受欢迎。

3.3 剪枝流程

  1. 训练基线模型:获得一个完全训练的 FP32 模型

  2. 评估重要性:通过权重绝对值、梯度、或 Hessian 信息判断哪些连接不重要

  3. 剪除:将低于阈值的连接/通道置零或直接删除

  4. 微调:用原训练数据的一小部分重新训练,恢复精度

  5. 迭代:重复 2-4 步,达到想要的压缩率

剪枝通常需要多次迭代,每次剪掉一小部分(如 10%~20%),然后微调。

蒸馏的新形态:从“压缩模型”到“复制人格”

案例 1:女娲.skill —— 蒸馏任何人的思维(5 分钟)

项目地址:https://github.com/alchaincyf/nuwa-skill 一周收获 1 万星,2026 年 4 月最火的开源项目之一。

输入一个名字(乔布斯、马斯克、鲁迅…),它会:

  1. 自动调研:6 个 AI Agent 并行采集资料

  2. 提炼思维模型:比如“乔布斯的现实扭曲力场”

  3. 生成可对话的 AI 人格

效果演示(文字模拟)

👤 你:乔布斯,你怎么看现在的折叠屏手机? 🤖 乔布斯 skill:折叠屏?真正的创新不是把屏幕折起来,而是让用户根本不需要思考怎么折。我们当年做 iPhone,就是直接干掉键盘。现在这群人只是在解决自己制造的问题。

👤 你:马斯克,你同意吗? 🤖 马斯克 skill:乔布斯说的有一定道理,但他忽略了物理极限。折叠屏的核心是材料科学,而不是用户体验的矫情。等我 Neuralink 做好了,你们连屏幕都不需要。

👉现场可以选一个大家都熟悉的名人,提前蒸馏好,现场演示对话。

案例 2:dot-skill / 同事.skill —— 蒸馏你身边的人(5 分钟)

项目地址:https://github.com/titanwings/colleague-skill 开发者:24 岁的上海 AI 工程师周天奕(4 小时写出来,初衷是沉淀团队隐性知识)

推荐博客:https://gitcode.csdn.net/69cb329454b52172bc65aa57.html

和女娲.skill 的区别

特性女娲.skilldot-skill
目标人物名人 / 公众人物同事 / 身边人
数据来源公开资料飞书、钉钉、邮件、聊天记录
自动化程度半自动全自动(支持 API 采集)
人格模型6 维研究链专业层 + 5 层人格模型

最简单入门方式(女娲.skill)

# 1. 安装 Claude Code(或使用 Cursor)# 2. 安装女娲 skillnpx skillsaddalchaincyf/nuwa-skill# 3. 在 Claude Code 中输入蒸馏尤雨溪# 4. 等待 2-3 小时,自动生成

蒸馏身边同事(dot-skill)

gitclone https://github.com/titanwings/colleague-skill.git .claude/skills/create-colleague# 然后输入 /create-colleague 按提示操作

1️⃣ 检查并安装依赖

进入dot-skill项目目录(即create-colleague所在的父目录),然后运行:

## 确保已安装 Python 3.7+ python3 --version ## 安装项目所需依赖(如果有 requirements.txt) pip3 install -r requirements.txt ## 如果项目没有提供 requirements,手动安装常见依赖 pip3 install requests dingtalk-sdk

2️⃣ 配置钉钉应用凭证 钉钉自动采集工具通常需要你提供企业内部应用的认证信息。你需要:

登录 钉钉开放平台,创建“企业内部开发”应用,获取 AppKey 和 AppSecret

在应用权限中开启“企业通讯录只读”、“消息查询”等相关权限

将应用授权给需要采集的成员

然后,将这些信息配置到工具中。通常是编辑 tools/dingtalk_config.json 或通过环境变量设置:

export DINGTALK_APP_KEY="你的AppKey" export DINGTALK_APP_SECRET="你的AppSecret"

或者直接修改 dingtalk_auto_collector.py 中的默认值(不推荐)。

3️⃣ 运行诊断命令 有些工具提供诊断模式,可以尝试:

python3 tools/dingtalk_auto_collector.py --check

如果没有 --check 选项,可以查看帮助:

python3 tools/dingtalk_auto_collector.py --help

4️⃣ 尝试简化采集:手动导出聊天记录

:::
钉钉电脑端:打开聊天窗口 -> 右上角“…” -> 聊天记录 -> 多选 -> 导出(部分版本支持)

浏览器开发者工具:抓取钉钉网页版的接口数据(复杂,不推荐)

第三方工具:如 DingTalk Export 等(注意安全风险)
:::

手动导出的聊天记录保存为 .txt 或 .json,然后通过 create-colleague 技能上传文件。直接粘贴也支持

附:备用资源与链接

  • 女娲.skill 仓库:https://github.com/alchaincyf/nuwa-skill

  • dot-skill 仓库:https://github.com/titanwings/colleague-skill

  • 知识蒸馏论文合集:https://github.com/Tebmer/Awesome-Knowledge-Distillation-of-LLMs

“听上去很酷吧?那我们自己能不能玩起来?当然可以。这两个项目都遵循了一个新的技能标准——skills.sh。你不需要懂复杂的代码,只需要在命令行里敲几行命令,就能安装和使用这些思维蒸馏技能。下面我就教大家怎么用 skills.sh 来安装女娲和 dot-skill,以及如何发现更多好玩的技能。”

怎么使用其他skills

https://skills.sh/

使用skills.sh里的技能非常简单,核心就是通过其配套的npx skills命令行工具来安装和管理。整个流程可以概括为:发现 -> 安装 -> 使用

🔍 第一步:发现技能

在安装之前,需要先找到合适的技能。

  • 访问 skills.sh 网站:直接访问 https://skills.sh/ 浏览技能库,它有“All Time(总榜)”、“Trending(趋势榜)”、“Hot(热门榜)”等分类,可以帮助你发现社区里最受欢迎或最新的技能。

  • 使用搜索功能:在网站上通过关键词搜索,可以精准定位特定领域的技能。

🛠️ 第二步:安装技能

npx是 Node.js 自带的包运行工具,无需额外安装即可使用skills这个 CLI 工具。它的基本用法是npx skills add <安装源>

<安装源>有多种指定方式,最常见的是 GitHub 仓库的“拥有者/仓库名”简写格式,不过为了明确安装具体技能,更通用的方法是:拥有者/仓库名/技能名

例如,要安装vercel-labs/skills仓库下的find-skills技能,可以在终端中运行以下命令:

npx skillsaddvercel-labs/skills/find-skills
安装模式命令示例存放位置
项目级 (Project)
(默认推荐)
npx skills add ..../<AI代理名称>/skills/
(位于你当前项目文件夹内)
全局级 (Global)
(所有项目共享)
npx skills add ... -g~/.<AI代理名称>/skills/
(位于你的用户主目录下)
  • 全局安装的区别:和项目级安装不同,如果使用-g参数进行全局安装,Skill 会安装到用户主目录的对应路径,例如C:\Users\Atopos\.claude\skills\C:\Users\Atopos\.cursor\skills\等。这样安装的技能在所有项目中都能生效。

  • Installation Summary(安装概览)

  • 信息:显示将find-skills复制到.\.agents\skills\find-skills路径,并列出兼容的 AI Agent(Amp、Cline、Cursor 等)。你选择自己想要选择的AI工具就好了。

在这个skills.sh(Vercel 技能 CLI)的安装流程里,中间的 “Proceed with installation?” 步骤,会提供两个选项:

  • Yes:确认继续安装当前选中的技能

  • No:取消本次安装,直接退出流程

如果你想跳过这个确认步骤,可以在安装命令里加上-y参数,比如:

npx skills add vercel-labs/skills/find-skills -y

运行完成之后,我们就可以使用find-skills进行管理skills工具了

find-skills是一个技能检索与安装工具,作用类似「AI Agent 的技能商店」,帮你快速查找、安装其他可扩展的技能。

🛠️ 主要使用方式

你可以通过两种方式来使用find-skills

方式具体方法
💬 自然语言交互 (推荐)在你的AI编程助手(如 Claude Code, Cursor)中,直接用中文提问即可。比如:“帮我找一个能处理 PDF 文件的技能”。
⌨️ 直接运行命令如果你想手动搜索,也可以在命令行终端执行npx skills find <搜索关键词>。例如,搜索React性能相关技能:
npx skills find react performance

💡 自然语言使用示例

就像你之前做的那样,在对话中直接说出需求就行。find-skills会为你处理一切。

  • 询问如何做某事

    我怎样才能让我的React 应用跑得更快?这时Agent会执行npx skills find react performance进行搜索。

  • 寻求某项特定能力

    帮我做PR review。这时Agent会执行npx skills find pr review进行搜索。

  • 寻找特定领域的帮助

我需要一个创建变更日志 (changelog)的工具。这时Agent会执行npx skills find changelog进行搜索。

小贴士:为了稳定触发,建议在你的请求中明确包含**skill**这个词,比如“找一个数据分析的skill”,这样AI能更准确地理解你的意图是调用find-skills

⚙️ 第三步:管理技能

技能安装后,可以通过以下命令进行管理:

  • **npx skills list**:列出当前已安装的所有技能。

  • npx skills remove <技能名>:移除一个已安装的技能。

  • skills-lock.json:项目中生成的skills-lock.json文件记录了技能的具体版本。分享这个文件,可以让团队其他成员安装完全相同的技能版本,保证环境一致性。

🚀 第四步:使用技能

技能的触发方式取决于你使用的 AI 编程助手,一般有两种:

  • 自动触发(推荐):这是最常见的方式。安装技能后,AI 助手会根据你的对话内容,自动判断是否需要调用相关技能。比如,安装了一个“日志分析”技能,当你问“分析这个日志文件”时,AI 就会自动激活它,无需手动操作。

  • 手动触发:部分工具或特定技能也支持通过输入“/技能名”这样的命令来手动调用。

💎 总结

总的来说,skills.sh提供了一种标准化、社区驱动的方式来扩展 AI 编程助手的能力。通过npx skills add命令和自动触发机制,你可以轻松地为自己常用的 AI 工具安装和启用各种专业能力,帮助减少重复劳动,提升开发效率。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 5:25:22

用STM32和GY-30(BH1750)做个智能台灯:自动调光与光照数据记录实践

用STM32和GY-30打造智能调光台灯&#xff1a;从硬件搭建到算法优化 在创客圈里&#xff0c;把技术转化为实用产品总能带来双倍成就感。想象一下&#xff1a;当夜幕降临&#xff0c;书桌上的台灯自动亮起适宜亮度的暖光&#xff1b;清晨阳光透过窗帘&#xff0c;灯光又能智能调节…

作者头像 李华
网站建设 2026/4/25 5:20:25

Gemma-4-26B-A4B-it-GGUF高性能技巧:利用Token优化提升推理速度

Gemma-4-26B-A4B-it-GGUF高性能技巧&#xff1a;利用Token优化提升推理速度 1. 理解Token的基本概念 Token是大型语言模型处理文本的基本单位。简单来说&#xff0c;当模型"阅读"一段文字时&#xff0c;并不是直接处理原始字符&#xff0c;而是先将文本拆分成Token…

作者头像 李华
网站建设 2026/4/25 5:19:28

STM32F103C8T6驱动TM1638数码管模块:从原理图到C代码的保姆级解析

STM32F103C8T6驱动TM1638数码管模块&#xff1a;从硬件原理到软件实现的深度解析 在嵌入式开发中&#xff0c;数码管显示模块因其成本低廉、接口简单而广受欢迎。TM1638作为一款集成了数码管驱动、按键扫描和LED控制功能的芯片&#xff0c;通过简单的三线接口即可实现丰富的交互…

作者头像 李华
网站建设 2026/4/25 5:15:59

COM-HPC Mini模块:高性能嵌入式计算新标准

1. COM-HPC Mini模块技术解析在嵌入式计算机领域&#xff0c;模块化设计一直是平衡性能与尺寸的关键解决方案。最新发布的COM-HPC Mini规格标志着高性能计算模块正式进入信用卡尺寸时代。这种9570mm的紧凑设计并非简单缩小尺寸&#xff0c;而是通过精心优化的接口布局实现的工程…

作者头像 李华
网站建设 2026/4/25 5:15:39

e _10常量枚举

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace _10常量枚举 {internal class Program{#region [2] enum枚举的定义和使用//定义枚举public enum Gender { Male 1,Female0}#endregionstatic…

作者头像 李华