记录一下配置GroundingDINO的环境的时候遇到的问题
首先需要注意,要下载GPU版本的DINO
判断自己下载的DINO是不是GPU版本的,看系统文件里有没有_C开头的文件
没有的话,运行的时候会出现如下报错:
NameError: name '_C' is not defined
安装步骤
下面的安装步骤和github中给的步骤一致。
1. 设置CUDA_HOME
1. 使用命令行which nvcc 查看自己的CUDA版本和位置
2. export CUDA_HOME=/usr/local/cuda-xx.x
3.echo $CUDA_HOME 查看是否设置成功
设置正确的CUDA_HOME,在运行setup.py的时候,才能下载GPU版本
2. 从GitHub上克隆GroundingDINO的项目
git clone https://github.com/IDEA-Research/GroundingDINO.git
在github issues中,有人表示,自己无法下载正确的GPU版本,从这个路径下载解决了问题。
https://codeload.github.com/IDEA-Research/GroundingDINO/tar.gz/refs/tags/v0.1.0-alpha2
我在配置环境的时候直接采用了这个路径,大家可以自行选择和尝试
3. 安装
这里有两种安装方式
python setup.py build
python setup.py install
和
pip install -e .
我在安装的过程中出现了nvcc和gcc版本不匹配的问题,报错信息如下:
unsupported GNU version! gcc versions later than 10 are not supported! The nvcc flag '-allow-unsupported-compiler' can be used to override this version check; however, using an unsupported host compiler may cause compilation failure or incorrect run time execution. Use at your own risk.
这是因为我的CUDA版本不支持10以上版本的gcc。
我得解决方案如下:
1. ls /usr/bin/gcc-* 查看服务器上是否有小于10的gcc
我的服务器上有gcc-8和gcc-9,不用重新下载低版本了,死里逃生!
2. export CC=/usr/bin/gcc-9 设置合适版本的CC路径
3. echo $CC 检查是否设置成功
4. 再次执行pip install -e . 成功安装了groundingdino,注意-e后的要有 .
4. 运行Demo
运行grounding_dino_demo.py
我这里还遇到了两个问题
1. ImportError: cannot import name 'get_full_repo_name' from 'huggingface_hub'
执行conda install chardet,安装后解决问题
2. requests.exceptions.ConnectTimeout: (MaxRetryError("HTTPSConnectionPool(host='huggingface.co', port=443): Max retries exceeded with url: /bert-base-uncased/resolve/main/config.json (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f7bb5149130>, 'Connection to huggingface.co timed out. (connect timeout=10)'))"), '(Request ID: e3ce50f3-814e-4351-a70c-e0412ba967b1)')
这里我直接下载了bert-base-uncased的源文件
https://huggingface.co/google-bert/bert-base-uncased/tree/main
在config文件里将text_encoder_type改为文件路径
改完后运行还会有一些命名造成的错误,对着报错,索引到相关位置更改就行。
例如:ValueError: Unknown text_encoder_type /extern2/zmy/A_ConceptGraphs/bert-base-uncased
总之,get_tokenlizer是可以读文件路径,从本地载入模型的。
以上就是我在配置DINO环境的时候遇到的全部问题,虽然都不复杂,但是一个一个弄下来还是挺烦人的,所以记录一下,希望可以对大家有所帮助!!
最后码一下github issue