오늘 pip install deepspeed를 시도하는데, 다운이 되지 않았다. 에러 메시지는 아래와 같았다.
참고로, 위 사진에서는 '/mnt/hdd/~~~~/nvcc' 디렉토리가 없다고 에러가 뜨는데 이것은 내가 삽질하다가 나온 에러이고 원래 에러는 아래와 같다.
assert cuda_home is not None, "CUDA_HOME does not exist, unable to compile CUDA op(s)"
AssertionError: CUDA_HOME does not exist, unable to compile CUDA op(s)
맨 처음에는 위와 같이 CUDA_HOME 환경변수가 설정되어 있지 않다고 되어있었다. 이와 관련된 에러는 deepspeed 이슈에서 굉장히 많아 찾아볼 수 있었다. 하지만 해답은 얻을 수 없었다.
https://github.com/microsoft/DeepSpeed/issues/2406
[BUG] I can't using pip install deepspeed · Issue #2406 · microsoft/DeepSpeed
Describe the bug I can't using pip install deepspeed To Reproduce Steps to reproduce the behavior: To build wheel on Windows: 1. torch 1.12.1+cu113 , CUDA 11.7 2.exactly install visual cpp build to...
github.com
우선 내 상황을 정리하면, ControlVideo 레포지토리를 다운받아 실행중에 있었다. torch는 1.13.1, cuda는 11.6 버전을 요구했다.
# ControlVideo의 requirements.txt에 있는 사항은 다음과 같았다.
# deepspeed==0.8.0
# torch==1.13.1+cu116
# torchvision==0.14.1+cu116
# CUDA 11.6 => 이건 torch 다운로드 공홈에 있는 다운 방식
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116
여기서 의아한 점은, torch==1.13.0부터는 cudatoolkit을 따로 설치하지 않는다는 점이다. 분명히 torch==1.12.1까지는 cudatoolkit을 같이 깔아주는데 그 이후에는 같이 깔아주지 않는다. torch==2.0.0을 다운할때도 cudatoolkit을 따로 다운하지 않는다. 아래 링크가 pytorch 공홈이다.
https://pytorch.org/get-started/previous-versions/
PyTorch
An open source machine learning framework that accelerates the path from research prototyping to production deployment.
pytorch.org
따라서 나는 torch==1.13.1을 다운해야 하는 상황이었기에 cudatoolkit을 다운받을 수 없었다. 그냥 pip install cudatoolkit은 다운되지 않더라,, torch==1.12.1 이전 버전들과 같이 깔 때만 cudatoolkit이 같이 다운되는 것 같았다. 그런데 pip install deepspeed를 할 때 에러가 뜨는 CUDA_HOME 환경변수에 대해 찾아보니, cudatoolkit이 다운되어야 설정된다고 나온다. 흠.. 분명 아래와 같이 cuda를 잡아보면 나온다. 여기서 어지러워지기 시작했다. 지금 잡히는 cuda는 무엇일까? cudatoolkit은 무엇이고, CUDA_HOME 환경변수가 없는데도 cuda가 잡히고 있는데..
import torch
torch.cuda.is_available() # True
torch.cuda.device_count() # 4
torch.version.cuda # 11.6
구글링을 통해 공부를 좀 했다. 우선, cuda에 대해 알필요가 있다. cuda 버전을 확인할 수 있는 방법에는 다음 두 가지가 있다.
- nvidia-smi: GPU driver installer에 의해 설치되는 것으로, driver API의 version 말 그대로 하드웨어에 깔려있는 드라이버의 버전
- nvcc —version: CUDA toolkit에 의해 설치되는 것으로, CUDA runtime version
⇒ 근데 일반적으로 두 개가 다르다. UDA는 2개의 API를 가지고 있는데, 하나는 runtime API이고 다른 하나는 driver API이다.
각 API가 각자의 version을 가지고 있다. driver API는 GPU driver installer에 의해 설치되고, runtime API는 CUDA toolkit installer에 의해 설치된다. 만약 GPU driver과 CUDA를 별도로 설치했다면, 이 둘의 version이 다를 수 있다.
nvidia-smi는 GPU driver installer에 의해 설치되는 것으로, driver API의 version을 보여주며,
nvcc는 CUDA toolkit에 의해 설치되는 것으로, CUDA runtime version을 보여준다.
근데 공식 홈페이지를 보면 torch==1.3.0 이후로는 cudatoolkit을 같이 다운로드 하지 않는다. 킹능성으로, torch라는 것은 cudatoolkit을 포함하고 있고, pytorch는 cudatoolkit을 포함하지 않는 것 같다.. => 확인해보니 아님. torch는 cudatoolkit을 포함하지 않는다.
예시) CUDA 11.7을 다운 받으려면 아래와 같이 해야함. pip으로 하는 경우 cudnn 버전도 같이 적어주는 편이다. 그 아래 버전을 다운받는걸 보면 pytorch로 받고, cudatoolkit을 따로 받아준다.
https://bo-10000.tistory.com/73 => 위 내용이 나와있는 블로그
https://hyoseok-personality.tistory.com/entry/CUDA-가상환경-Complete-CUDA-Installation ⇒ CUDA’s 2 API (Drivier & Runtime) 이 블로그에 설명이 매우 잘 되어있다.
일반적인 설치 순서는
1. NVIDIA-driver 설치
2. CUDA toolkit 설치
3. Cudnn 설치
라고 한다.
그럼 cuda와 cuda toolkit은 뭐가 다른걸까?
- https://www.2cpu.co.kr/QnA/782361?&page=15&mnb=info&snb=rejection&mnb=info&snb=rejection
- CUDA Toolkit가 CUDA를 위한 개발 환경(?)이고, CUDA Driver는 윈도우에서의 그래픽카드 드라이버와 같은 것이라고 함
결론적으로, torch==1.13.1 이후로부터 cudatoolkit 다운이 없어졌다. cudatoolkit을 다운받으려면 torch==1.12.1 이하 버전을 사용해야 한다. 참고로, nvcc --version을 통해 cuda를 잡으려면 cudatoolkit이 필요하고, 이때 CUDA_HOME 환경변수도 당연히 설정되는듯 하다. 그럼 torch==1.13.1 이후 버전을 사용하면서 nvcc, 즉 CUDA toolkit을 사용하고 싶다고? 아직 방법을 못찾았다. 추후 찾으면 업데이트를 해야지.
그래서 아직 torch==1.13.1 과 deepspeed를 같이 사용 못하고 있다..