Skip to content

Latest commit

 

History

History
123 lines (113 loc) · 6.96 KB

PerformanceTest.md

File metadata and controls

123 lines (113 loc) · 6.96 KB

测试环境

基于

  • Release版本v0.3
  • 测试平台为windows10 22H2
  • CPU Intel 10400f
  • GPU Nvidia 3060 12G, Nvidia 1660 Super 6G, ARC A770 16G,RX580 8G.

测试定量

  • Jpeg compression 和 Input Simplify 设为 medium
  • 使用debug input 和 debug output
  • 不使用eyebrow参数
  • 帧数限制60fps
  • 英伟达显卡使用TensorRT测试

观察开始后约5-10秒的数值记录, 即不考虑长期缓存效果(没时间测)

测试结果

请注意测试结果仅限参考显卡大概性能,具体性能取决于用户周边配置和显卡驱动。

GPU model VRAM Cache RAM Cache Interpolation SR Frame Rate GPU Usage
A770 sepe_half N/A No No No 33fps 97%
A770 sepe_full N/A No No No 48fps 97%
A770 stan_half N/A No No No 27fps 97%
A770 stan_full N/A No No No 29fps 97%
A770 sepe_half N/A 2GB No No 30fps 82%
A770 sepe_full N/A 2GB No No 43fps 78%
A770 stan_half N/A 2GB No No 30fps 82%
A770 stan_full N/A 2GB No No 23fps 85%
A770 sepe_full N/A No No x2_half 17fps 97%
A770 sepe_full N/A No No x4_half 29fps 97%
A770 sepe_full N/A No No x4_full 25fps 93%
A770 sepe_full N/A No x2_half No 60fps 93%
A770 sepe_full N/A No x3_half No 60fps 85%
A770 sepe_full N/A No x4_half No 60fps 81%
-- -- -- -- -- -- -- --
RX580 sepe_full N/A No No No 12fps 98%
RX580 stan_full N/A No No No 15fps 98%
RX580 sepe_full N/A 2GB No No 11fps 93%
RX580 stan_full N/A 2GB No No 13fps 93%
RX580 stan_full N/A No No x2_half 10fps 97%
RX580 stan_full N/A No No x2_full 10fps 97%
RX580 stan_full N/A No No x4_half 11fps 98%
RX580 stan_full N/A No No x4_full 11fps 98%
RX580 stan_full N/A No x2_half no 22fps 98%
RX580 stan_full N/A No x2_full no 22fps 98%
RX580 stan_full N/A No x3_half no 28fps 98%
RX580 stan_full N/A No x3_full no 28fps 98%
RX580 stan_full N/A No x4_half no 33fps 98%
RX580 stan_full N/A No x4_full no 33fps 98%
-- -- -- -- -- -- -- --
1660s sepe_half No No No No 38fps 95%
1660s sepe_full No No No No 28fps 95%
1660s stan_half No No No No 21fps 96%
1660s stan_full No No No No 12fps 98%
1660s sepe_half 2GB No No No 39fps 95%
1660s sepe_full 2GB No No No 28fps 95%
1660s stan_half 2GB No No No 29fps 96%
1660s stan_full 2GB No No No 12fps 96%
1660s sepe_half 2GB 2GB No No 40fps 75%
1660s sepe_full 2GB 2GB No No 24fps 80%
1660s stan_half 2GB 2GB No No 26fps 83%
1660s stan_full 2GB 2GB No No 12fps 92%
1660s sepe_half No No No x2_half 23fps 96%
1660s sepe_half No No No x2_full 18fps 96%
1660s sepe_half No No No x4_half 23fps 96%
1660s sepe_half No No No x4_full 26fps 97%
1660s sepe_half No No x2_half No 63fps 75%
1660s sepe_half No No x2_full No 63fps 80%
1660s sepe_half No No x3_half No 63fps 65%
1660s sepe_half No No x3_full No 64fps 66%
1660s sepe_half No No x4_half No 64fps 53%
1660s sepe_half No No x4_full No 64fps 60%
-- -- -- -- -- -- -- --
3060 sepe_half No No No No 63fps 62%
3060 sepe_full No No No No 59fps 93%
3060 stan_half No No No No 63fps 80%
3060 stan_full No No No No 31fps 96%
3060 sepe_half 2GB No No No 63fps 60%
3060 sepe_full 2GB No No No 60fps 93%
3060 stan_half 2GB No No No 63fps 76%
3060 stan_full 2GB No No No 33fps 96%
3060 sepe_half 2GB 2GB No No 63fps 58%
3060 sepe_full 2GB 2GB No No 46fps 70%
3060 stan_half 2GB 2GB No No 43fps 62%
3060 stan_full 2GB 2GB No No 27fps 80%
3060 sepe_half No No No x2_half 53fps 85%
3060 sepe_half No No No x2_full 30fps 94%
3060 sepe_half No No No x4_half 49fps 90%
3060 sepe_half No No No x4_full 45fps 90%
3060 sepe_half No No x2_half No 64fps 45%
3060 sepe_half No No x2_full No 63fps 50%
3060 sepe_half No No x3_half No 64fps 35%
3060 sepe_half No No x3_full No 64fps 42%
3060 sepe_half No No x4_half No 64fps 30%
3060 sepe_half No No x4_full No 64fps 40%

已知问题:

  • A770: rife插帧全精度会出现奇怪结果, waifu2x 超分的全精度会输出全绿色
  • RX580 tha3 模型半精度会输出奇怪结果
  • 3060 有时出现奇怪运行时占用上升,猜测为插拔显卡导致的驱动问题。

DirectML 思考

DirectML 允许所有 Windows 显卡设备以及 AIPC 的 NPU 运行此项目,但由于不同设备的 Kernel 在不同精度下实现区别和驱动兼容问题,
导致 DirectML 的运行结果在某个模型的某些精度出现不可用的扭曲结果,且运行性能与对模型的常识理解不相符。

例如适用于本项目插帧的RIFE模型的调用封装经历过一轮迭代,
由原先的n次输入(N=1,C,H,W)独立图像调用RIFE模型生成n个独立结果,
改为输入(N=n,C,H,W)的叠加图像一次性调用RIFE模型得到叠加结果,
此改动下模型获得了稍小的显存占用且在TensorRT实现中获得一定性能提升(虽然改动本意并不在此)。
接着在笔者环境中的因特尔 A770 显卡 DirectML 在RIFE模型迭代后全精度推理结果由原先的符合预期变为扭曲图像,
半精度迭代后模型不仅保持推理结果符合预期,且相较模型迭代前得到了一定性能提升。

再例如笔者测试某 AMD 核显运行时发现其运行THA3的半精度模型时会因为此设备无法运行其中的某个kernel而将kernel运算单独卸载到cpu进行,
但保留了其他大部分能在核显上运行的kernel,由此推理模型需要结果在两个设备间反复,带来了极大的性能倒退。

目前阶段,受限于Python OnnxRuntime api 的支持匮乏(相较C++),使用 python 运行 Directml 无法避免上述问题,
在代码层面无法在运行前做出是否适配的条件判断,也无法在出现kernel卸载到cpu性能剧降时raise错误将运行打断。

所以,DirectML运行本项目的任意模型出现奇怪结果,或不符合预期的性能倒退,都应该属于意料之中
换个模型精度,观察调试输出是否有DirectML黄字警告 通常可以解决大部分问题。
具体某个硬件在DirectML的运行异常修复,已远超本项目的目标范围,请自行验证失效kernel,向硬件厂商和微软求助并期待驱动更新带来解决
(建议买张N卡吧别折腾自己了)。