본문 바로가기

NLP/error

[error] conda 에서 local 에 설치된 라이브러리에 접근해요

해결책

  • 임시 방편: PYTHONNOUSERSITE=1 을 추가해서 실행해라
# BEFORE
python main.py

# AFTER
PYTHONNOUSERSITE=1 python main.py

 

  • 이 글에 단기적, 장기적, 실험적 해결방법이 상세히 정리되어 있으니 참고할 것

 

내가 처했던 상황

1) Deepspeed 환경을 위해 CONDA 환경을 새로 생성했다

 

2) 다음과 같은 에러가 발생했다

NVIDIA GeForce RTX 3090 with CUDA capability sm_86 is not compatible with the current PyTorch installation. The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_70. If you want to use the NVIDIA GeForce RTX 3090 GPU with PyTorch, please check the instructions at https://pytorch.org/get-started/locally/
  • 대충 결론을 내려보자면, CUDA 11 이상 설치해야 한다는 말이다.
  • 그런데 NVCC, nvidia-smi, pytorch 버전 등 온갖 방식을 다 확인해봐도 제대로 설치되어 있었다.

 

3) 일단 개발자 탓일테니까 제거 및 재설치의 반복

  • 라이브러리를 몇 번이나 지우고 다시 깔았는지 모른다. 다른 버전도 다 깔아봤다.
  • CONDA 환경도 여러 번 지우고 반복했다.
  • 구글링해서 나오는 방법들을 대부분 사용했으나 효과가 없었다.

 

4) local 에 설치된 라이브러리에 접근한 우리 콘다씨

>>> import torch
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'torch'
  • pytorch 를 아예 다 제거한, 아무것도 없는 환경을 만들었다.
  • 위에서 확인해봐도 pytorch 는 없었다.

 

근데 잘 돌아간다? 생각해보니 pip install deepspeed 를 입력한 적이 없는데 얘는 어떻게 deepspeed 를 알고 있는 것이지?! 이상하다 싶어서 내가 실행하는 파이썬 코드 내부에서 torch 버전을 확인하는 코드를 돌려봤다.

 

torch.__version__: 1.10.2+cu102
torch.version.cuda: 10.2
torch.cuda.is_available(): True
torch.cuda.get_arch_list(): ['sm_37', 'sm_50', 'sm_60', 'sm_70']
torch.cuda.get_device_name(0): NVIDIA GeForce RTX 3090
torch.__file__ /home/nlplab11/.local/lib/python3.6/site-packages/torch/__init__.py

 

 

  • 뭐지? 10.2 이면 매우 낮은데, 난 설치한 적도 없는데?
  • 이상해서 torch 를 어디서 불러오는지 경로를 확인했다.
  • 역시 이 녀석, local 에 접근했구나....
  • 콘다의 목적 자체가 각자 다른 환경을 구성해주는 건데, 로컬에 접근할 줄 알면 존재의 이유를 잃는다. 그래서 문제였다...
  • 원인을 찾아보니, site-package 를 설치하면 local 에 접근할 수 있게 된다고 한다... 자세하게 알아보진 않았다. 얼른 실험해야 하니까 후....

 

참고 자료

 

https://stackoverflow.com/questions/67495221/conda-environment-has-access-to-system-modules-how-to-prevent

 

conda environment has access to system modules, how to prevent?

I noticed that when I create a new enviornment with conda, I can import python modules in that environment that were NOT installed there. Example with keras: Although the module is NOT in that

stackoverflow.com

 

https://stackoverflow.com/questions/52655887/how-to-prevent-anaconda-environment-from-reading-libraries-installed-in-local

 

How to prevent anaconda environment from reading libraries installed in local

Python tries to read a library installed under ~/.local, even though I am working on an anaconda environment. > conda create -n testproj python=3.6 > conda activate testproj > conda install

stackoverflow.com

 

https://sando0.tistory.com/103

 

Python 에서 잘못된 package version 을 가져올때

기본 Python, Conda, Virtualenv 등 여러 환경을 사용할 경우 간혹 잘못된 버전의 package 를 로드하는 경우가 생긴다. 이는 불필요한 site-package 경로가 system path 로 설정된 경우로 아래 명령으로 확인할 수

sando0.tistory.com