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

     2023-02-16     130

关键词:

【中文标题】如何在 Tensorflow 2.0 + Keras 中进行并行 GPU 推理?【英文标题】:How to do parallel GPU inferencing in Tensorflow 2.0 + Keras? 【发布时间】:2020-03-15 23:49:56 【问题描述】:

让我们从我刚开始接触 TensorFlow 和一般深度学习的前提开始。

我有使用 tf.Model.train()、两个可用 GPU 训练的 TF 2.0 Keras 样式模型,我希望缩减推理时间。

我使用非常方便的 tf.distribute.MirroredStrategy().scope() 上下文管理器训练了跨 GPU 分布的模型

mirrored_strategy = tf.distribute.MirroredStrategy()

with mirrored_strategy.scope():
  model.compile(...)
  model.train(...)

两个 GPU 都得到了有效利用(即使我对结果的准确性不太满意)。

我似乎找不到类似的策略来使用 tf.Model.predict() 方法在 GPU 之间分配推理:当我运行 model.predict() 时,我(显然)只从两个 GPU 中的一个获得使用。

是否有可能在两个 GPU 上建立相同的模型,并为它们并行提供不同的数据块?

有些帖子建议如何在 TF 1.x 中执行此操作,但我似乎无法在 TF2.0 中复制结果

https://medium.com/@sbp3624/tensorflow-multi-gpu-for-inferencing-test-time-58e952a2ed95

Tensorflow: simultaneous prediction on GPU and CPU

我对这个问题的心理斗争主要是

TF 1.x 基于tf.Session(),而会话隐含在 TF2.0 中,如果我理解正确,我阅读的解决方案为每个 GPU 使用单独的会话,我真的不知道如何在 TF2 中复制它.0 我不知道如何在特定会话中使用model.predict() 方法。

我知道这个问题可能没有很好地表述,但我将其总结为:

有人知道如何在 TF2.0 中的多个 GPU 上运行 Keras 风格的 model.predict()(以并行方式推断每个 GPU 上的不同批次数据)吗?

提前感谢您的帮助。

【问题讨论】:

tensorflow.org/tutorials/distribute/save_and_load 这可能会有所帮助。我遇到了同样的问题,我的问题似乎源于我将模型保存为 hdf5 格式,在将模型加载回分布式启动时不支持这种格式 【参考方案1】:

尝试在tf.distribute.MirroredStrategy 中加载模型并使用更大的batch_size

mirrored_strategy = tf.distribute.MirroredStrategy()

with mirrored_strategy.scope():
    model = tf.keras.models.load_model(saved_model_path)

result = model.predict(batch_size=greater_batch_size)

【讨论】:

这不适用于 model.predict_on_batch(greater_batch_size) 对吧?

如何在 tfds.load() 之后在 TensorFlow 2.0 中应用数据增强

】如何在tfds.load()之后在TensorFlow2.0中应用数据增强【英文标题】:HowtoapplydataaugmentationinTensorFlow2.0aftertfds.load()【发布时间】:2019-08-0401:58:15【问题描述】:我正在关注thisguide。它展示了如何使用tfds.load()方法从新的TensorFlow数据集... 查看详情

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

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

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

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

如何更改 gpt-2 代码以使用 Tensorflow 2.0?

】如何更改gpt-2代码以使用Tensorflow2.0?【英文标题】:Howtoaltergpt-2codetoworkwithTensorflow2.0?【发布时间】:2020-11-3015:25:43【问题描述】:我正在尝试使用gpt-2生成文本。即使在运行Tensorflow2.0codeupgradescript之后,我也会遇到兼容性错误... 查看详情

如何在 tensorflow 2.0 中更改用于训练和评估的图像数量?

】如何在tensorflow2.0中更改用于训练和评估的图像数量?【英文标题】:Howtochangethenumberofimagestousefortrainingandevaluatingintensorflow2.0?【发布时间】:2019-09-1713:35:32【问题描述】:Fashion-MNIST数据集自动返回60,000张图像用于训练和10,000张... 查看详情

如何在 Tensorflow 2.0 中使用 K.get_session 或如何迁移它?

】如何在Tensorflow2.0中使用K.get_session或如何迁移它?【英文标题】:HowtouseK.get_sessioninTensorflow2.0orhowtomigrateit?【发布时间】:2020-02-0322:31:35【问题描述】:def__init__(self,**kwargs):self.__dict__.update(self._defaults)#setupdefaultvaluesself._ 查看详情

如何在 TensorFlow 2.0 中使用 Dataset.window() 方法创建的窗口?

】如何在TensorFlow2.0中使用Dataset.window()方法创建的窗口?【英文标题】:HowtousewindowscreatedbytheDataset.window()methodinTensorFlow2.0?【发布时间】:2019-08-2102:17:54【问题描述】:我正在尝试使用TensorFlow2.0创建一个数据集,该数据集将返回... 查看详情

如何在多个标签问题中为 tensorflow 模型设置类权重?

】如何在多个标签问题中为tensorflow模型设置类权重?【英文标题】:Howtosetclassweightsfortensorflowmodelinmultiplelabelsquestion?【发布时间】:2021-08-2122:45:38【问题描述】:我尝试训练一个模型来通过图像预测多个标签。输出是一个包含... 查看详情

如何使用 Tensorflow 2.0 数据集在训练时执行 10 次裁剪图像增强

】如何使用Tensorflow2.0数据集在训练时执行10次裁剪图像增强【英文标题】:Howtoperform10CropImageAugmentationattrainingtimeusingTensorflow2.0Dataset【发布时间】:2020-01-0309:59:33【问题描述】:我正在使用TensorflowDatasetAPI并从TFRecord文件中读取数... 查看详情

如何在 Fashion_mnist (Tensorflow) 中设置具有特定类别的子集

】如何在Fashion_mnist(Tensorflow)中设置具有特定类别的子集【英文标题】:HowtosetasubsetwithspecificcategoryinFashion_mnist(Tensorflow)【发布时间】:2022-01-2215:04:24【问题描述】:现在我已经在Fashion_mnist中使用了原始数据:https://www.tensorflow.org... 查看详情

如何在 tensorboard 中显示 Tensorflow 2.0 中的 tf.data.Dataset.map 子图?

】如何在tensorboard中显示Tensorflow2.0中的tf.data.Dataset.map子图?【英文标题】:Howtoshowintensorboardthetf.data.Dataset.mapsubgraphinTensorflow2.0?【发布时间】:2019-12-2222:53:34【问题描述】:根据documentation,tf.data.Datasets在图形模式下工作(在Eage... 查看详情

在具有急切执行的 TensorFlow 2.0 中,如何计算特定层的网络输出的梯度?

】在具有急切执行的TensorFlow2.0中,如何计算特定层的网络输出的梯度?【英文标题】:InTensorFlow2.0witheager-execution,howtocomputethegradientsofanetworkoutputwrtaspecificlayer?【发布时间】:2019-10-2200:35:23【问题描述】:我有一个使用InceptionNet... 查看详情

如何在 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 2.0 中实现自定义损失函数

】在TensorFlow2.0中实现自定义损失函数【英文标题】:ImplementcustomlossfunctioninTensorflow2.0【发布时间】:2019-12-1606:06:29【问题描述】:我正在构建时间序列分类模型。数据非常不平衡,所以我决定使用加权交叉熵函数作为我的损失... 查看详情

在 TensorFlow 2.0 的自定义训练循环中应用回调

】在TensorFlow2.0的自定义训练循环中应用回调【英文标题】:ApplyingcallbacksinacustomtrainingloopinTensorflow2.0【发布时间】:2020-04-1318:33:38【问题描述】:我正在使用TensorflowDCGAN实施指南中提供的代码编写自定义训练循环。我想在训练循... 查看详情

如何修复 Tensorflow 2.0 中的“OperatorNotAllowedInGraphError”错误

】如何修复Tensorflow2.0中的“OperatorNotAllowedInGraphError”错误【英文标题】:howtofix"OperatorNotAllowedInGraphError"errorinTensorflow2.0【发布时间】:2020-01-1306:40:55【问题描述】:我正在从officialtutorials学习tensorflow2.0。我可以从下面的... 查看详情

如何在 Keras 中的预训练 InceptionResNetV2 模型的不同层中找到激活的形状 - Tensorflow 2.0

...中的预训练InceptionResNetV2模型的不同层中找到激活的形状-Tensorflow2.0【英文标题】:HowtofindtheshapesofactivationsinthedifferentlayersofapretrainedInceptionResNetV2modelinKeras-Tensorflow2.0【发布时间】:2020-02-0613:37:09【问题描述】:我已经加载了incept... 查看详情

TensorFlow 2.0 在单 GPU 上训练模型

】TensorFlow2.0在单GPU上训练模型【英文标题】:Tensorflow2.0trainmodelonsingleGPU【发布时间】:2020-11-2706:19:03【问题描述】:我想在单个NVIDIA显卡(RTX2080super)上训练一个顺序tensorflow(版本2.3.0)模型。我正在使用以下代码sn-p来构建和... 查看详情