NVIDIA Container Toolkit 설치

조재훈·2023년 7월 5일
0

기타

목록 보기
5/5
post-custom-banner

환경

  • Windows 11
  • WSL 2
  • Ubuntu 20.04
  • GeForece RTX 3080 Laptop

설치

전체적인 진행은 아래 링크를 따라 진행
https://docs.nvidia.com/cuda/wsl-user-guide/index.html

1) 드라이버 설치

https://www.nvidia.com/Download/index.aspx?lang=en-us

  • 위 사이트에 들어가서 사양에 맞게 입력하면 맞는 드라이버가 뜬다
  • 이 드라이버를 다운받아 설치한다

2) NVIDIA GPU를 위한 도커 설치

https://docs.nvidia.com/ai-enterprise/deployment-guide-vmware/0.1.0/docker.html

  • 업데이트
sudo apt-get update
  • apt의 HTTPS 저장소 사용을 위한 패키지 설치
sudo apt-get install -y \
  apt-transport-https \
  ca-certificates \
  curl \
  gnupg-agent \
  software-properties-common
  • 도커의 공식 GPG 키를 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

  • 맞는 키가 설치되었는지 확인
  • fingerprint가 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 인데 마지막 8자리를 검색해서 확인
sudo apt-key fingerprint 0EBFCD88

  • 안정적인 저장소 세팅을 위한 명령어 입력
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs)\
stable"

에러 발생

오잉 에러가 생긴다

E: Malformed entry 50 in list file /etc/apt/sources.list (Component)
E: The list of sources could not be read.

이 경우 sources.list 파일에서 문제가 있는 라인을 수정해주어야 한다. 관리자 권한이 필요하니 sudo로 실행하자.

sudo vi /etc/apt/sources.list

50번째 줄이 문제라고 하니 주석처리해보자


근데 그렇게 해도 같은 문제가 반복된다.

2-1) 도커 설치

도커 공식 홈페이지에서 설치하자.
https://docs.docker.com/engine/install/ubuntu/

저장소 셋업

  • 일단 위에서 오류가 발생한 부분은 sources.list에서 주석처리를 하자
  • 그리고 아래 명령어 실행. 오래된 구 버전을 지우는 거다.
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

  • apt 패키지를 업데이트하고 apt가 HTTPS 저장소를 이용할 수 있도록 하는 패키지를 설치한다
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

  • 도커의 공식 GPG 키를 추가한다
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
  • 저장소를 셋업한다
echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

도커 엔진 설치

  • apt 패키지 업데이트
sudo apt-get update
  • Docker Engine, containerd, Docker Compose 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • 잘 설치됐는지 확인
sudo docker run hello-world


잘 설치된 것 같다.

2-2) 다시 NVIDIA Container Toolkit 설치

https://docs.nvidia.com/ai-enterprise/deployment-guide-vmware/0.1.0/docker.html#enabling-the-docker-repository-and-installing-the-nvidia-container-toolkit

  • 패키지 저장소 추가
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
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

-패키지들의 최신 버전들을 설치하고 nvidia-container-toolkit 패키지 설치

sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
  • 도커 재시작
sudo systemctl restart docker
  • 도커와 NVIDIA Container Runtime 테스트
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.8.0-base-ubuntu20.04 nvidia-smi

에러 발생

docker ps 를 해봐도 에러가 뜬다

에러 발생

https://technote.kr/369
사용자가 /var/run/docker.sock 에 접근할 권한이 없어서 생기는 문제라고 한다. 사용자를 docker group에 포함시켜주자
($USER 환경 변수는 현재 로그인한 사용자 아이디를 나타내므로 그대로 쓰기)

sudo usermod -a -G docker $USER

껐다 켰더니 잘 된다

이제 nvidia runtime 해결만 남았다.

2-3) NVIDIA Runtime 추가

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/user-guide.html

  • Systemd drop-in file
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/override.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime
EOF
sudo systemctl daemon-reload \
  && sudo systemctl restart docker

  • Daemon configuration file
sudo nvidia-ctk runtime configure --runtime=docker

  • 도커 재시작
sudo systemctl restart docker
  • 다시 이미지 불러와보자
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.8.0-base-ubuntu20.04 nvidia-smi


됐다!

3) CUDA Toolkit & CUDA Developer Tools 설치

아래 명령어를 차례대로 입력하자

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin

sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb

sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb

sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

3-1) cuda toolkit 설치

sudo apt install nvidia-container-toolkit
nvcc -V


이 쒸발 기껏 애써서 설치했더니 저거 하나에 다시 10.1이 설치되는건 무슨 경우냐??
쉬발 이럴거면 그냥 첨부터 nvidia-container-toolkit 설치하고서 다른걸 패치하는식으로 하지 아오 쉬발

3-2) 환경변수 설정

참자....참자....
https://wooriel.tistory.com/53
wooriel님 감사합니다

환경변수를 설정해주자

echo 'export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.8/lib64' >> ~/.bashrc
source ~/.bashrc

다시 버전을 확인해보자

nvcc -V


휴 다행이다

4) cuDNN 설치

https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html
https://iambeginnerdeveloper.tistory.com/199

cd /mnt/c/users/.../downloads
mv cudnn-linux-x86_64-8.9.2.26_cuda11-archive.tar.xz /home/jaewhoon
cd ~
ls
cudnn-linux-x86_64-8.9.2.26_cuda11-archive.tar.xz
  • 압축풀기
tar -xvf cudnn-linux-x86_64-8.9.2.26_cuda11-archive.tar.xz
ls
cudnn-linux-x86_64-8.9.2.26_cuda11-archive
cudnn-linux-x86_64-8.9.2.26_cuda11-archive.tar.xz
  • 파일 복사하기
sudo cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include
sudo cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

참조
https://velog.io/@moey920/CUDA-%EB%B2%84%EC%A0%84-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8

profile
맨땅에 헤딩. 인생은 실전.
post-custom-banner

1개의 댓글

comment-user-thumbnail
2024년 5월 9일

안녕하세요.. 맨위에 업데이트
sudo apt-get update 저거는 어디서 붙여넣나요?

답글 달기