无法使用 Python 在 GPU (Jetson Nano) 上运行 tflite 模型

Posted

技术标签:

【中文标题】无法使用 Python 在 GPU (Jetson Nano) 上运行 tflite 模型【英文标题】:Cannot run tflite model on GPU (Jetson Nano) using Python 【发布时间】:2019-12-01 21:19:27 【问题描述】:

我有一个量化的 tflite 模型,我想在 Nvidia Jetson Nano 上进行推理基准测试。我使用 tf.lite.Interpreter() 方法进行推理。该过程似乎不在 GPU 上运行,因为 CPU 和 GPU 上的推理时间是相同的。

有没有办法使用 Python 在 GPU 上运行 tflite 模型?

我试图通过设置 tf.device() 方法来强制使用 GPU,但仍然无法正常工作。官方文档中有一些称为 GPU 加速的委托,但我似乎找不到任何适用于 Python 的东西。

with tf.device('/device:GPU:0'):

    interpreter = tf.lite.Interpreter(model_path="model.tflite")

    interpreter.allocate_tensors()

    input_details = interpreter.get_input_details()
    output_details = interpreter.get_output_details()

    input_shape = input_details[0]['shape']
    input_data = np.array(np.random.random_sample(input_shape), dtype=np.uint8)
    interpreter.set_tensor(input_details[0]['index'], input_data)

    start_time = time.time()

    interpreter.invoke()

    elapsed_time = time.time() - start_time
    print(elapsed_time)

    output_data = interpreter.get_tensor(output_details[0]['index'])

【问题讨论】:

【参考方案1】:

根据link,TFLite 不支持 Nvidia GPU

【讨论】:

多解释一些会更好 TFLite 推理库目前不支持 Nvidia GPU。所以你不能在 Nvidia Jetson 上运行这样的 tflite 模型。需要将其转换成 tensorflow 或 tensorRT 模型才能在 Jetson 上执行【参考方案2】:

根据this 最近的帖子,它似乎在 jetson nano 上可用。 但它看起来像自定义构建,请尝试使用它而不是 tensorflow lite。

如果您已经安装了它,如果该版本应该支持 GPU,可能会询问 nvidia developer。

或者您可以通过这种方式安装 nvidia 自定义 tensorflow。

Python 3.6+JetPack4.4

sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev liblapack-dev libblas-dev gfortran
sudo apt-get install python3-pip
sudo pip3 install -U pip
sudo pip3 install -U pip testresources setuptools numpy==1.16.1 future==0.17.1 mock==3.0.5 h5py==2.9.0 keras_preprocessing==1.0.5 keras_applications==1.0.8 gast==0.2.2 futures protobuf pybind11
# TF-2.x
$ sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 tensorflow==2.2.0+nv20.8
# TF-1.15
$ sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v44 ‘tensorflow<2’

Python 3.6+JetPack4.3

$ sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev
$ sudo apt-get install python3-pip
$ sudo pip3 install -U pip
$ sudo pip3 install -U numpy grpcio absl-py py-cpuinfo psutil portpicker six mock requests gast h5py astor termcolor protobuf keras-applications keras-preprocessing wrapt google-pasta
# TF-2.x
$ sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v43 tensorflow==2.1.0+nv20.3
# TF-1.15
$ sudo pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v43 tensorflow==1.15.2+nv20.3

【讨论】:

【参考方案3】:

您的 Jetson Nano 是否支持 OpenCL? 如果是这样,您可以将 OpenCL 委托与 TFLite 一起使用。 https://www.tensorflow.org/lite/guide/build_cmake#opencl_gpu_delegate

【讨论】:

以上是关于无法使用 Python 在 GPU (Jetson Nano) 上运行 tflite 模型的主要内容,如果未能解决你的问题,请参考以下文章

markdown Jetson Tx2的tensorflow-gpu安装

15分钟连接Jetson Nano与K8S,轻松搭建机器学习集群

NVIDIA Jetson之docker容器使用

NVIDIA Jetson之docker容器使用

资源分享jetson xavier nx(aarch64)平台上的pytorch1.8.0+torchvision0.9.0(python=3.6)

Jetson TX2火力全开