• 깨닳음의 시간..ml engine api를 다시보자

    2017. 9. 12. 00:37

    by. 위지원



    자 초심으로 돌아가서 생각해보자..ml engine을 쓰는 이유를 ... 이 포스팅 할 나는 분명 엠엘엔진으로 텐써코드를 돌릴 수 있다는것을 알았다.

    근데 왜 또 서빙을 하려했는가? 이렇게 갑자기 회의를 하다가 깨닳음을 얻고 초심으로 돌아가서 오늘 밤에는 엠엘엔진으로 모델을 생성하기로 마음먹었다.   공식사이트에 가서 다시 글을 보았다. 처음 봤을때 온통 무슨말인지 하나도 몰랐었는데 다시보니 이제 좀 많이 알 것 같다.




    1.로컬에서 코드를 테스트한다.


    방법은 아래와 같다. 붉은색은 필수


    gcloud ml-engine local train \
       
    --module-name trainer.task \
       
    --package-path trainer/ \
       
    -- \
       
    --train-files $TRAIN_DATA \
       
    --eval-files $EVAL_DATA \
       
    --train-steps 1000 \
       
    --job-dir $MODEL_DIR \
       
    --eval-steps 100


    -module-name 은 실제로 텐서플로코드의 이름이고 그래서 '코드가 위치한 폴더.파일이름' 이렇게 지정

    -package-path는 위에서 말한 코드가 위치한 폴더

    -그다음에 있는  \ 는 안해주면 train-files 명령어를 인식하질 못한다 왜그런진모루겟지만..코드상에서 그렇게 파싱하게 했나보다

    -그다음 값들은 직관적으로..알수 있다.. job_dir은 트레이닝 하는 중에 저장해야될 결과물을 저장하는 폴더를 지정해주면 된다.



    2.테스트가 완료되었으면 클라우드에서 실행한다.


    방법은 아래와 같다.  붉은색은 필수 


    gcloud ml-engine jobs submit training $JOB_NAME \
    --job-dir $OUTPUT_PATH \
    --runtime-version 1.2 \
    --module-name trainer.task \

    --package-path trainer/ \
    --region $REGION \
    -- \
    --train-files $TRAIN_DATA \
    --eval-files $EVAL_DATA \
    --train-steps 1000 \
    --verbosity DEBUG


    다 같은 내용이다. 

    -jobname은 아무렇게나 지정해주면 된다. 말그대로 작업이름이다.

    -region은 지역이다. 지역에 따라 가격이다르다고한다.


    이제 클라우드에서 트레이닝을 할때는 버킷에서 데이터를 참조해야한다.


    gsutil cp 로컬데이터 gs://$BUCKET_NAME/data/데이터.json


    와 같은 방식으로 명령어를 입력하면 로컬데이터를 클라우드에 업로드하여 사용할 수 있다. (그냥 ui에서 끌어다가 넣어도 들어간다)



    3. 이렇게해서 모든 작업이 완료되면 버전을 생성한다.


    gcloud ml-engine versions create v1 \
    --model $MODEL_NAME \
    --origin $MODEL_BINARIES \
    --runtime-version 1.2


    bodel_binaries는 아래와 같다.


    Find a directory named $OUTPUT_PATH/export/Servo/<timestamp> and copy this directory path (without the : at the end) and set the environment variable MODEL_BINARIES to its value. For example:

    MODEL_BINARIES=gs://$BUCKET_NAME/census_dist_1/export/Servo/1487877383942/

    말그대로 서빙된 모델을 입력하는것같다.  (내가 로컬에서 한것과 비유하자면 pb와 variable있는 폴더를 설정해주는거겠지)



    4.예측을 시행해본다.


    방법은 아래와같다.

    gcloud ml-engine predict \
    --model $MODEL_NAME \
    --version v1 \
    --json-instances \
    ../test.json


    이렇게 다시한번 공식문서를 보니 이제는 좀 이해가 된다. 


    '2017년 > machine learning' 카테고리의 다른 글

    머신러닝 기초  (0) 2017.10.31
    텐서플로우의 행렬 ,shape에 대해/.  (0) 2017.09.18
    ml엔진 공부  (0) 2017.09.11
    텐서플로우 서빙에 대해  (0) 2017.09.05
    텐서플로우의 그래프,세션,자료형  (0) 2017.09.02

    대화의 장 💬