From 7a8bf3b5f987944deaffb490cddd3d165684a6b8 Mon Sep 17 00:00:00 2001 From: chenjw28 <792430652@qq.com> Date: Tue, 16 Jun 2026 11:46:53 +0800 Subject: [PATCH] x --- .trae/documents/fix-model-download.md | 66 +++++++++++++++++++++++++++ docker/Dockerfile | 2 + 2 files changed, 68 insertions(+) create mode 100644 .trae/documents/fix-model-download.md diff --git a/.trae/documents/fix-model-download.md b/.trae/documents/fix-model-download.md new file mode 100644 index 0000000..0f19e8b --- /dev/null +++ b/.trae/documents/fix-model-download.md @@ -0,0 +1,66 @@ +# 修复模型下载失败 + +## 当前状态 + +`mineru-models-download --source modelscope` 在执行时,12 个小型配置文件下载成功,但最大的文件 `model.safetensors`(2.45 GB)下载失败。 + +## 错误分析 + +``` +[Errno 2] No such file or directory: +'/opt/models/modelscope/models/._____temp/OpenDataLab/MinerU2.5-Pro-2605-1.2B/model.safetensors' +``` + +modelscope 的 `snapshot_download()` 将大文件先写入临时目录 `._____temp`,再移动到最终位置。临时目录创建不完整或下载中断导致大文件失败。 + +## 修复方案 + +### 步骤 1:清理损坏的下载状态 + +在宿主机上删除临时目录和损坏文件,保留已下载成功的 12 个小文件: + +```bash +rm -rf /opt/project/mineru-rocm/docker/data/models/modelscope/models/._____temp +rm -f /opt/project/mineru-rocm/docker/data/models/modelscope/models/OpenDataLab/MinerU2.5-Pro-2605-1.2B/model.safetensors +``` + +### 步骤 2:确保宿主机目录完整 + +```bash +mkdir -p /opt/project/mineru-rocm/docker/data/{input,output,models/modelscope,miopen} +``` + +### 步骤 3:重启所有容器使挂载生效 + +```bash +cd /opt/project/mineru-rocm/docker +docker compose down +docker compose up -d +docker compose --profile gradio up -d +``` + +### 步骤 4:在 worker0 中重试下载 + +modelscope 的 `snapshot_download` 会检查已有文件并跳过,只重新下载缺失的 `model.safetensors`: + +```bash +docker compose exec worker0 mineru-models-download --source modelscope +# 交互提示选 all +``` + +### 步骤 5(备选):如果重试仍然失败 + +在 worker0 容器内手动创建临时目录后重试: + +```bash +docker compose exec worker0 bash -c " +mkdir -p /opt/models/modelscope/models/._____temp/OpenDataLab/MinerU2.5-Pro-2605-1.2B +mineru-models-download --source modelscope +" +``` + +## 备注 + +- 本次仅在 worker0 下载,但因为 `/opt/models` 是共享卷挂载(`./data/models:/opt/models`),所有容器都可见 +- 模型持久化在宿主机 `./data/models/`,容器重建不会丢失 +- 如果 modelscope 下载持续不稳定,可切换到 huggingface 源:`MINERU_MODEL_SOURCE=huggingface`(需要代理) diff --git a/docker/Dockerfile b/docker/Dockerfile index e788813..106926e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -294,6 +294,8 @@ RUN set -ex && \ torch==2.11.0+rocm7.2 torchvision pytorch-triton-rocm \ --index-url ${TORCH_INDEX} && \ ${VENV}/bin/python -c "import vllm; print('vllm import OK:', vllm.__version__)" && \ + # 确保 mineru-api 子进程不依赖 PYTHONPATH 也能导入 vllm + echo "/opt/vllm" > ${VENV}/lib/python${PYTHON_VER}/site-packages/vllm.pth && \ # 锁定所有 ROCm 关键包版本,防止 mineru 安装时覆盖 ${VENV}/bin/pip freeze | grep -iE "^(torch|vllm|triton|pytorch.triton|setuptools|torchvision|flash.attn|aiter)" >> ${VENV}/torch-constraint.txt && \ rm -rf /opt/vllm_build