본문 바로가기
AI Theory/DL Basic

딥러닝을 위한 Window10 Docker 설치 방법 (윈도우 도커 설치 방법)

by climba 2022. 3. 11.

0. 글 쓰기에 앞서

최근 공부했던 딥러닝 파이토치 코드를 로컬 데스크탑에서 돌리려다

AssertionError: Torch not compiled with CUDA enabled

이 오류때문에 골머리를 앓은 적이 있다.

 

파이토치와 NVIDIA CUDA의 버전이 안맞아서 생긴 오류였는데, 프로그램을 설치할 때 무조건 최신 버전을 설치해오던 나로서는 여러 프로그램들의 버전을 맞춰 설치해야는 것이 너무 어려웠다.

몇번이고 컴퓨터를 포맷해가면서 맞는 버전의 NVIDIA 드라이버, cuDNN, CUDA 등을 설치해보고 torch 버전도 맞춰보았지만 해결되지 않았다.

 

이럴때 사용하면 유용한것이 Docker(도커)라고 해서 내 윈도우10 컴퓨터에 도커를 직접 설치해보고 코드를 실행해보려한다.

 

1. Docker

1-1. Docker란?

docker 이미지

도커(Docker)란 컨테이너 기반의 오픈소스 가상화 플랫폼이다.

쉽게 말해 나의 컴퓨터에 이미 만들어진 여러개의 컨테이너(개발환경)를 불러 올 수 있는 것이다.

각각의 컨테이너에는 어플개발, 웹개발, 서버개발, 딥러닝 등 용도에 맞는 패키지나 라이브러리들이 버전에 맞춰 설치 되어 있고 우리는 사용하고자 하는 컨테이너를 편하게 불러오기만 하면 된다.

딥러닝의 경우 pytorch나 tensorflow를 gpu로 사용하려면 여러 프로그램들을 버전에 맞춰서 설치해야하는데 도커만 있으면 이러한 문제를 쉽게 해결 할 수 있다.

 

1-2. Docker를 써야하는 이유

도커에는 크게 세 가지 장점이 있다.

 

1) 빠르고 가볍다.

보통 컴퓨터에 가상환경(VM)을 설치하는 경우, 그 과정이 정말 복잡하고 용량 역시 굉장히 크다.

그러나 도커는 일반적인 가상환경에 비해 훨씬 가볍고 속도도 빠르다.

 

2) 운영체제와 개발언어에 제약이 없다.

자신의 컴퓨터가 윈도우, 리눅스, 우분투 등 어떤 환경이여도 동일한 도커 컨테이너 이미지 즉 동일한 환경을 이용할 수 있다. 또한 개발 언어 역시 원하는 언어들을 원하는 버전 그대로 묶어서 사용할 수 있다.

 

3) 보안상에 이점이 있다.

도커의 각 컨테이너들은 서로 독립적으로 격리되어 있기 때문에 하나가 해킹당해도 다른 컨테이너(ex: 서버 컨테이너)에 영향을 미치지 않는다.

 

2. 설치방법 for Window10

1) 도커 설치 전 가상화 사용 설정

작업 관리자 - 성능 에서 가상화가 사용이라고 표시되어있는지 확인한다.

안되어있다면 바이오스(BIOS)에서 사용함으로 설정해야한다.

(각 메인보드마다 바이오스 가상화 설정 방법에 차이가 있으므로 이번 포스팅에서는 생략하겠다.)

 

그 후에는 제어판 - 프로그램 - 프로그램 및 기능 에서 Windows 기능 켜기/끄기창을 눌러준 후 

Hyper-V 체크 후 확인을 눌러준다.

그 후 컴퓨터를 껐다가 켜주자.

 

2) 도커 설치

https://hub.docker.com/editions/community/docker-ce-desktop-windows/

 

Docker Desktop for Windows by Docker | Docker Hub

Docker Desktop for Windows Docker Desktop for Windows is Docker designed to run on Windows 10. It is a native Windows application that provides an easy-to-use development environment for building, shipping, and running dockerized apps. Docker Desktop for W

hub.docker.com

위 사이트에서 회원가입 후 Download for Windows를 클릭해 준다.

설치가 진행중이다,,

설치가 완료되고 Close and restart를 눌러 컴퓨터를 재시작하면 도커 설치는 완료되었다.

 

그 후 Accept를 눌러 도커를 실행하면 다음과 같은 오류가 나올 것이다.

리눅스 커널 업데이트 패키지를 설치하시오 ,,

3) Linux 커널 업데이트 패키지 설치

(윈도우 11환경에서 설치해야한다.)

https://docs.microsoft.com/ko-kr/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package

 

이전 버전 WSL의 수동 설치 단계

wsl install 명령을 사용하지 않고 이전 버전의 Windows에 WSL을 수동으로 설치하는 방법에 대한 단계별 지침입니다.

docs.microsoft.com

위 홈페이지에서 

"x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지"를 눌러 파일을 설치한다.

파일 다운이 완료되면 Next 버튼을 눌러 설치를 진행한다.

WSL2를 기본 버전으로 설치하기 위해 Windows PowerShell에 다음 명령어를 실행시킨다.

wsl --set-default-version 2

 

WSL1 과 WSL2는 아래에서 비교할 수 있다.

https://docs.microsoft.com/ko-kr/windows/wsl/compare-versions

 

WSL 1과 WSL 2 비교

WSL 2는 WSL 1의 이점을 제공하지만 WSL 1과 같은 변환 계층이 아닌 실제 Linux 커널을 사용하므로 성능이 향상됩니다.

docs.microsoft.com

 

4) 마무리

설치가 완료되면 Restart를 누르고 끝난다!!

Next Step을 계속 누른 후 도커를 재시작하면

도커 설치가 완료되었다.

3. pytorch 코드실행

우분투(Ubuntu20.04 on Windows)를 실행시킨 후 다음 명령어를 입력해준다.

 

cuda 설치

$ 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.4.0/local_installers/cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-4-local/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get -y install cuda

 

docker 설치

$ curl https://get.docker.com | sh
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container-experimental.list | sudo tee /etc/apt/sources.list.d/libnvidia-container-experimental.list
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2

 

우분투를 껐다 켜고 아래의 명령어들을 순서대로 입력해준다.

docker run -v /home/hyunsoo/Desktop/:/workspace --gpus all --name=pytorch -it -p 4000:8000  pytorch/pytorch:1.7.1-cuda11.0-cudnn8-runtime

1. docker ps -a
2. docker start pytorch
3. docker attach pytorch

(attach를 해도 아무 변화가 일어나지 않는다면 docker stop pytorch를 통해 실행중인 컨테이너를 멈춰준다.)
4. jupyter notebook --ip 0.0.0.0 --port 8000 --allow-root

 

우분투에서 위의 코드를 쳤을때 최종 실행되는 모습

마지막 jupyter notebook --ip 0.0.0.0 --port 8000 --allow-root 까지 입력하면 url이 두개가 나올 것이다.

그 중 아래 url 에서 :8000부분을 :4000으로 바꾼 후 사이트에 접속하면

 

 

다음과 같이 새로운 주피터 노트북이 열린다!!

당연히 torch.cuda.is_available()을 하면 True가 출력되고

.cuda 부분도 정상적으로 실행된다!!!!

 

 

만약, 위와 같은 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 오류가 나온다면 아래 포스팅을 참고하자.

 

[Docker 오류] Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 오류 해결

우분투를 통해 도커를 쓰다보면 위와 같은 오류가 나오는 경우가 있을 것이다. 아무리 구글링을 해봐도 $sudo systemctl status docker 이 방법 밖에 나오지 않았는데, 다른 오류들이 막 나타나면서 해결

hyunsooworld.tistory.com

4. 마무리

사실 구글 colab만 사용하다 주피터 노트북으로 딥러닝 코드들을 돌려보고 싶어서 간단하게 모델을 만들어봤었는데 gpu 관련 오류들을 해결하는데 1주일이나 걸렸다.

결과적으로는 윈도우에서는 해결하지 못하고 Docker와 Linux(우분투)를 사용했지만, 왜 그렇게 많은 개발자들이 Docker를 사용하는지 알 것 같다. 또한 Linux역시 언젠간 반드시 배워야겠다는 생각이 들었다.

이제 NLP만 본격적으로 공부하면 되겠다 !!

 

[230624 추가]

cuda 설치 중에 계속 The following packages have unmet dependencies: libcufile-11-4 : Depends: liburcu6 but it is not installable E: Unable to correct problems, you have held broken packages.와 같은 오류가 나온다면 아래 코드로 해결하면 된다.

sudo add-apt-repository ppa:cloudhan/liburcu6
sudo apt update
sudo apt install liburcu6

https://askubuntu.com/questions/1407962/unable-to-install-cuda-on-ubuntu-22-04-wsl2

 

Unable to install CUDA on Ubuntu 22.04 WSL2

I was following the chain of commands provided here: https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target...

askubuntu.com

 

댓글