我一直在尝试使用 trt.create_inference_graph 将我的 Keras 翻译的 Tensorflow 保存模型从 FP32 转换为 FP16 和 INT8,然后将其保存为可用于 TensorFlow 服务的格式。代码在这里 - https://colab.research.google.com/drive/16zUmIx0_KxRHLN751RCEBuZRKhWx6BsJ
但是,使用我的测试客户端运行它,我发现时间没有变化。
我将不同型号的笔记本电脑与 NVIDIA V100 32 GB 和我的 8Gb 1070 GTX 卡进行了比较。我尝试减少和增加输入形状以检查记忆效果。总的来说,我认为,除了 32 GB 内存的优势(不仅仅是加载模型,而是处理更多帧而不会耗尽内存)V100 似乎没有加速;我特别想在 FP16 模式下将速度提高一倍。不确定 Keras 是否转换了 TF 模型,或者模型的复杂性或设计是否有作用。
以下是测试详细信息https://docs.google.com/spreadsheets/d/1Sl7K6sa96wub1OXcneMk1txthQfh63b0H5mwygyVQlE/edit?usp=sharing
Model 4 Keras converted TF sering
Model 6 TF Graph simple optimisation
Model 7 TF Graph simple optimisation + Weight Qunatization
Model 8 TF Graph simple optimisation + Weight + Model Qunatization
Model 9 Based on Model 4 frozen; NVIDIA Tensor RT Optimisation FP 32
Model 10 Based on Model 4 frozen; NVIDIA Tensor RT Optimisation FP 16
Model 11 Based on Model 4 frozen; NVIDIA Tensor RT Optimisation INT 8
No of Runs 1
Model NVIDIA GTX 1070 NVIDIA V100 32 GB
4 0.13 0.13
6 0.14 0.15
7 0.15 0.14
9 0.13 0.12
10 0.13 0.12
11 0.13 0.12
No of runs :10
4 1.15 0.81
6 1.34 1.16
7 1.15 1.27
9 1.23 0.82
10 1.22 0.83
11 1.22 0.85
FP32 - V100 -无优化
('Label', 'person', ' at ', array([409, 167, 728, 603]), ' Score ', 0.968112)
('Label', 'person', ' at ', array([ 0, 426, 512, 785]), ' Score ', 0.8355837)
('Label', 'person', ' at ', array([ 723, 475, 1067, 791]), ' Score ', 0.7234411)
('Label', 'tie', ' at ', array([527, 335, 569, 505]), ' Score ', 0.52543193)
('Time for ', 10, ' is ', 0.7228488922119141)
FP 32 与基于 TensorFlow 的优化 - TransformGraph
没有权重或模型量化
('Time for ', 10, ' is ', 0.6342859268188477)
FP ?? 使用基于 TensorFlow 的优化 - +Weight Quantized- TransformGraph
权重量化后;模型大小为 39 MB!!(从 ~149 MB)但是时间是两倍('Time for ', 10, ' is ', 1.201113224029541)
模型量化 - 不起作用(至少使用 TF Serving)
使用 NVIDIA TensorRT 优化(colab notebook)
FP16 - v100
('Label', 'person', ' at ', array([409, 167, 728, 603]), ' Score ', 0.9681119)
('Label', 'person', ' at ', array([ 0, 426, 512, 785]), ' Score ', 0.83558357)
('Label', 'person', ' at ', array([ 723, 475, 1067, 791]), ' Score ', 0.7234408)
('Label', 'tie', ' at ', array([527, 335, 569, 505]), ' Score ', 0.52543193)
('Time for ', 10, ' is ', 0.8691568374633789)
INT 8
('Label', 'person', ' at ', array([409, 167, 728, 603]), ' Score ', 0.9681119)
('Label', 'person', ' at ', array([ 0, 426, 512, 785]), ' Score ', 0.83558357)
('Label', 'person', ' at ', array([ 723, 475, 1067, 791]), ' Score ', 0.7234408)
('Label', 'tie', ' at ', array([527, 335, 569, 505]), ' Score ', 0.52543193)
('Time for ', 10, ' is ', 0.8551359176635742)
优化片段 https://colab.research.google.com/drive/1u79vDN4MZuq6gYIOkPmWsbghjunbDq6m
注意:运行之间存在细微差异