테크믈리에의 리뷰 공간

[K8S / Rancher 강좌] 2. Nvidia GPU가 달린 노드를 위한 기초 세팅 본문

프로그래밍|소프트웨어/Rancher

[K8S / Rancher 강좌] 2. Nvidia GPU가 달린 노드를 위한 기초 세팅

테크믈리에 2023. 8. 18. 10:44

 

서론

  이번 시간에는 Nvidia GPU가 달린 노드를 위하여 GPU Drvier 및 Cuda를 간단하게 설치하는 방법에 관하여 알아보도록 하겠다. Nvidia GPU가 없는 사람은 바로 3번째 글로 넘어가도 되고, Nvidia GPU가 있는 사람은 4-1 또는 4-2 과정을 꼭 참고해야 K8S 환경에서 GPU를 활용할 수 있으니 읽어보도록 하자.

 

Nouveau 비활성화

   Nvidia GPU를 Lubuntu에서 사용하기에 앞서 가장 필요한 것은 Nouveau의 비활성화이다. Nouveau는 우분투에서 기본적으로 제공하는 Nvidia를 위한 오픈 소스 그래픽 드라이버로, 이것이 있어 드라이버 설치 없이도 Lubuntu 설치 직후 모니터 출력이 가능했다. 하지만, 이게 활성화 된 상태로는 정식 Nvidia GPU Driver를 사용할 수 없기 때문에 반드시 먼저 비활성화를 해둬야한다.

 

  우선, Nouveau를 블랙리스트에 추가하여 더이상 실행되지 않도록 해줘야한다.

echo blacklist nouveau | sudo tee -a /etc/modprobe.d/blacklist.conf
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs -u

  그 다음에는 컴퓨터를 한번 리부트 하여 설정을 적용해주자.

 

Nvidia Driver 및 Cuda 설치

  Nvidia GPU driver를 설치하는 방법은 여러가지가 있지만, 개인적인 경험으로 가장 안정적이며 쉬운 방법은 Cuda installer를 통하여 설치하는 것이었다. 정말 당연하게도 Cuda installer에 따라오기 때문에 Cuda와 버전 호환성을 고민하지 않아도 되는 것이 가장 큰 장점이고, runfile 하나로 쉽게 처리가 된다는 것이 다른 장점이다.

 

 

Wikiwand - CUDA

CUDA is a proprietary and closed source parallel computing platform and application programming interface that allows software to use certain types of graphics processing units for general purpose processing, an approach called general-purpose computing on

www.wikiwand.com

  먼저 해줘야하는 것은 본인 GPU의 Compute Capability를 확인하고 해당 Compute Capability와 호환되는 Cuda 버전을 확인하는 것이다. 가령 예를 들어 GTX1080의 경우, 위 링크에서 확인되는 Compute Capability는 6.1이고 이는 Cuda 8부터 12까지가 호환됨을 알 수 있다. 

 

  어차피 세부 Cuda 버전의 경우, Nvidia Docker 이미지를 통하여 가상 컨테이너에서 다른 버전을 사용할 수 있기 때문에 대충 10이나 11 이상 버전을 활용하면 호환 문제는 없을 것이고, 아래 글에서는 Cuda 12.2 버전을 기준으로 설명하도록 하겠다.

  구글에 위 이미지처럼 cuda <버전> installer를 검색하면 바로 Cuda toolkit Download 페이지가 나온다. 해당 링크에 들어가서 순서대로 Linux - x86_64 - Ubuntu - 22.04 - runfile(local) 을 선택하면 다음과 같은 화면이 나온다.

  위 명령어를 그대로 터미널창에 입력하고 기다리다보면 터미널 창에 다음과 같은 화면이 나타날 것이다.

  첫 화면에서는 accept를 입력하고 엔터를 누르면 되고 그 다음 나타나는 두번째 화면에서는 방향키로 위 아래로 움직이면서 Demo Suite랑 Documentation을 스페이스바로 체크 해제한 후 엔터를 눌러 설치를 진행하도록 하자.

 

  설치가 완료된 후에는 nvidia-smi 를 입력하여 출력되는 것을 통하여 드라이버가 정상 설치되었는 지 확인할 수 있다.

  하지만, Cuda 드라이버 버전을 확인하는 nvcc -V 명령어는 실행되지 않을 것이다. 만약 내 글을 그대로 따라와 zsh를 사용하는 유저라면 ~/.zshrc 파일에, bash를 사용하는 유저라면 ~/.bashrc 에 다음 내용 두 줄을 마지막에 추가해주도록 하자.

export PATH="/usr/local/cuda-<버전>/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-<버전>/lib64:$LD_LIBRARY_PATH"

   여기서 <버전>에 들어가는 내용은 본인이 설치한 cuda 버전에 맞춰야하는데, 만약 정확한 경로명이 헷갈린다면 다음과 같이 내용을 확인할 수 있다. 다음 내용에서 cuda-<버전> 이 뜨는 것이 본인이 설치한 cuda 버전이다.

 

  추가한 다음 zsh 유저라면 source ~/.zshrc 를, bash 유저라면 source ~/.bashrc 를 입력한 다음 nvcc -V를 입력해보도록 하자.

 

마침글

  이번 글에서는 간단하게 Nvidia GPU Driver 및 CUDA를 설치하는 방법을 알아보았다. 다음 글부터는 본격적으로 K8S 환경 구축을 하는 방법에 관하여 볼 예정인데, 만약 Kubeadm을 사용하여 완전 수동화된 세팅을 원한다면 3번 글을 따라 진행하고, Rancher를 기반으로 하여 자동화된 세팅을 진행해보고 싶다면 4번 글을 따라 진행하는 것을 권장한다.

  개인적으로는 가볍게 단일 노드 혹은 1~2개 노드로 실험할 예정이라면 Kubeadm으로 간단히 구성하는 것도 나쁘지 않고, 수동으로 하나하나 다 세팅해보기엔 어렵다, 본인 외에도 K8S를 같이 쓸 사람이 있거나 안정적인 환경 구성을 원한다면 Rancher를 사용하는 것을 추천한다.

 

 

Comments