(이 페이지는 yolov5를 이용한 Object detection 프로젝트(https://github.com/jinyoungkimm/yolov5_project.git)을 하다가 생
긴 궁금즘 해결을 위한 페이지이다 )
AI 프레임워크에는 크게 2가지 종류가 있다.
1. Tensorflow - Google에서 제작
2. Pytorch - Meta(facebook)에서 제작
근데, yolov5부터는 Pytorch를 기반으로 개발되었다.
(이걸 몰라서 yolov5를 사용하기 위하여 계속 tensorflow 패키지를 설치하는 삽질을 했다.ㅠㅠ)
Pytorch 패키지를 GPU와 연동하기 위해서는 tensorflow와 같이 CUDA, cudnn을 설치해야 한다.
CUDA, cudnn을 수동으로 설치하여, 시스템 환경 변수를 설정하여 이용하는 법이 있지만, 이건 매우 복잡하고 번거롭다.
가장 좋은 것은 아래의 사이트에 들어가서, 터미널 명령어를 통해서 Pytorch 패키지와 함께 CUDA, cudnn을 자동으로 설치
하는 것이다.
https://pytorch.org/get-started/locally/
위 그림은 나의 환경에 맞은 터미널 명령어이다.
참고로, pytorch 패키지는 설치 시, install pytorch도 괜찮고, install torch라고 해도 괜찮다.
또 헷갈리 수 있는 것이 바로 CUDA Version이다.
내 GPU는 CUDA Version이 12.2인데, 위에서 pytorch를 설치할 때는 CUDA version을 11.8로 설치를 하였다.
뭔가 호환성이 안 맞아 에러가 날 것 같은 기분이 든다.
하지만 결론은 에러가 나지 않는다.
일단 기본적으로 pytorch이든 tensorflow이든 gpu와 연동을 하기 위해서는 CUDA 드라이버가 필요한 것은 맞다.
그러나 nvidia-smi 명령어를 통해서 확인한 CUDA Version : 12.2 드라이버(API)는 tensorflow 혹은 pytorch가 GPU를 이용
해서 실행을 할 때 사용되는 것이 아니다. 런타임 때 GPU를 사용하기 위한 CUDA 드라이버(API), 즉 CUDA 런타임 드라이
버(API)는 터미널 명령어 nvcc -V에 나와 있는 것이다.
그러니, nvidia-smi에서 CUDA Version이 확인이 된다고 해서, 자동으로 tensorflow 혹은 pytorch가 GPU와 연동되는 것이
아니라, NVIDIA 사이트를 통해서 Cuda Toolkit과 cudnn를 설치를 해줘야지 이것들을 통해 런타임 때 GPU를 사용해서 연
산을 할 수 있는 것이다.
본론으로 돌아와서, 그럼 왜 CUDA Version을 11.8로 해도 GPU와 호환이 되는 것일까??
구체적인 원리는 잘 못 하지만, nvidia-smi를 통해 확인되는 CUDA Version : 12.2는 CUDA Toolkit Version 12.2까지 지원
가능함을 의미한다.
그래서 CUDA Version을 11.8로 하여도 아무 문제가 없이 잘 돌아 가는 것이다.