현재 회사에서 NVIDIA GPU 자원이 사용 가능한 도커가 필요했습니다. 따라서 NVIDIA Docker를 설치해야 했는데, 나중에 참고하기 위해서 설치 방법을 포스팅하도록 하겠습니다.
1. 먼저 도커를 설치합니다. 도커 설치에 사용한 명령어는 아래와 같습니다.
sudo apt-get install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings`
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
그후 설치가 잘 됐는 지 확인을 하기 위해 docker ps 명령어를 입력하니 잘 작동되지 않았습니다. 이는 docker socket 접근에 권한이 없다는 문제였었고 아래와 같은 명령어로 권한을 부여했습니다.
sudo chmod 666 /var/run/docker.sock
docker ps 명령어로 도커가 잘 작동하는 것을 확인했습니다. 이제 NVIDIA Docker를 설치하도록 합니다.
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
sudo apt-get update
sudo apt-get install -y nvidia-docker2
설치가 완료되었으면, 설치가 잘 되었는지 확인합니다. 아래와 같이 간단한 컨테이너를 하나 띄워서 확인할 수 있습니다.
docker run --rm --gpus all ubuntu:18.04 nvidia-smi
그런데 에러가 발생합니다.
could not select device driver "" with capabilities: [[gpu]]. 와 같은 에러가 발생합니다. 구글링해보니 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
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
그런데 위 명령어를 실행하면 이미 nvidia-container-toolkit이 설치되어있다고 합니다. 아마 nvidia docker를 설치하면서 같이 설치가 된 것 같습니다.
그러면 도커를 재실행해보도록 합니다.
sudo systemctl restart docker
그 후 다시 컨테이너를 띄우니 잘 됩니다.
'MLOps' 카테고리의 다른 글
Airflow 기초 사용법 및 DockerOperator (0) | 2022.08.10 |
---|---|
모델 배포 및 모니터링 전략 (0) | 2022.08.08 |
MLFlow 원격 모델 저장소에서 pytorch 모델 로딩 시 에러 (0) | 2022.07.20 |
MLFlow (0) | 2022.07.04 |