您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[未知机构]:生成式模型在GPU上的高效部署 - 发现报告
当前位置:首页/其他报告/报告详情/

生成式模型在GPU上的高效部署

2023-04-27-未知机构李***
生成式模型在GPU上的高效部署

稳定扩散推理优化 刘翳明英伟达 是什么让一个好的生成模型 模式覆盖 快/Diversit 抽样y 生成对抗网络(甘斯) 高质量的样品 扩散模型 常常需要1000年代网络评估 通过去噪扩散GAN解决生成学习三难困境,ICLR2022 样本的多样性 甘斯扩散真实的数据 扩散模型击败甘斯在图像合成 扩散过程 简单的正向扩散过程缓慢地将数据映射到噪声 反向去噪过程将噪声映射回训练扩散模型的数据 数据噪音 ￿0￿￿ 稳定扩散推理管道 ClipText 编码器 文本 嵌入U-Net 嘈杂的样品开始 调度器 VAE 图像解码器 步伐 •ClipText文本编码。输入:文本。 输出:77个令牌嵌入向量,每个向量为768个维度 •U-Net调度器在信息(潜在)空间中逐渐执行去噪。 输入:文本嵌入和起始多维数组(数字的结构化列表,也称为张量)噪声组成。 输出:处理信息数组 •Autoencoder译码器使用处理后的信息数组绘制最终图像。输入:处理后的信息数组(维度:(4,64 ,64)) 输出:生成的图像(尺寸:(3,512,512),即(红/绿/蓝,宽度,高度)) 剪辑 LayerNorm尼 U-NET VAE CONV InstanceNormCONV 古拉斯 前馈12 LayerNormGELU 前馈 123米参数 尼古拉斯 CONV InstanceNorm 3 搞同性恋的 CONV LayerNorm尼古拉斯 前馈 LayerNormMHCA 前馈LayerNorm前馈GELU 前馈 BiasaddResaddReshapeTranpose 859米参数 前馈 16 CONV InstanceNorm 时髦的 CONV InstanceNorm14 时髦的 49米参数 浮点运算下的测量: •B=1 •H=W=64 从潜伏状态:样本的高斯噪声随机种子 为分类器, 免费指导 用户提示 调度器 更新/降噪潜伏 2bx4xHxW,潜在的 浮点操作: 0.02714x10 视频文本编码器 负面的提示:如果没有提供空令牌 重复T=50次 浮点运算: 83.976x10 步伐:t净 U - 浮点 操作:1.67952x10 2bx77x768、文本 嵌入 2bx4xHxW,预测噪声 输出图像:Bx3x8Hx8W Bx4xHxW VAE图像解 最后运用潜 码器浮点 操作: 2.53933x10 MatMul 重塑转置 MatMul 重塑转置 重塑 重塑 MatMul 重塑转置重塑 转置 MatMul Mul Softmax MatMul SD特定模式 LayerNorm 尼古拉斯 前馈 LayerNorm MHCA 前馈 LayerNorm前馈GELU 前馈 BiasaddResaddReshapeTranpose TensorRT是怎样处理注意事项(自8.0年) 输入张量 髓鞘 ForeignNode 前馈 LayerNorm •检测到尼古拉斯模式 •尝试卸载MHA及其周围结构 髓鞘尽可能多的 利用髓鞘 添加 投 MatMul 重塑转置 投 MatMul 重塑转置 重塑 重塑 投 MatMul重塑转置重塑 转置 MatMul MulSoftmax投投 MatMul GEMM 乙状结 乙状结 乙状结 乙状结 Mul Mul Mul Mul Gemm Gemm Gemm Gemm •删除多余的Castonnx节点以帮助TensorRT髓鞘后端编译器将模式识别为MHA(TRT8.5.2之后不需要) •合并重复的时髦的行动 在简化简化后 要获取层信息json,您可以使用trtexec(https://github.com/NVIDIA/TensorRT/tree/main/samples/trtexec)构建引擎,启用--exportLayerInfo=layerinfo.json--proprofileVerbosity=detailflags。 剪辑 FP32LN插件 泰爱泰党髓 FP32LN 插件 GELU 前馈 LayerNorm 尼古拉斯 前馈 LayerNorm GroupNorm 插件 U-NET InstanceNorm 搞同性恋的 CONV CONV 3 FP16LN插件 GroupNorm 插件 VAE 泰爱泰党本地 FMHA插件 12FP16LN 插件 FlashSplitGelu插件 尼古 前馈 LayerNorm MHCA 前馈 LayerNorm 前馈 GELU 前馈 16 FMHCA插件 FP16LN插件 BiasaddResaddReshapeTranpose Seqlen2spatial插件 GroupNorm 插件 GroupNorm 插件 InstanceNorm搞同性恋的CONV CONV LayerNorm 泰爱泰党髓鞘 CONV CONV InstanceNorm搞同性恋的 CONV 尼古拉斯前馈 泰爱泰党本地 InstanceNorm 搞同性恋的 14 V MatMul 重塑转置 注意事项 添加 K MatMul 重塑转置 重塑 重塑 问 MatMul重塑转置重塑 转置 MatMul Mul Softmax MatMul LayerNorm 插件 MatMul_Fused_ QKV 重塑 Fused_MHA_Plugin 转换注意力障碍 •融合多头自我关注(https://github.com/NVIDIA/TensorRT/tree/main/plugin/m ultiHeadFlashAttentionPlugin) V MatMul 重塑转置 Encoder_hid den_states K MatMul 重塑转置 问 添加 MatMul 重塑转置 重塑 重塑转置 MatMulMul Softmax 重塑 MatMul Encoder_hid den_states LayerNorm 插件 MatMul_Fused_ KV MatMul 重塑 重塑 Fused_MHCA_Plugin •多头交叉融合的关注(https://github.com/NVIDIA/TensorRT/tree/main/plugin/multiHeadCr ossAttentionPlugin) 归一化 重塑 分手InstanceNormalization成原始的行动 InstanceNormalization 子 DivMul添加 重塑Mul添加 ReduceMean 战俘 ReduceMean 添加√6 用GroupNorm插件替换整个模式 https://github.com/NVIDIA/TensorRT/tree/main/plugin/groupNormPlugin Mul乙状结肠 输入张量 ReduceMean LayerNorm也件所采用,因为Myelin后端编译器没有用于优化MHA模式。 LayerNorm 子战俘 ReduceMean 添加 √6 https://github.com/NVIDIA/TensorRT/tree/main/plugin/layerNormPlugin DivMul添加 其他小型融合(SplitGeLUSeqLen2Spatial) 添加 DivMul添加 ReduceMean 子 战俘ReduceMean添加 添加 LayerNorm 插件 MatMul 添加 √6MatMul Output_shape_tensor 添加SplitGeLUMatMul SeqLen2Spatial 添加 添加 重塑 转置 MatMul Conv Output_shape_tensor Conv *此外,我们还使用SplitGelu插件来融合Erf周围的操作和seq2space插件来融合biasadd+residualadd+reshape+转置模式 片 片 Mul Mul Div 小块土 Mul DemoDiffusion(https://github.com/NVIDIA/TensorRT/tree/main/demo/Diffusion) 解耦设计和OOP的风格 Models.py 提供特定于模型的onnx图优化策略 •基础优化器类和基本模型类 •剪辑,UNetVAE具体 优化策略 Utilities.py 提供基本实用程序和非DL 相关功能 •基本引擎类 •调度器 •Cuda公用事业 demo_diffusion.py 演示的主要入口点 •CLI接口 •主DemoDiffusion类,用于启动所有三个模型的end2end优化,构建各自的引擎,最后使用性能分析支持运行推理 例如,运行一个简单的演示 LD_PRELOAD=$[PLUGIN_LIBS]python3demo-diffusion.py“樱花期间富士山的美丽照片”--hf-token=$HF_TOKEN-v DemoDiffusion基准 优化级别unetx50 OOTB(的) 2288.14毫秒 髓鞘 (RemoveCastRemoveInstanceNorm) 1282.32毫秒 以上 fMHAfMHCA 1047.26毫秒 以上 LayerNorm 979.72毫秒 以上 GroupNorm 874.51毫秒 以上 SplitGeLU 856.47毫秒 Seq2Spatial 以上图优化 805.97毫秒 0805年预览功能 792.26毫秒 优化级别剪辑 OOTB(的) 3.01毫 秒 髓鞘 (RemoveCastRemoveInstanceNorm) 2.96毫 秒 以上 LayerNorm 4.38毫 秒 优化级别vae OOTB(的) 20.73毫秒 髓鞘(RemoveCast 20.97毫秒 RemoveInstanceNorm) 以上 GroupNorm 18.54毫秒 优化后的管线主要由Devtech中国团队NikitaK和JulienD开发。 TensorRT8.5.2.2、批=1,图像大小=512x512, GPU=a100-80作为pcie——直布罗陀海峡 管道总时间 815.18毫秒 支持高达1024x1024的动态形状图像生成 TensorRT8.5.2,批处理=1,图像大小=512x512,GPU=L40 优化级别 剪辑unetx50vae管道 所有的插件 2.42毫秒 973.56毫秒 23.98毫秒 999.98毫秒 TensorRT8.5.1、批=1,图像大小=512x512,GPU=T4 优化级别剪辑unetx50vae管道 所有的插件 9.70毫秒 4536.414毫秒 104.944毫秒 4651.088毫秒 TensorRT8.5.1,批处理=1,图像大小=512x512,GPU=A10 优化级别剪辑unetx50vae管道 所有的插件 5.14毫秒 1892.144毫秒 40.180毫 秒 1937.497毫秒 优化级别剪辑unetx50 TensorRT8.5.1,批处理=1,图像大小=512x512,GPU=A30 vae管道 所有的插件 4.97毫秒 1368.08毫秒 30.34毫秒 1403.43毫秒