x
This commit is contained in:
@@ -304,6 +304,7 @@ RUN set -ex && \
|
|||||||
RUN set -ex && \
|
RUN set -ex && \
|
||||||
export http_proxy=${GIT_PROXY} https_proxy=${GIT_PROXY} && \
|
export http_proxy=${GIT_PROXY} https_proxy=${GIT_PROXY} && \
|
||||||
${VENV}/bin/pip install 'mineru[core]' click gradio && \
|
${VENV}/bin/pip install 'mineru[core]' click gradio && \
|
||||||
|
cd /opt/vllm && ${VENV}/bin/pip install -e . --no-build-isolation --no-deps && \
|
||||||
${VENV}/bin/python -c "import torch; import vllm; import mineru; import click; import gradio; import mineru.cli.gradio_app; print('MinerU + Gradio CLI imports OK')" && \
|
${VENV}/bin/python -c "import torch; import vllm; import mineru; import click; import gradio; import mineru.cli.gradio_app; print('MinerU + Gradio CLI imports OK')" && \
|
||||||
${VENV}/bin/mineru-gradio --help >/dev/null
|
${VENV}/bin/mineru-gradio --help >/dev/null
|
||||||
|
|
||||||
|
|||||||
@@ -428,6 +428,19 @@ PY'
|
|||||||
|
|
||||||
当前入口脚本会在服务启动前执行同样的 vLLM 导入验证;如果验证失败,容器会直接退出并在 `docker compose logs gradio` 中显示真实 traceback,而不是等任务执行时才报泛化错误。
|
当前入口脚本会在服务启动前执行同样的 vLLM 导入验证;如果验证失败,容器会直接退出并在 `docker compose logs gradio` 中显示真实 traceback,而不是等任务执行时才报泛化错误。
|
||||||
|
|
||||||
|
如果日志明确显示 `ModuleNotFoundError: No module named 'vllm'`,说明 MinerU 依赖安装后 editable vLLM 没有注册到虚拟环境。当前 Dockerfile 已在安装 MinerU 后重新执行:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /opt/vllm && /opt/mineru_venv/bin/pip install -e . --no-build-isolation --no-deps
|
||||||
|
```
|
||||||
|
|
||||||
|
入口脚本也会在启动时自动尝试这个修复。你也可以在旧容器里手动验证/修复一次:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose exec gradio bash -lc 'cd /opt/vllm && /opt/mineru_venv/bin/pip install -e . --no-build-isolation --no-deps && /opt/mineru_venv/bin/python -c "import vllm; print(vllm.__version__)"'
|
||||||
|
docker compose restart gradio
|
||||||
|
```
|
||||||
|
|
||||||
**Q: 构建时 `ninja` 被 kill(exit 137)**
|
**Q: 构建时 `ninja` 被 kill(exit 137)**
|
||||||
|
|
||||||
内存不足。将 Dockerfile 中 `ninja -j4` 改为 `ninja -j2` 或 `ninja -j1`,或给 Docker 分配更多内存。
|
内存不足。将 Dockerfile 中 `ninja -j4` 改为 `ninja -j2` 或 `ninja -j1`,或给 Docker 分配更多内存。
|
||||||
|
|||||||
@@ -6,9 +6,14 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
VLLM_DIR = '/opt/vllm/vllm'
|
VLLM_DIR = '/opt/vllm/vllm'
|
||||||
|
VLLM_SRC_DIR = '/opt/vllm'
|
||||||
|
VENV_PYTHON = '/opt/mineru_venv/bin/python'
|
||||||
|
VENV_PIP = '/opt/mineru_venv/bin/pip'
|
||||||
|
|
||||||
|
|
||||||
def patch6_init_platform_fallback():
|
def patch6_init_platform_fallback():
|
||||||
@@ -56,10 +61,42 @@ def patch7_rocm_break_import_cycle():
|
|||||||
print('Patch 7: already applied or pattern not found.')
|
print('Patch 7: already applied or pattern not found.')
|
||||||
|
|
||||||
|
|
||||||
|
def ensure_vllm_installed():
|
||||||
|
"""确保 vLLM Python 包在当前虚拟环境中可导入。
|
||||||
|
|
||||||
|
某些 MinerU 依赖安装流程可能会卸载/覆盖 editable vLLM,导致任务运行时报
|
||||||
|
"Please install vllm"。如果 /opt/vllm 源码仍在,启动时用 --no-deps 重新注册,
|
||||||
|
避免扰动已锁定的 ROCm PyTorch/Triton 依赖。
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
import vllm # noqa: F401
|
||||||
|
return
|
||||||
|
except ModuleNotFoundError as exc:
|
||||||
|
if exc.name != 'vllm':
|
||||||
|
raise
|
||||||
|
|
||||||
|
if not os.path.isdir(VLLM_SRC_DIR):
|
||||||
|
raise ModuleNotFoundError(
|
||||||
|
'vllm is not installed and /opt/vllm source directory is missing'
|
||||||
|
)
|
||||||
|
|
||||||
|
print('vllm package missing; reinstalling editable /opt/vllm with --no-deps...')
|
||||||
|
subprocess.check_call([
|
||||||
|
VENV_PIP,
|
||||||
|
'install',
|
||||||
|
'-e', VLLM_SRC_DIR,
|
||||||
|
'--no-build-isolation',
|
||||||
|
'--no-deps',
|
||||||
|
])
|
||||||
|
import vllm # noqa: F401
|
||||||
|
print('vllm editable reinstall OK.')
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
patch6_init_platform_fallback()
|
patch6_init_platform_fallback()
|
||||||
patch7_rocm_break_import_cycle()
|
patch7_rocm_break_import_cycle()
|
||||||
try:
|
try:
|
||||||
|
ensure_vllm_installed()
|
||||||
import vllm
|
import vllm
|
||||||
from vllm.platforms import current_platform
|
from vllm.platforms import current_platform
|
||||||
print(f'vllm runtime import OK: {vllm.__version__}, platform={type(current_platform).__name__}')
|
print(f'vllm runtime import OK: {vllm.__version__}, platform={type(current_platform).__name__}')
|
||||||
|
|||||||
Reference in New Issue
Block a user