1美元的图像生成:200万参数扩散模型,如何被塞进树莓派Pico 2
1美元的图像生成200万参数扩散模型如何被塞进树莓派Pico 2一块售价一美元的芯片520KB的内存一个比指甲盖还小、比手机听筒芯片还便宜的单片机。它生成了128×128的人像一次只要十秒。不是云端模型不是微服务不是「调用API」而是这一小块硅片上、在你眼皮底下、从纯粹噪声里长出一张人脸。作者把它发表出来时只说了一句能跑在一个$1微控制器上比什么都让我惊讶。为什么因为把AI「塞进单片机」过去十年被认为是不可行的。直到有人证明这件事的瓶颈从来不是芯片而是我们对「最小模型能干什么」的想象力。一、一美元也能思考先看这个「它」到底是什么。一位独立开发者cpldcpu把三个东西组合在一起一块RP2350 单片机树莓派 Pico 2 的那颗芯片零售价约一美元、一块Waveshare RP2350-Plus 板、一块Pimoroni VGA 板本质是一个电阻分压式 DAC 加一个 VGA 接口。整个系统配上模型和推理代码体积小于 4MB运行在双核 Cortex-M33 上常驻内存只有 520KB。它做的事生成128×128 RGB 的人脸图像每张耗时10–20 秒然后通过 VGA 显示在显示器上或者通过 USB 串口把图像流出来。你可能会说128×128、十秒一张这也太小、太慢了。但请把这句话放在正确的坐标里这张图的每一帧都不是云端算好再传下来的而是这颗一美元芯片现场、实时、从零噪声里推理出来的。5 分钟前它还只是一堆随机的像素噪声5 个扩散步之后一张人脸已经从里面浮现。二、反直觉第一课帮大模型的优化同样必要于微模型这是整篇文章最「反共识」的一句话也是作者反复强调的发现哪怕模型已经小到这个程度许多当初为了帮大模型省算力而发明的优化一样都不能少。在一般直觉里模型越小越简单、越不需要「花哨的技术」。于是社区里大量 MNIST 玩具扩散项目——用远远多于 200 万的参数——连一张说得过去的手写数字图都生成不出连贯结果。而 Pico-Faces 用两百万参数、一万倍更小的空间生成了复杂的真实人脸。答案不在于「拼命压小」而在于把每一项为大模型准备的工程优化都原封不动地搬到微模型上。Latent diffusion、flow matching、classifier-free guidance、AdaLN、量化、权重复用、权重量化蒸馏……这些词我们在一篇「端侧大模型部署」的文章里会看到在一篇「一美元单片机」的文章里同样一个不少。这彻底改写了「模型大小决定技术路线复杂度」的直觉。顺着这个发现我们一点一点拆开这颗一美元的「AI 心脏」。三、Latent Diffusion一分为二十四图像生成的第一课不是直接生成像素而是先在「潜在空间」里思考。128×128×3 的像素空间被一个VAE变分自编码器压缩了24 倍变成 16×16×8 的潜在表示。生成过程在这个小小的 latent 里发生最后再用 VAE 的解码器把它还原成图像。这是 Stable Diffusion 开创、如今扩散模型的标准范式但在一个单片机上的变体有个非常反直觉的细节编码器被刻意做得远大于解码器。为什么作者的思路是让一个「大脑袋」编码器去学习一种能被「小解码器」最优化还原的潜在表示。反正推理时只需要解码器编码器只在训练时用那就不妨让编码器吞下所有复杂度换来一个极致精简的、片上可跑的解码器——用的视觉感知损失是 LPIPS。为此作者训了两个 VAE一个是 115K 参数的「快速/精简」版一个是 494K 参数的「高质量」版。四、25步的成长Flow Matching把噪声一步步养成脸潜在空间里发生的是扩散模型。但作者弃用了那些「包装得异常复杂的数学语言」DDPM、DDIM改用flow matching流匹配这个更直观的框架。它的数学简单到可以一句话讲完把一张干净图像x₁和纯噪声x₀做线性插值得到第t步的中间态x_t t·x₁ (1-t)·x₀训练模型去预测「走向干净图像的速度」v x₁ - x₀推理时不一步跳到位而是沿v走一小步迭代几次让精细细节逐渐浮现作者还试过用 reflowing自蒸馏压缩步数但最终放弃——因为 8 个扩散步已经足够快、质量够好没必要牺牲这一层。于是我们看到那张著名的「浮现序列」图同一个 seed 下随着 K步数从 0 到 8噪声→轮廓→五官→清晰人脸一步步演化。扩散模型在单片机上的行为和大模型完全一致——这正是作者想证明的「它确实是一台真正的扩散模型」的强证据。五、CFG 双跑把质量翻倍的「作弊」图中垂直方向的变量是wguidance weight引导权重和 K步数的组合。w 来自Classifier-Free GuidanceCFG这是对图像质量提升最大的一招条件输出v_cond按目标类别如「微笑的女性」和无条件输出v_null只有声明的无类别各跑一遍最终v v_null w·(v_cond − v_null)本质是把「朝目标类别的方向」从「去噪方向」里分离出来并放大代价是处理时间翻倍收益是质量显著提升——演示中w 越大五官越清晰、越「人」w 太小则糊成一团。用翻倍的时间换一次质变在十秒级的单片机上依然划算。六、DiT 而非 U-Net64 个 token 的思考在主干网络上作者做了一个一开始「违背直觉」的选择他本以为卷积 U-Net 在小设备上更合适结果实测证明transformerDiT更干净也更强。图像 latent 被切成 8×8 64 个 patch token每个 token 维度 128。作者特别提到正弦位置编码比可学习位置编码表现更好learned embedding 反而不好用。DiT 有两种规格快速版 8 层高质量版更深。这里还有个原创小改动——把激活函数换成 ReLU²。七、ReLU²稀疏性就是省电ReLU² 本身是从大模型Google 的 Primer 架构借鉴来的。它的妙处在于激活变得稀疏——很多神经元输出干脆是 0。而在单片机上这意味着推理引擎可以跳过这些无意义的计算整体节省约 15% 的推理时间。对云上大模型15% 只是电费账单上的数字对一美元、520KB、没有散热片的单片机15% 是能不能在实时性和功耗上过关的分界线。八、AdaLN-Zero 与查表条件控制被「折叠」成一张表条件时间步 t 类别通过AdaLN-Zero注入——一个学习到的偏置和缩放作用在归一化层上。因为只需要 8 个时间步 × 5 个类别组合很有限作者干脆把训练好的 AdaLN MLP 整个丢弃把偏置直接存成查找表。这是把「神经网络控制器」物化为「查表」从存储和计算上双省。作者还遗憾地补了一句如果早点知道 AdaLN-single还能把表进一步压小。这是一个「还有优化余地」的注脚说明这个项目离物理极限还远。九、压缩的艺术int8 与「量化伤疤」模型用浮点训练通过训练后量化PTQ把权重压到int8。但这趟旅程不轻松——尤其是大的那个模型量化损伤很明显。部分损伤靠「量化感知自蒸馏」来修复先用量化后的模型去指导学生重新对齐把被量化压坏的能力「回填」回来。作者坦诚还有大量优化空间——「有很多方法可以提升比如把模型训练成更对量化友好、更好地控制激活分布。」这说明这个项目的性能是对当前工程的落地上限而非理论上限。最终两个模型的全部权重快速版约2.6MB、高质量版约4.0MB含 DiT 权重 1.66M / 2.48M 字节、条件表、VAE 解码器、位置编码、归一化表等高质量版连同推理引擎一起仍能塞进 4MB 的 flash。十、推理引擎DMA 流水与双核 300MHz最后也是最能体现「单片机限下炼金术」的部分——推理引擎。权重复用DiT 每一层要处理 64 个 token同一个权重会被复用 64 次。因此推理瓶颈不在「读取权重的带宽」而在于计算本身。DMA 流水权重用DMA 从 flash 流式加载到 ping-pong双缓冲在上一层的计算还没结束时下一层的权重已经在路上。因为是串行流的天然适合这种「边算边载」的模式。指令集榨取能用 Cortex-M33 intrinsics 的地方都用例如 SMLAD 做并行乘法。双核满速两个核都跑到300MHz超频自默认 150MHz。15 倍提速经过多轮迭代优化处理时间从最初实现到现在总共提升了约 15 倍达到约 5 秒一张再叠加更大的模型和 CFG又回到约 20 秒。二十秒对云端是「真慢」对一美元单片机上的扩散模型是「奇迹」。作为收尾的细节图像靠 USB 虚拟串口 自定协议控制在 VGA 输出上用Floyd-Steinberg 抖动来降低 12-bit 输出的色带感生成过程中还用 DMA 渲染低分辨率的 latent 预览几乎不影响推理那块 SRAM 在推理时被反复用作激活和权重的 scratchpad——每一字节都被用到了刀刃上。十一、重新定价扩散模型的最小身位看完这一路值得停下来重新想想**「扩散模型的最小身位」**这件事。过去我们对图像生成的默认心智模型几乎等同于「大模型 大显存 云端」。一张图要 512×512、要几亿参数、要几 GB 显存、要 GPU。Pico-Faces 做的事情相当于把这三行的每一项都打上了问号不是几亿参数是两百万。约等于 Flux 的四千分之一比不少 MNIST 玩具动画的参数量还小。不是几 GB 显存是 520KB 的 SRAM。不是云端是一美元、一颗随时买得到的单片机。而它生成的是真实、可信、有五官的人类面孔——不是抽象的色块。而且它的「质量问题」Gen-FID 53.8浮点参考 52.4表明即便在如此极端的约束下扩散模型的「去噪本质」依然成立它不是被强行凑出来的「用模板拼脸」而是一台货真价实的扩散机。这一轮最大的启发不是「Pico 也能生成图」而是当「足够小」的模型能完成「足够复杂」的任务时问题就只剩工程——而工程会一路缩小到消费级硬件上消除对云端的依赖。当图像生成、语音识别、甚至一部分语言能力都能塞进一美元芯片时所谓「AI 必须联网」「本地永远跑不动 AI」这些行业默认假设就都在被这一小块硅片一点点重新定价。而作者在结语里留给我们的是一句平静的提醒这还远没到极限——AdaLN-single 还没用全量化感知训练还没做架构还能再挖。一美元的芯片才刚刚开始证明它能做什么。结语把一块一美元的单片机变成一台会画画的人工智能这个工程本身最大的价值不在于它能跑多大的模型而在于它重新定义了「跑模型」这件事的物理前提。从今往后当有人再对你说「本地设备跑不动 AI」你可以先想一想一个实验20 秒一美元一张从噪声里长出来的人脸。