[Docker] Docker vs 가상화

   조회 1300   추천 0    

안녕하십니까?

저의 질문의 범주는 Docker, 가상화(VMWare 등) 또는 CRI-O 등과 관련되어 있습니다

저의 회사에서 딥러닝 연구 서버를 구축할 계획인데요

Dell로 잠정적으로 할 생각입니다... GPU도 장착합니다


서버에서 각자 가상환경(Docker이든 VMWare이든)을 사용하고 가상환경에 로그인하여 Tensorflow, PyTorch를 실행하면

서버에 있는 GPU를 CUDA를 통해서 사용할 수 있어야 합니다. 즉 CUDA로 GPU를 공동 사용할 수 있어야 합니다

메인 OS는 우분투 LTS 입니다


이럴 경우, Docker를 쓰는 것이 좋을까요, VMWare같은 가상화툴을 쓰는 것이 좋을까요, 아니면 CRI-O 같은 것도 있던데요 이것은 어떨까요

회원님들의 조언을 부탁 드립니다


제가 이런 질문을 드리는 이유는 도커 Linux 이미지가 VMWare에 진짜 Linux를 설치하는 것보다 제품 개발 호환성 면에서 못하지 않을까

우려해서 입니다


감사합니다^^


extra 03-26
굳이 딥러닝 연구서버를 가상화하여 사용할 목적을 잘 모르겠지만, 한다고 하면 VMWare를 추천드립니다.
제 개인적인 생각으로는 딥러닝 연구 서버용으로 한대 구매 후 그 서버로 계속 딥러닝 수행하는 것이 나아보입니다.

Docker같은 경우에는 공식적으론 Docker container 와 통신하는건 명령어를 통해 접근해서 해야 합니다.
꼼수를 써서 접속하거나 ssh 를 활성화하거나 하는 방법도 존재는 합니다.
Jupyter 등의 웹 기반으로 딥러닝을 수행한다면 솔직히 말씀드리면 큰 차이는 없을 수 있습니다.
ssh 등의 원격으로 접속해 처리하는 방식이라면 VMware 등의 가상화방법이 더 나은것같습니다.
다만, VMWare등에서 수행할 경우 패스스루를 통해서 GPU를 할당해야 합니다.

그리고 맨 아래에 있는 "도커 Linux 이미지가 VMWare에서 리눅스를 설치하는 것보다 제품 개발 호환성면에서 못하지 못할까" 우려는 크게 신경쓰지 않아도 됩니다.
도커 이미지에는 프로그램을 수행하기 위한 파일(실행파일 혹은 소스코드)와 이를 위해 설치하는 라이브러리 파일이 같이 묶여있습니다.(다만 이 과정에서 Docker 에 대한 기본적인 학습이 필요하겠죠)
그렇다보니 오히려 개발환경과 배포환경을 동일하게 맞출 수 있어 호환성면에선 더 좋아집니다.
도커 커널은 도커 Host의 커널을 가져옵니다. 그리고 도커 내 다양한 운영체제들은 그 기반으로 해당 운영체제 수행을 위한 기본적인 것들이 존재하는 것입니다.
리눅스 API 문제가 있을 것이라고 판단되면 도커 Host의 운영체제를 맞추어도 되고 일반적인 환경에선 크게 신경쓰지 않으셔도 됩니다.
     
totalrecall 03-26
네, 소중한 조언 감사 드립니다^^ 많이 배웠습니다
Docker 커널이 호환성 이슈는 없군요... 몰랐습니다

굳이 가상화하려는 이유는, 연구원이 3명 있는데요, 각자 독립된 개발환경을 가지려 하기 때문입니다
그리고 추가하여, 제품 개발 테스트 환경(예: CentOS, Ubuntu 등등)도 독립된 환경으로 가지고 있어야 합니다

한가지 추가 질문 드리면요, VMWare같은 것을 사용할 경우, 메모리 소모량은 Docker일 경우보다 더 커지겠죠?
          
extra 03-26
네 차이는 존재하죠.
가상화 기술이 발전됨에 따라 네이티브와 상당히 유사한 성능을 끌어내지만 아직도 가장 성능이 잘 나오는 것은 네이티브입니다.
그다음으로 Container 기반의 가상화 기술, 그다음이 VMWare 같은 기존의 가상화 기법들입니다.
Container 기반의 가상화 기술은 실제로 가상화가 아닌, Host 상에서 다른 Container에게 격리된 공간을 할당하여 수행하기 때문에 애초에 운영체제 수행을 위한 코스트가 없습니다. 다만 가상화로 인한 성능 하락은 존재는 합니다.
기존 VMWare 같은 기존의 가상화 기법들은 운영체제 수행을 해야하기 때문에 그에 대한 코스트가 발생합니다.
매우 적지만 CPU 자원도 일부 먹으며, 메모리도 기본적으로 128MB 혹은 256 MB 혹은 그 이상을 사용하고 있죠.(전체 할당이 아닌 운영을 위한 최소한의 사용되는 메모리)
그러나, 동일한 프로세스에 대한 코스트는 동일합니다.
그렇기 때문에 메모리 소모량때매 Docker를 해야 한다는 관점에선 굳이 추천드리진 않습니다.
실제 메모리 소모량을 예측하기 어려운 경우 제외하곤 큰 차이 없습니다.(웹 서버와 같이 접속자가 몇명인지 모르고 자원을 할당해야할 경우)
딥러닝의 경우에는 애초에 메모리 소모량이 높을 경우가 더 많기 때문에 큰 차이는 안납니다.
저같은 경우도 연구목적으로 간단하게 돌리고 있지만 메모리를 11GB 쓰고 있을 때도 있는데 그 시점에서 1GB 메모리를 더 쓴다고 해서 큰 차이가 있을까요...?사실 큰 차이는 없습니다. 다만 성능상 하락은 존재합니다.(다만 기술 발전에 따라 그 격차는 줄어들고 있죠.)
               
totalrecall 03-26
네, 감사합니다^^ 다만 VMWare나 VBox는 OS 설치가 가끔 까다롭더라구요... 예를 들면 윈도우10에 Hyper-V 띄우고 우분투 18 ? 을 설치하려니까 설치가 안되는
경우가 있었습니다. 지금은 우분투 20을 설치해서 쓰고 있습니다만...
VBox도  윈도우10에서, 가상머신을 저장한 후에 다시 불러 오는데 못 불러 오는 경우도 있었구요
그래서 가상머신을 좀 불신하게 되더라구요....

말씀하신데로 참고해서 결정해 보겠습니다. 즐거운 하루 되시기를 바랍니다^^ 다음에 또 뵙겠습니다
                    
extra 03-26
만약에 가상화 쓰신다고 하면 VMWare Workstation 이나 Player가 아닌 VMWare EXSi 를 설치하셔야 합니다.
그래야 GPU 할당이 가능합니다.
댓글에 가상화 얘기하시다가 Hyper-V 와 VMWare 라고 썼지만 그 옆의 VBox가 제가 아는 Virtual Box 라고 생각들어 추후 문제가 생길까봐 말씀드립니다.
Host에서 일반적인 운영체제를 설치하고 그 위에 가상화기술이 들어가면 Host에서 사용되는 코스트가 존재하며, 또한 GPU 할당이 불가능합니다.
VMWare EXSi 나 Xen, XCP-ng와 같은 것들을 쓰셔야 합니다.
해당 제품들은 기본적인 수행을 위한 운영체제가 포함은 되지만 일반적인 운영체제라기보단 가상화 기술을 적용할 수 있도록한 특수한 운영체제로 보셔야 합니다. 그에 따라 기존 리눅스나 윈도우에 비해 기본적으로 요구되는 코스트도 적습니다.
                         
totalrecall 03-26
네, 도움 말씀 감사 드립니다^^ 많이 배웠습니다

그런데 죄송합니다만 한가지 질문 드리면요, VMWare EXSi 는 유료버전인지요? 유료라면 사용하기 어렵습니다^^;;
                         
extra 03-26
무료도 있고 유로도 존재하지만, 저도 정확히 라이센스를 아는게 아니여서 그 부분은 확답드리긴 어렵습니다.
다만 XCP-ng 같은 경우엔 무료입니다.

그리고 글이 수정되어있는데, 하나의 GPU로 동시에 패스스루는 어렵습니다. 그래서 현실적으로 한분이 딥러닝 작업 돌리면 두분은 딥러닝 작업 못합니다.
그래서 애초에 말씀드린게 하나의 서버로 온전히 쓰라고 한겁니다.
딥러닝 수행 결과로 나온 모델을 저장하고 그걸 사용하는 방식으로 쓰셔야할 것같습니다.
딥러닝 게시판에도 적어두셨지만 간단한 텍스트의 경우 메모리 소모량이 적지만, 이미지같은 경우엔 생각보다 크고, 상황에 따라 다르기 떄문에 메모리를 넉넉히(64GB 정도로) 잡아두시는게 좋습니다.
저같은 경우엔 이미지가 아닌 csv로 저장된 텍스트파일 기반으로 연구하지만, 성능 향상을 위해 SMOTE 기법을 적용하는데 평소엔 11GB 정도 쓰다가도 SMOTE 알고리즘이 수행되는 순간중 일부는 28GB 넘게 사용하기도 합니다.(물론 SMOTE 기법이 다 수행되면 다시 메모리 소모량이 적어져요.)
                         
dateno1 03-26
무료 라이센스 있고, 그걸 상업적으로 쓰는것도 허용은 되는걸로 기억합니다

다만 복수의 호스트를 VCSA로 관리하거나할때 무료 라이센스는 연동이 안 되는등 기능 제약이 있어요

SR-IOV 지원되는 하드웨어가 아니면 복수에 동시에 패스할 수 없습니다
totalrecall 03-26
가상화툴도 공부할 것이 많군요...^^ 저는 VMWare 윈도우 버전만 사용해 봤거근요
리눅스에서는 Docker만 써봤습니다
말씀하신데로 연구해서 가상화툴을 결정해 보겠습니다. 즐거운 하루 되십시오!! ^^
totalrecall 03-26
네, 소중한 말씀 감사 드립니다^^
24GB VRAM 이상은 워낙 가격이 비싸서 무리일 거 같구요...좀 걱정이네요..;;
저도 여기 저기 알아 보니 GPU 동시 사용이 안되는 거 같더라구요
사실 어떤 경우에는 그냥 RAM으로 딥러닝 돌리는 경우도 생길 거 같습니다. RAM 256이면 가능하겠죠...;;
     
extra 03-26
http://2cpu.co.kr/deep/2018
해당 글 댓글에 있는 agent 를 통해 딥러닝을 순차적으로 수행하는 방법도 존재는 합니다.
저도 그에 대해 아는 바가 없어 그 이상의 도움은 어려울 것 같네요.
          
totalrecall 03-26
네, ^^ 공부할 것이 많네요... 멀티 GPU를 리눅스 환경에서 세팅하는 것은 정말 어려운 일인 거 같습니다
우분투면 lxd를 쓰는 방법도 있을거 같긴한데...해본적이 없어서...
     
totalrecall 03-26
네! LXD도 알아 보겠습니다^^ 감사합니다. LXD 처음 듣네요...^^
epowergate 03-26
어차피 개발 시스템인데 그냥 Linux에 계정 1개씩 만들어주면 될텐데요
개발자가 개발하는데 ROOT 계정 필요하다고 하면 내보내는걸 검토하심이 어떨까 합니다
     
totalrecall 03-26
연구원들이 개발 환경 가상화를 해달라고 해서요.... 그래서 그렇습니다
찬이 03-26
목적이 다릅니다.
Docker는 대부분을 stateless하게 사용할 때 (OS시스템 변하지 않고 특정 디렉터리 정도만 변경 가능) 사용하고
가상화는 말 그대로 전체 시스템을 가상화하는 것입미다.

변경되지 않는 소프트웨어(웹서버 등)을 돌리는 것은 도커,
수시로 변화는 개발환경에는 가상화가 운영 측면에서 낫습니다.

개발 완료 후 딥러닝 소프트웨어를 운영 할 때에는 도커가 낫구요. (정확히는 도커 기반. 즉 K8s 등)
올리브 03-26
Dell로 구성하시면 서버가 놀고있는 시간에도 감가상각이....
다른 대안으로.. 클라우드 GPU 서버가 있습니다.
클라우드가 사용한 시간만큼만 돈내는거라서, 사용 안 할때 끄면 비용 절감이 좀 되요. (시간당 단가는 좀 높겠지만)
GPU가 더 필요하면, 원하는 만큼 늘려 사용하다가, 필요 없으면 줄일 수 도 있고요.

뭐랄까.. 자동차를 사느냐,  아니면 렌트나 택시 탈거냐,  그런 차이인데
클라우드 GPU는 택시 타는 것 같은 느낌이라 보시면 되요.
제온프로 03-28
Docker로 쓰셔야 될 것 같네요...
제온프로 03-28
잠깐씩 쓰는데는  클라우드가 좋습니다...

근데 2달 이상 쓰려면.. 서버값보다 더 나와버려요..  이게 약점.. 너무 비싸!
3명이서 사용하면.. 1달 되기도 전에 서버값 Over~~ 해 버릴것 같습니다.
dys184427 03-28
1122
포우 03-31
VMware Bitfusion 어떠세요.
Stuart 04-09
GPU 가상화 기술을 이용하여 GPU 코어를 나누어 쓰는 기술도 존재합니다.
http://tmmse.xyz/2016/02/16/gpu/




제목Page 1/104
2014-04   2867631   회원K
2015-12   15036   백메가
2018-08   26525   limitless
11:21   106   쪼커
04-06   296   발포비타민
04-05   432   코카콜라
04-02   497   totalrecall
03-26   1301   totalrecall
03-26   646   옥동잣
03-25   630   1회용
03-24   558   애니악
03-24   619   하양까망
03-22   856   famtory
03-19   901   mineroller
03-19   629   jack33
03-17   668   행복하세
03-16   755   저격
03-15   802   코카콜라
03-14   534   코카콜라
03-14   1164   MikroTik이진
03-12   668   유용재
03-12   635   코카콜라
03-10   792