|
|
@@ -1,64 +1,60 @@
|
|
|
-#### 1 系统
|
|
|
-NAME="Ubuntu"
|
|
|
-VERSION="20.04.6 LTS (Focal Fossa)"
|
|
|
-昇腾910B2
|
|
|
-驱动 23.0.6.2
|
|
|
-CANN 7.5.X
|
|
|
-Miner U 2.1.9
|
|
|
-#### 2 踩坑记录
|
|
|
-坑1: **图形库相关的问题,总之就是动态库导致TLS的内存分配失败(OpenCV库在ARM64架构上的兼容性问题)**
|
|
|
-⭐这个错误 ImportError: /lib/aarch64-linux-gnu/libGLdispatch.so.0: cannot allocate memory in static TLS block 是由于OpenCV库在ARM64架构上的兼容性问题导致的。从错误堆栈可以看到,问题出现在导入cv2模块时,这发生在MinerU的VLM后端初始化过程中。
|
|
|
-解决方法:
|
|
|
-1 安装减少内存问题的opencv版本
|
|
|
+## 1. 测试平台
|
|
|
+```
|
|
|
+os: CTyunOS 22.06
|
|
|
+cpu: Kunpeng-920 (aarch64)
|
|
|
+npu: Ascend 910B2
|
|
|
+driver: 23.0.3
|
|
|
+docker: 20.10.12
|
|
|
```
|
|
|
-pip install --upgrade albumentations albucore simsimd# Uninstall current opencv
|
|
|
-pip uninstall opencv-python opencv-contrib-python
|
|
|
|
|
|
-# Install headless version (no GUI dependencies)
|
|
|
-pip install opencv-python-headless
|
|
|
+## 2. 环境准备
|
|
|
|
|
|
-python -c "import cv2; print(cv2.__version__)"2 apt-get install一些包
|
|
|
-```
|
|
|
-换成清华源然后重命名为sources.list.tuna,然后挪到根目录下面
|
|
|
-```
|
|
|
-deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
|
|
|
-deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
|
|
|
-deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
|
|
|
-deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiversesudo apt-get update -o Dir::Etc::sourcelist="sources.list.tuna" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
|
|
|
-sudo apt-get install libgl1-mesa-glx -o Dir::Etc::sourcelist="sources.list.tuna" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
|
|
|
-sudo apt-get install libglib2.0-0 libsm6 libxext6 libxrender-dev libgomp1 -o Dir::Etc::sourcelist="sources.list.tuna" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
|
|
|
-sudo apt-get install libgl1-mesa-dev libgles2-mesa-dev -o Dir::Etc::sourcelist="sources.list.tuna" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
|
|
|
-sudo apt-get install libgomp1 -o Dir::Etc::sourcelist="sources.list.tuna" -o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
|
|
|
-export OPENCV_IO_ENABLE_OPENEXR=0 export QT_QPA_PLATFORM=offscreen
|
|
|
-```
|
|
|
-↑这些不知道哪些好使,或者有没有好使的
|
|
|
+Ascend加速卡支持使用`lmdeploy`或`vllm`进行VLM模型推理加速。请根据实际需求选择安装和使用其中之一:
|
|
|
|
|
|
-3 强制覆盖conda环境自带的动态库(conda的和系统的冲突)
|
|
|
-```
|
|
|
-查找:find /usr/lib /lib /root/.local/conda -name "libgomp.so*" 2>/dev/null
|
|
|
-export LD_PRELOAD="/usr/lib/aarch64-linux-gnu/libstdc++.so.6:/usr/lib/aarch64-linux-gnu/libgomp.so.1"
|
|
|
-export LD_PRELOAD=/lib/aarch64-linux-gnu/libGLdispatch.so.0:$LD_PRELOAD
|
|
|
-```
|
|
|
-此外,还可以把conda环境中自带的的强制挪走
|
|
|
-```
|
|
|
-mv $CONDA_PREFIX/lib/libstdc++.so.6 $CONDA_PREFIX/lib/libstdc++.so.6.bak
|
|
|
-mv $CONDA_PREFIX/lib/libgomp.so.1 $CONDA_PREFIX/lib/libgomp.so.1.bak
|
|
|
-mv $CONDA_PREFIX/lib/libGLdispatch.so.0 $CONDA_PREFIX/lib/libGLdispatch.so.0.bak # 如果有的话
|
|
|
-simsimd包相关:
|
|
|
-mv /root/.local/conda/envs/pdfparser/lib/python3.10/site-packages/simsimd./libgomp-947d5fa1.so.1.0.0 /root/.local/conda/envs/pdfparser/lib/python3.10/site-packages/simsimd./libgomp-947d5fa1.so.1.0.0.bak
|
|
|
-```
|
|
|
-或者:
|
|
|
-降级simsimd 3.7.2
|
|
|
-降级albumentations 1.3.1
|
|
|
-sklean包相关:
|
|
|
+### 2.1 使用 lmdeploy
|
|
|
+
|
|
|
+#### 使用 Dockerfile 构建镜像
|
|
|
+
|
|
|
+```bash
|
|
|
+wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docker/china/npu.Dockerfile
|
|
|
+docker build --build-arg INFERENCE_ENGINE=lmdeploy -t mineru:latest -f npu.Dockerfile .
|
|
|
```
|
|
|
-# 找到 scikit-learn 内部的 libgomp 路径
|
|
|
-SKLEARN_LIBGOMP="/root/.local/conda/envs/pdfparser/lib/python3.10/site-packages/scikit_learn.libs/libgomp-947d5fa1.so.1.0.0"
|
|
|
|
|
|
-# 预加载这个特定的 libgomp 版本
|
|
|
-export LD_PRELOAD="$SKLEARN_LIBGOMP:$LD_PRELOAD"
|
|
|
+
|
|
|
+### 2.2 使用 vllm
|
|
|
+
|
|
|
+#### 使用 Dockerfile 构建镜像
|
|
|
+
|
|
|
+```bash
|
|
|
+wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/docker/china/npu.Dockerfile
|
|
|
+docker build --build-arg INFERENCE_ENGINE=vllm -t mineru:latest -f npu.Dockerfile .
|
|
|
+```
|
|
|
+
|
|
|
+## 3. 启动 Docker 容器
|
|
|
+
|
|
|
+```bash
|
|
|
+docker run -u root --name mineru_docker --privileged=true \
|
|
|
+ -p 30000:30000 -p 7860:7860 -p 8000:8000 \
|
|
|
+ --ipc=host \
|
|
|
+ --network=host \
|
|
|
+ --device=/dev/davinci0 \
|
|
|
+ --device=/dev/davinci1 \
|
|
|
+ --device=/dev/davinci2 \
|
|
|
+ --device=/dev/davinci3 \
|
|
|
+ --device=/dev/davinci4 \
|
|
|
+ --device=/dev/davinci5 \
|
|
|
+ --device=/dev/davinci6 \
|
|
|
+ --device=/dev/davinci7 \
|
|
|
+ --device=/dev/davinci_manager \
|
|
|
+ --device=/dev/devmm_svm \
|
|
|
+ --device=/dev/hisi_hdc \
|
|
|
+ -v /var/log/npu/:/usr/slog \
|
|
|
+ -v /usr/local/dcmi:/usr/local/dcmi \
|
|
|
+ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
|
|
|
+ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
|
|
|
+ -itd mineru:latest \
|
|
|
+ /bin/bash
|
|
|
```
|
|
|
-4 其他
|
|
|
-torch / torch_npu 2.5.1
|
|
|
-pip install "numpy<2.0" 2.0和昇腾不兼容
|
|
|
-export MINERU_MODEL_SOURCE=modelscope
|
|
|
+
|
|
|
+执行该命令后,您将进入到Docker容器的交互式终端,并映射了一些端口用于可能会使用的服务,您可以直接在容器内运行MinerU相关命令来使用MinerU的功能。
|
|
|
+您也可以直接通过替换`/bin/bash`为服务启动命令来启动MinerU服务,详细说明请参考[通过命令启动服务](https://opendatalab.github.io/MinerU/zh/usage/quick_usage/#apiwebuihttp-clientserver)。
|