如何加速 Tensorflow 2 keras 模型进行推理?

     2023-02-16     298

关键词:

【中文标题】如何加速 Tensorflow 2 keras 模型进行推理?【英文标题】:How to speed up Tensorflow 2 keras model for inference? 【发布时间】:2020-03-04 20:50:55 【问题描述】:

所以现在有一个重大更新,从 TensorFlow 1.X 迁移到 2.X。

在 TF 1.X 中,我习惯了一个管道,它帮助我将我的 keras 模型推向生产。 管道:keras (h5) model --> freeze & convert to pb --> optimize pb 这个工作流程帮助我加快了推理速度,我的最终模型可以存储在单个 (pb) 文件中,而不是文件夹中(请参阅 SavedModel 格式)。

如何优化我的模型以在 TensorFlow 2.0.0 中进行推理?

我的第一印象是我需要将我的 tf.keras 模型转换为 tflite,但由于我的 GPU 使用 float32 操作,这种转换会让我的生活更加艰难。

谢谢。

【问题讨论】:

【参考方案1】:

一种方法是使用带有 TensorRT (TF-TRT) (https://github.com/tensorflow/tensorrt) 的 Tensorflow 优化您的模型。但是,在 Tensorflow 2 中,模型保存在文件夹中,而不是单个 .pb 文件中。 TF-TRT 优化模型也是如此,它们存储在一个文件夹中。您可以将模型转换为 TF-TRT,如下所示:

from tensorflow.python.compiler.tensorrt import trt_convert as trt
converter = tf.experimental.tensorrt.Converter(input_saved_model_dir=saved_model_dir)
converter.convert() 
converter.save("trt_optimized_model") # save it to a dir

如果您要求模型需要包含在单个文件中(并且不关心 TF-TRT 提供的优化),您可以将 SavedModel 转换为 ONNX。并使用 ONNX 运行时进行推理。您甚至可以在这里更进一步,将 ONNX 文件转换为 TensorRT (https://developer.nvidia.com/Tensorrt)。这将为您提供一个可以使用 TensorRT 运行的优化文件(请注意,您无法再使用 Tensorflow 运行生成的文件)。

【讨论】:

(AttributeError: 'NoneType' object has no attribute 'get' ) 在 tensorflow 2.1 中加载保存的 .h5 扩展名的 keras 模

】(AttributeError:\\\'NoneType\\\'objecthasnoattribute\\\'get\\\')在tensorflow2.1中加载保存的.h5扩展名的keras模型时【英文标题】:(AttributeError:\'NoneType\'objecthasnoattribute\'get\')whileloadingsavedkerasmodelwith.h5extensionintensorflow2. 查看详情

如何在 tensorflow 2.0 w/keras 中保存/恢复大型模型?

】如何在tensorflow2.0w/keras中保存/恢复大型模型?【英文标题】:Howtosave/restorelargemodelintensorflow2.0w/keras?【发布时间】:2019-09-1823:12:09【问题描述】:我有一个使用新的tensorflow2.0和混合keras和tensorflow制作的大型自定义模型。我想保... 查看详情

如何使用 gpu 并行训练 tensorflow.keras 模型? TensorFlow 版本 2.5.0

】如何使用gpu并行训练tensorflow.keras模型?TensorFlow版本2.5.0【英文标题】:Howtotraintensorflow.kerasmodelsinparallelusinggpu?Tensorflowversion2.5.0【发布时间】:2021-09-2409:04:17【问题描述】:我有以下代码运行我在不同模块中拥有的自定义模型... 查看详情

如何在 Google colab 中更改 Keras/tensorflow 版本?

】如何在Googlecolab中更改Keras/tensorflow版本?【英文标题】:HowtochangeKeras/tensorflowversioninGooglecolab?【发布时间】:2019-01-2913:19:52【问题描述】:我在googlecolaboratory上使用keras/tensorflow,我需要回到以前的版本。问题是当我运行!pipinst... 查看详情

如何在 Tensorflow-2.0 中绘制 tf.keras 模型?

】如何在Tensorflow-2.0中绘制tf.keras模型?【英文标题】:Howtographtf.kerasmodelinTensorflow-2.0?【发布时间】:2019-11-0312:24:22【问题描述】:我升级到Tensorflow2.0,没有tf.summary.FileWriter("tf_graphs",sess.graph)。我正在查看有关此问题的... 查看详情

如何在 Tensorflow 2.0 + Keras 中进行并行 GPU 推理?

】如何在Tensorflow2.0+Keras中进行并行GPU推理?【英文标题】:HowtodoparallelGPUinferencinginTensorflow2.0+Keras?【发布时间】:2020-03-1523:49:56【问题描述】:让我们从我刚开始接触TensorFlow和一般深度学习的前提开始。我有使用tf.Model.train()、... 查看详情

macos安装tensorflow+keras

因为显示不支持GPU加速,所以本文没有相关配置。1.安装Homebrew,macOS不可或缺的套件管理器.   /usr/bin/ruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"2.安装python   2.1检查是否 查看详情

如何在 Python 2.7.18 中安装 Keras 和 Tensorflow?

】如何在Python2.7.18中安装Keras和Tensorflow?【英文标题】:HowtoinstallKerasandTensorflowinPython2.7.18?【发布时间】:2021-03-0804:08:20【问题描述】:我有一个需要使用Python2的作业我还需要Keras和Tensorflow。我应该降级到哪个版本每个包,以... 查看详情

如何检查 Keras 后端是 tensorflow 还是 theano

】如何检查Keras后端是tensorflow还是theano【英文标题】:HowtocheckifKerasbackendistensorflowortheano【发布时间】:2021-06-1512:33:57【问题描述】:我想检查后端keras正在使用的代码。是tensorflow还是theano?我怎样才能得到这个?代码here使用K._... 查看详情

如何在 Tensorflow 2.x Keras 自定义层中使用多个输入?

】如何在Tensorflow2.xKeras自定义层中使用多个输入?【英文标题】:HowtousemultipleinputsinTensorflow2.xKerasCustomLayer?【发布时间】:2020-09-0512:37:11【问题描述】:我正在尝试在Tensorflow-Keras的自定义层中使用多个输入。用法可以是任何东... 查看详情

如何使现有的 tensorflow 2.4 安装使用 GPU

】如何使现有的tensorflow2.4安装使用GPU【英文标题】:howtomakeexistingtensorflow2.4installationtouseGPU【发布时间】:2021-08-1119:19:29【问题描述】:我已经成功安装了python3.7.6、tensorflow2.4.1和keras2.4.0。代码也可以工作。我的电脑上有Nvidia显... 查看详情

TensorFlow 2.0 Keras:如何为 TensorBoard 编写图像摘要

】TensorFlow2.0Keras:如何为TensorBoard编写图像摘要【英文标题】:TensorFlow2.0Keras:HowtowriteimagesummariesforTensorBoard【发布时间】:2019-08-2014:56:27【问题描述】:我正在尝试使用TensorFlow2.0设置图像识别CNN。为了能够分析我的图像增强,我... 查看详情

如何强制 keras 使用 tensorflow GPU 后端

】如何强制keras使用tensorflowGPU后端【英文标题】:HowtoforcekerastousetensorflowGPUbackend【发布时间】:2021-11-2804:09:22【问题描述】:我知道这是热门问题之一,但到目前为止,没有一个解决方案对我有用。我正在运行用tensorflowv1.13.1和... 查看详情

如何在 Google Colab 中使用 TensorFlow 2.0 将 tf.Keras 模型转换为 TPU?

】如何在GoogleColab中使用TensorFlow2.0将tf.Keras模型转换为TPU?【英文标题】:Howtoconverttf.KerasmodeltoTPUusingTensorFlow2.0inGoogleColab?【发布时间】:2019-08-2717:46:41【问题描述】:由于TF2.0没有tf.contrib层,我如何转换我的模型以在TPU上运行... 查看详情

tensorflow的keras与原声keras几点比较

tensorflow的keras与原声keras几点比较,不是全面的比较,因为只是就使用时候发现的差异!使用函数式API时:1.定义模型模型时,用到输入的张量,也就是给Input的tensor赋值为你的inputs,在编译时给定target_tensors的值;这种方式自然... 查看详情

如何确保 Keras 使用 GPU 和 tensorflow 后端?

】如何确保Keras使用GPU和tensorflow后端?【英文标题】:HowensurethatKerasisusingGPUwithtensorflowbackend?【发布时间】:2018-10-0200:17:01【问题描述】:我在Paperspace云基础架构上创建了虚拟笔记本,后端使用了TensorflowGPUP5000虚拟实例。当我开... 查看详情

windows1064bit下安装tensorflow+keras+vs2015+cuda8.0gpu加速

...f0写在前面的话2016年11月29日,GoogleBrain工程师团队宣布在TensorFlow0.12中加入初步的Windows支持。但是目前只支持64位,而且Python版本为3.5版本,需要CUDA8.0。之前Tensorflow对windows的支持并不好,导致如果需要使用它,需要转移到Linux... 查看详情

无法在 Keras 2.1.0(使用 Tensorflow 1.3.0)中保存的 Keras 2.4.3(使用 Tensorflow 2.3.0)中加载 Keras 模型

】无法在Keras2.1.0(使用Tensorflow1.3.0)中保存的Keras2.4.3(使用Tensorflow2.3.0)中加载Keras模型【英文标题】:UnabletoloadKerasmodelinKeras2.4.3(withTensorflow2.3.0)thatwassavedinKeras2.1.0(withTensorflow1.3.0)【发布时间】:2020-12-2416:59:27【问题描述】:... 查看详情