내가 사용하는 딥러닝, ROS 개발 환경에 대하여 서술하고자 한다.
Deep Learning과 관련하여
우리 연구실에서 다수의 연구원들이
개별 PC(windows or ubuntu)에서 서버(ubuntu)로
ssh를 통하여 접속하고 GPU들을 사용을 한다.
지금까지 사용했던 환경들과 문제점
초기에는 아나콘다로 가상환경을 만들어서 연구를 진행하였지만,
링크와 같이 tensorflow안에서도 버전에 따라 CUDA와 cuDNN이 달라진다.
여기에 pytorch를 사용하는 사람들도 제각각이니 환경이 복잡해진다.
이러한 환경에서 다수가 사용하면 서로 간의 환경이 꼬일 수 있는 문제가 생긴다.
따라서 현재는 Docker를 이용하고 있다.
IDE 또한, 나는 Spyder과 pycharm을 거쳐 vscode를 최종적으로 사용하고있다.
내가 생각하는 도커의 장점
- vmware, virtualbox와 같은 가상가상머신처럼 독립된 실행환경을 제공하면서도, 성능 저하가 훨씬 적다.
- 내가 또는 다른사람이 작업한 환경을 docker pull만 하면, 간단히 실행할 수 있다.
('난 되는데 넌 왜 안돼?'와 같은 문제를 해결할 수 있다.) - docker hub를 통해서 환경을 공유하기 쉽다.
- 기존 베이스가 되는 환경을 image로 만들어놓고
프로젝트에 따라 환경이 달라지면
docker commit을 통해 프로젝트에 대한 이미지를 만든다.
이때, 기존 베이스가 되는 환경을 docker image로 만들어 놓으면 같은 일을 반복하지 않고 바로 쉽게 불러올 수 있다.
Deep Learning, ROS 개발 환경 설치 목록
이러한 내 컴퓨터와 서버 간에 설치하여 실행하는 프로그림 목록은 아래와 같다.
(링크는 해당 프로그램을 다운 받을 수 있는 사이트나 설치 가이드에 대한 설명입니다)
서버 환경 및 설치 프로그램
- OS : Ubuntu 18.04
- openssh ($ sudo apt install openssh-server)
- nvidia-driver
- Docker
- nvidia-docker2
** 여기서 CUDA와 cuDNN과 같은 설치는 별도로 필요없다.
최종적으로 docker를 아래와 같이 cuda 이미지를 실행하였을 경우,
docker 콘테이너에서 GPU 목록을 확인할 수 있다.
$ sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
Fri Jan 7 05:02:44 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 495.44 Driver Version: 495.44 CUDA Version: 11.5 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:05:00.0 Off | N/A |
| 22% 34C P8 15W / 250W | 17MiB / 12211MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA TITAN X ... Off | 00000000:06:00.0 Off | N/A |
| 23% 28C P8 9W / 250W | 6MiB / 12196MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 2 NVIDIA TITAN X ... Off | 00000000:09:00.0 Off | N/A |
| 23% 26C P8 8W / 250W | 6MiB / 12196MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 3 NVIDIA TITAN RTX Off | 00000000:0A:00.0 Off | N/A |
| 41% 30C P8 8W / 280W | 5MiB / 24220MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+
개인 PC 환경 및 설치 프로그램
- OS : Windows 10
- mobaxterm
- vscode
- docker desktop
- (optional) git
PC는 한글과 같은 문서작업 때문에 windows 10을 사용하고 있다.
mobaxterm은 서버로 ssh 접속을 하여 서버를 모니터링하고, docker image를 실행한다.
참고로, ROS를 이용하여 로봇을 개발할 때도
PC에서 로봇의 SBC로 mobaxterm을 이용하여 ssh 접속을 하고
mobaxterm의 X server 기능을 이용하여 GUI를 PC로 받아본다.
그리고 vscode(Visual Studio Code)의 Extensions으로 관련 기능을 추가하여
ssh 접속, docker, git 기능을 사용한다.
(docker, git extension를 이용하기 위해서는 window에 대한 프로그램은 먼저 다운, 설치하여야한다)
- vscode로 ssh 접속을 하는 방법은 아래와 같다.
https://jstar0525.tistory.com/14
- vscode로 docker에 접속하도록 설치하는 방법은 아래와 같다.
https://jstar0525.tistory.com/331
- vscode로 git을 사용하는 방법은 아래와 같다.
https://jstar0525.tistory.com/54
실행 방법
1. 개인 PC에서 mobaxterm을 이용하여 서버로 ssh 접속
2. ssh로 접속한 서버에서 docker 실행
3. 개인 PC에서 Visual Studio Code를 이용하여 ssh 접속
4. docker extension에서 실행 중인 container에 대하여 Attach Visual Studio Code
Docker 사용법
https://jstar0525.tistory.com/332