x
This commit is contained in:
+30
-22
@@ -191,39 +191,39 @@ docker compose build
|
||||
|
||||
## 4. 运行容器
|
||||
|
||||
### 4.1 启动 WebUI / API 服务
|
||||
### 4.1 启动 WebUI 服务(默认推荐)
|
||||
|
||||
当前 `docker-compose.yml` 默认会启动:
|
||||
当前 `docker-compose.yml` 默认只启动一个 GPU 直连的 `gradio` WebUI 服务,避免单卡机器因为 `worker1` 或可选 Router 退出导致整组服务不可用:
|
||||
|
||||
| 服务 | 宿主机端口 | 容器内端口 | 用途 |
|
||||
|------|------------|------------|------|
|
||||
| `gradio` | `10002` | `7860` | WebUI 前端 |
|
||||
| `router` | `8000` | `8000` | API 路由 |
|
||||
| `worker0` | 未暴露 | `8001` | GPU Worker |
|
||||
| `worker1` | 未暴露 | `8002` | GPU Worker |
|
||||
| `gradio` | `10002` | `7860` | WebUI 前端 + 本地推理 |
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
|
||||
# 查看容器是否都已启动
|
||||
docker compose ps
|
||||
docker compose ps -a
|
||||
|
||||
# WebUI 健康检查:应返回 HTML 或 HTTP 状态,而不是 Connection refused
|
||||
curl -v http://localhost:10002/
|
||||
|
||||
# API router 端口
|
||||
curl -v http://localhost:8000/
|
||||
```
|
||||
|
||||
浏览器打开:`http://<宿主机IP>:10002`。
|
||||
|
||||
如果 `docker compose ps` 为空或显示 `Exited`,说明服务进程启动后退出,请先看日志:
|
||||
|
||||
```bash
|
||||
docker compose logs --tail=200 gradio
|
||||
```
|
||||
|
||||
> 注意:直接 `docker run mineru-rocm:7.2.1` 使用的是 Dockerfile 默认 `CMD ["bash"]`,只会进入/运行 shell,不会启动 WebUI/API,也就不会监听 `10002`。如需直接 `docker run` 暴露 WebUI,必须显式传入 `mineru-gradio` 命令并映射端口。
|
||||
|
||||
### 4.2 交互模式(调试 / 手动处理)
|
||||
|
||||
```bash
|
||||
# docker compose(复用 worker0 的 GPU/卷配置,覆盖 command 进入 bash)
|
||||
docker compose run --rm worker0 bash
|
||||
# docker compose(复用 gradio 的 GPU/卷配置,覆盖 command 进入 bash)
|
||||
docker compose run --rm gradio bash
|
||||
|
||||
# 或 docker run
|
||||
docker run -it --rm \
|
||||
@@ -251,7 +251,7 @@ mineru -p /data/input/example.pdf -o /data/output -b hybrid-auto-engine
|
||||
### 4.3 CLI 模式(一键处理)
|
||||
|
||||
```bash
|
||||
docker compose run --rm worker0 \
|
||||
docker compose run --rm gradio \
|
||||
mineru -p /data/input/example.pdf -o /data/output -b hybrid-auto-engine
|
||||
```
|
||||
|
||||
@@ -260,16 +260,24 @@ docker compose run --rm worker0 \
|
||||
command: mineru -p /data/input/example.pdf -o /data/output -b hybrid-auto-engine
|
||||
```
|
||||
|
||||
### 4.4 WebUI / API 模式
|
||||
### 4.4 可选:Router API 多 Worker 模式
|
||||
|
||||
无需修改 Compose,直接启动即可:
|
||||
如果确实需要独立 API Router,可启用 `router-api` profile。默认只启用 `worker0`,避免单卡机器启动 `worker1` 失败:
|
||||
|
||||
```bash
|
||||
docker compose up -d
|
||||
docker compose --profile router-api up -d
|
||||
curl -v http://localhost:8000/
|
||||
```
|
||||
|
||||
- WebUI:`http://<宿主机IP>:10002`
|
||||
- API Router:`http://<宿主机IP>:8000`
|
||||
双卡时再启用 `dual-gpu` profile,并在 `.env` 中设置:
|
||||
|
||||
```env
|
||||
ROUTER_API_URLS=http://mineru-worker0:8001,http://mineru-worker1:8002
|
||||
```
|
||||
|
||||
```bash
|
||||
docker compose --profile router-api --profile dual-gpu up -d
|
||||
```
|
||||
|
||||
API 用法参考 [MinerU 官方文档](https://github.com/opendatalab/MinerU)。
|
||||
|
||||
@@ -278,7 +286,7 @@ API 用法参考 [MinerU 官方文档](https://github.com/opendatalab/MinerU)。
|
||||
设置环境变量即可切换下载源:
|
||||
|
||||
```bash
|
||||
docker compose run --rm -e MINERU_MODEL_SOURCE=modelscope worker0 \
|
||||
docker compose run --rm -e MINERU_MODEL_SOURCE=modelscope gradio \
|
||||
mineru -p /data/input/example.pdf -o /data/output -b hybrid-auto-engine
|
||||
```
|
||||
|
||||
@@ -292,7 +300,7 @@ docker compose run --rm -e MINERU_MODEL_SOURCE=modelscope worker0 \
|
||||
|
||||
```bash
|
||||
# 进入容器
|
||||
docker compose run --rm worker0 bash
|
||||
docker compose run --rm gradio bash
|
||||
|
||||
# 运行预热
|
||||
python /opt/scripts/cache_warmer.py --device cuda --max_side 960 --step 32
|
||||
@@ -310,7 +318,7 @@ python /opt/scripts/cache_warmer.py --device cuda --max_side 960 --step 32
|
||||
## 6. 验证
|
||||
|
||||
```bash
|
||||
docker compose run --rm worker0 python -c "
|
||||
docker compose run --rm gradio python -c "
|
||||
import torch
|
||||
from vllm.platforms import current_platform
|
||||
|
||||
@@ -438,7 +446,7 @@ RUN rm -rf /opt/vllm_build /opt/vllm/.git /opt/aiter/.git /opt/flash-attention/.
|
||||
### 升级 MinerU
|
||||
|
||||
```bash
|
||||
docker compose run --rm worker0 pip install --upgrade 'mineru[core]'
|
||||
docker compose run --rm gradio pip install --upgrade 'mineru[core]'
|
||||
# 然后重新应用 RDNA 补丁(参考 Dockerfile 阶段 9)
|
||||
```
|
||||
|
||||
|
||||
+55
-32
@@ -6,35 +6,6 @@
|
||||
services:
|
||||
# --- WebUI 前端 ---
|
||||
gradio:
|
||||
image: mineru-rocm:7.2.1
|
||||
container_name: mineru-gradio
|
||||
stdin_open: true
|
||||
tty: true
|
||||
ipc: host
|
||||
ports:
|
||||
- "10002:7860"
|
||||
environment:
|
||||
- GRADIO_SERVER_NAME=0.0.0.0
|
||||
- MINERU_MODEL_SOURCE=${MINERU_MODEL_SOURCE:-huggingface}
|
||||
- HF_HUB_CACHE=${HF_HUB_CACHE:-/opt/models/huggingface}
|
||||
- MODELSCOPE_CACHE=${MODELSCOPE_CACHE:-/opt/models/modelscope}
|
||||
volumes:
|
||||
- ${INPUT_DIR:-./data/input}:/data/input:ro
|
||||
- ${OUTPUT_DIR:-./data/output}:/data/output
|
||||
- ${MODEL_DIR:-./data/models}:/opt/models
|
||||
- ./scripts:/opt/scripts:ro
|
||||
command:
|
||||
[
|
||||
"mineru-gradio",
|
||||
"--server-name", "0.0.0.0",
|
||||
"--server-port", "7860",
|
||||
"--api-url", "http://mineru-router:8000",
|
||||
]
|
||||
depends_on:
|
||||
- router
|
||||
|
||||
# --- 双卡 Worker(GPU 算力,无 profile,始终可用)---
|
||||
worker0:
|
||||
image: mineru-rocm:7.2.1
|
||||
build:
|
||||
context: .
|
||||
@@ -43,10 +14,11 @@ services:
|
||||
args:
|
||||
ARCH: ${ARCH:-gfx1201}
|
||||
GIT_PROXY: ${GIT_PROXY:-}
|
||||
container_name: mineru-worker0
|
||||
container_name: mineru-gradio
|
||||
stdin_open: true
|
||||
tty: true
|
||||
ipc: host
|
||||
restart: unless-stopped
|
||||
devices:
|
||||
- /dev/kfd
|
||||
- /dev/dri
|
||||
@@ -54,6 +26,53 @@ services:
|
||||
- seccomp=unconfined
|
||||
group_add:
|
||||
- video
|
||||
- render
|
||||
ports:
|
||||
- "10002:7860"
|
||||
environment:
|
||||
- GRADIO_SERVER_NAME=0.0.0.0
|
||||
- HIP_VISIBLE_DEVICES=${HIP_VISIBLE_DEVICES:-0}
|
||||
- MINERU_MODEL_SOURCE=${MINERU_MODEL_SOURCE:-huggingface}
|
||||
- HF_HUB_CACHE=${HF_HUB_CACHE:-/opt/models/huggingface}
|
||||
- MODELSCOPE_CACHE=${MODELSCOPE_CACHE:-/opt/models/modelscope}
|
||||
volumes:
|
||||
- ${INPUT_DIR:-./data/input}:/data/input:ro
|
||||
- ${OUTPUT_DIR:-./data/output}:/data/output
|
||||
- ${MODEL_DIR:-./data/models}:/opt/models
|
||||
- ${MIOPEN_CACHE:-./data/miopen}:/root/.cache/miopen
|
||||
- ./scripts:/opt/scripts:ro
|
||||
command:
|
||||
[
|
||||
"mineru-gradio",
|
||||
"--server-name", "0.0.0.0",
|
||||
"--server-port", "7860",
|
||||
]
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:7860/ >/dev/null || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 60s
|
||||
|
||||
# --- 可选:多 Worker API Router 模式(默认不启动)---
|
||||
# 启用方式:docker compose --profile router-api up -d
|
||||
# 单卡默认请使用上面的 gradio 服务;双卡时可在 .env 中设置 ROUTER_API_URLS。
|
||||
worker0:
|
||||
image: mineru-rocm:7.2.1
|
||||
profiles: ["router-api"]
|
||||
container_name: mineru-worker0
|
||||
stdin_open: true
|
||||
tty: true
|
||||
ipc: host
|
||||
restart: unless-stopped
|
||||
devices:
|
||||
- /dev/kfd
|
||||
- /dev/dri
|
||||
security_opt:
|
||||
- seccomp=unconfined
|
||||
group_add:
|
||||
- video
|
||||
- render
|
||||
environment:
|
||||
- HIP_VISIBLE_DEVICES=0
|
||||
- MINERU_MODEL_SOURCE=${MINERU_MODEL_SOURCE:-huggingface}
|
||||
@@ -69,10 +88,12 @@ services:
|
||||
|
||||
worker1:
|
||||
image: mineru-rocm:7.2.1
|
||||
profiles: ["dual-gpu"]
|
||||
container_name: mineru-worker1
|
||||
stdin_open: true
|
||||
tty: true
|
||||
ipc: host
|
||||
restart: unless-stopped
|
||||
devices:
|
||||
- /dev/kfd
|
||||
- /dev/dri
|
||||
@@ -80,6 +101,7 @@ services:
|
||||
- seccomp=unconfined
|
||||
group_add:
|
||||
- video
|
||||
- render
|
||||
environment:
|
||||
- HIP_VISIBLE_DEVICES=1
|
||||
- MINERU_MODEL_SOURCE=${MINERU_MODEL_SOURCE:-huggingface}
|
||||
@@ -95,10 +117,12 @@ services:
|
||||
|
||||
router:
|
||||
image: mineru-rocm:7.2.1
|
||||
profiles: ["router-api"]
|
||||
container_name: mineru-router
|
||||
stdin_open: true
|
||||
tty: true
|
||||
ipc: host
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8000:8000"
|
||||
environment:
|
||||
@@ -111,11 +135,10 @@ services:
|
||||
[
|
||||
"mineru-router",
|
||||
"--api-urls",
|
||||
"http://mineru-worker0:8001,http://mineru-worker1:8002",
|
||||
"${ROUTER_API_URLS:-http://mineru-worker0:8001}",
|
||||
"--host", "0.0.0.0",
|
||||
"--port", "8000",
|
||||
"--allow-public-http-client",
|
||||
]
|
||||
depends_on:
|
||||
- worker0
|
||||
- worker1
|
||||
|
||||
@@ -15,6 +15,15 @@ OUTPUT_DIR=./data/output
|
||||
MODEL_DIR=./data/models
|
||||
MIOPEN_CACHE=./data/miopen
|
||||
|
||||
# ---- 默认 WebUI 使用的 GPU ----
|
||||
# 单卡保持 0;多卡时可指定 0/1/...,或留空让 ROCm 使用全部可见 GPU。
|
||||
HIP_VISIBLE_DEVICES=0
|
||||
|
||||
# ---- 可选:router-api profile 使用的 Worker 地址 ----
|
||||
# 单 worker: http://mineru-worker0:8001
|
||||
# 双 worker: http://mineru-worker0:8001,http://mineru-worker1:8002
|
||||
ROUTER_API_URLS=http://mineru-worker0:8001
|
||||
|
||||
# ---- 模型下载源 ----
|
||||
# huggingface(默认,需科学上网)或 modelscope(国内可用)
|
||||
MINERU_MODEL_SOURCE=huggingface
|
||||
|
||||
Reference in New Issue
Block a user