Model deserialization failed after upgrading from DeepStream 7.1 → 8.0 (TensorRT plan file version mismatch)

Hello NVIDIA team,

My DeepStream application was running perfectly on DeepStream 7.1
After upgrading the system to DeepStream 8.0, I’m now getting TensorRT deserialization and calibration errors when the pipeline starts .

then how to upgrad the application in deepstream 8.0

Error Log

gstnvtracker: Loading low-level lib at /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so
[NvTrackerParams::getConfigRoot()] !!![WARNING] File doesn't exist. Will go ahead with default values
[NvMultiObjectTracker] Initialized
ERROR: [TRT]: IRuntime::deserializeCudaEngine: Error Code 1: Internal Error (Failed due to an old deserialization call on a newer plan file. This might happen when the plan file was built from an older TensorRT version. You can use `trtexec --getPlanVersionOnly` to check the version of TensorRT that was used to create the plan file. In deserializeEngine at runtime/api/engine.cpp:1454)
ERROR: ../nvdsinfer/nvdsinfer_model_builder.cpp:1306 Deserialize engine failed from file: /root/data/Ajeet_Gateway_Working/smarg/smarg_surveillance_prod/surveillance_ai_model/x86_64/Person_Detection/resnet34_peoplenet_int8.onnx_b19_gpu0_int8.engine
0:00:00.712010694 41742 0x7bf1496b1fe0 WARN                 nvinfer gstnvinfer.cpp:682:gst_nvinfer_logger:<primary-inference-4> NvDsInferContext[UID 21]: Warning from NvDsInferContextImpl::deserializeEngineAndBackend() <nvdsinfer_context_impl.cpp:2097> [UID = 21]: deserialize engine from file :/root/data/Ajeet_Gateway_Working/smarg/smarg_surveillance_prod/surveillance_ai_model/x86_64/Person_Detection/resnet34_peoplenet_int8.onnx_b19_gpu0_int8.engine failed
0:00:00.712044623 41742 0x7bf1496b1fe0 WARN                 nvinfer gstnvinfer.cpp:682:gst_nvinfer_logger:<primary-inference-4> NvDsInferContext[UID 21]: Warning from NvDsInferContextImpl::generateBackendContext() <nvdsinfer_context_impl.cpp:2202> [UID = 21]: deserialize backend context from engine from file :/root/data/Ajeet_Gateway_Working/smarg/smarg_surveillance_prod/surveillance_ai_model/x86_64/Person_Detection/resnet34_peoplenet_int8.onnx_b19_gpu0_int8.engine failed, try rebuild
0:00:00.712056895 41742 0x7bf1496b1fe0 INFO                 nvinfer gstnvinfer.cpp:685:gst_nvinfer_logger:<primary-inference-4> NvDsInferContext[UID 21]: Info from NvDsInferContextImpl::buildModel() <nvdsinfer_context_impl.cpp:2123> [UID = 21]: Trying to create engine from model files
WARNING: [TRT]: Heuristics has been ignored in this builder run. This feature is only supported on Ampere and beyond.
WARNING: [TRT]: Calibration Profile is not defined. Calibrating with Profile 0
ERROR: [TRT]: IBuilder::buildSerializedNetwork: Error Code 4: Internal Error (Calibration failure occurred with no scaling factors detected. This could be due to no int8 calibrator or insufficient custom scales for network layers. Please see int8 sample to setup calibration correctly. In initCalibrationParams at optimizer/builder/engineBuilder.cpp:2280)
Segmentation fault (core dumped)

System Information

  • Hardware Platform: x86_64 GPU
  • OS: Ubuntu 24.04.1 LTS
  • DeepStream Version: 8.0
  • TensorRT Version: 10.9.0.34-1+cuda12.8
  • CUDA Version: 12.9

How to Reproduce

  1. Application and model were running correctly on DeepStream 7.1.
  2. Upgraded to DeepStream 8.0 with TensorRT 10.9 and CUDA 12.9.
  3. Pipeline uses existing INT8 engine file:

model-engine-file=resnet34_peoplenet_int8.onnx_b19_gpu0_int8.engine

  1. When running the app, DeepStream fails to deserialize or rebuild the engine.
  2. Deleting the engine and allowing DeepStream to rebuild triggers INT8 calibration errors.
  3. Running in FP16 mode (network-mode=1) works correctly.

Configuration File (config_infer_primary.txt)

[property]
gpu-id=0
net-scale-factor=0.0039215697906911373
model-color-format=0
custom-network-config=yolov4.cfg
model-file=yolov4.weights
model-engine-file=model_b1_gpu0_fp32.engine
#int8-calib-file=calib.table
labelfile-path=labels.txt
batch-size=1
network-mode=0
num-detected-classes=80
interval=0
gie-unique-id=1
process-mode=1
network-type=0
cluster-mode=2
maintain-aspect-ratio=0
symmetric-padding=1
force-implicit-batch-dim=0
#workspace-size=2000
parse-bbox-func-name=NvDsInferParseYolo
#parse-bbox-func-name=NvDsInferParseYoloCuda
custom-lib-path=nvdsinfer_custom_impl_Yolo/libnvdsinfer_custom_impl_Yolo.so
engine-create-func-name=NvDsInferYoloCudaEngineGet

Where did you get the yolov4 model? The DeepStream 8.0 is based on TensorRT 10.9, seems the model is not supported by TensorRT 10.9.

I have a custom DeepStream Gateway application that was working perfectly on DeepStream 7.1.
Recently, I upgraded the system to DeepStream 8.0 on Ubuntu 24.04 (with CUDA 12.9 and TensorRT 10.9.0.34).

After the upgrade, the same pipeline now fails to start due to a TensorRT engine deserialization issue.
I haven’t changed any model or configuration — I’m just trying to run the same project on DeepStream 8.0.

Could you please guide me on how to properly upgrade or migrate my application from DeepStream 7.1 to DeepStream 8.0?
Do I need to rebuild my TensorRT engine (.engine) files or update my YOLO model to make it compatible with TensorRT 10.9?

Any official migration steps or compatibility documentation would be very helpful.

Yes. You need to make sure your model is compatible to TensorRT 10.9 and build the TensorRT engine with TensorRT 10.9

Yes, I am currently using DeepStream 8.0, which uses TensorRT 10.9, but my existing model engine was built with TensorRT 7.1. I will rebuild the model engine using TensorRT 10.9 to ensure compatibility with DeepStream 8.0.

There is no update from you for a period, assuming this is not an issue anymore. Hence we are closing this topic. If need further support, please open a new one. Thanks.