Ubuntu 딥러닝 서버 세팅 일지
by Cori1. 학교로부터 전달 받은 노트북(Dell)에는 Windows가 기본으로 깔려 있었다.
- Outlook 계정을 새로 만들고, 기본 세팅 완료 후 Window 환경으로 접속
* Outlook 계정: lamdaco@outlook.kr
2. 부팅용 USB에 Ubuntu 22.02 버전 iso 파일을 설치, Rufus를 이용하여 설치용 디스크로 만들었다.
- dell ubuntu 설치
3. USB를 끼워둔 상태로, Dell 노트북을 재부팅하고, 빠르게 F12 키를 연타하여 BIOS 창으로 진입한다.
- BIOS 설정 창에서, 노트북 부팅 순서를 USB가 최우선이 되도록 순서 변경 (기존: Windows manager)
4. 이후 다시 노트북을 실행시키고, Ubuntu를 설치해주었다.
- 혹시 몰라 Window, Ubuntu 둘 다 접속 가능하도록 듀얼 부팅 모드로 설치
5. 이런 저런 기본 세팅 후, Ubuntu 접속 성공적으로 완료 !
- nvidia-smi 명령어로 노트북에 설치된 GPU 드라이버를 조회해보려 했지만, 안깔려있음 .. 이후에 깔 예정이다.
- lspci | grep -i VGA 명령어를 통해 노트북에 설치된 GPU 드라이버를 조회할 수 있다.
- 설치된 GPU 이름이 조회가 안 될 수 있는데, sudo update-pciids 명령어 입력 후 다시 조회하면 나타난다.
6. SSH 접속 허용해주기
1) Openssh-server를 설치해줘야 한다고 한다.
$ sudo apt update
$ sudo apt install openssh-server -y
* 설치가 완료되면 SSH 서비스가 자동으로 시작되는데, 정상적으로 동작하는지 확인하려면 다음 명령어를 입력한다.
$ sudo systemctl status ssh
2) UFW(Ubuntu Fire Wall)을 통해, SSH 포트를 열어줘야 한다.
$ sudo ufw allow ssh
3) 내부 ip 주소를 얻는다.
$ ip a # 192.168.123.111로 조회된다.
이제 외부에서 해당 Ubuntu Server로 접속할 수 있다.
7. Ubuntu 용량을 늘려주었다
- 기존: Window 1TB, Ubuntu 1TB, 변경 후: Window 300GB, Ubuntu 1.7TB
- Ubuntu 부팅 디스크 꼽은 후 부팅 다시 시작 -> Try Ubuntu -> Gparted 라이브러리 실행하여 해당 작업 수행함
* 용량 업데이트 이후 기존 Ubuntu 서버 정상적으로 접속되는거 확인 완료, 1.6TB 여유 공간 확보
8. Ubuntu upgrade & Library 설치
$ sudo apt upgrade - y
$ sudo apt install tree -y
$ sudo apt-get install build-essential -y
$ sudo apt-get install python3-pip
$ sudo apt install net-tools
9. NVIDIA-Driver를 설치한다. 현재 노트북에 설치된 GPU 사양은 RTX A5500 1장이다.
1) 권장 Driver를 확인한다.
$ ubuntu-drivers devices # Dell 노트북에 대해서는 nvidia-driver-525-open을 추천해준다
$ sudo apt install nvidia-driver-525 # open 버전은 가급적 설치 x
$ sudo reboot
2) 재부팅 후 nvidia-driver 실행 시 nvidia-driver와 소통할 수 없다는 오류가 나오면서 제대로 설치가 되지 않았다.
- 다음 명령어로 기존에 설치한 nvidia-driver를 지운다.
$ sudo apt remove nvidia-driver-525
$ sudo apt autoremove
- 구글링해보니, 부팅 시 BIOS 모드로 진입해 Secure boot 체크를 해제해야 한다는 글이 있어 그대로 해주었다.
3) Secure boot 체크 해제 후 다시 Ubuntu 접속, nvidia-drvier-525를 다시 설치 후 재부팅
- 제대로 설치된 것을 확인할 수 있다.
10. Cuda 설치
- nvidia-driver 설치 시 Cuda가 자동으로 설치된다고 한다. nvidia-driver 명령어 입력시 보이는 CUDA 버전은 12.0이다.
- 하지만 whereis cuda 명령어 입력 시 cuda는 보이지 않는다.
1) CUDA Archieve 에서 CUDA 12.0 설치
- Cuda Toolkit 12.0, Linux, x86_64, Ubuntu, 22.04, runfile(local) 선택
- 설치까지 시간이 좀 걸린다.
$ sudo sh cuda_12.0.0_525.60.13_linux.run
- existing package manager installation of the driver found 메시지가 뜨면서, 설치된 nvidia-driver를 제거하란다.
- 나는 무시하고 continue 누름.. EULA에 대해서 accept 해주고
- Cuda Installer 창에서, 체크되어 있는 Driver(525.60.13) 선택 해제하고 CUDA Toolkit 12.0만 설치한다.
2) Cuda 삭제
- Cuda 12.0과 호환되는 Cudnn이 없어 설치한 Cuda 12.0을 다시 삭제하기로 했다.
$ sudo apt-get --purge remove 'cuda*'
$ sudo apt-get autoremove --purge 'cuda*'
$ sudo rm -rf /usr/local/cuda*
- Cuda 12.0 삭제 후, Ubuntu 22.04를 지원하는 Cuda 11.7 설치하기로 결정 => 1) 다시 수행
$ sudo sh cuda_11.7.0_515.43.04_linux.run
3) 경로 설정
- cuda 경로를 잡아줘야 한다.
$ sudo vi /etc/profile
$ export PATH=/usr/local/cuda-11.7/bin${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda-11.7/extras/CUPTI/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
$ source /etc/profile
- 이후 nvcc -V 명령어를 통해 설치한 Cuda 버전을 조회할 수 있다.
# $ export PATH=$PATH:/usr/local/cuda-11.7/bin
# $ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.7/lib64
# $ export CUDADIR=/usr/local/cuda-11.7
11. Cudnn 설치
- Cudnn 설치를 위해서는 NVIDIA 계정이 필요하다.
1) cuDNN Archive에서 앞서 설치한 Cuda 11.7과 호환되는 Cudnn 설치
- cuDNN v8.5.0 설치함 (tar 파일)
- cudnn-linux-x86_64-8.5.0.96_cuda11-archive.tar.xz 파일 설치 완료, 다음 명령어로 압축을 해제한다
$ tar -xvf cudnn-linux-x86_64-8.5.0.96_cuda11-archive.tar.xz
2) cudnn 파일 cuda 폴더로 복사
- 압축해제한 cudnn 폴더로 이동한 후, 다음 명령어 수행
$ sudo cp ./include/cudnn*.h /usr/local/cuda-11.7/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.7/lib64
$ sudo chmod a+r /usr/local/cuda-11.7/include/cudnn.h /usr/local/cuda-11.7/lib64/libcudnn* # 모든 사용자가 변경할 수 있도록 수정
3) libcudnn 파일 링크 연결
$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.5.0 /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.5.0 /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.5.0 /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.5.0 /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.5.0 /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.5.0 /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
$ sudo ln -sf /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn.so.8.5.0 /usr/local/cuda-11.7/targets/x86_64-linux/lib/libcudnn.so.8
$ ldconfig
4) 링크 파일 조회 & Cudnn 조회
- 다음 명령어를 입력했을 때, 링크 파일들이 출력되면 성공
$ ldconfig -N -v $(sed 's/:/ /' <<< $LD_LIBRARY_PATH) 2>/dev/null | grep libcudnn
- cudnn 파일은 다음 명령어로 조회할 수 있다. 나는 8.5.0을 설치했으므로 아래 명령어로 조회할 수 있다.
$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 # cudnn 8.x 이전
$ cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2 # cudnn 8.x 이후
12. Anaconda
1) Anaconda 설치
- 가상환경으로 작업하기 위해, Anaconda를 설치해준다.
- ubuntu 설치 파일은 .sh 파일로, bash 명령어를 통해 설치할 수 있다.
$ bash Anaconda3-2022.10-Linux-x86_64.sh
- 터미널 실행할 때 마다 앞에 (base)가 붙은 conda prompt가 실행되는데, 다음 명령어로 방지할 수 있다.
$ conda config --set auto_activate_base False
2) 가상환경 생성
- 랩실에서 사용할 가상환경을 생성한다. 가상환경 이름: lamda_base
$ conda create --name lamda_base python==3.8
3) 가상환경에 라이브러리 설치
- lamda_base 가상환경 이용해서 작업할 예정
$ conda activate lamda_base
- jupyter, pandas, pymysql, ... 등 코드 수행 시 필요한 라이브러리 설치
13. 사용자 생성
- 공용으로 사용할 서버이기 때문에, 계정을 각각 생성한다.
- 그룹 lamda를 생성해서, lamdaco (관리자), lamda_00 ~ lamda_99(사용자)를 해당 그룹에 추가한다.
- lamdaco에 Anaconda가 설치되어 있기 때문에, 다른 사용자에서 conda를 사용하려면 lamdaco 폴더에 접근 가능해야 한다.
- lamda group에서 각 사용자 폴더에 대해 읽기, 실행, 쓰기할 수 있도록 권한 설정해 줌 (rwx, 770)
$ sudo chown -R 770 lamdaco
14. MySQL
- 관리자 계정: lamda_admin
- 사용자 계정: lamda_user
- 데이터베이스: classification, multi-turn, single-turn, meta-db
1) Database 생성
$ CREATE DATABASE classification default CHARACTER SET UTF8;
$ CREATE DATABASE multi_turn default CHARACTER SET UTF8;
$ CREATE DATABASE single_turn default CHARACTER SET UTF8;
$ CREATE DATABASE meta_db default CHARACTER SET UTF8;
2) 권한 부여
- 관리자 계정에는 각 DB에 모든 권한 부여, 사용자 계정에는 각 DB에 SELECT 권한 부여
$ GRANT ALL PRIVILEGES ON classification.* to 'lamda_admin'@'%';
$ GRANT SELECT ON classification.* to 'lamda_user'@'%';
$ FLUSH PRIVILEGES;
15. snap 폴더 지우기
- 자꾸 snap 폴더가 디렉토리에 나타난다.
1) 패키지 삭제
$ snap list # snap으로 설치된 패키지 확인
$ snap remove --purge snap-store
$ snap remove --purge gtk-common-themes
$ snap remove
- 삭제가 잘 안되더라도 2)으로 넘어가자. 이후에 다 삭제된다
2) 마운트 해제
$ umount /snap/
$ umount /snap/{core-id}/{id} # umount /snap/core20/1405
3) snapd 삭제
$ apt autoremove --purge snapd
4) 남아 있는 snap 폴더 삭제
$ rm -rf ~/snap/
$ rm -rf /snap
$ rm -rf /var/snap
$ rm -rf /var/lib/snapd
5) snapd를 설치 안되게 마크
- 크롬 브라우저 설치 시 snapd가 설치되는 것을 방지함
$ apt-mark hold snapd
♣ 참고문헌
(1) https://ckdals29672.tistory.com/4 # 개인용 서버 만들기 (2)
(2) https://heisanbug.tistory.com/18 # Ubuntu 용량 증가
(3) https://dohyeon.tistory.com/14
(4) https://nirsa.tistory.com/332
(5) https://ieworld.tistory.com/12
'CS > Server' 카테고리의 다른 글
Amazon ec2 instance 기본 세팅하기 (0) | 2024.03.11 |
---|---|
EC2 Setting (2) | 2024.01.03 |
Window 딥러닝 서버 세팅 일지 (0) | 2023.02.24 |
VSCode를 이용한 Ubuntu 원격 서버 접속 (0) | 2022.10.04 |
내가 보려고 만든 Ubuntu 서버 세팅 명령어 (0) | 2022.09.14 |
블로그의 정보
코딩하는 오리
Cori