无需TensorFlow加载TensorRT优化的SavedModel可行性咨询
问题解答
1. 不安装TensorFlow能否加载TensorRT优化的SavedModel?
不行。TensorRT优化后的SavedModel仍属于TensorFlow的模型格式体系,加载时必须依赖TensorFlow运行时环境来解析模型结构、处理节点逻辑——哪怕模型包含TensorRT优化部分,也无法脱离TensorFlow单独运行。仅安装TensorRT的机器无法直接加载这类模型。
2. 转为ONNX后能否仅用TensorRT加载运行?
可以。ONNX是通用的模型中间表示格式,TensorRT原生支持读取ONNX模型并将其转换为自身优化的推理引擎,全程不需要依赖TensorFlow。
具体操作流程大致如下:
- 在有TensorFlow的环境中,用
tf2onnx工具将SavedModel转成ONNX格式,示例命令:python -m tf2onnx.convert --saved-model ./path/to/saved_model --output model.onnx - 在仅安装TensorRT的机器上,通过TensorRT API(Python或C++)加载ONNX模型,构建并序列化优化引擎,之后即可执行推理。Python端核心步骤示例:
import tensorrt as trt # 初始化TensorRT组件 logger = trt.Logger(trt.Logger.WARNING) builder = trt.Builder(logger) network = builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)) parser = trt.OnnxParser(network, logger) # 加载ONNX模型 with open("model.onnx", "rb") as f: parser.parse(f.read()) # 构建优化引擎(可序列化保存,避免重复编译) config = builder.create_builder_config() config.set_memory_pool_limit(trt.MemoryPoolType.WORKSPACE, 1 << 30) # 分配1GB工作空间 engine = builder.build_engine(network, config) # 序列化引擎到本地(可选) with open("model.engine", "wb") as f: f.write(engine.serialize()) # 后续使用engine执行推理即可
内容的提问来源于stack exchange,提问作者Simon Nathan
相关产品推荐
相关产品推荐

