TensorFlowの中で NVIDIAのTensorRTを使っていますが、
ソースコードの位置が tensorflow/contrib/tensorrt から tensorflow/compiler の下に移った模様。
ソースコードの位置が tensorflow/contrib/tensorrt から tensorflow/compiler の下に移った模様。
TRTOptimizationPass_Registrarにて、
TRTOptimizationPassを登録しているみたい。
TRTOptimizationPassを登録しているみたい。
static VerboseCustomGraphOptimizerRegistrar TRTOptimizationPass_Registrar( []() { VLOG(1) << "Instantiating CustomOptimizationPass object TensorRTOptimizer"; return new tensorflow::tensorrt::convert::TRTOptimizationPass( "TensorRTOptimizer"); }, ("TensorRTOptimizer"));
SavedModelからTensorRTを使って、TensorFlowを実行する例が、ドキュメントに載っています。
引用します
引用します
# Import TensorFlow and TensorRT import tensorflow as tf import tensorflow.contrib.tensorrt as trt # Inference with TF-TRT `SavedModel` workflow: graph = tf.Graph() with graph.as_default(): with tf.Session() as sess: # Create a TensorRT inference graph from a SavedModel: trt_graph = trt.create_inference_graph( input_saved_model_dir=”/path/to/your/saved/model”, input_saved_model_tags=[”your_saved_model_tags”], max_batch_size=your_batch_size, max_workspace_size_bytes=max_GPU_mem_size_for_TRT, precision_mode=”your_precision_mode”) # Import the TensorRT graph into a new graph and run: output_node = tf.import_graph_def( trt_graph, return_elements=[“your_outputs”]) sess.run(output_node)
trt.create_inference_graphにて、SavedModel から TensorRT inference graph を生成し、
そのモデルを tf.import_graph_def の出力を使って、sess.run で実行するんですね。
そのモデルを tf.import_graph_def の出力を使って、sess.run で実行するんですね。
A Frozen Graphを使う場合も同様に、trt.create_infecence_graphにて、Frozen Graphから読み込んだモデルを変換して、
後は、SavedModelの時と同じ。
後は、SavedModelの時と同じ。
# Import TensorFlow and TensorRT import tensorflow as tf import tensorflow.contrib.tensorrt as trt # Inference with TF-TRT frozen graph workflow: graph = tf.Graph() with graph.as_default(): with tf.Session() as sess: # First deserialize your frozen graph: with tf.gfile.GFile(“/path/to/your/frozen/graph.pb”, ‘rb’) as f: graph_def = tf.GraphDef() graph_def.ParseFromString(f.read()) # Now you can create a TensorRT inference graph from your # frozen graph: trt_graph = trt.create_inference_graph( input_graph_def=graph_def, outputs=[“your_output_node_names”], max_batch_size=your_batch_size, max_workspace_size_bytes=max_GPU_mem_size_for_TRT, precision_mode=”your_precision_mode”) # Import the TensorRT graph into a new graph and run: output_node = tf.import_graph_def( trt_graph, return_elements=[“your_outputs”]) sess.run(output_node)
TensorFlowでGPU使って推論する場合は、TensorRTを使えばかなり速くなりそう。。。