CUDA优化001. TensorRT加速SD的优化
给看到的TensorRT加速AI推理2023 Hackson视频做个笔记Video。
SD模型结构:
- Unet
- ControlNet
- VAE
- Schedule latent(未入图)
优化方法:
步骤 | 优化操作 | 时延效果 | 分析 |
---|---|---|---|
1 | Export unet and controlnet to trt engine | 2600ms→634ms | 使用GPU执行 |
2 | Use batch size 2 | 634ms→479ms | 多batch增加计算密度 |
3 | Remove duplicate compute in graph | 479ms→472ms | 消除冗余计算 |
4 | Put the scheduler update logic in trt | ||
5 | Fuse controlnet, unet and scheduler logic to 1 engine | 472ms→450ms | trt8.6以后可以自动找出模型并行的部分,使用mutilstream并行执行 |
6 | Cuda graph | 450ms→425ms | 单个CPU操作可发射多个GPU操作,减少KernelLaunch |
7 | Use plugins | 425ms→404ms | MHA融合算子等 |
8 | Multi stream | 404ms→393ms | 将单个engine划分成3个可并行的engine,在第5步自动并行基础上提高并行度 |
9 | Use trt 9.1 | 393→390ms | MHA在9.1有更快实现 |