标签: tensorrt

Jetson NX 使用 TensorRT 优化张量流模型

我正在尝试加速分段模型(unet-mobilenet-512x512)。我将我的tensorflow模型转换为具有FP16精度模式的tensorRT。而且速度比我预想的要低。在优化之前,我使用 .pb 冻结图进行推理时的速度为 7FPS。在tensorRT oprimization之后我有14FPS。

这是 Jetson NX 网站上的基准测试结果,
您可以看到,unet 256x256 分割速度为 146 FPS。我想,在最坏的情况下,我的unet512x512的速度应该慢4倍。

在此输入图像描述

这是我使用 TensorRt 优化张量流保存模型的代码:

import numpy as np
from tensorflow.python.compiler.tensorrt import trt_convert as trt
import tensorflow as tf

params = trt.DEFAULT_TRT_CONVERSION_PARAMS
params = params._replace(
    max_workspace_size_bytes=(1<<32))
params = params._replace(precision_mode="FP16")
converter = tf.experimental.tensorrt.Converter(input_saved_model_dir='./model1', conversion_params=params)
converter.convert()

def my_input_fn():
  inp1 = np.random.normal(size=(1, 512, 512, 3)).astype(np.float32)
  yield [inp1]

converter.build(input_fn=my_input_fn)  # Generate corresponding TRT engines
output_saved_model_dir = "trt_graph2"
converter.save(output_saved_model_dir)  # Generated engines will be saved.


print("------------------------freezing the graph---------------------")


from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2

saved_model_loaded …
Run Code Online (Sandbox Code Playgroud)

tensorflow tensorrt nvidia-jetson

6
推荐指数
1
解决办法
2650
查看次数

导入错误:没有名为“tensorrt”的模块

我使用 Debian 安装在我的 VM 上安装了 TensorRT。如果我运行“dpkg -l | grep TensorRT”,我会得到预期的结果:

ii  graphsurgeon-tf                                             5.0.2-1+cuda10.0                           amd64        GraphSurgeon for TensorRT package
ii  libnvinfer-dev                                              5.0.2-1+cuda10.0                           amd64        TensorRT development libraries and headers
ii  libnvinfer-samples                                          5.0.2-1+cuda10.0                           all          TensorRT samples and documentation
ii  libnvinfer5                                                 5.0.2-1+cuda10.0                           amd64        TensorRT runtime libraries
ii  python3-libnvinfer                                          5.0.2-1+cuda10.0                           amd64        Python 3 bindings for TensorRT
ii  python3-libnvinfer-dev                                      5.0.2-1+cuda10.0                           amd64        Python 3 development package for TensorRT
ii  tensorrt                                                    5.0.2.6-1+cuda10.0                         amd64        Meta package of TensorRT
ii  uff-converter-tf                                            5.0.2-1+cuda10.0                           amd64        UFF converter for TensorRT package
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试在 python …

linux python-3.x tensorrt

5
推荐指数
2
解决办法
8155
查看次数

如何仅使用一个 GPU 进行 tensorflow 会话?

我有两个 GPU。我的程序使用 TensorRT 和 Tensorflow。

当我只运行 TensorRT 部分时,没问题。当我与 Tensorflow 部分一起运行时,出现以下错误

[TensorRT] ERROR: engine.cpp (370) - Cuda Error in ~ExecutionContext: 77 (an illegal memory access was encountered)
terminate called after throwing an instance of 'nvinfer1::CudaError'
  what():  std::exception
Run Code Online (Sandbox Code Playgroud)

问题是当 Tensorflow 会话开始时如下

self.graph = tf.get_default_graph()
self.persistent_sess = tf.Session(graph=self.graph, config=tf_config)
Run Code Online (Sandbox Code Playgroud)

它将两个 GPU 加载为

2019-06-06 14:15:04.420265: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 6965 MB memory) -> physical GPU (device: 0, name: Quadro P4000, pci bus id: 0000:04:00.0, compute capability: 6.1)
2019-06-06 14:15:04.420713: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] …
Run Code Online (Sandbox Code Playgroud)

python cuda tensorflow tensorrt

5
推荐指数
1
解决办法
2673
查看次数

如何使用 trt.TrtGraphConverterV2 (或其他建议)将张量流模型转换为 TensorRT 优化模型?

我遇到了有关 TensorRT 和 Tensorflow 的问题。我正在使用 NVIDIA jetson nano,并尝试将简单的 Tensorflow 模型转换为 TensorRT 优化模型。我使用的是tensorflow 2.1.0和python 3.6.9。我尝试使用NVIDIA 指南中的代码示例:

from tensorflow.python.compiler.tensorrt import trt_convert as trt
converter = trt.TrtGraphConverterV2(input_saved_model_dir=input_saved_model_dir)
converter.convert()
converter.save(output_saved_model_dir)
Run Code Online (Sandbox Code Playgroud)

为了测试这一点,我从tensorflow网站上获取了一个简单的例子。要将模型转换为 TensorRT 模型,我将模型保存为“savedModel”并将其加载到 trt.TrtGraphConverterV2 函数中:

#https://www.tensorflow.org/tutorials/quickstart/beginner

import tensorflow as tf
from tensorflow.python.compiler.tensorrt import trt_convert as trt
import os

#mnist = tf.keras.datasets.mnist

#(x_train, y_train), (x_test, y_test) = mnist.load_data()
#x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  #tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10)
])

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)

model.compile(optimizer='adam', loss=loss_fn, metrics=['accuracy']) …
Run Code Online (Sandbox Code Playgroud)

python tensorflow tensorrt nvidia-jetson-nano

5
推荐指数
1
解决办法
1万
查看次数

将 onnx 转换为 tensorrt 模型时找不到 ScatterND 插件

能够将 pytorch 模型转换为 onnx 并使用 pytorch 验证 onnx 输出。它工作正常。但是当我尝试将 onnx 转换为 tensorrt 引擎时,它在 onnx 解析器失败并返回此错误。

[TensorRT] 错误:INVALID_ARGUMENT:getPluginCreator 找不到插件 ScatterND 版本 1

Onnx 版本:1.6.0 Tensorrt 版本:7.1.3.4

任何人都可以在这里提供帮助,如何在 python 中添加 ScatterND 插件以及如何使用它?有没有其他方法可以解决这个问题?

提前致谢。

tensorrt onnx jetson-xavier

5
推荐指数
0
解决办法
568
查看次数

优化 Tensorflow 目标检测模型 V2 Centernet 模型进行评估

centernet_resnet50_v2_512x512_kpts_coco17_tpu-8我正在Nvidia Tesla P100上使用张量流对象检测模型来提取边界框关键点,以检测视频中的人物。使用tensorflow.org 上的预训练数据,我每秒能够处理大约 16 帧。有什么方法可以提高该模型的评估速度吗?以下是我一直在研究的一些想法:

  • 修剪模型图,因为我只检测 1 种类型的对象(人)
    • 没有成功地做到这一点。在构建模型时更改label_map似乎并没有提高性能。
  • 对输入大小进行硬编码
    • 还没有找到一个好的方法来做到这一点。
  • 使用TensorRT等工具将模型编译为优化形式
    • 最初尝试转换为 TensorRT 并没有任何性能改进。
  • 批量预测
    • 看起来预训练模型的批量大小硬编码为 1,到目前为止,当我尝试使用 来更改它时,model_builder我发现性能有所下降。
    • 我的 GPU 利用率约为 75%,所以我不知道这里是否有很多收获。

object-detection tensorflow tensorrt object-detection-api tensorflow2.0

5
推荐指数
1
解决办法
1073
查看次数

如何可视化 TensorRT 网络图?

我们当前的流程:Conversation of tf2-> onnx-> TensorRT(所有16328位选项)

是否有像https://github.com/lutzroeder/netron (或任何其他方式)这样的现有工具来查看 的输出模型TensorRT

neural-network tensorrt

5
推荐指数
1
解决办法
4861
查看次数

如何使用具有 1:N 输入/输出的 Triton 服务器“集成模型”从大图像创建补丁?

我正在尝试将非常大的图像输入 Triton 服务器。我需要将输入图像分成补丁并将补丁一个一个地输入到张量流模型中。图像大小可变,因此每次调用的补丁数 N 都是可变的。

我认为调用以下步骤的 Triton 集成模型可以完成这项工作:

  1. 用于创建补丁的 Python 模型(预处理)
  2. 细分模型
  3. 最后另一个python模型(后处理)将输出补丁合并成一个大的输出掩码

但是,为此,我必须编写一个config. pbtxt具有1:NN:1关系的文件,这意味着集成调度程序需要多次调用第二步,并使用聚合输出调用第三步。

这是可能的,还是我需要使用其他技术?

python tensorflow tensorrt tritonserver

5
推荐指数
1
解决办法
222
查看次数

升级到 TensorRT 7 后加载或构建 cuda 引擎偶尔会崩溃

我正在尝试在 C++ 中运行 TensorRT 推理。有时,当尝试构建新引擎或从文件加载引擎时,代码会崩溃。它偶尔会发生(有时运行没有任何问题)。我按照以下步骤准备网络:

initLibNvInferPlugins(&gLogger.getTRTLogger(), "");

if (mParams.loadEngine.size() > 0)
{
    std::vector<char> trtModelStream;
    size_t size{0};
    std::ifstream file(mParams.loadEngine, std::ios::binary);

    if (file.good())
    {
        file.seekg(0, file.end);
        size = file.tellg();
        file.seekg(0, file.beg);
        trtModelStream.resize(size);
        file.read(trtModelStream.data(), size);
        file.close();
    }
    IRuntime* infer_Runtime = nvinfer1::createInferRuntime(gLogger);
    if (mParams.dlaCore >= 0)
    {
        infer_Runtime->setDLACore(mParams.dlaCore);
    }


    mEngine = std::shared_ptr<nvinfer1::ICudaEngine>(
                infer_Runtime->deserializeCudaEngine(trtModelStream.data(), size, nullptr), samplesCommon::InferDeleter());

    gLogInfo << "TRT Engine loaded from: " << mParams.loadEngine << endl;

    infer_Runtime->destroy();
    if (!mEngine)
    {
        return false;
    }
    else
    {
        return true;
    }
}

auto builder = SampleUniquePtr<nvinfer1::IBuilder>(nvinfer1::createInferBuilder(gLogger.getTRTLogger())); …
Run Code Online (Sandbox Code Playgroud)

c++ pytorch tensorrt onnx

5
推荐指数
1
解决办法
1191
查看次数

如何将 Detectron2 模型转换为另一个深度学习框架?

我想将 detectorron2 模型转换为另一个深度学习框架,即 PyTorch、TensorFlow 或 ONNX。我该如何进行这种转换?

cfg我可以使用(我相信这意味着 detectorron2 行话中的配置)对 detectorron2 模型进行推理。

目标是最终在 Nvidia Jetson 主板上运行 Detectron2 模型。因此,目标是转换模型。

tensorflow pytorch tensorrt onnx detectron

5
推荐指数
1
解决办法
3606
查看次数