大语言模型系列(9): SD3.5 Medium模型端侧部署使用指南 本项目基于QAI_AppBuilderhttps://github.com/qualcomm/qai-appbuilder模型下载地址 (包含对应的上下文二进制文件)https://www.aidevhome.com/?id51第一部分Windows PC 平台使用本部分介绍如何在搭载Snapdragon X Elite的AI PC上通过qai_appbuilder的全流程 in-process HTP 方案运行 SD3.5 Medium 图像生成1.1压缩包内容sd3.5_qnn_for_windows-8380/ ├── sd3.5_medium_pc.py # PC 推理入口脚本 ├── time_text_embed.pt # timestep 嵌入权重 (~32 MB) ├── requirements.txt # Python 依赖 ├── README.md / README_PC.md ├── libs/ # QNN 运行时库已包含无需额外下载 │ ├── QnnHtp.dll HTP 后端 │ ├── QnnHtpPrepare.dll HTP 预处理 │ ├── QnnHtpV73Stub.dll v73 DSP stub │ ├── QnnHtpNetRunExtensions.dll 运行扩展 │ ├── QnnSystem.dll 系统库 │ ├── Genie.dll │ └── ... 其他运行时文件 ├── serialized_binaries/ # QNN 模型文件 │ ├── text_encoder.serialized.bin (~238 MB) CLIP-L 文本编码器 │ ├── text_encoder_2.serialized.bin (~1.4 GB) CLIP-G 文本编码器 │ ├── transformer.serialized.bin (~2.3 GB) MMDiT 去噪网络 │ └── vae_decoder.serialized.bin (~102 MB) VAE 解码器 ├── tokenizer/ # CLIP-L tokenizer │ ├── vocab.json │ ├── merges.txt │ ├── special_tokens_map.json │ └── tokenizer_config.json └── tokenizer_2/ # CLIP-G tokenizer ├── vocab.json ├── merges.txt ├── special_tokens_map.json └── tokenizer_config.json 路径自动适配sd3.5_medium_pc.py同时兼容两种目录结构扁平结构新版默认serialized_binaries/、tokenizer/、libs/等直接位于脚本同级目录。注意总大小约4.6 GB含模型权重文件和 QNN 运行时库。1.2环境准备硬件Snapdragon X EliteHTP v73或更高内存建议 32GB RAMtransformer 模型约 2.3GB加载到 HTP 上下文中Python3.12 (x86_64 emulated on ARM64)QNN Libs已包含在压缩包中脚本会自动定位无需手动配置1.3资源下载与准备下载模型文件SD3.5 Medium 骁龙 X Elite 平台 (8380) 模型下载SD3.5 Medium 骁龙 X2 Elite 平台 (8480) 模型下载将下载的压缩包解压到工作目录下。压缩包已包含所需的 QNN 运行时库libs/目录无需额外下载。1.4安装依赖① 创建虚拟环境推荐python -m venv venv venv\Scripts\activate② 安装 Python 依赖使用压缩包中的requirements.txtpip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txtrequirements.txt内容torch2.4.1 transformers4.44.0 diffusers0.34.0 Pillow9.0.0 numpy1.24.0 qai_appbuilder2.46.0.11.5 QNN Libs说明QNN运行时库已包含在压缩包的libs/目录中脚本会自动检测使用无需手动配置路径。脚本的查找顺序为优先尝试脚本目录/models/libs带models/子目录的旧版结构未找到则使用脚本目录/libs扁平结构 / 新版默认libs/目录包含以下关键文件QnnHtp.dll— HTP 后端库推理核心QnnHtpPrepare.dll— HTP 预处理QnnHtpV73Stub.dll— v73 DSP stubQnnHtpNetRunExtensions.dll— 运行时扩展QnnSystem.dll— 系统库Genie.dll— Genie 框架库1.6运行推理基本用法python sd3.5_medium_pc.py --prompt A cat holding a sign that says hello world完整参数示例python sd3.5_medium_pc.py ^ --prompt A beautiful sunset over the ocean ^ --negative_prompt blurry, low quality ^ --steps 20 ^ --cfg 3.5 ^ --seed 42 ^参数说明参数默认值说明--promptA cat...正向提示词--negative_prompt负向提示词--steps20去噪步数5 步快速测试20 步高质量--cfg3.5CFG 引导强度--seed42随机种子相同种子 可复现结果--outputoutput.png输出图片路径1.7推理流程如下1. [CPU] 加载 tokenizer time_text_embed 权重 scheduler 2. [一次性] 通过 qai_appbuilder 加载 4 个 QNN 模型到 HTP 上下文 (text_encoder / text_encoder_2 / vae_decoder / transformer) 3. [NPU] CLIP-L CLIP-G 文本编码正向 负向 prompt 4. [CPU] 初始化随机 latent 噪声 5. [循环 N 步去噪]: a. [CPU] 计算时间步嵌入 (temb) b. [NPU] transformer 条件推理 → 噪声预测 c. [NPU] transformer 无条件推理 → 噪声预测 d. [CPU] CFG 合并 调度器更新 latent 6. [NPU] VAE 解码 → 像素图像 7. [CPU] 后处理 → 保存 PNG (1024×1024)第二部分Android 平台使用本部分介绍如何通过Host PC Android 设备协作完成 SD3.5 Medium 图像生成Host PCLinux/Windows负责 tokenizer 编解码、调度器计算、前后处理Android设备NPU通过 ADB 调用qnn-net-run简单推理执行 4 个 QNN 模型推理支持两个平台版本版本DSP架构SOC ID芯片平台GEN4V7969Snapdragon (Sun)GEN5V8187Snapdragon 8 Elite2.1压缩包内容SD3.5 Medium 骁龙 8 至尊版平台 (8750) 模型下载SD3.5 Medium 第五代骁龙 8 至尊版平台 (8850) 模型下载sd3.5/ ├── sd3.5_medium_inference_android.py # 推理入口脚本 ├── qnn-net-run # QNN CLI 推理工具 (aarch64-android) ├── time_text_embed.pt # 时间嵌入权重 (~32MB) ├── htp_config.json # HTP 配置参考 ├── htp_backend.json # HTP 后端配置参考 ├── libs/ # QNN 运行时库 (~300MB, 约71个 .so) │ ├── libQnnHtp.so │ ├── libQnnHtpV79Stub.so # GEN4: V79 / GEN5: V81 │ ├── libQnnHtpV79CalculatorStub.so │ ├── libQnnHtpV79Skel.so │ ├── libQnnSystem.so │ └── ... (其他 QNN .so 库) ├── serialized_binaries/ # GEN4 用 serialized_binaries/ │ │ # GEN5 用 serialized_binaries_gen5/ │ ├── text_encoder.serialized.bin ~238MB │ ├── text_encoder_2.serialized.bin ~1.4GB │ ├── transformer.serialized.bin ~2.3GB │ └── vae_decoder.serialized.bin ~105MB ├── tokenizer/ # CLIP tokenizer 文件 └── tokenizer_2/ # CLIP tokenizer_2 文件注意总大小约4.3GB主要是模型权重文件。2.2环境准备安装 ADB# Ubuntu / Debian sudo apt install android-tools-adb # 验证安装 adb version创建 Python 虚拟环境并安装依赖# 创建虚拟环境 python3 -m venv sd35_env source sd35_env/bin/activate # Linux / macOS # sd35_env\Scripts\activate # Windows # 安装依赖 pip install -i https://mirrors.aliyun.com/pypi/simple/ torch transformers diffusers Pillow numpy2.3连接设备# 连接设备后验证 adb devices # 输出示例 # List of devices attached # 24e74add device ← 设备已连接 # 多设备场景指定目标设备 export ANDROID_SERIAL24e74add确保设备状态显示为device不是unauthorized或offline。2.4首次运行含设备初始化首次运行需要加--setup参数脚本会自动将库和模型推送到设备/data/local/tmp/sd35/。# 激活虚拟环境 source sd35_env/bin/activate # 进入工作目录 cd sd3.5_qnn_for_android_gen4/sd3.5/ # GEN4 # cd sd3.5_qnn_for_android_gen5/sd3.5/ # GEN5 # 首次运行推送文件 推理 python sd3.5_medium_inference_android.py \ --setup \ --prompt A cat holding a sign that says hello world⚠首次推送耗时约 5-10 分钟需推送约 4GB 文件到设备。推送完成后脚本会自动开始推理流程。2.5日常使用后续推理首次设置完成后无需再加--setup# 基本用法 python sd3.5_medium_inference_android.py --prompt A beautiful sunset over the ocean # 指定步数和种子 python sd3.5_medium_inference_android.py \ --prompt A futuristic city at night \ --steps 30 \ --seed 123 \ --output future_city.png # 使用负向提示词 python sd3.5_medium_inference_android.py \ --prompt Portrait of a woman, oil painting style \ --negative_prompt blurry, low quality, distorted \ --guidance_scale 5.0 # 强制重新推送文件到设备 python sd3.5_medium_inference_android.py \ --force_setup \ --prompt 测试提示词完整参数列表参数默认值说明--promptA cat...正向提示词--negative_prompt负向提示词--steps20去噪步数--guidance_scale3.5CFG 引导强度--seed42随机种子--outputoutput.png输出图片路径--setupFalse首次运行推送文件到设备--force_setupFalse强制重新推送所有文件--model_dir.tokenizer所在目录--bins_dirserialized_binaries模型 bin 文件目录--device_base/data/local/tmp/sd35设备端工作目录2.6集成Apk说明整体的编译后端库流程请查看项目代码qai-appbuilder/samples/android/模型调用推理ava_com_example_DDColor_MainActivity_DDColor(...) { float* inputBuffer (float*)env-GetDirectBufferAddress(j_inputBuffer); float* outputBuffer (float*)env-GetDirectBufferAddress(j_outputBuffer); // 1. 指定后端 (例如libQnnHtp.so 表示在DSP上运行) std::string backend_lib_path libs_dir /libQnnHtp.so; std::string system_lib_path libs_dir /libQnnSystem.so; // 2. 初始化模型 libAppBuilder.ModelInitialize(MODEL_NAME, model_path, backend_lib_path, ...); // 3. 执行推理 libAppBuilder.ModelInference(MODEL_NAME, ...); // 4. 拷贝结果 memcpy(outputBuffer, outputBuffers.at(0), outputSize[0]); // ... 释放资源 ... return 0;

相关新闻

最新新闻

ChatGPT对话记录自动识别身份证/银行卡/手机号?用这4个正则+NER模型组合拳,准确率99.7%(含开源代码)

ChatGPT对话记录自动识别身份证/银行卡/手机号?用这4个正则+NER模型组合拳,准确率99.7%(含开源代码)

更多请点击: https://intelliparadigm.com 第一章:ChatGPT敏感信息保护方法 在与ChatGPT等大型语言模型交互过程中,用户无意中输入的API密钥、数据库凭证、个人身份信息(PII)或企业内部代码片段可能被模型缓存或日志记…

2026/7/3 15:03:23
HASL喷锡适配边界、细分应用领域与表面处理横向选型

HASL喷锡适配边界、细分应用领域与表面处理横向选型

很多硬件工程师选型陷入惯性思维,无论产品密度、组装方式、可靠性等级一律默认选用 HASL 喷锡,出现细间距 QFP 桥连、BGA 贴装偏移、高频损耗超标等批量问题;或是盲目选用沉金抬高物料成本,造成设计冗余浪费。本文界定 HASL 适配优…

2026/7/3 15:03:23
Codex 多 Agent 实战:并行跑 3 个 PR 任务 + AGENTS.md 配置模板全解

Codex 多 Agent 实战:并行跑 3 个 PR 任务 + AGENTS.md 配置模板全解

Codex 多 Agent 协作实战:并行任务、AGENTS.md 配置与团队工作流全解 发布日期:2026-07-01 | 话题:OpenAI Codex 多 Agent 协作 | 适用版本:Codex CLI v0.142.5 / Codex Web OpenAI Codex 是由 OpenAI 于 2025 年推出的编程智能体…

2026/7/3 15:03:23
STM32与SGM61103实现高效DC-DC降压电源设计

STM32与SGM61103实现高效DC-DC降压电源设计

1. 项目背景与核心器件选型在嵌入式系统开发中,电源管理一直是硬件设计的关键环节。这次我们要实现的DC-DC降压电源转换方案,采用了STM32F103RC作为主控芯片,搭配171010550型号的DC-DC转换器(经查证应为SGM61103的误写&#xff09…

2026/7/3 15:03:23
容器运行时怎么选?openeuler/k8s-install中Docker、Containerd与CRIO对比测试

容器运行时怎么选?openeuler/k8s-install中Docker、Containerd与CRIO对比测试

容器运行时怎么选?openeuler/k8s-install中Docker、Containerd与CRIO对比测试 【免费下载链接】k8s-install Cloud native infrastructuer (base on Kubernetes) multiple baseline maintain/installation/configuratgion/security-update, online/offline package …

2026/7/3 15:03:23
iSulad Rust扩展高级应用:构建企业级容器管理平台的完整方案

iSulad Rust扩展高级应用:构建企业级容器管理平台的完整方案

iSulad Rust扩展高级应用:构建企业级容器管理平台的完整方案 【免费下载链接】isula-rust-extensions Rust extensions for iSulad 项目地址: https://gitcode.com/openeuler/isula-rust-extensions 前往项目官网免费下载:https://ar.openeuler.o…

2026/7/3 14:58:22

周新闻

月新闻