반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

가끔 보자, 하늘.

windows 11 linux docker에서 gpu 사용할 수 있는 개발환경 만들기 본문

개발 이야기/개발툴 및 기타 이야기

windows 11 linux docker에서 gpu 사용할 수 있는 개발환경 만들기

가온아 2023. 8. 10. 13:52

진행 순서는 "wsl2 활성화 및 linux 설치" -> "기본 시스템 설정"-> "nvidia-docker 설치" 입니다. 윈도우에서 nvidia cuda 및 toolkit은 설치되어 있는 상태라고 가정하게 정리했습니다.

아래 내용을 쭈~~~ㄱ 따라하시면 됩니다. 서술할 내용들이 많이는 없네요. 혹시 보시고 궁금한 내용이 있으면 댓글 남겨두세요. :)

[기본 설치]

* powershell 관리자 모드로 실행
* Windows Subsystem for Linux 기능 활성화
   > dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
* Virtual Machine feature 활성화
   > dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
* Linux 업데이트 커널 패키지 설치
   https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
* WSL 기본 버전을 WSL2로 지정
   > wsl --set-default-version 2
* Microsoft Store에서 Ubuntu 설치
   https://apps.microsoft.com/store/detail/ubuntu-20046-lts/9MTTCL66CPXJ?hl=en-us&gl=us 
* 실행해보기
   > wsl -d Ubuntu-20.04
   - 실행된 ubuntu에서 exit하면 빠져나옴. (shutdown이 아님)
* 실행중인 리스트 보기
   > wsl -l -v
* wsl shutdown 하기
   > wsl --shutdown
* 경로 변경
   - wsl 이 설치되는 기본 위치는 C:\Users\[your_account_name]\AppData\Local\Docker\wsl\data에 ext4.vhdx 라는 이름으로 저장됨. ext4.vhdx파일은 지속적으로 용량이 늘어나므로 C 드라이브 보다는 용량이 충분한 드라이브로 이동, 사용하는 것을 추천.
   - wsl -l -v 로 모두 shutdown 된 걸 확인
   - 기존 파일 시스템 export 시키기
      > wsl --export Ubuntu-20.04 d:\linux\Ubuntu-20.04.backup
   - 기존 리눅스 삭제
      > wsl --unregister Ubuntu-20.04
   - 원하는 위치로 import
      > wsl --import Ubuntu-20.04 d:\linux\ubuntu d:\linux\Ubuntu-20.04.backup

(참고 링크)
Ubuntu 20.04.6 LTS
   https://apps.microsoft.com/store/detail/ubuntu-20046-lts/9MTTCL66CPXJ?hl=en-us&gl=us 
Windows subsystem for linux 
   https://apps.microsoft.com/store/detail/windows-subsystem-for-linux/9P9TQF7MRM4R?hl=en-us&gl=us 


[권한 설정 및 네트웍 설정]

* 외부 네트웍 연결
   - Hyper V 관리자 활성화
      > Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All(OS 재시작 필요)
   - 관리자에서 "가상 스위치 관리자" 실행
   - 가상 스위치 중 "WSL"은 내부용으로 설정되어 있음. (WSL이 안보인다면 WSL을 실행 후 다시 확인.)
   - "외부 네트워크"로 설정. (이때 기본 OS에서의 네트워크는 중단됨.)
* sudo 권한 추가
   > sudo nano /etc/sudoers
      - root   ALL=(ALL:ALL) ALL 라인 아래에 같은 포멧으로 root 대신 로그인 계정으로 변경해서 추가
* 처음 설치하면 net-tools도 설치 안되어 있고 네트워크 연결 안될 수 있음.
   - windows 터미널에서 ipconfig 실행해 wsl에 설정된 ip 확인
   - wsl 실행해서 /etc/resolv.conf에 설정된 nameserver값 확인 
      - nameserver의 값과 ipconfig의 wsl에 할당된 ip가 동일한지 확인
      - 만약 다르면 
         > sudo rm /etc/resolv.conf
         > 윈도우 터미널에서 wsl --shutdown
         > wsl 재시작


[Docker 설치]

* 기본 설정
   > sudo apt-get update
   > sudo apt install net-tools
   > sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
* GPG key 추가
   > curl -fsSL https://download.docker.com/linux/ubuntu/gpg| sudo apt-key add -
* 도커 저장소 설정
   > sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu$(lsb_release -cs) stable"
* 도커 엔진 설치 및 시작
   > sudo apt-get install -y docker-ce docker-ce-cli containerd.io
   > sudo service docker start
* NVidia docker 설치
   > distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
   - nvidia docker gpgkey 추가
      > 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
      > sudo apt-get update
   - cuda toolkit 설치 및 실행
      > sudo apt-get install -y nvidia-container-toolkit
      > sudo service docker restart
      > sudo docker run --gpus all nvidia/cuda:11.8.0-base-ubuntu20.04 nvidia-smi
   - jupyter notebook 실행
      > sudo docker run -it --gpus all -p 8888:8888 tensorflow/tensorflow:latest-gpu-py3-jupyter
      - 실행된 주피터로 접속
         -  http://127.0.0.1:8888/?token=9ebd8c7cd61ba849bc49513f49a68379c1b2696d89e70908 와 유사한 형태의 주소가 출력됨
         - 디바이스 리스트 보기 코드 실행
           > from tensorflow.python.client import device_lib
     device_lib.list_local_devices()

이제 설치된 linux에서 서비스를 개발하던 jupyter notebook에서 개발을 하던 하면 됩니다. 좋은 운!! :)

반응형