데이터분석/Machine Learning

TPU 구글에서 사용

늘근이 2019. 6. 22. 10:45

https://console.cloud.google.com/storage/browser/

 

Google Cloud Platform

하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.

accounts.google.com

1.) 필요한 파일을 버켓에 올린다. 

2) Computing Machine 을 올린다.

3) 그리고 ssh를 틀어서 해당프로젝트를 들어가서, gsutil cp gs://XXX/train.csv train.csv

로 복사를 하면된다.

XLNET으로 한번 트레인을 해보고자 했는데, 일단 XLNET에서 공개한 github에서 https://github.com/zihangdai/xlnet

다운로드를 한 후, 여기서 실제로 kaggle toxic을 돌려보는데, 필요한건 run_classifier.py를 입맛대로 고쳐야한다. GLUE의 cola 가 제일 비슷하니 이 형태로 받게끔 DataProcessor를 상속받아 고치면된다. 그리고 고친 파일들과 미리 훈련시켜놓은 모델의 체크포인트 파일 ckpt을 잔뜩 받아다가 google GCP에 넣고 TPU의 힘을 빌려서 열심히 돌리면 된다.

문제는 에러가 너무 많이 터지기는 한다.

1. TPU상 그냥 자원때문에 Killed되는 경우가 생긴다. 배치를 그다지 높게 돌리지 않았는데도 터진다. BERT도 터진다. v3-8버전에서.

2.OOM도 잘 터진다. 메모리가 충분하지 않기 때문에 터진다.

3. 약 하루쯤 그냥 놔두면 크레딧이 100달러 정도 공중으로 사라진다. 

V3-8에서 한번도 성공한적이 없는데, 자꾸 에러가 터지거나 Killed되기 때문이다. bad software이라는 에러가 터지는 적도 있다. 로컬 기기는 rtc2060 6GB라 배치 16이상은 또 OOM이 터진다. 듀얼로 구성해야 할 필요가 보인다. BERT Fine-Tuning할때, 로컬에서는 batch size 8에 256seq 100개당  32초, batch size를 극단적으로 1로 하면 8초, 안타까운 속도다. 설날상여와 보너스를 다 그래픽카드에 때려박아야되는데 메인보드도 사야되고 그럴려면 파워도 사야되고 많이 사야한다. 돈을 벌어야 하는데 돈을 너무 조금준다. 밤낮으로 이런짓하는 사람에게는 그래도 떡이라도 주면 좋겠다.

 

처음 py를 부를때 여러 파라미터를 설정하는데, 체크포인트 파일 등은 모두 gs://로 시작해서 google bucket에다가 저장을 해야한다.

아래와 같은 에러는 다음과 같은 문제가 있다. output model등은 전부 gs://로 시작하여야 한다. 그리고 input으로 받는 체크포인트같은 경우도 전부 gs://로 시작하여야 하는 힘든 거시기가 있다.

InvalidArgumentError: Unimplemented: File system scheme '[local]' not implemented

 

세부정보

모든 입력 파일과 모델 디렉토리는 클라우드 스토리지 버킷 경로(gs://bucket-name/...)를 사용해야 하며 버킷은 TPU 서버에서 액세스할 수 있어야 합니다. 모든 데이터 처리 및 모델 체크포인트는 로컬 머신이 아닌 TPU 서버에서 수행됩니다. TPU에서 사용하기 위해 클라우드 스토리지를 적절하게 구성하는 방법은 클라우드 스토리지 버킷 연결 가이드를 참조하세요.