Xinference 1.x 里启动 bge-reranker-v2-m3,模型列表显示已就绪,调 /v1/rerank 一直返回 503,日志里 worker 启动后立即退出,换 embedding 模型则正常。

一开始怀疑是「显存不足,进程启动后被系统杀掉」,查了一圈,方向不对。

排查方向其实有限,先把可能性排一排。rerank 模型需要单独的 worker 类型,启动时没指定。另一种情况是权重下载不完整,加载报错但状态没更新。

少数情况下是请求路径写成了 /v1/reranking。

动手时先看模型详情里的状态与错误

curl http://127.0.0.1:9997/v1/models | jq '.data[] | {id, status}'

随后用原生接口确认路径

curl http://127.0.0.1:9997/v1/rerank -d '{"model":"bge-reranker-v2-m3","query":"a","documents":["b"]}'

限制显存比例后重启模型

xinference launch --model-name bge-reranker-v2-m3 --model-type rerank --gpu-mem 0.3

等前面都确认过,再确认权重完整后再次加载

du -sh ~/.xinference/cache/bge-reranker-v2-m3

我习惯把每一步的执行时间和结果记在一边,后面复盘省事。

改之前我把相关日志按时间截了一段存着,事后对时间线用得上。

别只看报错消失,验证要多做一步。接口返回 200 与 relevance_score,模型状态稳定在 running,重启后仍可用。

这里还有个坑。状态显示就绪不等于进程活着,503 时先看 worker 日志里有没有 OOM 记录。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189