Bot-SORT部署避坑

3 阅读3分钟

源代码 github.com/NirAharon/B…

安装依赖

安装过程与安装MMTracking的依赖一样,参考我的另一篇文章MOT之MMTracking框架部署ByteTrack、DeepSort(血泪教训成功版)

Bot-SORT安装到最后一步报错

执行python setup.py develop时报错

Traceback (most recent call last):
  File "setup.py", line 8, in <module>
    import torch
  File "/home/yilv/miniconda3/envs/bot-sort/lib/python3.7/site-packages/torch/__init__.py", line 198, in <module>
    _load_global_deps()
  File "/home/yilv/miniconda3/envs/bot-sort/lib/python3.7/site-packages/torch/__init__.py", line 151, in _load_global_deps
    ctypes.CDLL(lib_path, mode=ctypes.RTLD_GLOBAL)
  File "/home/yilv/miniconda3/envs/bot-sort/lib/python3.7/ctypes/__init__.py", line 364, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: /home/yilv/miniconda3/envs/bot-sort/lib/python3.7/site-packages/torch/lib/../../../../libcublas.so.11: undefined symbol: cublasLt_for_cublas_HSS, version libcublasLt.so.11

解决办法一:pip uninstall nvidia_cublas_cu11

原因: Like eval said, it is because pytorch1.13 automatically install nvidia_cublas_cu11, nvidia_cuda_nvrtc_cu11, nvidia_cuda_runtime_cu11 and nvidia_cudnn_cu11. While I have my own CUDA toolKit already installed, I have the same problem.

In my case, I used pip uninstall nvidia_cublas_cu11 and solved the problem. I think the PyTorch team should solve this issue, since users often have their own CUDAtoolkit installed.

引自: stackoverflow.com/questions/7…

结果我当前conda环境里并没有安装这个组件,但是

看到so引用的路径有点问题

ldd /home/yilv/miniconda3/envs/bot-sort/lib/libcublas.so.11

        linux-vdso.so.1 (0x00007ffcd0dc4000)
        libcublasLt.so.11 => /usr/local/cuda-11.5/lib64/libcublasLt.so.11 (0x00007fe9e9e00000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fea0422c000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fea04227000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fea04222000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fea04139000)
        libgcc_s.so.1 => /home/yilv/miniconda3/envs/bot-sort/lib/libgcc_s.so.1 (0x00007fea0410c000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe9e9bd7000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fea04240000)

于是就

解决办法二:修改当前环境的变量

在 Conda 中为特定环境设置 LD_LIBRARY_PATH 的方式如下:

  1. 首先,激活你想要修改的环境conda activate myEnv

  2. 编辑 conda 环境配置文件。在 MyEnv 环境目录下,找到 etc/conda/activate.d 文件夹,并在其中创建一个新的脚本文件,例如命名为 set_ld_lib_path.sh

  3. 在新创建的脚本文件中,添加以下内容来设置 LD_LIBRARY_PATH 环境变量:

#!/bin/bash
export LD_LIBRARY_PATH=/path/to/your/library:$LD_LIBRARY_PATH

请将 /path/to/your/library 替换为你的实际库路径。

  1. 保存脚本文件,然后关闭编辑器。

  2. 为了让这个新的环境配置生效,你需要重启你的终端或命令提示符窗口。

  3. 现在,你可以再次激活你的环境,并查看 LD_LIBRARY_PATH 是否已经正确设置了:

conda activate MyEnv
echo $LD_LIBRARY_PATH

你应该能看到你刚刚设置的库路径排在最前面。

结果还是不行,那我只能

解决办法三:卸载整个torch

因为这个模块不是单独安装的,而是torch内置的,而且我这个环境是克隆的另外一个环境,不知道有没有关系。 pip uninstall torch cudatoolkit torchvision

再重新安装torch(安装方法见MOT之MMTracking框架部署ByteTrack、DeepSort(血泪教训成功版)

再执行python setup.py develop就成功了。

帮到你的话,欢迎点赞、收藏+关注!!!