성윤님의 블로그에서 Machine Learning의 Feature Store란? 글을 보고서 hopsworks
라는 제품에 관심을 갖게 되었다.
과연 어떤 기능을 갖고 있는 것일까? 내가 생각하는 것 처럼 데이터 버저닝부터 모델링 버전까지 모두 관리해주는 좋은 ‘실험실’을 구축해줄 수 있는 것일까? 라는 호기심에 설치를 시도해보었다.
로컬 기기(Ubuntu/Debian)에 설치하기
마침 집에서 돌리고 있는 딥러닝용 데스크탑이 있어 거기에 올려보면 어떨까? 하는 마음에 해당 기기에 설치를 진행했다. (공식 문서에서는 Ubuntu 18.04 LTS에서 테스트를 진행했다고 한다.)
설치는 무척 쉽다. 링크에 있는 simplesetup.sh
파일을 받은 뒤 실행하면 된다.
1 | wget https://hopsworks.readthedocs.io/en/latest/_downloads/e150a261128e5d4a0c804611e116503c/simplesetup.sh |
한가지 유의할 점은 공식 docs에서는 sh파일만 실행하면 된다고 하지만 실제로는 --install-deps
옵션을 꼭 붙혀줘야 apt-get
을 이용한 의존성 패키지를 제대로 설치해준다.
에러 “Vagrant: * Unknown configuration section ‘disksize’”를 만나다
신나게 VirtualBox와 Vagrant등을 설치하고 Github에서 여러 스토리보드 레포를 다운받으며 무언가 만드는 것을 진행하지만, 그러던 중 문제가 발생하는 것을 볼 수 있다.
바로 Vagrant의 Unknown configuration section 'disksize'
에러.
해당 에러를 어디서 해결해야하나, 하고 구글링을 한 결과, StackOverflow의 글(링크)에서 해답을 찾았다.
아래 명령어를 로컬 터미널에 입력해 vagrant-disksize
패키지를 설치해주면 문제가 해결된다.
(Host os 터미널에서 실행하면 된다.)
1 | vagrant plugin install vagrant-disksize |
하지만…
놀랍게도 1시간 10분이나 걸린 작업이 Fail로 끝이 났다.
한편, 해당 이슈는 TimeOut으로 보여 다시 실행을 하니 정상적으로 실행되는 것을 볼 수 있었다.
매번 Chef에서 새로운 업데이트가 있는지 github에서 fetch를 진행한 뒤 추가 작업을 진행하다 보니 더 느려지는 경향이 있는 듯 했다.
또한, 위 공식 문서 “Single Machine Installation”에서는 VirtualBox를 이용해 VM을 띄워 각각을 Driver / Worker처럼 제공하다 보니 시스템 자원을 오히려 많이 잡아먹어서 ‘유용하지는 않은데…’ 하는 생각이 들었다.
실제 사용을 해보다 on AWS
한편, 해당 설치과정에서 “1시간 넘게 걸리니 기다리세요~” 하는 말이 있어서 위 에러가 났음에도 에러가 원인이라고 생각하지 않고서 (멍청하게) 마냥 기다리던 중, 링크에서 Amazon AWS에는 사전 설정된 AMI(디스크 이미지)를 지원해준다는 것을 보고서 해당 이미지로 먼저 시도해보기로 했다.
공식 문서에 설명대로 Hopsworks
최신 버전의 AMI를 선택해 EC2 인스턴스를 띄워보았다.
다만, 현재 해당 이미지는 London리전과 Ohio리전에만 지원을 해, 테스트 할 때는 Ohio 리전에서 테스트를 해 보았다.
보다 저렴한 가격에 테스트를 해보기 위해 아래와 같이 스팟 요청으로 t3.xlarge
인스턴스를 띄웠다.
HopsWorks에서는 원활한 서비스 자원 이용을 위해서는 최소 16GB가 넘는 메모리를 가진 인스턴스를 사용하도록 권장한다.
또한 해당 인스턴스의 보안그룹에서 22번 포트(ssh)와 443 포트(https)는 기본적으로 열려있어야 이용이 가능하다.
띄워보기
인스턴스를 잘 띄우고 SSH로 해당 인스턴스에 접속을 한 뒤, 아래 스크립트 실행을 통해 서버를 띄워야 한다.
1 | ./start-services.sh |
위 파일은 ubuntu
유저의 홈 디렉토리에 곧바로 저장되어있고, 해당 파일을 실행하면 다음과 같이 email주소를 요청한 뒤 입력을 하면 아래 스크린샷처럼 IP부터 시작해 여러 세부 서비스들을 한번에 모두 띄워준다.
모두 끝나면 https://<public_ip>/hopswork
주소에 접속하면 된다. 아래의 username와 pw를 이용해 로그인할 수 있다.
NOTE:
http
가 아닌https
로만 동작한다.
- username : admin@hopsworks.ai
- password : admin
살펴보기
실제로 서버를 띄운 뒤 로그인을 진행하고 샘플 프로젝트에 들어가보니 다음과 같이 Jupyter Lab을 이용할 수 있었다.
아래 스크린샷 우측의 ‘Open Jupyter in a new Tab’ 기능으로 JupyterLab에 곧장 접근이 가능했다.
최근 자주 사용하는 라이브러리인 PyTorch를 비롯해 Pandas, sklearn등 데이터 분석을 위해 자주 쓰이는 패키지들이 이미 설치되어있었다.
또한 딥러닝 패키지들과 함께 PySpark 세션을 통해 Worker Node에 딥러닝 학습 및 실험을 버저닝과 함께 맡길 수도 있었다.
한편, 테스트를 진행하다 아래와 같은 질문이 들었다.
위 서버를 띄운 것은 t3.xlarge
로 CPU서버이고, CPU 서버에서는 당연히 CUDA가 지원되지는 않는다.(애초에 그래픽카드가 없으니까!)
“그렇다면 GPU 인스턴스에서는 곧바로 GPU를 사용할 수 있을까?”
GPU 인스턴스에서 CUDA가속이 바로 되는지 확인하기
결과부터 말하면, NO.
GPU인스턴스인 g3s.xlarge
와 p2.xlarge
를 이용해보았지만 둘 다 torch.cuda.is_available()
명령어에 False
를 반환했다.
그 외에도 당장 AMI에서 nvidia-smi
를 입력했을 때, 설치조차 되어있지 않았다는 것을 알 수 있었다.
GPU 사용 공식 Docs 링크 에서는 GPU Layer Interface를 설치해야 한다고 한다.
한편, apt로 maven을 설치하고 아래 명령어들을 따라 실행했지만 실제로 GPU를 전달하고 있는지는 확인할 수 없었다. (추가적 연구가 필요할 듯 하다.)
1 | sudo apt install -y maven |
다시 HopsWorks 세션에 들어가 PyTorch에서 Cuda 가속이 되는지 확인해보았지만, 되지 않았다.
추가적으로 확인해 보기 위해 Nvidia Driver를 설치해 보았다. (nvidia-smi
명령어를 사용해보기 위해)
1 | wget http://kr.download.nvidia.com/tesla/418.116.00/NVIDIA-Linux-x86_64-418.116.00.run |
nvidia-smi
명령어도 잘 먹히고 cuda도 잘 잡혔지만, 여전히 HopsWorks 설정에서는 잘 나타나지 않았다. ㅠㅠ
총평
뭔가 기능이 많고 ‘잘 만든’ 느낌이 강하긴 하지만, 설치에 대한 문서화가 아쉬운 상태다.
“Data Scientist들, 환경에 대해 걱정하지 말고 개발해!” 라는 철학이 드러나기는 하지만 세팅을 누군가가 빡세게 해줘야 한다는 점은 분명해보였다.
사실은 GPU 가속만 잘 되면 좋을 것 같은데, 해당 부분이 안되어서 어떻게 해야할지 방법을 찾아보는 중이다. 공식 소개 영상에서는 Cluster에 있는 GPU 자원도 워크스페이스별로 N개를 할당해 사용할 수 있도록 제공하고 있어 이게 가능하다면 보다 편리한 병렬 실험이 가능해보이기는 하다.