Haribo ML, AI, MATH, Algorithm

딥러닝 Ubuntu 서버 세팅

2023-11-06
Haribo

서버 컴퓨터 세팅 매뉴얼

디크스 파티션 참고

우분투 설치 참고


0. Network 연결상태 확인 필수

네트워크 없으면 Ubuntu 설치 후 필수 라이브러리 설치 안됨

  • CUDA, Nvidia 등등

서버환경은 SSD+HDD 저장소가 있는 컴퓨터

1. Ubuntu 설치

1.1. 부팅 디스크 만들기준비물

1.2. 바이오스 모드 진입

재부팅할 때 Del키 연타 후 바이오스에서 부팅 순서 1순위로 USB 설정

1.3. 우분투 install

Install Ubuntu 선택

나라 및 언어 선택

Normal installation 선택

Other options 둘다 선택

디스크 파티션 수동으로 설정하기 위해서 Something else 선택

1.3.1. Disk 파티션 나누기

  • /boot 파티션: Primary (위치: SSD, 크기: 1,000MB)
  • EFI 파티션: Primary (위치: SSD, 크기: 512MB)
  • / (루트) 파티션: Primary (위치: SSD, 크기: 최소 20,480MB 이상)
  • swap 파티션: Logical (위치: SSD, 크기: 램(RAM) 크기의 2배)
  • /var 파티션: Logical (위치: HDD, 크기: 500,000MB 이상)
    • Docker image가 여기 저장되서 용량 많이 필요
  • /tmp 파티션: Logical (위치: HDD, 크기: 10,240MB 이상)
  • /home 파티션: Logical (위치: HDD, 크기: HDD 용량 전체)
  • /datasets추가 데이터 파티션(SSD 남은 용량): Logical (위치: SSD, 크기: SSD 용량 전체)

OS에서 돌리기 무겁고 빨리 실행되길 원하는 프로그램들은 SSD 저장.

백업이나 용량이 큰 데이터, 또는 유동적이지 않은 데이터는 HDD 저장.

스샷을 못찍어서 다른 이미지로 대체 설명

SSD (1TB)

SDD 파티션의 /freespace 클릭 후 밑에 + 버튼 눌러서 아래의 공간에 할당 해주면됨

이미지에 표시된 용량이 글로 써둔 용량과 다르기 때문에 글로 써둔 용량으로 설정할것

  • /boot (10000MB)
  • EFI (10000MB)

이런식으로 파티션 설정

1.4. 재부팅

USB 뽑은 후 재부팅

2. Network 설정

2.1. SSH 세팅

# Terminal
sudo apt update && sudo apt upgrade -y
sudo apt install build-essential openssh-server openssh-client
# sudo apt install openssh-server
# sudo apt install openssh-client
sudo apt install vim

Default ssh port 번호는 22번.

sshd_config 파일 수정

sudo vim /etc/ssh/sshd_config

sshd_config 파일의 #Port 22 부분을 Port [신청한 포트번호] 로 변경

...
Include /etc/ssh/sshd_config.d/*.conf

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

...
...
Include /etc/ssh/sshd_config.d/*.conf

Port [설정할 포트번호]
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

...

ssh 서비스 재시작

sudo service ssh restart

local 에서 ssh [host]@[IPaddr] -p[Portnum] 으로 접속 확인

2.5. Ubuntu 22.10에서 SSH 설정

22년11월2일 기준으로 22.10 버전에서는 안정화가 덜 된 건지 기존 방식으로 포트 변경이 안됨.

2.4. 과정을 다 거친 뒤 SSH listen 항목을 수동으로 수정해줘야함

sudo mkdir -p /etc/systemd/system/ssh.socket.d
sudo vim /etc/systemd/system/ssh.socket.d/listen.conf

listen.conf 파일 생성 후 아래 작성

[Socket]
ListenStream=[ Port 번호]

SSH 재시작

sudo service ssh reload

local 에서 ssh [host]@[IPaddr] -p[Portnum] 으로 접속 확인

3. Conda 설치(By Script)

참고한 사이트

cd /tmp
ls /tmp | grep anaconda
  • [펼치기] anaconda.sh 아무것도 안뜨는 경우 펼쳐서 명령어 실행

    sudo apt update && sudo apt upgrade -y
    sudo apt install curl
    curl https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh --output anaconda.sh
    # 무결성 확인
    sha256sum anaconda.sh
    

스크립트 파일 실행

sh anaconda.sh

설치 진행 시 이런 글이 나오면 계속 엔터

Welcome to Anaconda3 2021.11

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>>

license term 나오면 [yes] type

Do you approve the license terms? [yes|no]

이 화면 나오면 엔터

Anaconda3 will now be installed into this location:
/home/sammy/anaconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/home/{Username}/anaconda3] >>>

Initialize 할껀지 물어보면 yes

...
installation finished.
Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]

그 다음 bashrc 파일 초기화

source ~/.bashrc
conda create -n test python==3.8

3.1 만약에 conda 명령어가 실행이 안될 시

(conda init 하면 자동생성됨)

Initialize 할 때 환경변수 등록이 안된거.

아래 명령어를 ~/.bashrc 에 붙여넣고

sudo vim ~/.bashrc

{Username} 본인껄로 바꿔야함

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/{Username}/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/{Username}/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/{Username}/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/{Username}/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

다시 source ~/.bashrc 실행

4. Cuda toolkit 설치

예시 : (https://towardsdatascience.com/installing-multiple-cuda-cudnn-versions-in-ubuntu-fcb6aa5194e2)

Nvidia-driver는 앞의 과정을 정상적으로 거쳤다면 자동으로 설치 되어있음.

Cuda toolkit archive 에서 버전 선택 후 매뉴얼 따라 설치(11.8 쓰면 됨)

CUDA11.8 예시sudo vim ~/.bashrc

  • 마지막 sudo apt-get -y install cuda-[version] 입력하면 해당 버전으로 설치
  • ex) sudo apt-get -y install cuda-11.8

설치 후 ~/.bashrc 파일에 cuda 환경변수 등록

{CUDA_version} 본인이 설치한 버전으로 바꿔줘야함 예시 : 11.8, 11.7 등등

sudo vim ~/.bashrc # 입력 후

# >>> cuda 11.7 >>> 
export PATH=/usr/local/cuda-11.7/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# << cuda 11.7 <<

# >>> cuda 12.0 >>> 
export PATH=/usr/local/cuda-12.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# <<< cuda 12.0 <<<

등록 후 source ~/.bashrc 명령어로 bashrc 파일 활성화

# nvcc -V로 CUDA 설치 확인
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

4.1. pytorch 확인

pytorch cuda 테스트를 위한 가상환경 생성

conda create -n test_cuda python==3.8

pytorch 설치 후 가상환경에서 python 실행

conda activate test_cuda
python

실행 후 cuda.available 확인

import torch
torch.cuda.is_available() # True 출력확인
exit()

True 출력 안될 시 재부팅 후 다시 시도.

5. Cudnn 설치

Cudnn 파일 다운로드는 여기에서

  • login 필수(아이디 없으면 회원가입)
  • 11.x 이후 선택
  • ubuntu 버전+x86_64(아키텍쳐) 에 맞는 파일 다운로드
    • .tar file or .deb file

설치 매뉴얼 여기 보고 따라하면됨

  • deb, tar 등등 각각 설치+설치 확인 방법 자세하게 설명되어있음.

6. 기타 에러사항

6.1. UUID error

I: The initramfs will attempt to resume from /dev/sda5
I: (UUID=09e25397-4a2c-4fb0-a605-a7013eecb59c)
I: Set the RESUME variable to override this.

라이브러리 설치 시 이런 에러가 뜬다면

blkid | awk -F\" '/swap/ {print $2}'
printf "RESUME=UUID=$(blkid | awk -F\" '/swap/ {print $2}')\n" | sudo tee /etc/initramfs-tools/conf.d/resume
sudo update-initramfs -u -k all
sudo Reboot

swap UUID 번호를 세팅해줘야함.


Comments

Content