딥러닝 프로젝트 100% 재현을 위한 Git-LFS와 Gitlab

부제: GitHub의 1GB 한계를 넘어 개인 Gitlab서버로 LFS 마음껏 쓰기

들어가며

딥러닝 프로젝트를 하다보면 종종 마주치는 문제가 있다.

“어라? 이거 파일 어디다 뒀더라? (있긴 있는데 어딨는지 모르겠네)”

“ipynb파일은 있는데 weight 파일이 없어… (다른 서버에 있나?)”

“아 이거 코드 copy 하고 나서 수정할걸 ㅠㅠ”

ML/DL 프로젝트가 아니라 파이썬, js등으로 하던 웹 개발 프로젝트에서는 전혀 느껴보지 못했던 이슈였다. (사실 프로젝트의 시작이 git init 이었으니, 무슨 말이 더 필요할까.)

하지만 데이터 분석에서는 ‘일단 결과를 보는게 중요해~’ 라는 악마의 속삭임에 넘어가는 경우가 종종 있다. ‘이거만 수정하면 될 것 같은데…’ 물론, 당연히 수정하고 나면 높은 확률로 망한다.

Colab에서 PyTorch 모델 TPU로 학습하기

딥러닝 모델을 학습시키다 보면 항상 vram의 압박에 시달리게 된다. 특히 최근 막대한 크기의 모델들이 등장해 이런 압박은 더 심해지기도 한다.

한편, 일반 사용자용 그래픽 카드 중 최상위인 Nvidia 2080ti조차도 vram이 겨우 11GB밖에 되지 않아 거대한 모델을 Fine-tuning 하는 것조차 굉장히 작은 배치사이즈로 학습시켜야 한다.

Google Colab에서 제공하는 TPU는 tpu v3-8 모델로 총 128GB의 메모리를 가지고 있어, 상대적으로 큰 모델과 배치사이즈를 이용해 학습할 수 있다. (tpu v3 하나는 16GB의 HBM 메모리를 가지고 있고, tpu v3-8은 8개의 코어로 총 128GB의 메모리를 가진다.)

PyTorch에서는 Pytorch/XLA 프로젝트를 통해 PyTorch에서도 TPU를 통한 학습을 할 수 있도록 컴파일러를 제공하고 있고, colab에 해당 패키지를 설치하면 TPU를 곧바로 사용할 수 있다.

NOTE: 이번 글은 아래 공식 튜토리얼의 내용을 따라갑니다.

공식 Tutorial: PyTorch on Cloud TPUs: Single Core Training AlexNet on Fashion MNIST

(단 내용의 100%를 담는 대신, 기존 PyTorch와 동일한 부분은 제외함)

AWS SSM로 VPN없이 Private 자원 접근하기

AWS EC2 혹은 RDS를 사용할때 가장 편리한 방법은 EIP를 부여받아 고정 IP를 할당한 뒤 직접 SSH등으로 접속해 제어하는 방법이다. 하지만 이러한 방법은 보안상 취약하기 때문에 DB등 중요한 데이터가 들어있는 자원은 외부 IP를 부여하지 않고 사용하게 된다.

하지만 이렇게 될 경우, “VPC 내부에서만 액세스 가능하다”는 문제가 생긴다. 즉, AWS의 같은 VPC, 같은 내부 IP를 받은 자원에서만 접근이 가능하다는 점이다.

공개 ip가 부여되지 않기 때문에 인터넷에서 직접적으로 요청을 받는 것이 불가능하다.

이를 해결하기 위해서는..

  1. ❌ AWS에 VPN 서버를 세팅하고 VPN에 연결해 작업한다.
    👉 VPN 서버를 따로 관리해야하는 어려움이 있다.

  2. ❌ AWS Client VPN 서비스(AWS Managed)를 사용한다.
    👉 요금이 비싸다. (최소 월 $70+)

  3. 🤩 AWS SSM + Bastion EC2 + SSH 터널링을 이용한다.
    👉 이번 글에서 다루는 내용! EC2 비용 하나로 서버 세팅 없이 간단히 접속하기

이번 글에서는 3번 방법을 이용해 SSM으로 SSH를 대체하고, SSM 연결을 SSH 세션처럼 이용해 SSH 터널링을 이용해 내부 RDS에 접근하는 과정을 다뤄본다.

데이터 분석 파이프라인 풀세트, HopsWorks 설치기

성윤님의 블로그에서 Machine Learning의 Feature Store란? 글을 보고서 hopsworks 라는 제품에 관심을 갖게 되었다.

과연 어떤 기능을 갖고 있는 것일까? 내가 생각하는 것 처럼 데이터 버저닝부터 모델링 버전까지 모두 관리해주는 좋은 ‘실험실’을 구축해줄 수 있는 것일까? 라는 호기심에 설치를 시도해보었다.

Pandas에서 Parquet 사용하기 with Snappy/Gzip

Pandas나 PySpark등을 사용하다보면 *.csv 포맷으로는 만족하지 못하는 경우가 많다.

예를들어..

  • Data Type이 저장되지 않는다.

  • 너무 많은 데이터는 저장해도 CSV의 이점(엑셀로 열어볼 수 있다)을 살리지 못한다.

  • 특정 Column만 선택하는 것이 불가능하다. (= 전체 파일을 항상 모두 열어야 한다)

  • 용량이 상대적으로 작지만 크다 (압축을 하지 않은 경우)

  • (종종) Escaping이 잘 되지 않은 경우에는 파일 Parsing이 깨진다.

  • 한글이 들어간 csv의 경우 “MS Excel”에서는 BOM이 없으면 UTF-8을 제대로 인식하지 못한다. (한편, euc-kr 인코딩은 잘 읽는다.)

등등.. 여러가지 이슈가 있다.

그렇다면, 어떤 형식을 써야 할까?

한국어 NLP와 딥러닝을 위한 도커이미지 만들기

딥러닝 + 도커?

딥러닝 프로젝트를 진행할 때 귀찮은 것 중 하나는 여러 라이브러리를 관리하고 어떤 버전을 설치했는지를 매번 체크하는 것이다.

Tensorflow나 PyTorch의 경우 매 시즌별로 버전 업데이트가 이뤄지며 동시에 api가 이전 버전과 달라져 어떤 것을 사용해야 하는지 선택이 곤란해지는 때가 있다.

CustoMac 설치 분투기

기본적으로 커스텀맥(해킨토시) 설치는 큰 어려움이 따른다.

그런데, 이번에 설치한 OS X El Capitan은 기본적인 설정만으로도 상당히 쉽게 설치되었기 때문에(그래도 약간의 설정은 필요하다) 매우 놀랐다.

설치 PC사양은 다음과 같다.

CPU: I5-4670 (Haswell, 하스웰)
RAM: DDR3 8Gx2 (<span id="grpDescrip_">G.SKILL Ripjaws X Series 16GB (2 x 8GB)</span>)
M/B: ASRock ASRock H87 Performance 에즈윈
HDD: WD Blue 1TB (8MB cache / 2.5")
VGA: AMD HD7970 3G (HIS 라데온 HD 7970 기가에디션 OC D5 3GB IceQ X² 잘만테크)

설치를 시도한 OS는 OS X 10.11.6 (El Capitan)버전이었고, 설치 디스크 제작은 순정 맥을 이용해 제작했다.

설치에 사용한 Kext와 여러 프로그램들은 아래 드롭박스 링크에서 받을 수 있다. PW:installosx

[ 다운로드 ]

[설치 과정]

가장 먼저 해야 하는 것은 바로 순정 설치 디스크를 제작하는 것이다.

순정 El Capitan을 받기 위해 맥의 AppStore에서 El Capitan을 다운로드 하면 LaunchPad에 저장된다.

저장이 완료되면 설치 창이 뜨는데, 간단히 무시하고 TonyMac의 Unibeast를 통해 GUI로 부팅 디스크를 만든다.

El Capitan / UEFI만 선택하면 부팅 디스크를 아주 깔끔하게 만들어준다.

부팅 및 설치는 전면 USB3.0단자를 이용해 이루어졌다.(혹자는 usb2.0으로 진행하라고 했지만, 큰 문제 없이 진행되었다.)

USB에는 여러 프로그램(MultiBeast / Clover / CloverConfigurator / 기타 kexts/Scripts)을 담아두면 OS X 설치 이후에 좀더 편안하게 설치 마무리를 진행할 수 있다.

위쪽에 올려둔 드롭박스 링크의 압축파일에는

  • Clover Configuator : EFI 파티션 자동인식 및 마운트 기능 / config.plist 수정기능 제공 / Clover 자동 확인 및 업데이트 제공

  • Clover : 클로버 부트로더. OS X으로 부팅 가능하게 만들어준다.

  • MultiBeast : OS X의 각종 드라이버(kext파일들)를 EFI파티션에 잡아준다. 이번설치에서는 굳이 쓰지 않아도 성공적으로 설치됨.

  • Kext파일들 : 위 HW에 필요했던 기본적인 kext들. EFI파티션의 KEXTS폴더에 10.11버전 폴더에 넣어주면 된다.

  • MenuMeters : OS X 설치 후 시스템 상태를 메뉴바에서 그래픽으로 볼 수 있게 지원. OS X설치후 항상 쓰는 프로그램이라 넣었을 뿐, 운영체제 설치 자체와는 관련이 전혀 없다.

  • AudioCloverHDMI : OS X에서 기본적으로 지원하지 않는 HDMI 오디오 출력을 가능하게 만들어준다. 스크립트형.

이렇게 구성되어있다.

+alpha:

이번에 사용한 메인보드가 ASRock보드인데, 부트로더가 efi파일을 잡지 않아 버그가 난 경우가 있었다.

https://www.x86.co.kr:447/qa/1274453

클로버를 저렇게 설치해주면 된다.

Ubuntu14.04에 OhMyZsh 설치

이 글은 root 계정에서 작업되었습니다.

VPS등으로 SSH접속을 할 때 bash가 아닌 zsh+OhMyZsh조합을 이용하면 좀 더 편한 관리가 가능하다.

VPS에 접속 한 후 가장 먼저 해야 하는 작업, apt 패키지를 최신 상태로 업데이트+업그레이드 하기.

apt update && upgrade

스크린샷 2016-07-22 17.06.59

OhMyZsh 설치에는 git이 사용된다. zsh와 git을 설치해 주자.

apt install zsh git

스크린샷 2016-07-22 17.07.16

Zsh을 좀 더 예쁘게 사용하기 위한 방법, Oh My Zsh. (http://ohmyz.sh)

스크린샷 2016-07-22 17.09.53.png

curl을 이용해서 받기 원한다면

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

wget을 이용해 받기 원한다면

sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

본 포스트에서는 curl을 이용한다.스크린샷 2016-07-22 17.17.35.png

설치가 완료되면 아래와 같이 zsh로 연결된다.스크린샷 2016-07-22 17.18.22.png

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×