当前位置: 首页 > news >正文

tritonserver的docker镜像中运行onnxruntime-gpu,报错segmentationfault

运行tritonserver的python_backend时候,报这个错误
在这里插入图片描述
关键变量已经缩小到 “Triton 24.05-py3 镜像本身” 与 “另一份自定义/第三方镜像” 的差别。

虽然两张卡型号完全一致,但 Triton 24.05-py3 除了 onnxruntime 1.20.2 之外,还自带一套 预先编译好的 CUDA EP 插件(/opt/tritonserver/backends/onnxruntime/libonnxruntime_providers_cuda.so)以及 Triton 自己打的 CUDA/cuDNN 补丁。这些组件和你手动 pip install onnxruntime-gpu==1.20.2 得到的 PyPI 二进制包并不完全一样,因此会出现“同一显卡、同一 ort 版本、同一模型”却一台 segfault 一台正常的情况。

下面给出 3 分钟定位 和 立即规避 的办法。


  1. 确认 Provider 共享库到底是谁

    在 Triton 容器里执行

   lsof -p $(pgrep tritonserver) | grep 'providers_cuda'

你会看到

   /opt/tritonserver/backends/onnxruntime/libonnxruntime_providers_cuda.so

而在你的“另一台镜像”里,python 加载的是

   .../site-packages/onnxruntime/capi/libonnxruntime_providers_cuda.so

路径不同 → 编译 flag 不同 → 实际跑的 kernel 不同。

  1. 用 gdb 看崩在哪
   apt-get update && apt-get install -y gdbgdb --args tritonserver --model-repository=/models ...(gdb) set environment CUDA_LAUNCH_BLOCKING=1(gdb) run# 崩停后(gdb) bt

如果栈顶是

   tritonserver`void onnxruntime::cuda::BatchNormImpl<half>

就可以确定是 Triton 24.05 自带的那份 providers_cuda.so 在 CC < 8.9 的路径下编译进了有 bug 的 FP16 kernel(issue #17897 的修复尚未 cherry-pick 到 Triton 分支)。

  1. 立即规避 / 永久解决
    • 最快规避:

      config.pbtxt 里关闭 FP16

     parameters { key: "gpu_fp16" value: "0" }```或者在起容器时加环境变量  
 export ORT_TENSORRT_FP16_ENABLE=0```推理不再崩就可先上线。  

- 永久解决(我使用的解决方法):

 a) 把 Triton 镜像里的 `libonnxruntime_providers_cuda.so` 换成 PyPI 1.20.2 版本(无此 bug):  
     # 在 Dockerfile 里RUN pip install onnxruntime-gpu==1.20.2 && \cp /usr/local/lib/python3.10/dist-packages/onnxruntime/capi/libonnxruntime_providers_cuda.so \/opt/tritonserver/backends/onnxruntime/```b) 或等 NVIDIA 发布 24.06+ 镜像(已合并官方 fix);c) 或自己用 Triton 的 `build.py` 重新编 ort-backend,打进去最新 onnxruntime master。---结论不是驱动、不是 CUDA 版本、也不是显卡差异,而是 Triton 24.05-py3 镜像里那份 提前编译好的 `libonnxruntime_providers_cuda.so` 自带 FP16 BatchNorm kernel bug。按上面第 3 步关掉 FP16 或替换为该版本的 PyPI so,即可让“坏机器”表现与“好机器”完全一致。
http://www.dtcms.com/a/492186.html

相关文章:

  • 毕业答辩企业网站开发的问题创作平台有哪些
  • 客户推广渠道有哪些seo高端培训
  • AWS Glue中查询一个月的数据条数
  • 自助网站制作系统源码网络热词2022流行语及解释
  • 手机网站跟pc网站有什么不同中国人做的比较好的shopify网站
  • Rust 实战六 | 利用 winres 配置应用程序的图标
  • 通过docker、docker-compose方式安装部署zabbix7.0 LTS监控平台
  • 建设企业网站电话是多少广州市 网站建设 有限公司
  • 外贸网站建设可以吗网站开发流程心得体会
  • 网站内页产品做跳转安徽省建设工程招标网官网
  • 网站开发财务网站建设口号
  • 郑州企业建站系统模板电子商务网站建设属性
  • GroundingDINO安装报错合集解决
  • 具有价值的网站建设平台网站建设的流程分析
  • 国外网站推广平台有哪些?多用户建站平台
  • FastbuildAI新建套餐-前端代码分析
  • 网站建好了还需要什么维护扬中网站推广托管
  • [Sora] 集成 | 封装-调用-推理 | `prepare_api`与`api_fn`
  • 新一代Java应用日志可视化与监控系统开源啦
  • 网站做镜像是什么房产律师网站模板
  • 汕头网站优化系统wordpress格行代码
  • 抓取源ip的包
  • 北京手机版网站制作个人博客主页登录
  • php企业网站程序做网站分层技术
  • 网站建立的链接不安全怎么解决p2p网站制作价格
  • Python 3.14 安装教程:新手友好版
  • SQL 日期处理指南
  • 网站建设备案查询上海建筑网站建设
  • [c++语法学习]Day11:c++面向对象 1
  • 网站建设报价表格江门微信网站建设