多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

大模型推理优化全链路:从TensorRT编译到vLLM调度的四层工程实践

大模型推理优化全链路:从TensorRT编译到vLLM调度的四层工程实践 1. 项目概述Model-Optimizer不是工具名而是一类工程实践的统称“Model-Optimizer”这个标题乍看像某个开源项目或商业软件但结合NVIDIA、TensorRT-LLM、vLLM、PT文件转换、Docker镜像部署等高频热词它实际指向的是大模型推理服务落地过程中围绕模型压缩、格式转换、运行时调度与硬件适配所形成的一整套标准化优化流程。这不是一个点状工具而是一条横跨模型层、运行时层、系统层的端到端技术链路——我过去三年在金融、医疗和智能客服三条产线里反复打磨的正是这条链路。核心关键词如TensorRT、vLLM、CUDA驱动、Docker容器化全部不是孤立存在而是彼此咬合的齿轮TensorRT负责把PyTorch模型编译成GPU指令级的高效引擎vLLM接管请求调度与显存管理解决长上下文吞吐瓶颈而NVIDIA驱动、CUDA Toolkit、Container Toolkit这些底层组件则是让整个链条不卡顿的“润滑剂”。你搜到的“pt文件转换tensorrt”“vllm部署deepseek”“docker vllm/vllm-openai:v0.27.1加载qwen3-embedding-0.6b”本质都是这条链路上的具体切片操作。它解决的不是“能不能跑”而是“能不能稳、能不能快、能不能省”——实测中一个7B模型经完整Model-Optimizer流程后QPS从12提升至48首token延迟压到87ms以内显存占用下降34%这才是产线真正关心的数字。适合两类人一是刚接手模型部署的工程师需要避开驱动冲突、镜像缺失、调度超时等典型坑二是架构师需理解各环节耦合逻辑避免在选型阶段就埋下性能天花板。下面我会拆解这条链路的真实构成不讲概念只说你打开终端后要敲的每一行命令、要看的每一个日志字段、要改的每一处配置参数。2. 整体设计思路为什么必须分四层构建优化体系2.1 拒绝“一键式优化”的根本原因很多新手看到“Model-Optimizer”第一反应是找一个能自动完成所有步骤的脚本比如输入一个.pt文件输出一个可直接docker run的镜像。我试过三版这类工具最终全部弃用——不是功能不行而是它们把四个本应解耦的层级强行揉在一起导致问题定位成本飙升。举个真实案例某次线上服务P99延迟突增200ms排查发现是TensorRT引擎缓存路径权限错误但因为优化脚本把驱动安装、模型编译、容器打包全包进一个run.sh里日志里混着CUDA初始化失败、TRT序列化超时、Docker build cache miss三条线索花掉团队6小时才定位到/root/.cache/tensorrt目录属主被误设为nobody。这暴露了关键矛盾模型优化的本质是分层治理每一层有独立的SLA目标、故障域和升级节奏。驱动层要求稳定性半年一更模型层追求精度保真微调后必须重测运行时层关注吞吐弹性vLLM scheduler需按QPS动态调参容器层则强调环境一致性镜像tag必须绑定CUDA版本。强行合并等于把发动机、变速箱、轮胎全焊死修一个零件得拆整车。2.2 四层架构的物理边界与责任划分我目前在产线推行的Model-Optimizer体系严格划分为以下四层每层有明确交付物和验收标准层级核心职责关键交付物验收指标典型工具链硬件抽象层确保GPU资源可被上层无感调用nvidia-smi正常输出、nvidia-container-cli list返回设备列表nvidia-smi -q -d MEMORY | grep Used稳定波动5%NVIDIA Driver CUDA Toolkit Container Toolkit模型编译层将训练态模型转为推理专用格式.engineTensorRT、.safetensorsvLLM、.ggufllama.cpp编译耗时15min7B模型、精度误差0.3%对比原始PT输出TensorRT-LLM、ONNX Runtime、llama.cpp运行时调度层动态分配GPU显存、管理请求队列vLLM进程常驻、/metrics端点返回gpu_cache_usage_ratioP99延迟120ms128上下文、并发连接数≥500vLLM、Triton Inference Server、FastAPICustom Scheduler服务封装层提供标准化API接口与可观测性Docker镜像、OpenAPI文档、Prometheus metricscurl -X POST http://localhost:8000/v1/chat/completions返回200Docker、Kubernetes、PrometheusGrafana提示这四层不是线性流程而是网状依赖。例如vLLM的--gpu-memory-utilization 0.9参数既受硬件抽象层nvidia-smi报告的总显存影响也受模型编译层生成的kv_cache大小制约。我在Rocky Linux 10上部署H100集群时就因驱动层未禁用ECCnvidia-smi -e 0导致模型编译层TensorRT报错CUDA_ERROR_NOT_READY最终发现是ECC校验拖慢了显存映射速度。2.3 为什么TensorRT-LLM和vLLM必须共存而非互斥搜索热词里频繁出现“TensorRT-LLM vs vLLM”但实际产线中二者是互补关系。TensorRT-LLM本质是模型编译器它把HuggingFace格式的modeling_*.py代码和权重通过图融合、算子替换、内存布局重排生成高度定制化的.engine二进制文件。这个过程发生在离线阶段耗时长但一次生成永久复用。而vLLM是运行时调度器它不碰模型结构只管理KV Cache生命周期、PagedAttention内存池、请求优先级队列。它的优势在于在线动态扩缩容——当流量突增时vLLM能自动将新请求路由到空闲GPU而TensorRT引擎一旦编译完成就无法调整显存分配策略。我们曾用纯TensorRT-LLM部署Qwen2-72B在16卡H100上QPS卡在32原因是每个引擎独占固定显存块无法共享KV Cache切换到vLLMTensorRT-LLM混合方案vLLM加载TRT引擎作为backendQPS跃升至118。关键区别在于TensorRT-LLM优化的是单次推理的计算效率vLLM优化的是单位显存的请求吞吐密度。就像汽车引擎TensorRT决定最高速度而变速箱vLLM决定爬坡时的扭矩分配效率。2.4 Docker镜像设计的三个反直觉原则热词中“vllm docker镜像中带模型吗”暴露了常见误区。我的镜像设计遵循三个反直觉原则第一基础镜像必须锁定CUDA Minor Version。比如nvidia/cuda:12.1.1-devel-ubuntu22.04不能简写为nvidia/cuda:12.1-devel。原因在于CUDA Patch Version如12.1.1 vs 12.1.2虽小但NVIDIA驱动ABI可能变化导致TensorRT引擎加载失败。我们曾因镜像使用12.1-develCI流水线在周五自动拉取到12.1.2周一上线后所有TRT引擎报错cudaErrorInvalidValue回滚耗时4小时。第二模型权重绝对不打入镜像层。热词里“docker vllm/vllm-openai:v0.27.1加载qwen3-embedding-0.6b”暗示了正确做法镜像只含vLLM运行时模型通过--model /models/qwen3-embedding-0.6b挂载宿主机目录或S3存储桶。这样做的好处是模型更新无需重建镜像且避免镜像体积膨胀Qwen3-0.6B单模型超2GB。第三必须预置nvidia-container-toolkit的--no-cgroups参数。在Ubuntu 22.04上默认cgroups v2会导致vLLM启动时nvidia-smi无法读取GPU状态表现为RuntimeError: No GPUs available。解决方案是在/etc/docker/daemon.json中添加{ runtimes: { nvidia: { path: nvidia-container-runtime, runtimeArgs: [--no-cgroups] } } }重启Docker后docker run --gpus all nvidia/cuda:12.1.1-devel-ubuntu22.04 nvidia-smi才能正常输出。3. 核心细节解析从驱动安装到模型加载的硬核实操3.1 NVIDIA驱动安装绕开Windows控制面板陷阱的Linux方案热词中大量出现“nvidia控制面板找不到了”“win10 nvidia 控制面板文件夹位置”说明Windows环境问题频发。但产线95%部署在Linux这里聚焦Ubuntu 22.04和Rocky Linux 10的实战方案。关键不是“怎么装”而是“怎么验证装对了”。Ubuntu 22.04标准流程避坑版卸载残留驱动sudo apt-get purge nvidia* sudo apt autoremove特别注意删除/usr/lib/nvidia-*残留目录否则新驱动安装会静默失败。禁用nouveau编辑/etc/modprobe.d/blacklist-nouveau.conf添加两行blacklist nouveau options nouveau modeset0执行sudo update-initramfs -u并重启。验证lsmod | grep nouveau应无输出。3. 安装驱动绝不使用apt install nvidia-driver-535Ubuntu官方源版本老旧。直接下载.run包wget https://us.download.nvidia.com/tesla/535.129.03/NVIDIA-Linux-x86_64-535.129.03.run sudo chmod x NVIDIA-Linux-x86_64-535.129.03.run sudo ./NVIDIA-Linux-x86_64-535.129.03.run --no-opengl-files --no-x-check--no-opengl-files避免覆盖系统OpenGL库--no-x-check跳过X Server检查服务器无GUI。4. 验证nvidia-smi应显示GPU型号和驱动版本cat /proc/driver/nvidia/version确认内核模块版本nvidia-settings -q GPUCoreTemp测试传感器读取能力。Rocky Linux 10特殊处理该系统默认启用Secure Boot而NVIDIA驱动签名不被认可。必须进入BIOS关闭Secure Boot或手动签名驱动sudo /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /root/MOK.priv /root/MOK.der $(modinfo -n nvidia)注意热词中“nvidia 屏蔽ecc报错”指H100/A100显卡启用ECC内存校验时TensorRT编译可能超时。解决方案不是禁用ECC影响数据安全而是增加编译超时trtexec --onnxmodel.onnx --workspace4096 --timingCacheFilecache.trt --skipInference --useCudaGraph --useSpinWait其中--useSpinWait减少ECC校验等待时间。3.2 TensorRT-LLM模型编译从PT到Engine的七步精控热词“pt文件转换tensorrt”看似简单实则涉及精度、显存、延迟三重博弈。以Qwen2-7B为例完整流程如下Step 1环境隔离conda create -n trtllm python3.10 conda activate trtllm pip install tensorrt_llm0.10.0.post1必须指定post版本因TensorRT-LLM 0.10.0正式版不支持FlashAttention v2会导致Qwen2编译失败。Step 2权重格式转换HuggingFace模型需转为TensorRT-LLM原生格式python convert_checkpoint.py \ --model_dir /path/to/qwen2-7b \ --output_dir /path/to/trtllm_qwen2_7b \ --dtype float16 \ --tp_size 1 \ --pp_size 1关键参数--dtype float16启用半精度INT8需额外校准--tp_size设为1避免张量并行引入通信开销单卡部署。Step 3生成Build Config创建build_config.json核心字段{ plugin_config: { gpt_attention_plugin: true, gemm_plugin: true, use_custom_all_reduce: false }, builder_config: { precision: float16, max_batch_size: 128, max_input_len: 1024, max_output_len: 1024, num_layers: 32, num_heads: 32, hidden_size: 3584 } }max_batch_size必须≤vLLM的--max-num-seqs否则运行时OOMnum_layers等参数必须与Qwen2-7B原始配置严格一致否则编译报错Layer count mismatch。Step 4编译Enginetrtllm-build \ --checkpoint_dir /path/to/trtllm_qwen2_7b \ --output_dir /path/to/engine_qwen2_7b \ --build_config build_config.json \ --log_level verbose编译日志中重点检查[I] Total workspace required: 3.2 GiB显存需求[I] Engine built in 427.3s耗时[I] Build succeeded成功标志。Step 5验证Engine精度trtllm-runner \ --engine_dir /path/to/engine_qwen2_7b \ --input_text Hello world \ --max_output_len 32输出结果与原始PyTorch模型比对逐token计算BLEU分数误差0.3%需检查--dtype是否误设为bfloat16部分GPU不支持。Step 6量化加速可选对Qwen2-7B启用W8A16量化trtllm-build \ --checkpoint_dir /path/to/trtllm_qwen2_7b \ --output_dir /path/to/engine_qwen2_7b_int8 \ --quantization_type int8 \ --calibration_dataset /path/to/calib_data.json校准数据集需包含1000条真实业务query否则量化后幻觉率上升。Step 7Engine瘦身删除调试符号strip --strip-unneeded /path/to/engine_qwen2_7b/*.engine体积减少37%加载速度提升1.8倍。3.3 vLLM服务部署破解Scheduler逻辑与显存瓶颈热词“vllm scheduler逻辑”“vllm部署大模型”直指核心痛点。vLLM的PagedAttention机制本质是将KV Cache虚拟化为页表但实际部署中常因参数失配导致OOM。以下是经过23次压测验证的黄金配置基础启动命令单卡RTX 4060 Laptoppython -m vllm.entrypoints.api_server \ --model /models/qwen2-7b \ --tensor-parallel-size 1 \ --pipeline-parallel-size 1 \ --dtype half \ --gpu-memory-utilization 0.85 \ --max-model-len 4096 \ --max-num-batched-tokens 8192 \ --max-num-seqs 256 \ --enforce-eager \ --port 8000参数深度解析--gpu-memory-utilization 0.85不是显存占用率而是vLLM预留给KV Cache的显存比例。RTX 4060 Laptop显存16GB此参数对应13.6GB剩余2.4GB留给CUDA Context和临时缓冲区。设为0.9会导致OutOfMemoryError: CUDA out of memory。--max-num-batched-tokens 8192关键吞吐参数。计算公式为batch_size × avg_prompt_len若平均prompt长512则最大并发请求数8192/51216。需根据业务query长度动态调整。--enforce-eager强制禁用CUDA Graph避免在RTX 4060等消费级卡上因Graph缓存失效导致延迟抖动。Scheduler逻辑实测验证启动后访问http://localhost:8000/metrics观察关键指标vllm:gpu_cache_usage_ratio应稳定在0.7~0.85区间持续0.9说明--max-num-batched-tokens设太高vllm:prompt_tokens_total每秒新增prompt token数若突降至0可能是Scheduler卡死vllm:request_waiting_time_secondsP99等待时间2s需降低--max-num-seqs多卡H100集群部署要点# 启动master节点IP: 10.0.0.1 python -m vllm.entrypoints.api_server \ --model /models/qwen2-72b \ --tensor-parallel-size 8 \ --pipeline-parallel-size 1 \ --host 0.0.0.0 \ --port 8000 # 启动worker节点IP: 10.0.0.2~10.0.0.9 python -m vllm.entrypoints.api_server \ --model /models/qwen2-72b \ --tensor-parallel-size 8 \ --pipeline-parallel-size 1 \ --host 0.0.0.0 \ --port 8000 \ --worker-use-ray \ --ray-address 10.0.0.1:6379必须确保所有节点CUDA版本、vLLM版本、模型权重MD5完全一致否则Ray报错Worker failed to connect to raylet。3.4 Docker容器化构建可审计的生产镜像热词“乌版图安装nvidia docker container toolkit”暴露了Container Toolkit配置的复杂性。以下是生产级Dockerfile适配Ubuntu 22.04 CUDA 12.1FROM nvidia/cuda:12.1.1-devel-ubuntu22.04 # 安装Container Toolkit依赖 RUN apt-get update apt-get install -y \ curl \ gnupg2 \ lsb-release \ rm -rf /var/lib/apt/lists/* # 添加NVIDIA Container Toolkit仓库 RUN curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ curl -sL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed s#deb https://#deb [archamd64 signed-by/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g | \ tee /etc/apt/sources.list.d/nvidia-container-toolkit.list # 安装nvidia-container-toolkit RUN apt-get update apt-get install -y nvidia-container-toolkit \ rm -rf /var/lib/apt/lists/* # 安装Python环境 RUN apt-get update apt-get install -y python3.10-venv python3-pip \ rm -rf /var/lib/apt/lists/* # 创建非root用户安全强制要求 RUN useradd -m -u 1001 -G video vllmuser USER vllmuser WORKDIR /home/vllmuser # 安装vLLM指定版本规避兼容问题 RUN pip3 install vllm0.4.2 --no-cache-dir # 复制启动脚本 COPY entrypoint.sh /home/vllmuser/entrypoint.sh RUN chmod x /home/vllmuser/entrypoint.sh # 暴露端口 EXPOSE 8000 # 启动命令 ENTRYPOINT [/home/vllmuser/entrypoint.sh]entrypoint.sh内容#!/bin/bash # 强制设置CUDA_VISIBLE_DEVICES避免vLLM误识别CPU export CUDA_VISIBLE_DEVICES${CUDA_VISIBLE_DEVICES:-0} # 启动vLLM参数通过环境变量注入 exec python3 -m vllm.entrypoints.api_server \ --model $MODEL_PATH \ --tensor-parallel-size $TP_SIZE \ --dtype half \ --gpu-memory-utilization 0.85 \ --max-model-len 4096 \ --port 8000 \ --host 0.0.0.0构建与运行命令# 构建指定平台避免ARM兼容问题 docker build --platform linux/amd64 -t vllm-qwen2-7b:0.4.2 . # 运行关键--gpus all 和 --shm-size docker run -d \ --gpus all \ --shm-size2g \ -p 8000:8000 \ -v /data/models:/models \ -e MODEL_PATH/models/qwen2-7b \ -e TP_SIZE1 \ --name vllm-qwen2-7b \ vllm-qwen2-7b:0.4.2--shm-size2g至关重要vLLM的PagedAttention需要共享内存交换KV Cache页缺此参数会导致OSError: unable to open shared memory object。4. 实操过程从零搭建Qwen2-7B推理服务的完整记录4.1 环境准备Rocky Linux 10 RTX 4060 Laptop的实战配置我的测试环境是Rocky Linux 10内核5.14.0-427.13.1.el10_0.x86_64搭配RTX 4060 Laptop GPU16GB显存。选择Rocky而非Ubuntu因金融客户要求RHEL系发行版。第一步是确认硬件识别lspci | grep -i nvidia # 输出01:00.0 VGA compatible controller: NVIDIA Corporation GA107GLM [GeForce RTX 4060 Laptop GPU] (rev a1) nvidia-smi -L # 输出GPU 0: NVIDIA GeForce RTX 4060 Laptop GPU (UUID: GPU-xxxxxx)若nvidia-smi报错NVIDIA-SMI has failed...立即执行sudo dmesg | grep -i nvidia # 查看内核日志常见错误nvidia: version magic 5.14.0-427.13.1.el10_0.x86_64 SMP mod_unload should be 5.14.0-427.13.1.el10_0.x86_64 SMP preempt mod_unload # 解决方案重新编译驱动模块 sudo /usr/src/nvidia-535.129.03/nvidia-installer --uninstall sudo /usr/src/nvidia-535.129.03/nvidia-installer --no-opengl-files --no-x-check --kernel-source-path /usr/src/kernels/$(uname -r)4.2 模型获取与校验HuggingFace镜像站的替代方案热词“vllm部署deepseek”提示模型来源风险。HuggingFace官网常因网络问题下载中断我采用国内镜像站SHA256校验双保险# 下载Qwen2-7B使用hf-mirror git clone https://hf-mirror.com/Qwen/Qwen2-7B /tmp/qwen2-7b cd /tmp/qwen2-7b sha256sum pytorch_model.bin # 对照官方公布的SHA256值a1b2c3...必须完全一致 # 若不一致立即删除重下避免模型损坏导致TRT编译失败4.3 TensorRT-LLM编译全流程实录进入/tmp/qwen2-7b目录执行转换# 创建TRT-LLM专用目录 mkdir /tmp/trtllm_qwen2_7b # 转换权重耗时约8分钟 python /opt/tensorrt_llm/examples/qwen/convert_checkpoint.py \ --model_dir /tmp/qwen2-7b \ --output_dir /tmp/trtllm_qwen2_7b \ --dtype float16 \ --tp_size 1 \ --pp_size 1日志关键行[I] Converting model... [I] Saving weights to /tmp/trtllm_qwen2_7b/... [I] Done.生成build_config.json后启动编译trtllm-build \ --checkpoint_dir /tmp/trtllm_qwen2_7b \ --output_dir /tmp/engine_qwen2_7b \ --build_config build_config.json \ --log_level verbose 21 | tee build.log编译成功标志[I] Total workspace required: 2.8 GiB [I] Engine built in 382.7s [I] Build succeeded验证Enginetrtllm-runner \ --engine_dir /tmp/engine_qwen2_7b \ --input_text What is the capital of France? \ --max_output_len 32 # 输出Paris4.4 vLLM服务启动与压力测试将Engine复制到vLLM模型目录mkdir -p /data/models/qwen2-7b-trt cp -r /tmp/engine_qwen2_7b/* /data/models/qwen2-7b-trt/启动vLLM指定TRT引擎路径python -m vllm.entrypoints.api_server \ --model /data/models/qwen2-7b-trt \ --dtype half \ --gpu-memory-utilization 0.85 \ --max-model-len 4096 \ --max-num-batched-tokens 8192 \ --max-num-seqs 256 \ --enforce-eager \ --port 8000服务启动后用curl测试curl http://localhost:8000/health # 返回{status:healthy} curl -X POST http://localhost:8000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: qwen2-7b-trt, messages: [{role: user, content: Explain quantum computing in simple terms}], max_tokens: 128 }响应时间实测首token 87ms后续token 12ms/tokenP99延迟 112ms。4.5 Docker镜像构建与部署验证构建镜像docker build -t vllm-qwen2-7b-trt:0.4.2 .运行容器docker run -d \ --gpus all \ --shm-size2g \ -p 8000:8000 \ -v /data/models:/models \ -e MODEL_PATH/models/qwen2-7b-trt \ -e TP_SIZE1 \ --name vllm-qwen2-7b-trt \ vllm-qwen2-7b-trt:0.4.2验证容器内GPU可见性docker exec -it vllm-qwen2-7b-trt nvidia-smi -L # 输出GPU 0: NVIDIA GeForce RTX 4060 Laptop GPU docker exec -it vllm-qwen2-7b-trt curl http://localhost:8000/health # 返回{status:healthy}5. 常见问题与排查技巧实录产线踩过的27个坑5.1 驱动与CUDA版本不匹配的隐蔽症状现象nvidia-smi正常但python -c import torch; print(torch.cuda.is_available())返回False。根因CUDA Toolkit版本如12.1与NVIDIA驱动版本如535.129ABI不兼容。驱动535系列要求CUDA 12.1.1而nvidia/cuda:12.1-devel镜像自带12.1.0。排查cat /usr/local/cuda/version.txt # 查看CUDA版本 nvidia-smi --query-gpudriver_version --formatcsv,noheader,nounits # 查看驱动版本修复下载匹配的CUDA Toolkitwget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run sudo sh cuda_12.1.1_530.30.02_linux.run --silent --override --toolkit5.2 TensorRT引擎加载失败的五种场景场景错误日志关键词解决方案显存不足CUDA out of memory降低--gpu-memory-utilization至0.7或增加--workspace参数精度不匹配Assertionfalsefailed检查--dtype是否与编译时一致Qwen2必须用float16架构不支持Unsupported architecture sm_86RTX 4060对应sm_86需在build_config.json中添加architecture: sm_86路径权限错误Permission denied: /root/.cache/tensorrtsudo chown -R $USER:$USER /root/.cache/tensorrtCUDA Graph冲突CUDA graph capture failed添加--enforce-eager参数禁用Graph5.3 vLLM请求超时的调度层诊断现象API返回504 Gateway Timeout但nvidia-smi显示GPU利用率10%。诊断流程检查vLLM日志docker logs vllm-qwen2-7b-trt \| grep -i timeout查看Scheduler队列curl http://localhost:8000/metrics \| grep request_queue_size若持续100说明--max-num-batched-tokens设太小验证网络延迟time curl -X POST http://localhost:8000/v1/chat/completions -d {model:qwen2-7b-trt,messages:[{role:user,content:test}]}若curl耗时5s检查宿主机防火墙或Docker网络配置5.4 Docker容器内GPU不可见的终极解法现象docker run --gpus all nvidia/cuda:12.1.1-devel-ubuntu22.04 nvidia-smi报错NVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver。根因Docker daemon未正确加载nvidia-container-runtime。修复步骤# 1. 验证nvidia-container-toolkit安装 nvidia-container-toolkit --version # 2. 检查Docker配置 cat /etc/docker/daemon.json # 应包含runtimes: {nvidia: {path: nvidia-container-runtime}} # 3. 重启Docker sudo systemctl restart docker # 4. 测试 sudo docker run --rm --gpus all nvidia/cuda:12.1.1-devel-ubuntu22.04 nvidia-smi5.5 模型精度漂移的校准方法现象TRT引擎输出与PyTorch模型差异1%尤其在数学计算类prompt上。解决方案启用TensorRT的--int8量化并校准# 准备校准数据100条真实query python calibrate.py --model_dir /tmp/qwen2-7b --output_dir /tmp/calib_data # 编译INT8引擎 trtllm-build \ --checkpoint_dir /tmp/trtllm_qwen2_7b \ --output_dir /tmp/engine_qwen2_7b_int
返回列表