现在在北航读完三年了,学的东西越来越多,越来越急,有的东西没有时间来打在PC上做思维导图,之后会以各种博客的形式来分享软硬件两方面的一些代码复现经历、debug思路以及论文学习成果,今天带来的是是trackformer的复现日志,git路径git@github.com:timmeinhardt/trackformer.git,关于深度学习实现目标轨迹跟踪
项目简介:This repository provides the official implementation of the TrackFormer: Multi-Object Tracking with Transformers paper by Tim Meinhardt, Alexander Kirillov, Laura Leal-Taixe and Christoph Feichtenhofer. The codebase builds upon DETR, Deformable DETR and Tracktor.
PS:47.97.5 与120服务器都只是一般的服务器,前期了解、熟悉的过程在47服务器上,想直接看解决过程的话看120服务器开始的部分
PART-A:代码复现
47.97.8.5服务器爆出编译错误
509服务器不能运行nvcc命令
509服务器安装cuda10.2驱动 509不能执行nvidia命令——驱动与ubuntu不匹配
47服务器安装cuda10.1后再安装pytorch再运行make.sh
执行print(torch.cuda.is_available())——true——cuda可用
47服务器安装cuda10.2后再安装pytorch再运行make.sh
执行print(torch.cuda.is_available())——true——cuda可用
认为47.97.8.5服务器可用CUDA,可用驱动,但ubuntu版本过高,不支持CUDA10.1、CUDA10.2的
在自己电脑上熟悉pytorch的使用 在自己电脑上复现出第一个pytorch项目
尝试使用pytorch-CPU实现track-former项目的复现——失败,项目关键的MultiScaleDeformableAttention 库对于CUDA具有硬性要求
在120服务器上进行项目的复现
·问题a:lapsolver库的安装
解决a:使用wheel文件安装——报错,平台不支持回溯:文件名称可能不支持——python -m pip debug --verbose命令获取支持的文件名——结果显示,文件适用于windows系统与amd64硬件系统,不支持linux
解决b:使用setup.py安装——报错, Runtime error:CMake must be installed to build the following extensions——安装cmake(注意PATH)——python setup.py build+python setup.py install——安装成功
问题a解决,使用setup安装完成lapsolver
·问题b:git软件的安装
解决a:加载zlib.h库——找不到zconf.h库——一批依赖项未安装
解决b:安装依赖项——git依赖众多
解决c:通过apt-get功能实现安装
问题b解决,通过apt-get功能实现安装
·
问题c:项目核心代码 MultiScaleDeformableAttention库的安装 Tips:
a、Nvidia 官方提供安装的 CUDA Toolkit 包含了进行 CUDA 相关程序开发的编译、调试等过程相关的所有组件;
b、Anaconda 在安装 Pytorch 等会使用到 CUDA 的框架时,会自动为用户安装 cudatoolkit,其主要包含应用程序在使用 CUDA 相关的功能时所依赖的动态链接库。
c、Pytorch 首先尝试获取环境变量 CUDA_HOME/CUDA_PATH 的值作为运行时使用的 cuda 目录,若上述环境变量不存在,则 Pytorch 会检查系统是否存在固定路径 /usr/local/cuda 。默认情况下,系统并不存在对环境变量 CUDA_HOME 设置,故而 Pytorch 运行时默认检查的是 Linux 环境中固定路径 /usr/local/cuda 所指向的 cuda 目录。/usr/local/cuda 实际上是一个软连接文件,当其存在时一般被设置为指向系统中某一个版本的 cuda 文件夹。当系统中存在多个安装的 cuda 版本时,只需要修改上述软连接实际指向的 cuda 目录
d、/usr/local/cuda 并不是一个 Linux 系统上默认存在的路径,其一般在安装 cuda 时创建( 为可选项,不强制创建 )。故而 Pytorch 检测上述路径时也可能会失败
e、若 CUDA_HOME 变量指定的路径和默认路径 /usr/local/cuda 均不存在安装好的 cuda 目录,则 Pytorch 通过运行命令 which nvcc 来找到一个包含有 nvcc 命令的 cuda 安装目录,并将其作为运行时使用的 cuda 版本
f、如果需要使用新的 cuda 来编译文件,还可以通过 LD_LIBRARY_PATH 变量指定进行链接的 cuda 库文件的路径。位于 ~/.bashrc 文件中的指令在每次终端启动时均会自动运行,后续本用户所打开的终端中的环境变量均会首先执行上述文件中的命令,从而获得对应的 cuda 变量。 export CUDA_HOME=/home/test/cuda-10.1/ //设置全局变量 CUDA_HOME export PATH=$PATH:/home/test/cuda-10.1/bin/ //在 PATH 变量中加入需要使用的 cuda 版本的路径,使得系统可以使用 cuda 提供的可执行文件,包括 nvcc
g、 Pytorch 在基于源码进行编译时,通过tools/setup_helpers/cuda.py来确定编译 Pytorch 所使用的 cuda 的安装目录和版本号,确定的具体流程与 Pytorch 运行时确定运行时所使用的 cuda 版本的流程较为相似,具体可以见其 在进行 Pytorch 源码编译时,根目录下的 setup.py 会调用上述代码,确定编译 Pytorch 所使用的 cuda 目录和版本号,并使用获得的信息修改 torch/version.py 中的 cuda 信息( Pytorch, Line 286 )。上述 torch.version.cuda 输出的信息即为编译该发行版 Pytorch 时所使用的 cuda 信息。若系统上的 Pytorch 通过 conda 安装,用户也可以直接通过 conda list | grep pytorch 命令查看安装的 Pytorch 的部分信息。 conda list | grep pytorch //查看安装的 Pytorch 的信息
解决a:修改CUDA软链,链至10.2版本
未实际执行,但在未设置CUDA_HOME PATH变量时可行,优先度低于前者
解决b:修改PATH,改变nvcc —V的结果
修改CUDA_HOME 这一PATH变量指向/usr/local/cuda-10.2/ 并将/usr/local/cuda-10.2/bin/加入到PATH中后
再执行指令:python src/trackformer/models/ops/setup.py build --build-base=src/trackformer/models/ops/ install 成功安装MultiScaleDeformableAttention Package
问题c解决,更新CUDA_HOME并添加文件目录下的bin目录到PATH实现CUDA的版本更换
·
问题d:解压trackformer_models.zip时报错:End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk of a multi-part archive. In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive.
Tips: a、文件过大会直接报错file is too big
解决a:安装7zip,可解压大于2G的压缩文件——报错:mkdir: cannot create directory ‘/usr/local/lib/p7zip’: Permission denied,权限不足
解决b:在windows中解压,发送到linux上
问题d解决,在windows中解压后发送到服务器上
·问题e:sacred库import失败,报错:ImportError: Failed to initialize: Bad git executable
解决a:安装git,同问题b。
问题e解决:安装git
·问题f:pycocotools库import失败,报错:ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject
解决a:由于在问题b解决之前不能够使用git命令,pycocotools是从conda方式下载的,install.md文件中的方法不同,后者使用命令pip install -U 'git+https://github.com/timmeinhardt/cocoapi.git#subdirectory=PythonAPI’下载,故内容上可能存在差异——报错不变
解决b:升级numpy——成功
问题f解决,升级numpy可解决cheader与pyproject不匹配的问题——分析:pycocotools在后续应该进行了升级,导致requirements.txt中的numpy版本1.18.5与之不匹配了
PART-A:代码复现——完成
再附一个初接触pytorch与sacred的思维导图