Deep Learning 개발 환경 세팅 (Ubuntu Desktop, GPU, ssh)

Hyungseop Lee·2023년 11월 28일
0
post-thumbnail

Ubuntu 20.04.6 Desktop

  • rufus를 통해 내가 갖고 있던 USB를 Ubuntu 20.04.6 Desktop booting용으로 format하였다.

  • 그리고나서 USB를 꽂고 재부팅하여 UEFI창에 들어가서
    booting 최우선 순위를 Ubuntu 20.04.6이 구워진 USB로 설정하였다.

  • 다시 재부팅하여 성공적으로 Ubuntu 20.04.6 Desktop이 되었다.
    Ubuntu install 설정할 때, 기존의 Window가 잡고 있던 partition을 없애기 위해
    Disk를 모두 삭제하는 옵션을 선택하여 기존의 Disk를 잡고 있던 data들을 날렸다.

Black screen (Ubuntu version과 nvidia driver 호환성 문제)

  • Ubuntu에 모든 세팅을 마치고
    하루가 지나서 Ubuntu Desktop을 다시 켰더니, black screen이 뜨고 아무것도 동작하지 않았다.
    검색해보니 여러 가능성이 있었지만,
    ubuntu와 nvidia driver(3090)의 호환이 맞지 않은 것으로 파악했다.
    따라서 ubuntu 20.04.6와 3090이 호환 되는 Nvidia driver를 찾아서 기존의 nvidia driver를 모두 삭제하고 다시 다운로드하였다.
    (https://askubuntu.com/questions/1291151/rtx-3090-not-recognized-by-ubuntu-20-04)
    검색해보니, version 455 또는 version 470이 호환이 된다고 하여
    nvidia driver version 470.223.02으로 다운로드 해서 문제를 해결했다.

cuda version

nvcc

  • CUDA를 지원하는 compiler는 NVCC 이다,
    CUDA 기능을 사용하기 위해선 확장자가 .cu인 파일을 생성해야 하는데
    GCC로는 .cu 파일을 생성할 수 없다.
    그런데 NVCC로 compile하여 .cu 파일을 생성할 수 있다

nvcc -V 

cuDNN

  • DeepLearning에 필요한 cuDNN library를 설치하기 위해
    나의 cuda version 11.4.0에 맞는 version을 설치하였다.
    ( 참고 : https://csm-kr.tistory.com/29)

anaconda3

  • 개발할 때, 여러 python, pytorch 등 여러 version이 꼬이거나 다양한 version으로 test해보기 위해 conda 가상환경을 사용할 예정이다.
    따라서 ananconda를 설치했다.

conda env list

  • 현재 가상환경은 base 하나 밖에 없다.

conda (de)actiavte [env name, default:base]

conda create -n (new env name)

conda remove --name [env name] --all

cuda version, PyTorch version conflict

  • cuda version 11.4와 base 환경에 설치한 PyTorch의 version이 맞지 않아서
    3090 GPU를 찾지 못하는 문제가 발생했다.
    그래서 cuda version 11.4와 호환이 되는 version을 찾다가(https://pytorch.org/get-started/locally/)
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch

로 설치하였다. (downgrade했음...)

Ubuntu Desktop 한글설정

https://freeablelab.tistory.com/138 를 참고하였다


ssh

  • Ubuntu Desktop에 ssh 연결을 해서
    연구실이 아니라 외부에서도 Ubuntu Desktop의 computing resource를 사용할 수 있도록 할 것이다.

ssh setting

  • ssh server 설치 :
sudo apt-get install openssh-server
  • ssh server를 사용할 내부 port 지정
sudo vi /etc/ssh/sshd_config

default로 port 22가 되어 있는데
ubuntu에서 사용하지 않는 port를 명시적으로 지정해서 사용할 수 있다.

  • 현재 열려있는 port 확인하기 :

    sudo netstat -plnut

    (출력 내용은 가림...)

  • ssh service 시작 :

sudo service ssh start

  • ssh service 상태 확인하기
sudo service ssh status

  • ssh service 종료 :
ssh service ssh stop

  • 방화벽 실행, ssh port만 예외시켜준다
sudo ufw enable
sudo ufw allow <포트번호>

1. ssh - same subnet

  • 현재 나의 인터넷은 연구실 wi-fi 공유기(iptime)에 연결되어 있는데,
    공유기에 LAN선을 연결하여 유선 인터넷을 사용하고 있다.
    원격 노트북(macbook)도 같은 wi-fi를 사용하고 있기 때문에
    내부 ip와 위에서 지정한 port번호를 지정하여 접속하면 된다.
    Ubuntu Desktop에 할당된 내부 IP를 알아내기 위해서는
    iptime(192.168.0.1)에 들어가서 현재 computer의 내부 IP(host part) 부분을 확인한다.
    ubuntu desktop은 192.168.0.40 이라는 내부 IP가 할당되었다.
    • Ubuntu Desktop :
    • Macbook (local host) :

2. ssh - global network

  • 외부에서 Ubuntu server에 접속할 수 있도록 고정 IP가 있어야 한다.
    나는 학교 내부망을 사용하기 때문에 고정 IP를 전산원에 요청하여 할당받아야 한다.
    할당 받은 고정 IP로 외부에서 ssh 접속을 할 수 있다.

    + 고정 IP를 할당 받았지만,
    누군가 몰래 내 IP를 쓰고 있어서 충돌이 발생하여 못 쓰고 있다...
    그래서 차선책으로 Port Forwarding을 사용중이다..

Port Forwarding

  • 연구실의 Wifi 공유기의 외부 IP address를 알기 때문에
    Wifi 공유기의 외부 IP address와 미리 지정해놓은 외부 port로 접속하면,
    미리 지정해둔 내부 port(내 ubuntu desktop)로 forwarding하여
    ssh service를 이용할 수 있게 설정할 수 있다.

  • 일단 wifi 공유기에 ethernet선을 연결하여 인터넷을 사용할 수 있도록 설정해놓고,
    192.168.0.1에 접속하여
    고급 설정 > DHCP 서버 설정 > 에서
    나의 내부 IP 주소인 192.168.0.40과 HW address로
    유선:수동등록을 한다.
    그리고나서
    고급설정 > NAT/라우터 관리 > 포트포워드 설정 > 에서
    외부에서 wifi 공유기로 접속할 port와 Ubuntu Desktop의 ssh로 연결해줄 앞서 지정했던 port(default 22)도 지정한다.
    이제 Ubuntu Desktop에서 ssh port를 열고(sudo service ssh start)
    외부 network망에서 ssh 원격 연결을 시도한다.

ssh-key setting

alias 설정

  • 매번 ssh server start, stop, status할 때마다 귀찮으니까
    alias를 설정할 것이다.
    • sstart : sudo service ssh start
    • sstatus : sudo service ssh status
    • sstop : sudo service ssh stop
      gedit ~/.bashrc
      source ~/.bashrc
  • GPU 사용 정보 0.5초마다 update하여 확인

정리

위 내용들은 첫번째 setting때 했던 내용이고
밑에 내용은 두번째 setting에 참고했던 블로그들 (더 깔끔하고 원활하게 진행됨)

ubuntu + rufus = 부팅 디스크 만들기

https://webnautes.tistory.com/2119

ssh 설치 및 세팅

https://codechacha.com/ko/ubuntu-install-openssh/

ssh 로그인 없이 공개키로 접속하기

https://m.blog.naver.com/love_tolty/222389756439

profile
Efficient Deep Learning

0개의 댓글

관련 채용 정보