You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Triton Server加载TensorRT引擎报错:magicTag不匹配

问题:Triton部署TensorRT Engine时反序列化失败

启动Triton服务的命令:

docker run --gpus=0 --rm  -it  --net=host -v ${PWD}/models:/models nvcr.io/nvidia/tritonserver:23.01-py3 tritonserver --model-repository=/models

使用TensorRT 8.4.1.5将yolov8n.pt编译为model.plan后,部署时出现如下报错:

I0629 08:04:00.307095 1 tensorrt.cc:211] TRITONBACKEND_ModelInitialize: yolov8 (version 1)
I0629 08:04:01.044353 1 logging.cc:49] Loaded engine size: 169 MiB
E0629 08:04:01.239643 1 logging.cc:43] 1: [stdArchiveReader.cpp::StdArchiveReader::32] Error Code 1: Serialization (Serialization assertion magicTagRead == kMAGIC_TAG failed.Magic tag does not match)
E0629 08:04:01.250591 1 logging.cc:43] 4: [runtime.cpp::deserializeCudaEngine::66] Error Code 4: Internal Error (Engine deserialization failed.)
I0629 08:04:01.273851 1 tensorrt.cc:237] TRITONBACKEND_ModelFinalize: delete model state

怀疑model.plan编译损坏,求解决方法。

解决方法
  • 重新编译Engine,严格匹配TensorRT版本
    nvcr.io/nvidia/tritonserver:23.01-py3内置的TensorRT版本是8.5.3.1,你使用的8.4.1.5版本不匹配,这是反序列化失败的核心原因。必须使用与Triton镜像一致的TensorRT版本编译Engine:

    1. 切换到对应版本的TensorRT环境(可直接用同版本Triton镜像进入编译:docker run --gpus=0 --rm -it -v ${PWD}:/workspace nvcr.io/nvidia/tritonserver:23.01-py3 bash)
    2. 重新导出YOLOv8为Engine:
      from ultralytics import YOLO
      model = YOLO('yolov8n.pt')
      model.export(format='engine', device=0, half=True)  # 根据实际GPU调整参数
      
    3. 将新生成的model.plan替换到模型目录中。
  • 验证Engine文件完整性
    在编译环境中加载Engine,确认文件本身无损坏:

    import tensorrt as trt
    logger = trt.Logger(trt.Logger.WARNING)
    with open("model.plan", "rb") as f, trt.Runtime(logger) as runtime:
        engine = runtime.deserialize_cuda_engine(f.read())
        if not engine:
            print("Engine文件损坏或版本不兼容")
        else:
            print("Engine加载正常")
    

    如果本地加载失败,检查编译时的报错,排查算子支持、GPU资源不足等问题。

  • 检查模型配置文件
    确保模型目录下的config.pbtxt配置正确:

    • 必须设置platform: "tensorrt_plan"
    • max_batch_size要和编译Engine时的参数一致
    • 输入输出的维度、数据类型需与YOLOv8模型匹配
  • 保证GPU架构一致性
    TensorRT Engine与GPU架构绑定,不能在A100上编译的Engine放到T4等不同架构的GPU上部署,编译和部署必须使用同架构的GPU。

  • 检查容器GPU权限
    启动Triton时,确保--gpus=0指定的GPU存在,可尝试替换为--gpus all测试,避免GPU设备访问权限问题。

内容的提问来源于stack exchange,提问作者Long Vu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 11:37:45