Windows WSL에서 CUDA 환경 구축하기

WSL 환경에서 CUDA 개발 환경을 설정하는 방법을 단계별로 안내합니다. NVIDIA 드라이버, CUDA Toolkit, PyTorch 설치 및 버전 호환성 문제 해결까지 이 글을 통해 확인해봅니다.

Windows WSL에서 CUDA 환경 구축하기
Photo by Hussain Ahmed / Unsplash

최근 연구실에 새로 구축한 데스크탑을 설치했다. 대학교 입학 이후로 처음으로 제대로 된 윈도우 데스크탑을 맞추다보니 원래 맥을 사용하는 나로써는 새로운 환경을 설정하는 재미가 있었다. 이번 글을 통해 맥 사용자가 친숙한 리눅스를 윈도우에서 사용하기 위해 사용하는 플랫폼인 WSL과 AI 모델을 돌리는데 필수적인 CUDA 환경을 설치해보겠다.

WSL이란?

내가 윈도우를 사용하던 2010년대만 하더라도 윈도우에서 리눅스 환경을 설정하기 위해서는 듀얼부팅을 하거나 가상머신을 틀어야 했다. 전자의 경우 데스크탑의 성능을 온전히 쓸 수 있지만 저장공간을 분리해야 하는 경우도 있고 많이 불편하다. 후자의 경우에는 저장공간을 공유해 사용할 수 있지만 데스크탑의 성능을 온전히 쓸 수 없다.

최근에는 이러한 문제점을 해결하기 위해 컨테이너 기술을 많이 활용하고 있다. 컨테이너란 가상머신이 사용하는 가상화를 운영체제 (OS) 단계에서 처리하는 새로운 가상화 방식 중 하나이다. 가상머신은 응용 프로그램 단계에서 가상화를 진행하기에, 컨테이너 방식은 가상머신에 비해 더욱 온전히 데스크탑의 성능을 사용할 수 있다.

💡
구체적인 컨테이너와 관련된 설명은 하단 영상을 참조바랍니다.

WSL은 Microsoft에서 공식적으로 제공하는 리눅스 컨테이너이다. 이전처럼 가상머신을 설치하는 등의 귀찮은 짓은 하지 않아도 된다. 그저 Microsoft에서 제공하는 컨테이너만 설치하면 윈도우 환경에서 바로 리눅스를 띄울 수 있다. WSL를 사용한다면 이전 맥 사용자도 친숙한 리눅스 명령어를 사용하고 실제 서버에 사용할 수 있는 빌드를 할 수 있다.

2016년, Microsoft CEO 사티아 나델라는 "Microsoft loves Linux"라는 충격적인(?) 발언을 했다.

WSL 설치하기

사실 설명은 장황했지만, 설치법은 간단하다.

💡
윈도우 환경에서 명령어를 실행할 때엔 sudo와 같은 마법의 명령어가 없다. 항상 Powershell을 관리자 권환으로 실행하는게 마음이 편하다.
wsl --install

만약 중간에 오류가 발생한다면 재부팅하면 해결할 수 있다. 나는 WSL 설정을 마치고 리눅스 커널을 다운받고 설치하려 하면 WSL 설정이 되어있지 않아 설치가 완료되지 않았다. 재부팅 후 위 명령어를 다시 실행해보자.

이후에는 프로그램 목록 중 WSL을 실행하면 자동으로 리눅스 환경으로 설정되어 있는 Powershell이 열린다.

CUDA란?

CUDA는 엔비디아에서 개발한 병렬 컴퓨팅 플랫폼이자 프로그래밍 모델이다. 쉽게 생각하면 엔비디아 그래픽 칩셋을 100% 활용하게 만들어주는 소프트웨어 스택이라고 볼 수 있다. 깊게 들어가지 않는 이상, 우리가 사용하는 여러 파이썬 라이브러리 (PyTorch, TensorFlow 등) 에서 기본적으로 내장되어 사용이 가능하다.

버젼에 주의하자!!

다만 현재 RTX 50xx번대를 사용한다면, 혹은 최신 드라이버를 사용한다면 써드파티 라이브러리의 CUDA를 사용하지 못할수도 있다. 대표적으로 PyTorch를 보자면, 현재 CUDA 12.9버젼까지 Stable로 지원중이다. 반대로, 현재 CUDA 최신버젼은 13.0이다. 그 말은, CUDA 13.0을 설치한 경우 PyTorch Stable 버젼을 사용할 수 없다. 이게 참 애매하긴 한데, 가능하면 그래픽 드라이버를 업데이트하지 말기 바란다.

WSL에 CUDA 설치하기

당연히 윈도우에는 엔비디아 드라이버가 설치되어 있기에, CUDA가 이미 설치되어 있다. 다만 WSL은 새로운 운영체제(리눅스) 이므로 CUDA를 설치해야 실행할 수 있다.

현재 CUDA 버젼 확인하기

nvidia-smi

일단 윈도우에 있는 CUDA toolkit을 활용해 현재 드라이버를 통해 설치된 CUDA 버젼을 확인해야 한다. 지금 내 데스크탑의 경우 CUDA 12.8로 되어있는데, WSL에 CUDA를 설치할 때에도 같은 버젼으로 설치해야 한다.

CUDA 버젼의 Major update가 있을 때 마다 드라이버의 버젼 제한이 있다. 이 점을 참고해 드라이버도 업데이트해야 한다.

WSL에 CUDA Toolkit 설치하기

각자 데스크탑에 설치되어있는 CUDA 버젼과 함께 구글에 검색하면 엔비디아가 제공하는 Toolkit 다운로드 사이트를 찾을 수 있다. 하단 명령어는 CUDA 12.8을 WSL에 설치하는 명령어이고, 다른 버젼을 사용한다면 직접 검색해 확인하기 바란다.

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/12.8.0/local_installers/cuda-repo-wsl-ubuntu-12-8-local_12.8.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-12-8-local_12.8.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-12-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-8

CUDA 정상 작동되는지 확인하기

이후에는 그래픽카드가, CUDA가 본인이 사용하는 라이브러리에 작동되는지 확인하는 일만 남았다. 나는 PyTorch를 통해 확인하는 방법을 사용했지만, 사용하는 라이브러리를 통해 언제든 확인할 수 있다.

import torch

if torch.cuda.is_available():
    print("PyTorch is using GPU.")
else:
    print("PyTorch is not using GPU.")