Windows 10(WSL)에서 Docker를 활용하여 Tensorflow-GPU를 사용하기

InTheCode·2022년 5월 26일
7
post-thumbnail

🏠 목록

0. 서론
1. WSL 2 및 Ubuntu 설치하기

1.1 PowerShell 켜기
1.2 Windows Subsystem for linux 기능 활성화
1.3 Virtual Machine feature 활성화
1.4 linux 업데이트 커널 패키지 설치

2. NVIDIA 그래픽 드라이버 설치하기
3. Ubuntu(WSL)에서 Docker와 nvidia-docker 설치하기

3.1 Ubuntu 열기
3.2 Docker 설치
3.3 NVIDIA-DOCKER 설치

4. Docker에 Tensorflow-GPU 설치하기

4.1 Tensorflow-GPU설치하기
4.2 Jupyter Notebook을 Windows에서 실행
4.3 Tensorflow-gpu가 설치 되었는지 확인

🚚 서론

  1. 도커에서 Tensorflow-GPU를 사용하려면 Nvidia-Docker를 사용하여야 합니다.
  2. 윈도우 10에서는 Nvidia-Docker를 사용 할 수 없습니다. Linux환경에서만 Nvidia-Docker을 사용 할 수 있습니다.
  3. 그러하여 윈도우 10에서 도커를 활용하여 Tensorflow-GPU를 사용하려면 WSL2를 설치하여 Ubuntu(Linux)를 사용하여야 합니다.
  4. Windows 10의 WSL에서 CUDA와 ML tools을 사용하라면 윈도우 버전이 21H2이상이어야 합니다.

    윈도우 버전을 확인하려면

    • A. 윈도우키와 R을 누르고
    • B. winver입력
    • C. 윈도우버전 확인

1. WSL 2 및 Ubuntu 설치

1.1 POWERSHELL 관리자 모드로 실행

윈도우 검색창에서 powershell 입력 후 관리자로 실행시키면 됩니다.

1.2 Windows Subsystem for Linux 기능 활성화

WSL2을 사용하려면 윈도우의 기능인 Windows Subsystem for Linux(WSL) 기능을 활성화 시켜주어야 합니다.

# powershell에 아래 명령어 입력
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

1.3 Virtual Machine feature 활성화

WSL2을 사용하려면 윈도우의 기능인 Virtual Machine 기능을 활성화 시켜주어야 합니다.

#powersehll에 아래 명령어 입력
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

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

아래 링크를 클릭하여 리눅스 업데이트 커널 패키지를 설치할 수 있습니다.
linux 업데이트 커널 패키지

1.5 WSL 기본 버전을 WSL2로 지정

WSL에는 두가지 버전이 있는데 WSL 1과 WSL 2가 있다.
WSL 2는 WSL 1보다 파일 시스템 성능 향상되고 전체 시스템 호출 호환성 지원합니다.
그러하여 기본버전을 WSL2로 설정합니다.

#powersehll 관리자 모드에서 아래 명령어 입력
wsl --set-default-version 2

1.6 Microsoft Store에서 Ubuntu 설치

마지막으로 Microsoft Store에서 Ubuntu 20.04.4 LTS를 설치합니다.

Ubuntu 20.04.4 LTS 링크

사용자 이름과 비밀번호 입력하면 된다.

그러면 Ubuntu(WSL)와 WSL2가 설치가 완료 된다.

2. NVIDIA 그래픽 드라이버 설치하기

기존에 설치 되어 있는 NVIDIA 그래픽 드라이버가 아닌
WSL용 NVIDIA 그래픽 드라이버가 필요합니다.

1. WSL용 그래픽 드라이버 링크로 접속

2. 자신에 해당하는 그래픽카드와 운영체제 선택

3. 그래픽 드라이버 파일 다운로드

4. 그래픽 드라이버 설치

3. Ubuntu(WSL)에 Docker와 nvidia-docker 설치하기

3.1 Ubuntu 열기 및 service 명령 권한 설정

wsl2에서 systemctl이나 systemd 명령어를 이용하면 아래와 같이 에러가 발생한다.
'System has not been booted with systemd as init system (PID 1). Can't operate'
그러하여 service 명령어를 사용할 수 있도록 만들어줘야 한다.
ps.. 하지만 도커는 root가 실행해야한다.

1. visudo 구동

# Ubuntu에 아래 명령어 입력
sudo visudo

2. service 권한 모든 사람이 사용할 수 있도록 설정

A. 맨 아래에 아래 코드 삽입
%sudo ALL=NOPASSWD: /usr/sbin/service
B. ctrl 와 o를 함께 누르고 enter key눌러 저장
C. ctrl 와 x를 함께 누르고 나가기

3.2 Docker 설치

1. 패키지 업데이트
'apt-get update'란 사용 가능한 패키들과 그 버전에 대한 정보를 업데이트하는 명령어입니다.

# Ubuntu에 아래 명령어 입력
$ sudo apt-get update

2. 패키지중 https를 통해 데이터 및 패키지를 접근하는 패키지 등을 설치

# Ubuntu에 아래 명령어 입력
$ sudo apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

3. Docker의 GPG key를 추가

GPG란 툴이나 소스 등을 배포 할 때 프로그램의 변조를 검사 할 수 있는 소프트웨어이다..
GPG key는 쉽게 설명하자면 GPG key를 통해 프로그램의 변조를 확인 해주는 값이다.

# GPG key 추가
# Ubuntu에 아래 명령어 입력
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

4. 안정화된 docker 저장소 설정

# Ubuntu에 아래 명령어 입력
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

5. 도커 엔진 설치

#설치 가능한 리스트 업데이트
# Ubuntu에 아래 명령어 입력
$ sudo apt-get update
#apt-get install 명령어를 사용하여 도커엔진 설치하기
# Ubuntu에 아래 명령어 입력
$ sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# 도커 시작하기
# Ubuntu에 아래 명령어 입력
$ sudo service docker start
# 도커엔진이 잘 설치 되었는지 확인하기
# Ubuntu에 아래 명령어 입력
$ sudo docker run hello-world

3.3 NVIDIA-DOCKER 설치

1. 패키지 저장소 추가

# Ubuntu에 아래 명령어 입력
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
#nvidia-docker gpgkey 추가
# Ubuntu에 아래 명령어 입력
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
# 패키지 저장소 추가
# Ubuntu에 아래 명령어 입력
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

2. 설치 가능한 리스트 업데이트 및 cuda-toolkit 설치

#설치 가능한 리스트 업데이트
# Ubuntu에 아래 명령어 입력
$ sudo apt-get update
# cuda-toolkit 설치
# Ubuntu에 아래 명령어 입력
$ sudo apt-get install -y nvidia-container-toolkit

3. 설치 되었는지 확인

성공적으로 설치 되었는지 확인하기 위하여 도커 시스템 재시작 후 도커 실행합니다.

#설치 가능한 리스트 업데이트
# Ubuntu에 아래 명령어 입력
$ sudo service docker restart
# 도커 실행
# Ubuntu에 아래 명령어 입력
$ sudo docker run --gpus all nvidia/cuda:11.8.0-base-ubuntu20.04 nvidia-smi

아래와 같이 나온다면 정상적으로 설치가 완료된 것입니다.

4. Docker에 Tensorflow-gpu 설치하기

Tensorflow-gpu 이미지 중 jupyter와 py3를 실행 할 수 있는 이미지를 설치하여
host os 즉 windows os에서 jupyter notebook을 사용 할 수 있도록 설치

4.1 Tensorflow-GPU설치하기

docker 이미지를 실행하여 접속하려면
1. 이미지를 다운로드(docker pull)
2. 다운 받은 이미지로 컨테이너 생성(docker create)
3. 생성된 컨테이너 실행(docker start)
4. 실행된 컨테이너 접속을 하여야 한다.(docker attach)
위와 같은 단계로 명령어를 실행시켜야 한다.
하지만 docker run 명령어는 위 단계를 한 번에 실행 시켜줍니다.

# tensorflow/tensorflow:latest-gpu-py3-jupyter 이미지 설치 및 실행
# Ubuntu에 아래 명령어 입력
sudo docker run -it --gpus all -p 8888:8888 tensorflow/tensorflow:latest-gpu-py3-jupyter

4.2 Jupyter Notebook을 Windows에서 실행

아래 박스쳐진 주소를 브라우저에 입력하면 Jupyter Notebook Windows에서 실행

아래와 같이 브라우저에 Jupyter Notebook이 나옵니다.

4.3 Tensorflow-gpu가 설치 되었는지 확인

1. 새로운 ipynb 만들기

2. Tensorflow가 GPU인식 하는지 확인

device_lib.list_local_devices() 명령어를 통해 tensorflow 인식하는지 확인

# 만든 Jupyter notebook에 아래 명령어 실행
from tensorflow.python.client import device_lib
device_lib.list_local_devices()

아래같이 GPU가 정보가 있다면 Tensorflow-GPU가 잘 설치된 것 입니다.

profile
새로운 문제를 해결하고 싶은 개발자입니다.

4개의 댓글

comment-user-thumbnail
2023년 3월 7일

감사합니다. 많은 도움 됐어요.

답글 달기
comment-user-thumbnail
2023년 3월 8일

감사합니다

답글 달기
comment-user-thumbnail
2023년 4월 25일

너무 감사합니다 정말 정리를 잘해주셨어요 :)

답글 달기
comment-user-thumbnail
2023년 7월 4일

살려주셔서 감사합니다

답글 달기