问题出现得很突然,日志倒是留得挺全。用 TGI 3.0.1 的 Docker 镜像起 Qwen2.5-7B,启动日志里报 flashinfer 不可用,随后进程退出,提示 CUDA kernel 初始化失败,宿主机驱动是 535。

刚开始盯着「显存不足时回退路径也被关掉」,折腾了半个多小时,排掉了。

排查方向其实有限,先把可能性排一排。镜像默认启用 flashinfer 内核。少数情况下是驱动版本低于该内核对 CUDA 的要求。

另外,启动脚本传了强制启用的环境变量。

第一件事是启动时显式关掉 flashinfer

docker run --gpus all -e USE_FLASHINFER=0 -p 8080:80 ghcr.io/huggingface/text-generation-inference:3.0.1 --model-id Qwen/Qwen2.5-7B-Instruct

随后确认容器的 CUDA 版本

docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi

接着换回普通 attention 内核再起

docker run --gpus all -e ATTENTION=flash_attention_2 -p 8080:80 ghcr.io/huggingface/text-generation-inference:3.0.1 --model-id Qwen/Qwen2.5-7B-Instruct

发一条请求确认服务可用

curl -s http://127.0.0.1:8080/generate -H 'Content-Type: application/json' -d '{"inputs":"你好","parameters":{"max_new_tokens":16}}'

改之前先确认了最近有没有人动过配置,避免白查一遍。

怎么算真的好了,看的是同一批现象。容器保持运行,健康检查返回 200,生成接口能拿到文本,日志里不再出现 flashinfer 初始化失败。

补一句。内核开关在不同镜像版本里名字不一样,升级前先看启动日志里实际读到的环境变量。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189