1

我一直在尝试使用 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

注意:运行之间存在细微差异

4

2 回答 2

2

我在 NVIDIA GTX 1070 和 NVIDIA V100 上使用 TF 官方 Resnet50 模型、FP32 和 FP16 进行了测试。这次我没有使用 TensorRT 或任何优化。使用了 TF 模型

MODEL = https://github.com/tensorflow/models/tree/master/official/resnet
FP32 = http://download.tensorflow.org/models/official/20181001_resnet/savedmodels/resnet_v2_fp32_savedmodel_NCHW.tar.gz
FP16 =  http://download.tensorflow.org/models/official/20181001_resnet/savedmodels/resnet_v2_fp16_savedmodel_NCHW.tar.gz
Model Extracted and RUN
docker run  --net=host --runtime=nvidia  -it --rm -p 8900:8500 -p 8901:8501 
 -v /home/alex/coding/IPython_neuralnet/:/models/ tensorflow/serving:latesgpu 
  --model_config_file=/models/resnet50_fp32.json or resnet50_fp16.json
Results =

这是结果。似乎没有速度差异/超过某个点的 CUDA 内核数;并且这里的 FP16 模型运行速度没有两倍快。也许我需要使用 TensorRT 转换它

https://docs.google.com/spreadsheets/d/1Sl7K6sa96wub1OXcneMk1txthQfh63b0H5mwygyVQlE/edit?usp=sharing

在此处输入图像描述

于 2019-03-25T08:38:37.497 回答
0

一些事情可以帮助从根本上导致缺乏加速。

您可以检查有多少节点转换为 TRT。

使用最新版本的 TF(1.13 或 nightly)来利用所有最近添加的功能。

配置文件(例如 nvprof 或 tf 分析器)以查看推理工作负载的瓶颈。

TF-TRT 用户指南可能会有所帮助:https ://docs.nvidia.com/deeplearning/dgx/integrate-tf-trt/index.html

这个 repo 中还有一堆例子:https ://github.com/tensorflow/tensorrt

于 2019-03-16T05:18:12.203 回答