NPU专属UNet深度解析:stable-diffusion-1.5-amdnpu的ONNX导出与97.94%算子卸载是如何做到的
【免费下载链接】stable-diffusion-1.5-amdnpu项目地址https://ai.gitcode.com/hf_mirrors/amd/stable-diffusion-1.5-amdnpu点击查看免费下载stable-diffusion-1.5-amdnpu是 AMD 官方发布的、面向AMD NPU的 Stable Diffusion 1.5 文生图模型仓库。它通过ONNX 导出DynamicDispatch 算子融合将 UNet 去噪主干的97.94%计算卸载Offload到 NPU 执行让 RyzenAI 平台也能高效跑图文生成。这篇文章带你逐层拆解这份NPU 专属 UNet是怎么炼成的。一、为什么需要NPU专属的UNetStable Diffusion 由几个核心部件组成各自算力需求差异巨大部件作用在 NPU 管线中的位置Tokenizer Text Encoder把文字提示词变成语义向量CPU 执行text_encoder/model.safetensorsUNet去噪主干占整体 90% 的耗时NPU 执行ONNX 优化版VAE Decoder把潜空间还原成 512×512 图像NPU 执行ONNX 优化版Scheduler控制噪声步长PNDM 调度CPU 配置scheduler/scheduler_config.json普通导出的 ONNX 模型包含成百上千个细粒度算子Conv、MatMul、Relu……NPU 编译器很难把它们高效融合。AMD 的做法是把 UNet 和 VAE Decoder整体打包成一个DynamicDispatch超级算子由 NPU 内部自行完成算子融合CPU 侧只剩轻量胶水。这一设计在 README.md 中被明确说明UNet 和 VAE Decoder 是optimized and structured to run on AMD NPUs而其他组件text encoder、tokenizer、scheduler与 GPU 管线共享。二、仓库结构速览每个文件夹对应管线的一个零件️仓库结构刻意镜像了扩散管线的部件划分├─ scheduler/ # 采样调度器配置PNDMScheduler ├─ text_encoder/ # CLIP ViT-L/14 文本编码器safetensors ├─ tokenizer/ # 分词器词表vocab.json / merges.txt ├─ unet/ # ⭐ NPU 优化版 UNetONNX 运行时状态 └─ vae_decoder/ # ⭐ NPU 优化版 VAE 解码器ONNX 运行时状态打开 unet/config.json 可以看到经典 SD1.5 UNet 配置UNet2DConditionModel输入/输出 4 通道潜变量交叉注意力维度 768正好对应 CLIP 的隐藏层宽度sample_size: 64即 64×64 的潜空间。三、ONNX 导出关键NHWC 布局 BF16 低精度观察 unet/dd/onnx_report.txt 中的张量形状能直接读出导出时的两个关键决策1. NHWC 数据布局。UNet 输入写作[2,64,64,4]——通道在最后N,H,W,C而非深度学习常见的 NCHW。这正是 NPU 硬件友好的布局dd目录中NhwcConv命名的元状态文件如dd_metastate_SD15_Unet_NhwcConv_0-conv_inConv.state也印证了卷积按 NHWC 重排。2. BF16BFLOAT16计算精度。报告中大量输入/输出标注为BFLOAT16CPU 侧仅做CastAvx完成 FLOAT ↔ BFLOAT16 的边界转换。BF16 让 NPU 的矩阵运算吞吐翻倍且无需维护缩放因子非常适合扩散模型这种容忍小误差的推理场景。3. 批量 batch2 的固定形状。UNet 三个输入分别是潜变量 [2, 64, 64, 4] 噪声潜表示 文本嵌入 [2, 77, 768] 77 个 token × 768 维CLIP 输出 时间步 [2, 320] t 的嵌入投影VAE 解码器则从[1,64,64,4]还原出[1,512,512,3]的 RGB 图像见 vae_decoder/dd/onnx_report.txt。固定形状省去了动态 shape 的运行时开销是端侧推理的标准优化手段。四、核心揭秘97.94% 算子卸载是如何做到的打开 unet/dd/onnx_report.txt报告分为上下两半1留在 CPU 的部分仅 13 个胶水算子Not offloaded sum 13 Cast / CastAvx / Concat / Cos / Expand / Mul / Reshape / Sin / Transpose这些正是时间步嵌入timestep embedding的前处理对 t 做正弦/余弦编码、拼接、缩放以及输入输出的数据搬运。它们计算量极小都是向量级操作留在 CPU 上反而更高效。2卸载到 NPU 的部分618 个算子融合成 1 个 DynamicDispatchOffloaded sum 1 ONNX 图中只剩 1 个 DynamicDispatch 节点 Offloaded sum (dd fusion) 618 NPU 内部实际融合了 618 个算子 Offload Ratio (dd fusion) 97.94%这 618 个算子涵盖了 UNet 的全部核心运算报告列出的 NPU 侧算子类型包括算子族含义在 UNet 中的角色SDConv/SDConv_bfp卷积残差块、下/上采样主力SDMHA_bfp/SDFlatMHA多头注意力自注意力 交叉注意力SDGemm/SDGemm_bfp矩阵乘注意力投影、时间步 MLPSDGroupNorm_bfp/SDLayerNorm_bfp归一化每个卷积块前置SDSiluSiLU 激活门控线性单元GLUSDResize_bfp上/下采样空间尺寸变换SDAdd_bfp/SDMul_bfp/SDConcat_bfp逐元素运算残差连接、时间步融合SDCastBf2Bfp/SDCastBfp2Bf精度转换图边界处的格式对齐关键洞察97.94% 这个数字统计的是算子融合视角——ONNX 图里 619 个算子618 个被吸入 NPU 的DynamicDispatchCPU/NPU 之间的数据搬运次数从 600 次骤降到3 进 1 出这才是 NPU 真正跑满的秘诀。3dd/目录里的运行时文件是干什么的unet/dd/ 下还有一组配套文件replaced.onnx被DynamicDispatch替换后的精简 ONNX 图.state/.super/.ctrlpkt/.fconstNPU 编译缓存与元状态避免每次推理重新编译.gitattributes已为.ctrlpkt、.fconst、.state、.super等配置了 Git LFS 大文件存储cache/*.json融合后的算子元数据供运行时校验加载。五、VAE 解码器同样被优化95.7% 卸载✅vae_decoder/dd/onnx_report.txt 显示了同款配方Offloaded sum (dd fusion) 89 Offload Ratio (dd fusion) 95.7% Offloaded Op Types: SDConv / SDAdd / SDResize / SDGemm / SDMHA_VAE / SDGroupNormVAE 只含 89 个算子结构比 UNet 简单得多CPU 侧仅留 4 个算子两次输入输出Transpose和数据转换CastAvx——注意SDMHA_VAE说明该 VAE 解码器还启用了注意力机制SD1.5 配套的 VAE 2.x 风格解码器同样被 NPU 接管。六、CPU NPU 协作的完整推理管线把前面所有信息串起来一次文生图是这样流转的文字提示词 │ tokenizerCPU[tokenizer/vocab.json](https://link.gitcode.com/i/8ab47db3afb3407f06e76f7a93a231e5) ▼ Token 序列 │ CLIP Text EncoderCPU[text_encoder/](https://link.gitcode.com/i/adc876346e5d1d6a46fab96e2b85b4ef) ▼ 文本嵌入 [2,77,768] ──────────────┐ ▼ 时间步 t 噪声潜变量 ──► DynamicDispatchNPU618 算子× N 步 │ ▼ 去噪后潜变量 [2,64,64,4] │ VAE DecoderNPU89 算子 ▼ 成品图像 [2,512,512,3]调度器配置scheduler/scheduler_config.json使用 PNDMScheduler1000 个训练步对应num_train_timesteps推理时按指定步数采样。七、总结这套方案的三个可借鉴经验按硬件布局导模型NHWC BF16 固定形状让导出时就贴合 NPU 硬件特性而非事后修补粗粒度融合优于细粒度映射与其让编译器逐个算子找硬件实现不如把整个网络包进DynamicDispatch由 NPU 运行时做深度融合618 算子 → 1 个节点把脏活留给 CPU正弦编码、转置、精度转换这类轻量向量运算留在 CPUNPU 只干卷积和注意力这种重活卸载率97.94%自然就上来了。如果你想在自己的 RyzenAI 设备上体验这套 NPU 加速管线可以拉取仓库git clone https://gitcode.com/hf_mirrors/amd/stable-diffusion-1.5-amdnpu并阅读 README.md 中指向的 AMD 官方示例工程sd-sandbox快速跑通第一条 NPU 生图链路。赞分享【免费下载链接】stable-diffusion-1.5-amdnpu项目地址https://ai.gitcode.com/hf_mirrors/amd/stable-diffusion-1.5-amdnpu点击查看免费下载相关推荐NPU加速的核心dreamshaper-xl-lightning-amdnpu的UNet ONNX导出与98.13%卸载率优化详解NPU加速的核心dreamshaper xl lightning amdnpu的UNet ONNX导出与98.13%卸载率优化详解 如果你想让 Stablestable-diffusion-1.5-amdnpu项目概览一文读懂AMD NPU专属的Stable Diffusion 1.5优化模型仓库stable diffusion 1.5 amdnpu项目概览一文读懂AMD NPU专属的Stable Diffusion 1.5优化模型仓库 stablesd-turbo-amdnpu 如何实现 98% 算子 NPU 卸载DynamicDispatch 与 metastate 文件完整解码sd turbo amdnpu 如何实现 98% 算子 NPU 卸载DynamicDispatch 与 metastate 文件完整解码 本文带你快速读懂 s创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

StashBase遥测与用量统计透明解读:它到底收集了什么?如何一键关闭?

StashBase遥测与用量统计透明解读:它到底收集了什么?如何一键关闭?

【免费下载链接】stashbase An open-source, local-first writing workspace where you can write with Claude Code and Codex, drawing on your own sources and past work. 项目地址: https://gitcode.com/gh_mirrors/st/stashbase 点击查看 免费下载 StashBase…

2026/10/17 19:24:39 阅读更多 →
CityPersons数据集完全指南:PATH-ViTB行人检测评测背后的标准基准 [特殊字符]

CityPersons数据集完全指南:PATH-ViTB行人检测评测背后的标准基准 [特殊字符]

【免费下载链接】PATH-ViTB 项目地址: https://ai.gitcode.com/OpenGVLab/PATH-ViTB 点击查看 免费下载 如果你正在研究行人属性识别(Pedestrian Attribute Recognition),CityPersons 几乎绕不开——它是 PATH-ViTB 这类模型做行…

2026/10/17 19:24:39 阅读更多 →
用CCR路由让Claude Code一键切换OpenRouter、GLM和Kimi,彻底告别配额焦虑

用CCR路由让Claude Code一键切换OpenRouter、GLM和Kimi,彻底告别配额焦虑

最近在用一个挺有意思的组合:Claude Code 作为终端编程入口,外加一套叫 CCR 的路由配置,把我的请求分发到 OpenRouter、GLM 和 Kimi 三个不同的模型服务上。折腾完以后最大的感受是,以前那种“一个订阅、一个模型、打满全场”的做…

2026/10/17 19:24:39 阅读更多 →

最新新闻

SAP BASIS运维入门:从权限管理到日常巡检的完整实战指南

SAP BASIS运维入门:从权限管理到日常巡检的完整实战指南

简介:这份SAP日常运维BASIS资源是一份面向SAP系统管理员与运维工程师的内训式实用手册,聚焦BASIS日常工作中最常用的操作命令与监控方法,帮助读者快速上手用户权限、集团、数据库、后台作业、打印、系统传输等核心运维任务。资源为单个PDF文档…

2026/10/17 20:09:16 阅读更多 →
教务系统逆向工程:Python实现登录态管理与选课自动化

教务系统逆向工程:Python实现登录态管理与选课自动化

简介:这是一份面向高校学生与Python初学者的教务系统抢课辅助工具包,聚焦于解决热门课程名额秒光场景下的自动化选课需求。资源以轻量级Python脚本为核心,通过模拟浏览器行为实现对教务页面的高频点击与请求提交,适用于SUSTC&…

2026/10/17 20:09:16 阅读更多 →
Python音乐推荐系统:协同过滤与内容相似度的混合推荐实战

Python音乐推荐系统:协同过滤与内容相似度的混合推荐实战

简介:一份实用的Python音乐推荐系统项目资料包,面向有一定Python基础、希望入门推荐系统或对音乐数据分析感兴趣的学习者,源自“跟着迪哥学Python”系列。压缩包内共17个文件,其中Jupyter Notebook用于交互式算法讲解与实验&#…

2026/10/17 20:09:16 阅读更多 →
Flutter device_info插件2021年崩溃原因与安全替代方案

Flutter device_info插件2021年崩溃原因与安全替代方案

1. 这个看似简单的API,为什么在2021年成了Flutter项目里的“高频报错源”2021年那会儿,我接手一个跨平台医疗类App的迭代任务,需求文档里只有一行字:“首页展示设备型号和系统版本”。听起来像呼吸一样自然——不就是调用device_i…

2026/10/17 20:09:16 阅读更多 →
Velodyne VLP-16 激光雷达安装配置全攻略:从开箱到点云可视化

Velodyne VLP-16 激光雷达安装配置全攻略:从开箱到点云可视化

简介:《Velodyne VLP16 用户手册》是面向激光雷达开发者、机器人研究者及自动驾驶入门工程师的官方使用与编程指南,针对 VLP-16 这款实时三维激光雷达,系统讲解其操作原理、设置流程与数据解析方法。资源包共 1 个 docx 文件,约 1…

2026/10/17 20:09:16 阅读更多 →
FLUX 3 Image Klein Base GGUF vs 蒸馏版 Klein:50 步 vs 16 步,微调与生成该选哪个?

FLUX 3 Image Klein Base GGUF vs 蒸馏版 Klein:50 步 vs 16 步,微调与生成该选哪个?

人工智能大模型基础模型本地部署模型量化媒体生成 【免费下载链接】flux-3-image-klein-base-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/flux-3-image-klein-base-GGUF 点击查看 免费下载 FLUX 3 Image Klein Base GGUF 是 Black Forest Labs 开源…

2026/10/17 20:08:15 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →