这个坑值得记一笔。Triton 24.08 的 model_repository 里放了 python backend 模型,config.pbtxt 写 backend: "python",启动日志报 Failed to load 'embedder': Python backend stub process exited,/v2/models 列表里没有该模型。

刚开始盯着「模型版本目录命名不合规,被当成空模型」,折腾了半个多小时,排掉了。

把日志和配置对完,能解释这个现象的基本就这几处。model.py 里 import 了容器内不存在的包;config.pbtxt 的 max_batch_size 与输入维度不匹配;Python backend 的运行时版本与容器内的 libpython 不符。

动手时先看完整启动日志里的第一处异常

docker logs triton 2>&1 | Select-String -Pattern 'error|Traceback' -Context 0,5

再往下在容器里直接跑一次 model.py 复现导入错误

docker exec -it triton python3 /models/embedder/1/model.py

接着核对配置里的输入输出维度与名称

python -c "print({'input':'text','dims':[-1],'data_type':'TYPE_STRING'})"

精简模型只留初始化与一个输出,验证能否加载

curl -s localhost:8000/v2/models/embedder/config

这类改动我都写进变更记录,过两周再出问题时能对上号。

改完先别撤,确认这几项。模型进入 READY 状态,/v2/models 列表里能看到 embedder,推理请求返回 200 且输出张量形状符合配置。

提醒一点。Python backend 的加载失败几乎都在 model.py 的导入阶段,先把文件拿到容器里手工执行一遍,比反复改配置快得多。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189