Development/Docker

[Docker][Windows 10] Deep Learning 및 ROS 연구 개발 환경 setting

jstar0525 2022. 1. 6. 16:53
반응형

내가 사용하는 딥러닝, 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 개발 환경 설치 목록


이러한 내 컴퓨터와 서버 간에 설치하여 실행하는 프로그림 목록은 아래와 같다.

(링크는 해당 프로그램을 다운 받을 수 있는 사이트나 설치 가이드에 대한 설명입니다)

 

서버 환경 및 설치 프로그램

 

** 여기서 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 환경 및 설치 프로그램

 

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] VScode로 SSH를 통해 원격서버 접속하기

이번에는 visual studio code로 SSH를 통해 원격서버에 접속하여 remote 방법을 알아보겠습니다. 0. VScode 설치 https://code.visualstudio.com/download Download Visual Studio Code - Mac, Linux, Windows Vis..

jstar0525.tistory.com

 

 

[VScode] VScode로 windows 환경에서 Docker 접속하기

0. VScode 설치 https://code.visualstudio.com/download Download Visual Studio Code - Mac, Linux, Windows Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows..

jstar0525.tistory.com

 

 

[VScode] git 설치 및 VScode로 연동하기

이번에는 git을 설치하고, visual studio code과 연결하는 방법을 알아보겠습니다. 0. 준비 1) GitHub 아이디 만들기 https://github.com/ GitHub - 세계가 소프트웨어를 빌드하는 곳 GitHub is where over 65 mil..

jstar0525.tistory.com

 

실행 방법

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

 

[Docker] Docker 사용법

https://jstar0525.tistory.com/202 [Docker] Deep Learning 및 ROS 연구 개발 환경 setting 내가 사용하는 딥러닝 개발 환경에 대하여 서술하고자 한다. Deep Learning과 관련하여 우리 연구실에서 다수의 연구원..

jstar0525.tistory.com

 

ROS 사용법

https://jstar0525.tistory.com/333

 

[Docker] Docker를 이용하여 ROS 실행 및 GUI 보는 방법

https://jstar0525.tistory.com/202 [Docker] Deep Learning 및 ROS 연구 개발 환경 setting 내가 사용하는 딥러닝 개발 환경에 대하여 서술하고자 한다. Deep Learning과 관련하여 우리 연구실에서 다수의 연구원..

jstar0525.tistory.com

반응형