当前位置: 首页 > 知识库问答 >
问题:

python - torch_tensorrt 如何设置动态的 batch_size?

左丘涵畅
2023-04-27

torch_tensorrt 如何设置动态的 batch_size?

我有一个 pytorch 的 resnet50 网络,我想用 tensorrt+cuda跑

所以我想用 torch_tensorrt 将这个 pytorch 的 resnet50 网络,转成 tensorrt 格式的

但是我的场景是推理,而不是训练,所以输入给模型的 batch_size 不会是一个固定值,可能是 1 也可能是 100等等

import torch_tensorrt
import torch
import torchvision.models as models
import tensorrt as trt
import torch_tensorrt as torch_trt

# 定义 ResNet50 模型
model = models.resnet50(pretrained=True)
model.eval()



batch_size = None
image_channel = 3
image_size = 224

device = torch.device("cuda:0")

model=model.to(device)

inputs = [
    torch_tensorrt.Input(
        min_shape=[1, image_channel, image_size, image_size],
        opt_shape=[1, image_channel, image_size, image_size],
        max_shape=[1, image_channel, image_size, image_size],
        device=device
    )
]


enabled_precisions = {torch.float}  # Run with fp16

trt_ts_module = torch_tensorrt.compile(
    model,
    inputs=inputs,
    enabled_precisions=enabled_precisions
)

trt_ts_module = trt_ts_module.to(device)


torch.jit.save(
    trt_ts_module, "models/iv_resnet50_export_into_pytorch_tensorrt_model_dynamic.ts")

# pytorch 模型导出成 torch_tensorrt 格式的时候,使用 torch_tensorrt.compile 和 torch.jit.save ,如何指定 batch_size 的大小会动态的

但是我不知道如何转成 tensorRT 格式的时候,设置动态的 batch_size

问了 chatGPT ,他给了我 10 多个方案,都是不发允许的

共有1个答案

端木令雪
2023-04-27

你想要实现动态 batch size,你要设置一个范围,比如,从 1 到 100。:


inputs = [
    torch_tensorrt.Input(
        min_shape=[1, image_channel, image_size, image_size],
        opt_shape=[1, image_channel, image_size, image_size],
        max_shape=[100, image_channel, image_size, image_size],  # 将最大 batch size 更改为 100
        device=device
    )
]

你根据你的硬件和显存限制,可能要权衡动态 batch size 的范围

 类似资料:
  • 我的模型 gl18-tl-resnet50-gem-w-83fdc30.pth 权重文件下载地址: http://cmp.felk.cvut.cz/cnnimageretrieval/data/networks/gl18/... 我想把这个模型导出成 tensorRT 所以我写了下面的代码: 但是运行会报错 问题应该是处在设置动态的 batch_size 上面 如果把 batch_size 都设置

  • 我想做的是根据滚动的数字将Imageview设置为不同的骰子侧。

  • 我有一个页面,需要动态创建一个iframe并将其粘贴到页面上的div中。我创建iframe的方式如下: 根据某些条件,我需要:A)将iframe src设置为其他页面,或者B)动态地向iframe添加一些HTML。 我有选项A的罚款,但选项B抛出了安全错误: 在尝试设置HTML之前,是否需要在动态iframe上设置?我怎么会那么做呢?有没有更简单的方法将动态内容附加到动态iframe中? 提前道谢

  • 问题内容: 我正在使用jQuery DataTables,我的JavaScript代码如下所示: 我想根据选择元素的选择值过滤此dataTable: 如何设置的选项的值在该事件根据所选项目选择的元素? 问题答案: 我找到了 :

  • 问题内容: 用语言很难解释这种情况,让我举一个例子: 如何在JavaScript对象中设置具有变量值的变量属性? 问题答案: 那应该工作。您混合了变量的名称及其值。但是用字符串索引对象以获取其属性可以在JavaScript中很好地工作。

  • 问题内容: 如何在Python中动态设置局部变量(变量名是动态的)? 问题答案: 与已经发布的其他答案相反,你不能直接修改并期望它可以正常工作。 修改未定义。在函数外部,当和相同时,它将起作用;在一个函数内部通常将不起作用。 使用字典,或在对象上设置属性: 或者,如果你愿意,可以使用一个类: 编辑:访问不是函数的名称空间中的变量(因此,模块,类定义,实例)通常是通过字典查找来完成的(如Sven在注