My Profile Photo

DongChanS's blog


수학과 학생의 개발일지


Studyjam 3) Lab 5 - Training on Cloud ML Engine

이제 Lab 4를 통해서 대용량의 데이터를 잘 가져왔다면,

대용량의 데이터를 처리를 할 수 있어야 합니다. 하지만, 로컬에 있는 우리 컴퓨터로는 한계가 있으므로, Cloud 자원을 이용해야하는데,

우리는 Cloud ML Engine을 이용해서 모델을 훈련시킬 것입니다!

1) Cloud ML Engine

일단, Cloud ML Engine에 대해서 알아보도록 합시다.

1-1. Packaged up the model code

Cloud ML 위에서 머신러닝 모델을 훈련시키기 위해서는 텐서플로우 코드를 패키지형태로 묶어서 올려놓아야합니다.

그래서 코드를 Python package형태로 만들어야 하는데, 일반적으로

텐서플로우 코드를 model.pytask.py로 나눌 것을 추천합니다.

1

  • model.py

    머신러닝 모델 코드들을 모아놓은 파일.

    파라미터들을 하드코딩하지않고, 변수화시킴.

  • task.py

    파라미터들을 제공(parse command-line arguments) + model.py를 실행하는 파일

1-2. Component of the models.py

2

  • train & evaluation 데이터를 관리하는 함수
  • Feature column을 지정하는 함수
  • Feature 전처리를 지원하는 함수
  • Serving input function : 모델을 web service에 배포하는 것을 편리하게 해주는 함수
  • train & evaluation을 시행하는 함수

1-3. Example of package

  • Package tree

    taxifare/
    taxifare/PKG-INFO
    taxifare/setup.cfg
    taxifare/setup.py
    taxifare/trainer/
    taxifare/trainer/
    taxifare/trainer/__init__.py
    taxifare/trainer/task.py
    taxifare/trainer/model.py
    

    기본적인 패키지 구조는 여기에서 참조하였습니다.

    • setup.cfg : metadata들이 들어있는 파일
    • setup.py
      • requirments for all python packages

    핵심은 task.py와 model.py입니다.

  • 파이썬 모듈의 형태로 코드 실행

    export PYTHONPATH=${PYTHONPATH}:/somedir/babyweight
    python -m trainer.task \
    	--train_data_paths="/somedir/datasets/*train*" \
    	--eval_data_paths="/somedir/datasets/*valid*" \
    	--output_dir="/somedir/output" \
    	--train_steps=100 --job-dir="/tmp"
    
    • -m : run library module as a script (terminates option list)

    • trainer.task

      task.py를 실행하면 그 안에서 command-argument들을 받고, model.py를 실행함.

      • argparse 라이브러리를 이용하여 파싱

2) Train and deploy with Cloud ML Engine

본격적으로 Cloud ML 엔진 위에서 모델을 훈련하고 배포해봅시다.

2-1. Use gcloud command

3

  • gcloud ml-engine local train

    일단 Cloud ML Engine을 이용하기 전에 로컬에서 small data와 함께 모델이 잘 작동하는지 확인해보는 용도

  • gcloud ml-engine jobs submit

    우리의 파이썬 코드를 모듈형태로 제공함.

  • --staging-bucket : 파이썬 모듈을 담을 버킷

  • --job-dir : 작업 log를 보여줄 장소

  • --scale-tier : 코드 실행 환경을 정해줌.

    ML Cloud Engine은 텐서플로우 코드를 여러 실행 환경(ex, CPU, GPU, TPU)에서 실행 할 수 있도록 정할 수 있는데요.

    scale-tier documentation에서 참고할 수 있습니다.

2-2. GCP web console에서 조회하기

4

Cloud ML 엔진을 이용하면,

GCP console(퀵랩 할때마다 나오는 그것)을 통해서 CPU와 메모리 사용 현황을 볼 수 있습니다.

물론 머신러닝 모델 performance를 보기 위해서는 Tensorboard를 사용하는것이 좋습니다.

comments powered by Disqus