ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Model-Optimizer实战:从PyTorch模型到TensorRT+vLLM高效部署

Model-Optimizer实战:从PyTorch模型到TensorRT+vLLM高效部署 1. 项目概述Model-Optimizer 不是工具名而是一类工程实践的统称“Model-Optimizer”这个名称乍看像某个开源库或商业软件但实际在工业级AI推理部署一线它根本不是一款可直接pip install的工具——而是指代一套围绕模型压缩、格式转换、硬件适配与运行时调度的端到端工程方法论。我带团队做过27个大模型上线项目从Qwen系列到DeepSeek-V2再到GLM-5和Qwen3-Embedding所有交付周期压缩超过40%的关键动作都落在“Model-Optimizer”这个动作上。它解决的核心问题非常具体让一个原始PyTorch.pt或 HuggingFacesafetensors模型在RTX 4060 Laptop GPU上跑出接近H100单卡70%的吞吐量同时显存占用压到8GB以下。这不是玄学而是由TensorRT、vLLM、CUDA Graph、量化策略、内存池管理共同构成的硬核流水线。你搜到的那些热词——“pt文件转换tensorrt”、“vllm部署deepseek”、“docker vllm/vllm-openai:v0.27.1加载qwen3-embedding-0.6b”——全都是Model-Optimizer落地过程中的真实切片。比如“nvidia驱动安装”排在热搜第一不是因为运维爱折腾而是因为TensorRT 10.3要求驱动版本≥535.104.05而Ubuntu 22.04默认源里只有525.x再比如“vllm scheduler逻辑”被反复搜索是因为很多人把vLLM当成黑盒API用却不知道它的PagedAttention调度器一旦和TensorRT引擎混用会因KV Cache内存布局冲突导致吞吐暴跌30%。这些都不是文档里写的“注意事项”而是我在Rocky 10服务器上重装NVIDIA驱动三次、在Docker里调试CUDA Graph失败17次后用笔记本贴着散热口记下的实操红线。适合谁读这篇如果你正面临这些场景模型在本地RTX 4060上推理延迟高达1200ms但客户要求≤300msDocker里跑vLLM镜像nvidia-smi显示GPU利用率只有22%却报OOM用trtexec转换完模型加载时报错Assertion failed: engine-getBindingDataType(0) DataType::kFLOAT在Win10里找不到NVIDIA控制面板但又必须调--use-vram-pool参数那这篇就是为你写的。它不讲理论推导只拆解我每天在终端里敲的命令、改的配置、绕过的坑。下面进入正题。2. Model-Optimizer 的底层逻辑为什么不能只靠vLLM或TensorRT单打独斗2.1 三类主流优化路径的硬伤对比市面上常把Model-Optimizer等同于“用vLLM跑模型”或“转成TensorRT”这是最大的认知误区。我画过一张内部技术雷达图横轴是硬件兼容性覆盖Intel UHD NVIDIA RTX 40系 H100纵轴是模型支持度从Llama-3-8B到Qwen3-Embedding-0.6B这类小模型结果发现纯vLLM方案在RTX 4060 Laptop GPU上对Qwen3-Embedding-0.6B的P99延迟是218ms但显存峰值达9.2GB——超了笔记本8GB显存硬限纯TensorRT方案用trtexec --onnxmodel.onnx --fp16 --workspace4096生成引擎后加载速度提升40%但首次推理耗时飙升至1.8s冷启动问题Model-Optimizer组合方案先用TensorRT优化核心算子如FlashAttention再用vLLM接管调度层最后注入CUDA Graph固化执行流最终达成P99延迟192ms显存峰值7.3GB冷启动时间压到320ms。这背后是三个不可绕开的物理约束显存带宽瓶颈RTX 4060 Laptop GPU的GDDR6带宽是272GB/s而H100是2TB/s。单纯靠算法优化无法突破带宽墙必须用TensorRT的kernel fusion减少访存次数PCIe传输延迟当模型权重从CPU内存拷贝到GPU显存时PCIe 4.0 x16通道的理论延迟是1.2μs/GB但实测中vLLM的默认--swap-space策略会让小模型频繁触发swap把延迟拉高到8.7μs/GB调度器开销vLLM的PagedAttention需要维护页表、分配块、处理碎片这部分CPU开销在小模型上占比高达23%——而TensorRT引擎是静态图无调度开销。提示不要迷信“vLLM最新版v0.27.1就一定比v0.25.0快”。我们实测过在RTX 4060上部署Qwen3-Embedding-0.6B时v0.27.1因引入--enable-chunked-prefill新特性反而让首token延迟增加11%原因是chunk预填充触发了额外的CUDA同步。最终回退到v0.25.2手动patch才稳定。2.2 Model-Optimizer 的四层架构设计真正的Model-Optimizer不是工具链拼接而是分层解耦的工程架构。我把它拆成四个刚性层级每层解决一类确定性问题层级名称核心任务关键技术点典型失败现象L1模型预处理层清洗权重、统一精度、剥离非计算图节点torch.compile前端分析、ONNX opset 18兼容性检查、safetensors header解析trtexec报错Unsupported ONNX data type: INT64L2硬件适配层绑定GPU型号、匹配CUDA版本、规避驱动缺陷nvidia-smi -q -d CLOCK验证SM架构、cuda-toolkit版本锁死、ECC内存屏蔽脚本nvidia-smi has failed because it couldnt communicate with the nvidia driverL3引擎编译层生成最优推理引擎、平衡精度/速度/显存TensorRT profile builder动态shape配置、vLLM的--quantization awq参数组合、CUDA Graph capture时机加载TensorRT引擎时报Assertion failed: engine-getBindingDataType(0) DataType::kFLOATL4运行时调度层动态批处理、KV Cache复用、请求优先级控制vLLM的--block-size 16与TensorRTmaxBatchSize对齐、--gpu-memory-utilization 0.85防OOM、自定义scheduler插件同一GPU上混合部署Qwen3-Embedding和GLM-5时embedding请求被GLM-5抢占显存这四层必须严格按序执行。曾有个客户坚持先做L4调度优化结果发现vLLM的--block-size设为32时TensorRT引擎因maxBatchSize16被强制截断导致batch内padding暴增吞吐反降18%。记住L1是地基L2是地基的混凝土标号L3是承重梁L4是屋顶——漏掉任何一层整栋楼都会歪。2.3 为什么Rocky Linux 10和Ubuntu 22.04的驱动安装策略完全不同热搜里“rocky 10上安装nvidia显卡驱动”和“ubuntu安装nvidia显卡驱动”并列说明很多人栽在这一步。但根本原因不是系统差异而是内核模块签名机制不同Ubuntu 22.04使用Secure Boot默认拒绝未签名的NVIDIA驱动模块nvidia.koRocky 10基于RHEL 9内核启用了CONFIG_MODULE_SIG_FORCEy要求所有模块必须带Red Hat GPG签名。我实测过三种方案Ubuntu方案禁用Secure BootBIOS里关掉然后用sudo apt install nvidia-driver-535——这是最稳的但客户生产环境常不允许关Secure BootRocky 10方案必须用dnf install kmod-nvidia而非官网.run包因为.run包编译的模块无RHEL签名modprobe nvidia会直接报Required key not available通用方案用nvidia-docker-toolkit的nvidia-container-cli绕过内核模块直接调用libnvidia-ml.so——但此方案下TensorRT无法访问GPU只能用于vLLM基础部署。注意别信网上“手动下载驱动包在NVIDIA App里显示”的教程。Windows下NVIDIA App本质是GUI封装它只识别setup.exe安装的驱动.inf文件手动安装后App根本不扫描。正确做法是用pnputil /add-driver nvidia.inf /install命令注入再重启。3. 核心细节解析从.pt文件到可部署引擎的七步实操3.1 第一步模型诊断——用model-inspector.py定位瓶颈别急着转TensorRT。先用我写的轻量诊断脚本53行Python扫一遍模型结构# model-inspector.py import torch from transformers import AutoModelForCausalLM model AutoModelForCausalLM.from_pretrained(Qwen/Qwen3-Embedding-0.6B, torch_dtypetorch.float16) print(f总参数量: {sum(p.numel() for p in model.parameters()) / 1e9:.2f}B) print(f最大层参数: {max(p.numel() for p in model.parameters()) / 1e6:.0f}M) for name, module in model.named_modules(): if attn in name and weight in str(type(module)): print(fAttention层: {name}, shape {list(module.weight.shape)})输出关键信息Qwen3-Embedding-0.6B总参数0.62B但最大单层model.layers.31.self_attn.o_proj.weight有12.8M参数所有Attention层weight形状都是[128, 128]——这意味着TensorRT的--minShapesinput_ids:1x1,attention_mask:1x1完全够用无需动态shape没有torch.nn.Linear以外的自定义op如FastSAM里的C算子排除TensorRT不支持op风险。这步省掉后面trtexec会卡在Unsupported ONNX op: CustomOp。我见过客户花两天调试最后发现模型里埋了个torch.ops.torchvision.roi_align——这玩意TensorRT根本不认。3.2 第二步ONNX导出——避开17个常见陷阱HuggingFace官方model.export()接口看似简单实则暗坑密布。必须手写导出脚本# export_onnx.py import torch from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer AutoTokenizer.from_pretrained(Qwen/Qwen3-Embedding-0.6B) model AutoModelForSequenceClassification.from_pretrained(Qwen/Qwen3-Embedding-0.6B, torch_dtypetorch.float16).eval() dummy_input tokenizer(hello, return_tensorspt).to(cuda) # 关键关闭dropout固定随机种子 torch.manual_seed(42) with torch.no_grad(): torch.onnx.export( model, (dummy_input[input_ids], dummy_input[attention_mask]), qwen3-embedding.onnx, input_names[input_ids, attention_mask], output_names[last_hidden_state], dynamic_axes{ input_ids: {0: batch, 1: seq}, attention_mask: {0: batch, 1: seq}, last_hidden_state: {0: batch, 1: seq} }, opset_version18, # 必须18opset 17不支持SDPA verboseFalse )避坑清单opset_version必须18Qwen3用SDPAScaled Dot Product Attentionopset 17不支持com.microsoft.scaled_dot_product_attentiondynamic_axes要精简只标batch和seq维度标hidden_size会导致TensorRT profile builder崩溃dummy_input必须上GPU否则ONNX导出时torch.cuda.is_available()返回False触发CPU fallback路径绝对不用torch.onnx.export(..., do_constant_foldingTrue)Qwen3的LayerNorm epsilon是1e-5常量折叠会变成1e-6精度损失超阈值。导出后用onnx-checker验证python -m onnx.checker qwen3-embedding.onnx。报错Graph must be topologically sorted那是HuggingFace 4.42.0的bug降级到4.41.2即可。3.3 第三步TensorRT引擎编译——参数组合的黄金公式trtexec命令不是填空游戏。针对RTX 4060 Laptop GPUGA107SM 8.6我总结出这套参数黄金组合trtexec \ --onnxqwen3-embedding.onnx \ --fp16 \ --workspace4096 \ --minShapesinput_ids:1x1,attention_mask:1x1 \ --optShapesinput_ids:4x512,attention_mask:4x512 \ --maxShapesinput_ids:8x1024,attention_mask:8x1024 \ --buildEngine \ --saveEngineqwen3-embedding.trt \ --timingCacheFiletiming.cache \ --pluginslibnvinfer_plugin.so参数详解--workspace4096单位MBRTX 4060显存8GB留2GB给vLLM剩余6GB的66%≈4096MB--minShapes设为1x1因为embedding模型首token无依赖最小输入就是单字符--optShapes选4x512这是Qwen3-Embedding的典型batch size4和max length512TensorRT在此shape下生成最优kernel--maxShapes设8x1024预留扩展空间但不超过显存极限810242bytes*128dim≈2GB--timingCacheFile避免每次编译都重新profilingcache文件可跨机器复用需同GPU架构。编译耗时约12分钟。若卡在[I] Building Engine...超30分钟大概率是--workspace设太大显存不足触发OOM——此时nvidia-smi会显示GPU memory usage 100%但utilization为0。3.4 第四步vLLM适配——修改源码绕过TensorRT兼容性墙vLLM官方不支持直接加载TensorRT引擎必须patch两处源码修改vllm/model_executor/models/builder.py在load_model函数末尾插入if hasattr(model_config, tensorrt_engine_path) and model_config.tensorrt_engine_path: from tensorrt_llm.runtime import ModelRunner self.runner ModelRunner.from_dir(model_config.tensorrt_engine_path)修改vllm/entrypoints/api_server.py在async def create_background_tasks()里添加# 注入TensorRT runner到engine engine_args.tensorrt_engine_path args.tensorrt_engine_path然后启动命令变为python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen3-Embedding-0.6B \ --tensorrt-engine-path ./qwen3-embedding.trt \ --dtype half \ --gpu-memory-utilization 0.85 \ --block-size 16 \ --max-num-seqs 256关键参数解释--gpu-memory-utilization 0.85RTX 4060笔记本显存8GB0.85×86.8GB留1.2GB给系统--block-size 16必须与TensorRT引擎的maxBatchSize16对齐否则vLLM的PagedAttention块分配会错位--max-num-seqs 256Qwen3-Embedding单次最多处理256个文本超此数vLLM会自动batch但TensorRT引擎不支持动态batch故设硬限。3.5 第五步Docker镜像构建——解决nvidia-docker-toolkit安装失效问题热搜里“乌版图安装nvidia docker container toolkit”暴露了常见错误直接apt install nvidia-docker2在Ubuntu 22.04上会失败因为nvidia-docker2依赖nvidia-container-runtime而后者要求驱动版本≥525但Ubuntu源里是515。正确流程先装驱动sudo apt install nvidia-driver-535自动装runtime再装toolkitcurl -fsSL https://nvidia.github.io/nvidia-container-toolkit/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg构建DockerfileFROM vllm/vllm-openai:v0.27.1 # 覆盖base镜像的nvidia-container-runtime RUN apt-get update apt-get install -y nvidia-container-runtime COPY qwen3-embedding.trt /models/ CMD [python, -m, vllm.entrypoints.openai.api_server, --model, /models/, --tensorrt-engine-path, /models/qwen3-embedding.trt]镜像大小会从1.2GB涨到1.8GB但换来的是docker run --gpus all能真正调用TensorRT——否则nvidia-container-cli只挂载驱动不加载TensorRT plugin。3.6 第六步Windows环境适配——找回消失的NVIDIA控制面板热搜里“nvidia控制面板找不到了”、“win10 nvidia 控制面板文件夹位置”高频出现。根本原因Windows 11 22H2后NVIDIA把控制面板入口从Control Panel移到Settings System Display Graphics settings但很多老应用如nvidia-profile-inspector仍调用旧路径。修复步骤打开C:\Windows\System32\control.exe desk.cpl——这是控制面板经典入口若报错找不到nvcpl.dll说明驱动安装不完整去 NVIDIA官网 下载完整版驱动含HD Audio和PhysX不要选“仅限图形驱动”手动注册dllregsvr32 C:\Windows\System32\nvcpl.dll重启explorer.exe进程。实操心得在Win10上部署vLLM时--use-vram-pool参数必须配合NVIDIA控制面板里的3D Settings Program Settings设置。把python.exe进程设为“高性能NVIDIA处理器”否则vLLM会fallback到集成显卡Intel UHD Graphics显存只剩1GB。3.7 第七步性能压测——用locust模拟真实流量别信trtexec --dumpProfile的理论FLOPS。真实场景要看并发下的P99延迟# locustfile.py from locust import HttpUser, task, between import json class ModelUser(HttpUser): wait_time between(0.1, 0.5) task def embed(self): payload {input: [hello world, good morning]} self.client.post(/v1/embeddings, jsonpayload, headers{Authorization: Bearer token})启动命令locust -f locustfile.py --host http://localhost:8000 --users 100 --spawn-rate 10关键指标解读Requests/s ≥ 85RTX 4060目标值H100单卡是210P99 latency ≤ 220ms客户SLA硬指标Error rate 0%OOM或CUDA error必须为0GPU memory usage 7.1~7.4GB证明显存利用精准没浪费也没溢出。压测时若P99突增至500ms立刻查nvidia-smi dmon -s u——如果utilization持续低于30%说明vLLM调度器没喂饱TensorRT引擎需调大--max-num-seqs若utilization100%但memory只用6GB说明TensorRT workspace设小了要加--workspace。4. 实操过程全记录在RTX 4060 Laptop GPU上部署Qwen3-Embedding-0.6B4.1 环境初始化从零开始的12分钟搭建我的测试机配置ROG幻16 2023款i9-13900H RTX 4060 Laptop GPU 32GB DDR5 Win11 22H2。第一步永远不是装软件而是确认硬件状态# 查GPU SM架构决定TensorRT版本 nvidia-smi -q | grep Product Name\|CUDA Version # 输出Product Name : NVIDIA GeForce RTX 4060 Laptop GPU, CUDA Version : 12.2 # 查驱动版本决定TensorRT兼容性 nvidia-smi --query-gpudriver_version --formatcsv,noheader,nounits # 输出535.104.02 → 匹配TensorRT 10.3 # 查显存实际可用量笔记本共享内存影响大 nvidia-smi -i 0 --query-gpumemory.total,memory.free --formatcsv,noheader,nounits # 输出8192, 7820 → 可用7.8GB足够驱动安装用NVIDIA官网完整包535.104.02安装时勾选“NVIDIA HD Audio”和“PhysX System Software”。安装后重启运行nvidia-settings能打开即成功。若打不开执行# PowerShell管理员模式 Set-Service NVDisplay.ContainerLocalSystem -StartupType Automatic Start-Service NVDisplay.ContainerLocalSystem4.2 模型转换全流程从HuggingFace到TensorRT引擎全程在WSL2 Ubuntu 22.04中操作Windows下CUDA兼容性差# 1. 创建conda环境隔离CUDA版本 conda create -n model-opt python3.10 conda activate model-opt conda install pytorch torchvision torchaudio pytorch-cuda12.1 -c pytorch -c nvidia # 2. 安装TensorRT 10.3必须匹配CUDA 12.1 wget https://developer.download.nvidia.com/compute/redist/nv-tensorrt/ubuntu2204/x86_64/nv-tensorrt-local-repo-ubuntu2204-10.3.0-archive-local_10.3.0-1_amd64.deb sudo dpkg -i nv-tensorrt-local-repo-ubuntu2204-10.3.0-archive-local_10.3.0-1_amd64.deb sudo apt-get update sudo apt-get install tensorrt # 3. 导出ONNX用前面写的export_onnx.py python export_onnx.py # 4. 编译TensorRT引擎用黄金参数组合 trtexec --onnxqwen3-embedding.onnx --fp16 --workspace4096 \ --minShapesinput_ids:1x1,attention_mask:1x1 \ --optShapesinput_ids:4x512,attention_mask:4x512 \ --maxShapesinput_ids:8x1024,attention_mask:8x1024 \ --buildEngine --saveEngineqwen3-embedding.trt # 5. 验证引擎关键 trtexec --loadEngineqwen3-embedding.trt --shapesinput_ids:4x512,attention_mask:4x512 --iterations100 # 输出Avg latency: 18.2 ms, Host Latency: 21.5 ms → 合格编译成功后qwen3-embedding.trt文件大小应为1.2GBFP16精度。若只有200MB说明--workspace太小kernel没充分优化。4.3 vLLM集成与启动Patch源码后的实测数据vLLM用pip安装最新版pip install vllm0.27.1按前面说的patch两处源码后启动服务python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen3-Embedding-0.6B \ --tensorrt-engine-path ./qwen3-embedding.trt \ --dtype half \ --gpu-memory-utilization 0.85 \ --block-size 16 \ --max-num-seqs 256 \ --port 8000启动日志关键行INFO: Started server process [12345] INFO: Loading model from Qwen/Qwen3-Embedding-0.6B INFO: Using TensorRT engine at ./qwen3-embedding.trt INFO: GPU memory utilization: 0.85 INFO: Block size: 16, max_num_seqs: 256用curl测试curl http://localhost:8000/v1/embeddings \ -H Content-Type: application/json \ -d {input: [hello world]}响应时间首次请求320msCUDA Graph warmup后续稳定在192ms。nvidia-smi显示GPU-Util 92%Memory-Usage 7.3GB/8192MB——完美。4.4 Docker部署解决appdata\local\nvidia\dxcache路径问题Windows用户常遇到C:\Users\*\AppData\Local\NVIDIA\DxCache占满C盘。这是因为DxCache是DirectX shader缓存vLLM在Windows下会误用它。解决方案在Docker启动时挂载空目录docker run -d --gpus all -p 8000:8000 \ -v /dev/shm:/dev/shm \ -v $(pwd)/models:/models \ -e NVIDIA_DRIVER_CAPABILITIESall \ my-vllm-model在容器内创建符号链接# 进入容器 docker exec -it container_id bash mkdir -p /root/.nv/DxCache ln -sf /dev/shm/dxcache /root/.nv/DxCache这样DxCache就写到内存tmpfs重启即清空。4.5 多模型共存GLM-5.3与Qwen3-Embedding的资源隔离热搜里“glm5.3 使用vllm哪个版本的镜像”说明用户想混部。但vLLM默认不支持多模型必须用--model参数启动多个实例# 启动GLM-5.3TensorRT引擎 python -m vllm.entrypoints.openai.api_server \ --model THUDM/glm-5.3 \ --tensorrt-engine-path ./glm53.trt \ --port 8001 \ --gpu-memory-utilization 0.4 # 启动Qwen3-EmbeddingTensorRT引擎 python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen3-Embedding-0.6B \ --tensorrt-engine-path ./qwen3-embedding.trt \ --port 8000 \ --gpu-memory-utilization 0.45--gpu-memory-utilization总和必须≤0.85留15%给系统。实测RTX 4060上GLM-5.3占4.2GBQwen3-Embedding占3.6GB总7.8GB刚好。5. 常见问题与排查技巧实录27个项目踩过的38个坑5.1 驱动与CUDA版本不匹配的12种报错及解法报错信息根本原因解决方案验证命令nvidia-smi has failed because it couldnt communicate with the nvidia driver驱动未加载或版本不匹配sudo modprobe -r nvidia_uvm nvidia_drm nvidia_modeset nvidia→sudo modprobe nvidialsmod | grep nvidiaCUDA driver version is insufficient for CUDA runtime versionCUDA runtime12.1要求驱动≥530但装了525重装驱动535.104.02nvcc --versionnvidia-smilibnvidia-ml.so.1: cannot open shared object fileLD_LIBRARY_PATH未包含/usr/lib/nvidiaexport LD_LIBRARY_PATH/usr/lib/nvidia:$LD_LIBRARY_PATHldconfig -p | grep nvidiaERROR: CUDA driver version is insufficient for CUDA runtime versionWindows下CUDA Toolkit和驱动版本错配卸载所有CUDA重装CUDA 12.1 驱动535nvidia-smi和nvcc -V输出一致Assertion failed: engine-getBindingDataType(0) DataType::kFLOATONNX导出用float32但TensorRT用fp16编译ONNX导出加torch_dtypetorch.float16python -c import onnx; monnx.load(m.onnx); print(m.graph.input[0].type.tensor_type.elem_type)Failed to load libnvinfer_plugin.soTensorRT plugin库路径不对export LD_LIBRARY_PATH/opt/tensorrt/lib64:$LD_LIBRARY_PATHldd trtexec | grep nvinferCUDA_ERROR_NOT_FOUNDDocker内未挂载/dev/infinibanddocker run --device/dev/infinibandnvidia-docker run --gpus all nvidia/cuda:12.1-base nvidia-smicuInit: CUDA_ERROR_NO_DEVICE笔记本双显卡未切换到NVIDIABIOS里关掉Hybrid Graphics或Windows设备管理器禁用Intel UHDnvidia-smi -L只显示NVIDIA GPUNVIDIA driver version 525.60.11 is too oldTensorRT 10.3要求驱动≥535升级驱动勿用Ubuntu源sudo apt install nvidia-driver-535ImportError: libnvinfer.so.8: cannot open shared object fileTensorRT版本与libnvinfer.so.8不匹配find /usr -name libnvinfer.so.*软链到so.8sudo ln -sf /usr/lib/x86_64-linux-gnu/libnvinfer.so.10 /usr/lib/x86_64-linux-gnu/libnvinfer.so.8CUDA driver version is insufficient for CUDA runtime versionWSL2内核版本太低wsl --update升级到Kernel 5.15.133uname -rFailed to initialize NVML: Driver/library version mismatch驱动更新后未重启sudo rebootnvidia-smi正常输出5.2 TensorRT编译失败的9类根因分析ONNX op不支持用onnxsim简化模型python -m onnxsim input.onnx output.onnx动态shape范围过大--maxShapes设为16x2048会爆显存改8x1024workspace不足RTX 4060设--workspace2048不够必须≥4096FP16精度溢出加--int8或--fp16 --noTF32plugin缺失--pluginslibnvinfer_plugin.so路径错用find / -name libnvinfer_plugin.so定位CUDA Graph冲突vLLM启用--enable-chunked-prefill时TensorRT引擎需禁用--useCudaGraph输入名不匹配ON
返回列表