연구실 데스크탑 OS를 Windows11로 업데이트 후 새롭게 실험 환경을 구성해 보려 합니다.
경험에 의하면 Windows에서는 환경 구축이 어려울뿐더러, 구축하더라도 패키지 의존성, 환경변수 등 불편한 점이 너무 많습니다.
무엇보다 연구실 GPU 서버는 Linux 환경이고, 제가 관리를 하고 있기에 저에게는 Linux가 더 익숙합니다.
그래서 WSL을 이용해 Linux에서 GPU로 실험할 수 있는 환경을 구축해 봤습니다.
WSL을 사용하면 기존 가상 머신의 오버헤드 또는 듀얼 부팅 설정 없이 대부분의 명령줄 도구, 유틸리티 및 애플리케이션을 비롯한 GNU/Linux 환경을 수정하지 않고 Windows에서 직접 실행할 수 있습니다.
Intel: Intel Virtualization Technology
AMD: SVM Mode
터미널 또는 PowerShell을 관리자 권한으로 실행시켜줍니다.
가장 쉬운 설치 방법은 아래와 같으며, 가장 최신 버전의 Ubuntu가 설치됩니다.
wsl --install
저는 연구실 GPU 서버와의 통일을 위해 20.04를 설치했습니다.
wsl --list --online
wsl --install -d <배포>
※ 중간에 오류가 발생한 부분은 wsl --update
로 해결했습니다.
설치 완료 후 재부팅을 하게 되면 아래와 같이 ID, PW를 설정할 수 있습니다.
https://www.nvidia.co.kr/Download/index.aspx?lang=kr
해당 링크에서 GPU에 맞는 드라이버를 설치할 수 있습니다.
https://developer.nvidia.com/cuda/wsl
해당 링크에서 CUDA Toolkit을 설치할 수 있습니다.
저는 연구실 GPU 서버 환경과의 통일을 위해 11.3을 설치했습니다.
Linux
-> x86_64
-> WSL-Ubuntu
-> 2.0
-> deb (local)
의 순서대로 선택하게 되면 사진과 같이 설치 명령어가 제공됩니다.
명령어 입력 전 오래된 GPG key부터 삭제해 줍니다.
First, remove the old GPG key
sudo apt-key del 7fa2af80
Key를 삭제했다면 아래 명령어를 한 줄씩 수행해 줍니다.
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda-repo-wsl-ubuntu-11-3-local_11.3.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-3-local_11.3.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-3-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda
정상적으로 설치가 되었다면 nvidia-smi -q
명령어 실행 시 아래와 같이 GPU 정보가 나타납니다.
https://developer.nvidia.com/rdp/cudnn-download
해당 링크에서 로그인 후 cuDNN을 다운받을 수 있습니다.
저는 앞서 설치한 CUDA Toolkit 과의 호환을 위해 11.x를 설치했습니다.
Local Installer for Linux x86_64 (Tar)
를 다운로드합니다.
이때 다운로드 파일은 Windows downloads에 저장되기 때문에 이를 Ubuntu로 옮겨와야 합니다.
cd /mnt/c/user/<User Name>/Downloads
mv cudnn-linux-x86_64-8.8.0.121_cuda11-archive.tar ~/downloads
이후 다운받은 cuDNN을 압축 해제해 준다.
tar -xvf cudnn-linux-x86_64-8.8.0.121_cuda11-archive.tar ~/downloads
압축 해제 후 아래 명령어를 통해 cuDNN 관련 파일들을 이동, 복사, 권한 변경해준다.
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
마지막으로 ~/.bashrc
에 PATH를 등록해 준다.
vim ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.3/lib64/
※ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.3/lib64/
cuda-11.3
은 설치한 버전에 맞게 변경해 줘야 합니다.
정상적으로 설치가 되었다면 /usr/local/cuda-11.3/extras/demo_suite/deviceQuery
명령어 실행 시 사진과 같이 GPU 정보가 나오게 되며, 가장 마지막에 Result = PASS
가 나와야 합니다.
모든 환경 구축을 마친 뒤 간단한 테스트를 진행했습니다.
아래 사진을 보면 정상적으로 CUDA 사용이 가능하며 GPU 종류, 개수 모두 정확히 인식하는 것을 볼 수 있습니다.
비록 연구실 GPU 서버에 비해 연산 성능, VRAM 등이 한참 모자라 학습은 힘들지만, 간단한 디버깅 용으로는 충분한 것 같습니다.