관리 메뉴

가끔 보자, 하늘.

GroundingDINO 설치 썰! 본문

개발 이야기/개발툴 및 기타 이야기

GroundingDINO 설치 썰!

가온아 2023. 6. 29. 15:16

'썰!'이라고 쓴건 그냥 해프닝 정도라.. 그래도 기록으로 남겨두면 좋을 듯 해서 공유합니다. 브끄럽네요.

이미 web ui를 로컬에 설치해서 사용중이었으며, extension DDSD(https://github.com/NeoGraph-K/sd-webui-ddsd)를 추가 설치하려고 했습니다.

시작은 이 에러!

  File ".....\venv\lib\site-packages\groundingdino\models\GroundingDINO\ms_deform_attn.py", line 53, in forward
    output = _C.ms_deform_attn_forward(
NameError: name '_C' is not defined

ms_deform_attn.py를 확인하니 위 에러의  출처는 이 곳!

try:
    from groundingdino import _C
except:
    warnings.warn("Failed to load custom C++ ops. Running on CPU mode Only!")
.
.
output = _C.ms_deform_attn_forward(
    value,
    value_spatial_shapes,
.
.

보통은 install 할 때 문제가 없을 수 있지만 torch 버전이나 CUDA, cuDNN 등의 이슈가 있었는지 위와 같은 에러가 발생했습니다. GroundingDINO의 C++ Module을 빌드할 때 에러가 발생했던 것 같습니다.

당시에는 저 에러 자체가 뭘 말하는지 정확히 몰랐었기 때문에 다양한 삽질을 하게 됩니다. 오래되서 순서 상관없이 관련된 작업들을 쭉 나열해 두겠습니다. 보시는 분들은 필요한 부분만 골라서 참고하시면 될 듯 합니다. :)

CUDA, cuDNN 업그레이드 (cuDNN 설치는 NVidia 개발자 등록이 필요합니다. 무료입니다.)

더보기

현재 버전 확인,  nvcc --version, 저의 버전은 11.8.xx입니다.

(nvcc 실행이 안된다면 환경변수에 "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin" 를 추가해 두세요.)

환경변수에 CUDA_HOME 등록 "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8"

CUDA 다운로드 사이트 링크

cuDNN 다운로드 사이트 링크 (cuda 버전과 맞는 버전을 다운받아야 합니다.)

pytorch 업그레이드

더보기

현재 버전 확인, 터미널에서 python -c "import torch; print(torch.__version__)"로 확인 가능.

저의 경우는 1.13.1+cpu 버전이 설치되어 있었습니다. 즉, 심지어, gpu를 사용하지 않는 버전... -_-a

우선 언인스톨, pip uninstall torch

설치 버전 확인, http://download.pytorch.org/whl/ 에서 os와 cuda 버전에 맞는 링크 확인.

인스톨(저는 windows, cuda 11.8, 설치하려는 torch 버전은 2.0.1), pip install http://download.pytorch.org/whl/cu118/torch-2.0.1%2Bcu118-cp310-cp310-win_amd64.whl

이제 버전을 다시 확인해보니, 2.0.1+cu118 !! 두둥!!!

이제 DDSD를 재설치해서 다시 실행합니다. 하지만 동일한 에러!! -_-+++

안되것다 싶어 GroundingDINO를 사용하는 샘플 프로젝트를 찾아서 빌드 도전!!

찾았다!!!  https://colab.research.google.com/github/betogaona7/Grounded-Segment-Anything/blob/main/grounded_sam_colab_demo.ipynb#scrollTo=uSJqZHr3JTSB 하지만 jupyter notebook!!

로컬에서 테스트 할 수 있게 코드를 변경했습니다. (코드 설명은 생략합니다. 필요하신 내용이 있으면 댓글로 문의해 주세요. 테스트 샘플 코드는 이곳에 올려두었습니다.  https://github.com/blackwitch/grounded_sam_colab_demo/blob/main/main.py)

위 샘플 코드를 실행해서 GroundingDINO가 어떻게 하면 잘 빌드/실행되는지 확인해 보기로 했습니다.

우선 content라는 폴더를 만들고 안에서 git clone https://github.com/IDEA-Research/Grounded-Segment-Anything 로 프로젝트를 복제합니다. 그리고 Grounded-Segment-Anything 폴더를 간단히 GSA로 변경한 후 필요한 패키지를 설치합니다.

더보기

content/GSA 에서 필요한 패키지를 설치합니다. pip install -q -r requirements.txt 

 

content/GSA/segment_anything에서 pip install -q . 을 실행합니다. 

content/GSA/GroundingDINO에서 pip isntall -q . 을 실행합니다.

이렇게 하면 설치가 모두 종료됩니다.

실행해보니 정상적으로 잘 됩니다.

다시 처음으로 돌아가보면..  "... import _C"에서 _C는 C/C++로 작성된 확장 모듈을 파이썬에서 사용하기 위해 사용되는 심볼입니다. 아마 web ui에 설치할 때 모듈이 제대로 빌드가 안된 것으로 보였습니다.

content\GSA\GroundingDINO\build\lib.win-amd64-cpython-310\groundingdino 와 stable-diffusion-webui\venv\Lib\site-packages\groundingdino 를 비교해보니 _C.cp310-win_amd64.pyd 파일이 없더군요.

다시 설치하기도 귀찮아서 pyd 파일 복사해두고 잘 쓰고 있습니다.

분명 처음 설치할 때 에러가 났을텐데 당연히 잘 설치되었거니 하고 다~~ 흘려 보낸 댓가로 -_-a

저 같은 실수 안하시길... -_-a 

반응형