Cambricon
1. 测试平台
以下为本指南测试使用的平台信息,供参考:
os: Ubuntu 22.04.5 LTS
cpu: Hygon Hygon C86 7490
mlu: MLU590-M9D
driver: v6.2.11
docker: 28.3.0
2. 环境准备
Note
Cambricon加速卡支持使用lmdeploy或vllm进行VLM模型推理加速。请根据实际需求选择安装和使用其中之一:
2.1 使用 Dockerfile 构建镜像 (lmdeploy)
wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docker/china/mlu.Dockerfile
docker build --network=host -t mineru:mlu-lmdeploy-latest -f mlu.Dockerfile .
2.2 使用 Dockerfile 构建镜像 (vllm)
wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docker/china/mlu.Dockerfile
# 将基础镜像从 lmdeploy 切换为 vllm
sed -i -e '3,4s/^/# /' -e '6,7s/^# //' mlu.Dockerfile
docker build --network=host -t mineru:mlu-vllm-latest -f mlu.Dockerfile .
3. 启动 Docker 容器
docker run --name mineru_docker \
--privileged \
--ipc=host \
--network=host \
--cap-add SYS_PTRACE \
--device=/dev/mem \
--device=/dev/dri \
--device=/dev/infiniband \
--device=/dev/cambricon_ctl \
--device=/dev/cambricon_dev0 \
--device=/dev/cambricon_dev1 \
--device=/dev/cambricon_dev2 \
--device=/dev/cambricon_dev3 \
--device=/dev/cambricon_dev4 \
--device=/dev/cambricon_dev5 \
--device=/dev/cambricon_dev6 \
--device=/dev/cambricon_dev7 \
--group-add video \
--shm-size=400g \
--ulimit memlock=-1 \
--security-opt seccomp=unconfined \
--security-opt apparmor=unconfined \
-e MINERU_MODEL_SOURCE=local \
-e MINERU_LMDEPLOY_DEVICE=camb \
-it mineru:mlu-lmdeploy-latest \
/bin/bash
Tip
请根据实际情况选择使用vllm或lmdeploy版本的镜像,如需使用vllm,请执行以下操作:
-
替换上述命令中的
mineru:mlu-lmdeploy-latest为mineru:mlu-vllm-latest -
进入容器后,通过以下命令切换venv环境:
source /torch/venv3/pytorch_infer/bin/activate -
切换成功后,您可以在命令行前看到
(pytorch_infer)的标识,这表示您已成功进入vllm的虚拟环境。
执行该命令后,您将进入到Docker容器的交互式终端,您可以直接在容器内运行MinerU相关命令来使用MinerU的功能。
您也可以直接通过替换/bin/bash为服务启动命令来启动MinerU服务,详细说明请参考通过命令启动服务。
4. 注意事项
Note
兼容性说明:由于寒武纪(Cambricon)目前对 vLLM v1 引擎的支持尚待完善,MinerU 现阶段采用 v0 引擎作为适配方案。 受此限制,vLLM 的异步引擎(Async Engine)功能存在兼容性问题,可能导致部分使用场景无法正常运行。 我们将持续跟进寒武纪对 vLLM v1 引擎的支持进展,并及时在 MinerU 中进行相应的适配与优化。
不同环境下,MinerU对Cambricon加速卡的支持情况如下表所示:
Tip
lmdeploy黄灯问题为不能批量输出文件夹,单文件输入正常vllm黄灯问题为在精度未对齐,在部分场景下可能出现预期外结果。
| 使用场景 | 容器环境 | ||
|---|---|---|---|
| vllm | lmdeploy | ||
| 命令行工具(mineru) | pipeline | 🟢 | 🟢 |
| <vlm/hybrid>-auto-engine | 🟡 | 🟡 | |
| <vlm/hybrid>-http-client | 🟡 | 🟢 | |
| fastapi服务(mineru-api) | pipeline | 🟢 | 🟢 |
| <vlm/hybrid>-auto-engine | 🔴 | 🟢 | |
| <vlm/hybrid>-http-client | 🟡 | 🟢 | |
| gradio界面(mineru-gradio) | pipeline | 🟢 | 🟢 |
| <vlm/hybrid>-auto-engine | 🔴 | 🟢 | |
| <vlm/hybrid>-http-client | 🟡 | 🟢 | |
| openai-server服务(mineru-openai-server) | 🟡 | 🟢 | |
| 数据并行 (--data-parallel-size/--dp) | 🔴 | 🔴 | |
注:
🟢: 支持,运行较稳定,精度与Nvidia GPU基本一致
🟡: 支持但较不稳定,在某些场景下可能出现异常,或精度存在一定差异
🔴: 不支持,无法运行,或精度存在较大差异
Tip
Cambricon加速卡指定可用加速卡的方式与NVIDIA GPU类似,请参考使用指定GPU设备章节说明,
将环境变量CUDA_VISIBLE_DEVICES替换为MLU_VISIBLE_DEVICES即可。