구글 클라우드 플랫폼은 데이터 과학자에게 축복입니다. 머신 러닝 모델을 만들어 올리면 구글의 클라우드 머신 러닝 엔진(ML 엔진)이 알아서 척척 예측/추론 결과를 내놓습니다. 하드웨어 구매하고, 운영체제 설치하고, 머신 러닝 관련 도구와 프레임워크 설치하느라 시간 허비할 일이 없습니다. 모델 개발과 트레이닝에만 집중하면 돼요. 예측 결과는 ML 엔진이 툭툭 던져줍니다.
https://cloud.google.com/ml-engine/
구글 ML 엔진 관련해 새로운 소식이 있습니다. scikit-learn과 XGBoost 머신 러닝 라이브러리를 구글 ML 엔진이 지원한다는 내용입니다. 이 두 라이브러리를 이용해 만든 모델을 이제 구글 ML 엔진에 바로 올려 예측을 할 수 있게 되었습니다. 그 과정이 얼마나 간단한지 보시죠. 만든 모델을 ML 엔진에 올리는 단계는 다음과 같습니다. 너무 쉽네요.
1. 모델을 파일로 저장하기
2. 저장한 모델을 구글 클라우드 스토리지에 올리기
3. ML 엔진에서 모델 리소스 생성하기
4. 모델 버전 생성하기
5. ML 엔진의 온라인 예측 서비스 결과 확인하기
설정에 필요한 변수는 다음 정도입니다. 이 역시 간단합니다. 다음 내용에서 자신의 환경에 맞게 넣으면 됩니다.
$ PROJECT_ID=your-project-id $ MODEL_PATH=gs://models/census $ MODEL_NAME=census $ VERSION_NAME=v1 $ REGION=us-central1 $ INPUT_DATA_FILE=data.json
직접 해보시죠. 먼저 트레이닝을 마친 모델을 ML 엔진에서 사용할 수 있는 포맷으로 저장합니다. 만약 scikit-learn을 사용한다면 트레이닝을 마친 후 파일 끝에 다음 코드를 추가해 모델을 저장할 수 있습니다. 이때 scikit-learn에 포함된 joblib이 사용됩니다.
from sklearn import joblib joblib.dump(model, ‘model.joblib’)
XGboost를 쓴다면 save_model 메소드를 사용해 저장할 수도 있습니다. 모델을 저장할 때 다음 코드를 파일 끝에 추가하세요.
import xgboost as xgb bst.save_model('./model.bst')
다음에 할 일은 저장한 모델 파일을 구글 클라우드 스토리지에 올리는 것입니다. 이때 구글 클라우드 SDK인 gsutil을 사용하면 됩니다.
scikit-learn
gsutil cp ./model.joblib $MODEL_PATH/model.joblib
gsutil cp ./model.bst $MODEL_PATH/model.bst
파일을 올렸으면, 리소스 모델을 생성합니다. ML 엔진은 모델 버전 별로 리소스를 할당해 작업을 수행합니다. 간단히 설명하자면 ML 엔진은 여러분이 만든 머신 러닝 모델 각각의 버전을 위한 컨테이너를 생성한다고 보면 됩니다. 더 자세한 내용은 관련 문서를 참조 바랍니다. 먼저 모델 이름을 생성합니다.
gcloud ml-engine models create $MODEL_NAME --regions $REGION
다음은 모델에 대한 버전을 생성할 차례입니다. 이때 아래 내용을 지정해 줘야 합니다.
– name : 버전을 구분하기 위한 이름입니다.
– deploymentUri : 구글 클라우드 스토리지 위치입니다.
– runtimeVersion : ML 엔진 런타임 버전입니다.
– framework : scikit-learn와 XGboost 중 무엇을 쓰는지 지정합니다.
– pythonVersion : 파이썬 2.7이 디폴트 세팅인데요, 3.5를 쓴다면 값을 수정하면 됩니다.
curl
curl -X POST -H “Content-Type: application/json” \ -d '{"name": "‘$VERSION_NAME’", "deploymentUri": "’$MODEL_PATH/", "runtimeVersion": "1.4", "framework": "SCIKIT_LEARN", “pythonVersion”: “2.7”}' \ -H "Authorization: Bearer `gcloud auth print-access-token`" \ https://ml.googleapis.com/v1/projects/$PROJECT_ID/models/$MODEL_NAME/versions
이제 조금만 기다리면 되는데요, 모델 배포 상황이 궁금하면 다음과 같이 확인해 볼 수 있습니다.
gcloud ml-engine versions list --model $MODEL_NAME
gcloud
gcloud ml-engine predict --model $MODEL_NAME \ --version $VERSION_NAME \ --json-instances $INPUT_DATA_FIL
일반 소프트웨어 개발자가 서버리스 환경에서 인프라 걱정 없이 개발, 테스트, 배포를 하는 것과 크게 달라 보이지 않네요. 데이터 과학자, 인공 지능 전문가도 이제는 하드웨어 인프라 구성과 자원 프로비져닝을 신경 쓸 일이 없네요. 노트북에서 모델 만들어 트레이닝한 다음에 구글 클라우드에 올리면 예측/추론 작업이 척척 알아서 되네요. 클라우드 기반 머신 러닝이 궁금하다면, 메가존으로 문의 바랍니다.