This commit is contained in:
2026-06-12 10:56:36 +08:00
parent b962f0b6c0
commit 3f96a0df02
3 changed files with 43 additions and 3 deletions
+22
View File
@@ -406,6 +406,28 @@ docker compose build --no-cache gradio
docker compose up -d --force-recreate
```
**Q: 任务失败并提示 `Please install vllm to use the vllm-async-engine backend`**
这通常不是简单的“没安装 vllm”,而是任务进程里 `import vllm` 或 `from vllm.platforms import current_platform` 失败,MinerU 将真实异常包装成了这句提示。先在容器内直接诊断:
```bash
docker compose exec gradio bash -lc '/opt/mineru_venv/bin/python - <<"PY"
import traceback
try:
import torch
import vllm
from vllm.platforms import current_platform
print("torch:", torch.__version__, "hip:", torch.version.hip)
print("vllm:", vllm.__version__)
print("platform:", type(current_platform).__name__, "is_rocm:", current_platform.is_rocm())
except Exception:
traceback.print_exc()
raise
PY'
```
当前入口脚本会在服务启动前执行同样的 vLLM 导入验证;如果验证失败,容器会直接退出并在 `docker compose logs gradio` 中显示真实 traceback,而不是等任务执行时才报泛化错误。
**Q: 构建时 `ninja` 被 kill(exit 137)**
内存不足。将 Dockerfile 中 `ninja -j4` 改为 `ninja -j2` 或 `ninja -j1`,或给 Docker 分配更多内存。
+1 -1
View File
@@ -11,7 +11,7 @@ echo "[entrypoint] running patches..."
# vllm 平台补丁
if [ -f ${SCRIPTS_DIR}/patch_vllm_platform.py ]; then
${VENV}/bin/python ${SCRIPTS_DIR}/patch_vllm_platform.py || echo "[entrypoint] patch_vllm_platform.py failed (non-fatal)"
${VENV}/bin/python ${SCRIPTS_DIR}/patch_vllm_platform.py
fi
# MinerU 推理补丁
+20 -2
View File
@@ -2,10 +2,11 @@
"""vllm 平台检测补丁
问题 1:amdsmi 不可用时 platform 回退到 torch.version.hip
问题 2:rocm.py 中 logger.warning_once() 导致循环导入
问题 2:rocm.py 中 logger.warning_once() 导致循环导入(默认不再改写;仅保留为显式开关)
"""
import os
import traceback
VLLM_DIR = '/opt/vllm/vllm'
@@ -33,7 +34,16 @@ def patch6_init_platform_fallback():
def patch7_rocm_break_import_cycle():
"""补丁 7:platforms/rocm.py —— logger.warning_once → sys.stderr.write"""
"""补丁 7:platforms/rocm.py —— logger.warning_once → sys.stderr.write
这个补丁会直接改写 vLLM 源码中的函数调用。部分 vLLM 版本里
logger.warning_once(...) 参数不一定兼容 sys.stderr.write(...),改写后可能
导致 import vllm / import vllm.platforms.rocm 失败。MinerU 会把这种导入失败
包装成 "Please install vllm",因此默认禁用,只在显式设置环境变量时启用。
"""
if os.environ.get('VLLM_PATCH_ROCM_WARNING_ONCE') != '1':
print('Patch 7: skipped (set VLLM_PATCH_ROCM_WARNING_ONCE=1 to enable).')
return
f = os.path.join(VLLM_DIR, 'platforms', 'rocm.py')
c = open(f).read()
old = 'logger.warning_once('
@@ -49,6 +59,14 @@ def patch7_rocm_break_import_cycle():
def main():
patch6_init_platform_fallback()
patch7_rocm_break_import_cycle()
try:
import vllm
from vllm.platforms import current_platform
print(f'vllm runtime import OK: {vllm.__version__}, platform={type(current_platform).__name__}')
except Exception:
print('ERROR: vllm runtime import failed after platform patches:')
traceback.print_exc()
raise
print('vllm platform patches done.')