brunch

You can make anything
by writing

C.S.Lewis

by 무명 May 27. 2019

근황 : 카드를 녹여서 하는 머신러닝

카드 살살 녹는다~



머신러닝 작업에 진척이 있으면 정리하는 겸 근황 글을 쓰려고 했는데(5월 초 마음먹었건만) 이제야 글을 씀. 몸이 계속 안 좋아서 보름 넘게 매일같이 여기저기 병원 다녔는데 머신러닝 때문에 맴까지 아팠음. 이하 적고 공유할 내용은 머신러닝 삽질기임.



0. 목표 : 미디어아트 작업을 위한 custom object detection 모델 개발


어쩌다 땜빵?으로 2019 ACC 상반기 레지던시가 되어서.. 6월 중순까지 작업을 해야 함... 인스타 크롤러로 모델에 태울 이미지(미디어아트 작업 비주얼에도 쓰일)를 크롤링함. 일단 10만 건, EC2에 크롤러 세팅해서 긁음. chrome driver 세팅이 좀 이상해서 삽질 좀 했음. 결국 지우고 다시 까는 게 해결책이었음(신기) 



1. AWS 100$


EC2 요금임; S3도 썼는데 50TB까진 0.025$라서 문제가 없음. 크롤링 돌리는 것도 좋은 스펙으로 잠깐 돌려서 몇 달러 안 나왔음. 문제는 여러 object detection 모델을 로컬에서 돌려보다가 터지는 경우가 발생, 확인해보고 싶은 무거운 모델이었는데 메모리를 너무 많이 먹는 것. 메모리 40G가 넘는 로컬머신에서도 터져서.. 이걸 돌려보겠다고 AWS SageMaker를 씀, 이것도 결국 커스터마이징 된 EC2 인스턴스를 만들어주는 거임, jupyter도 세팅되어있고 여러 모델들을 불러올 수 있어서 좋긴 함. 근데 좋은 스펙의 인스턴스를 Seoul region에서 돌려보려면 따로 리밋 풀어달라고 요청 보내서 기다려야 했음. 100G짜리로 돌려봤는데 너무 오래 걸려서 중간에 끔. (물론 다른 모델 튜닝해서 로컬에서 돌림.. 근데 그건 일주일 넘었는데 아직도 안 끝나고 있음..) 여하튼 그래서 100$가 나옴... 물론 AWS Rekognition 같은 서비스도 있음. 근데 boxing coordinate까지 제공은 안 해서 살펴만 봤음.



2. GCP 200$ + (200$+@) + 300$


GCP automl vision에는 boxing도 제공하고 직접 이미지를 넣어서 모델 커스터마이징도 가능했음. 좌표값 제공하는 거랑 안 하는 거랑 왜 UI를 구분해놨는지는 잘 모르겠음. 잘 확인하고 모델 세팅해야 함. gcp storage에 업로드하는 것도 너무 오래 걸림. 물론 UXUI는 AWS보다 훨 나음. 속편함. 물론 학습, 테스트, 트레이닝 데이터 라벨링 해주고 세팅해주는 건 좀 짜증남. 문서나 UI번역이 뭐 같아서 차라리 영문으로 보는 게 나음; 이거 요구 포맷에 맞춰서 데이터 세팅용 스크립트 짜는데 좀 걸림. storage에 이미지 다 올려놓고 그거 불러서 쓰게끔 세팅하는데 왜 자꾸 유실되는 이미지랑 라벨이 생기는지 모르겠음; 그것도 같은 스크립트로 불러올 때마다 결과가 다름; 여하튼 모델 학습 돌리는데 한 3일 걸림. 학습 완료되니까 바로 200$ 카드에서 빠져나감 ^^;; gcp 금액 청구 미니멈이 200$였던 거 같음. 문제는 다른 세팅으로 모델 하나 더 돌려놨는데 이거 학습시켜놓으면 취소가 안됨 ㅎㅎ... 양아치네 구글. 200$ 더 나가게 생겼음. 그리고 이걸로 api도 만들어주는데 이미지 천장은 무료, 그 이후부턴 천장당 3$씩임 ^^! 10만 장 태워보려고 했으니 300$는 더 나가겠음. 카드 살살 녹는다~ 



3. 결론? 

머신러닝 계속할 거고 실험정신? 이 투철하면 그냥 좋은 머신 하나 맞추는 게 여러모로 이익. 돈 정말 많으면 AWS나 GCP 쓰면 된다. 편하긴 하다 돈걱정 없으면. 스토리지 서비스들은 두 진영 모두 혜자 같음. 문서는 AWS가 더 개떡 같음. 이상한 한글 번역, 차라리 영문으로 보는 게 나음. 둘 다 잘 안 쓰는 서비스는 문서 번역 안되어있음. 영어로 보는 게 더 나음. 오히려 삽질 덜함. gcp에서 에러 메시지가 잘못 번역이 되어있어서 삽질한 거 생각하면 미소가 지어짐. 


* 그리고 gcp에서 csv로 학습을 위한 데이터 불러올 때(데이터 셋 만들 때) 조심해야 할 게 있음. 이게 덮어쓰기, 갱신이 잘 안 되는 것 같음. 가령 없는 라벨만 추가된다거나.. 하는 경우가 종종 보여서 갱신된 csv를 사용하려면 그냥 새 데이터셋 이름을 지정해 진행하는 게 삽질을 줄이는 방법인 듯. 



매거진의 이전글 loss/activation function
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari