这个坑值得记一笔。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 的导入阶段,先把文件拿到容器里手工执行一遍,比反复改配置快得多。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。
