torch_torchvision_torchaudio

heyme·2023년 8월 4일

토치 삼총사, 너네 호환이 참안된다. 호환이란 말이 맞나? 어째든..

torch==1.13.1
torchvision==0.14.1
torchaudio==0.13.1

cuda 11.8
python 3.10
torch 2.0

keep continue.. 됬다!!ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ

+ 내 생각에는 서로 호환되지 않는 torch, torchvision(torchaudio는 없었음) 간에 각각의 버전에 맞는 상대방의 버전을 맞추려다 보니까 자꾸 에러가 나는 것 같다. 앞으로 이런 일이 있으면 일단 디폴트로 되는 값을 맞추고 하나씩 버전을 바꿔나가는 방법을 사용해야 할 것 같다. 한번에 바꾸면 파일을 실행할때 그 버전에 맞는 상위 버전으로 맞추려고 자꾸 에러가 날테니. 그런데 대체 뭐하다가 버전을 바꿨는지 그걸 못찾겠네; 하나의 도커는 하나의 프로젝트만!! 기억하자!!

이때 발생한 에러정리

Traceback (most recent call last):
  File "train.py", line 30, in <module>
    import torch
  File "/usr/local/lib64/python3.8/site-packages/torch/__init__.py", line 229, in <module>
    from torch._C import *  # noqa: F403
ImportError: libcupti.so.11.7: cannot open shared object file: No such file or directory
Traceback (most recent call last):
  File "train.py", line 30, in <module>
    import torch
  File "/usr/local/lib64/python3.8/site-packages/torch/__init__.py", line 229, in <module>
    from torch._C import *  # noqa: F403
ImportError: /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcupti.so.11.7: version `libcupti.so.11.7' not found (required by /usr/local/lib64/python3.8/site-packages/torch/lib/libtorch_cpu.so)

먼저 지피티한테 물어보니:

libcupti.so는 CUDA Profiling Tools Interface (CUPTI)의 일부로, CUDA 개발자들이 GPU에서의 응용 프로그램 동작을 측정하고 분석할 수 있도록 도와줍니다. 이 파일은 특정 CUDA 버전에 연결되어 있으며, 이 버전은 파일 이름에 포함됩니다. 예를 들어, libcupti.so.11.4는 CUDA 11.4 버전과 관련이 있고, libcupti.so.11.7은 CUDA 11.7 버전과 관련이 있습니다.

문제 상황에서의 에러 메시지는 특정 버전의 libcupti.so 파일을 찾지 못한다고 표시되었기 때문에, 이를 기반으로 CUDA 설정을 확인하고 조정할 필요가 있다고 판단하였습니다.

그래서 cuda 문제인가 보다 해서, path에 맞게 심볼릭링크도 넣어주고 bashrc로 바꿔주고 했는데 갈수록 산으로 가는 느낌이 들어서 파일 실행시킬때 나오는 로그를 자세히 봤는데, 앵 중간에 갑자기 토치비전을 다시 인스톨하네 이눔이? 뭔가 이상하다 해서 보니까 토치비전이 pip list로는 0.15.2라고 잘 나오는데, 실제로 임포트 해보니까 아래처럼 에러같은 경고가 뜬다.

Python 3.8.16 (default, Dec 23 2022, 09:54:58)
[GCC 8.5.0 20210514 (Red Hat 8.5.0-17)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torchvision
/usr/local/lib64/python3.8/site-packages/torchvision/io/image.py:13: UserWarning: Failed to load image Python extension: '/usr/local/lib64/python3.8/site-packages/torchvision/image.so: undefined symbol: _ZN3c104cuda20CUDACachingAllocator9allocatorE'If you don't plan on using image functionality from `torchvision.io`, you can ignore this warning. Otherwise, there might be something wrong with your environment. Did you have `libjpeg` or `libpng` installed before building `torchvision` from source?
  warn(

또 지피티한테 물어보았다.

이 경고 메시지는 torchvision에서 특정 이미지 처리 기능을 사용하려고 할 때 발생하며, Python 확장 모듈의 로딩에 실패했다는 내용을 담고 있습니다.

여기서 언급된 심볼 _ZN3c104cuda20CUDACachingAllocator9allocatorE는 내부적으로 PyTorch와 관련된 CUDA 코드에 연결됩니다. 확장 모듈이 이 심볼을 찾지 못한 것은 라이브러리간의 버전 충돌 또는 누락된 의존성으로 인해 발생할 수 있습니다.

특히, libjpeg 또는 libpng와 관련된 주의 사항이 있는데, torchvision은 이미지 처리 기능을 사용하기 위해 이러한 라이브러리에 의존하므로, torchvision을 소스에서 빌드하기 전에 설치되어 있어야 합니다.

그래서 아예 버전 맞춰서 새로 깔았더니 문제해결!
처음에 cuda 문제인줄 알았을 때는 좀 막막했다.. cuda 공부좀 해야지..

python
cuda
torch
torchvision

오늘의 교훈:
1. 꼼꼼히 로그를 잘 읽자!
1. 버전을 항상 잘 맞추자!
https://pytorch.org/get-started/previous-versions/

+ protobuf 문제,...

2개의 댓글

comment-user-thumbnail
2023년 8월 15일

토치로 지져!!!!
꼼꼼히 로그를 잘 읽어도 어자피 또 안읽는다!!!!!!
버전을 항상 잘 맞춘다해도 에러가 발생한다!!!!!
동생한테 간드아!!!!!!!!!!!!!!!!!!!

1개의 답글