실험을 돌리는 중에 evaluation에서 아래와 같은 에러가 발생했다.
RuntimeError: CUDA error: CUBLAS_STATUS_EXECUTION_FAILED when calling `cublasSgemmStridedBatched( handle, opa, opb, m, n, k, &alpha, a, lda, stridea, b, ldb, strideb, &beta, c, ldc, stridec, num_batches)`
구글링해본 결과, 해당 에러에 대한 이유는 크게 3가지라고 한다.
- Input dimension mismatch
- Input data error
- CUDA 버전 conflict 확인 (대부분 CUDA 버전 conflict의 이유가 크다고 함)
따라서 가상환경을 새롭게 파서 CUDA 버전을 바꿔서 진행해보았다.
1) CUDA 버전 확인
nvcc -V
CUDA 버전을 확인해보면 아래와 같이 10.2라고 뜬다. 하지만 이게 nvidia-smi로 확인하는 CUDA 버전인 11.2와 다르다.
이 경우, nvcc -V 명령어로 확인한 버전이 진짜 버전이라고 한다. 나는 nvidia-smi의 버전인 11.2로 CUDA를 설치했던 것이다 !!
- 현재 내가 깔아둔 버전: torch 1.8.2+cu111, torchaudio 0.8.2, torchvision 0.9.2+cu111
- 내가 깔아뒀어야 하는 버전: torch 1.8.2+cu102, torchaudio 0.8.2, torchvision 0.9.2+cu102
2) torch CUDA 10.2 설치
그래서 pytorch 홈페이지에서 제공해주는 아래 명령어로 CUDA 10.2 버전의 torch를 설치했다.
pip install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu102
하지만 그럼에도 No module named torch.distributed라는 에러가 발생했다. 이 이유는 CUDA가 잘못된 위치에 설치되었기 때문이다.
- CUDA 설치 위치를 확인하는 방법: pip show torch
- CUDA 설치시 어떤 위치에 설치할지를 지정하는 방법: target argument 붙이기
3) 지정된 위치에 torch CUDA 10.2 설치
pip install --target=/users/venvs/mSimCSE/lib/python3.8/site-packages torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu102
이렇게 target (설치할 디렉토리)를 잘 설정한 다음에 설치해주니 괜찮았다.
pip show torch에서 Location 부분을 확인하면 된다.