1 기계학습 모형 배포 개요

기계학습 모형 배포는 서버 구축, 파이썬의 경우 flask 프레임워크(framework) 설치, 기계학습 모형개발, 개발된 기계학습 모형 배포 순으로 작업이 진행된다.

먼저 DigitalOcean 웹사이트에 가상 컴퓨터를 하나 생성시키고 나서, flask 프레임워크를 설치하고 개발된 머신러닝 모형을 pickle에 담아 배포한다.

ML 배포

2 flask 프레임워크 1 2

  1. virtualenv 명령어를 사용해서 flask프레임워크를 올릴 가상환경을 생성시키고 활성화한다.
    • $ virtualenv -p python3 flaskapp
    • $ source flaskapp/bin/activate
  2. flask 프레임워크 의존성을 설치한다.
    • pip install wheel
    • pip install flask
    • pip install uwsgi
    • pip freeze > requirements.txt
      • requirements.txt 파일에 연관된 라이브러리를 정리해 둔다.
  3. 앱개발 - 헬로월드
    • nano flaskapp.py 명령어로 웹앱을 작성한다.
  1. 앱실행
    • $ python flaskapp.py 명령어를 실행시키고, 웹브라우저 상단에 http://0.0.0.0:5000/을 넣게 되면 아주 간단하지만 큰 의미를 갖는 헬로월드 앱을 만들게 된 것이다.

헬로 flask

virtualenv 기본 명령어 3

virtualenv는 파이썬 내부에 작은 격리된 파이썬 개발환경을 구축하는 것으로 하이퍼바이저(hypervisor) 위에 가상 컴퓨터(Virtual Machine)를 만드는 것과 유사하다고 볼 수 있다.

  • virtualenv 설치
    • $ pip3 install virtualenv 명령어로 파이썬 가상환경 구축 도구를 설치한다.
  • 파이썬 가상환경 구축
    • $ python3.6 -m venv flaskapp
      • 파이썬 3.6 버젼으로 된 flaskapp 디렉토리에 파이썬 가상환경 구축
  • 파이썬 가상환경 활성화
    • $ source flaskapp/bin/activate
    • 명령 프롬프트가 가상환경 활성화로 변경
      • $(flaskapp)$
  • 파이썬 가상환경 빠져나오기
    • (flaskapp)$ deactivate 혹은 (flaskapp)$ source deactivate
    • 가상환경 명령 프롬프트가 일반 쉘 프롬프트로 변경
      • (flaskapp)$$

3 기계학습 모형 배포 4

기계학습 모형 배포는 기계학습 모형을 pickle에 담아 salary_model 객체를 salary_model.pkl에 담아 넣는 과정부터 시작된다. 이를 flask 프레임워크에서 불러 쓸 수 있도록 가져온다. pickle.load(open('model/salary_model.pkl','rb')) 명령어를 사용해서 서버에 올려서 예측모형의 경우 X 값을 받아 y를 반환시키는 것이라 Xrequest.py 파일에 POST 형식으로 받아 이를 예측모형에 넣어 연봉 예측값을 반환하게 된다.

연봉 데이터를 바탕으로 근무연한에 따라 연봉을 예측하는 회귀분석 모형을 개발한다. 회귀분석 모형을 model.py로 작성하고 예측모형을 담은 피클 파일을 model/salary_model.pkl 디렉토리에 피클 파일로 저장시켜둔다.

3.2 예측모형 서버

‘model/salary_model.pkl’ 파일을 불러와서 서버에 올린다. predict() 함수를 개발하여 근무연수(exp)를 넣게 되면 연봉을 예측해주도록 설정한다. 그리고, (flaskapp) xxxxx@MacBook:/flaskapp$ python server.py 명령어를 실행시켜 예측모형을 띄운다. 즉, 근무연수를 넣으면 연봉을 예측해 주는 인공지능 서비스를 올리게 된다.

3.3 예측모형 서비스 호출

마지막 단계로 예측모형 서비스를 사용하도록 클라이언트 request.py를 실행시켜 연봉예측 결과를 얻도록 실행한다.

url에 ’http://localhost:5000/api'을 지정하고 근무연수로 exp에 1.8을 전달하여 예상연봉을 산출해 낸다.

3.4 예측모형 서비스 호출: curl

request.py 파이썬 프로그램 내부에 requests 라이브러리 대신에 쉘에서 curl 명령어를 사용해서 POST 메쏘드로 “http://localhost:5000/api” URL에 근무연수 데이터를 JSON형태로 넘겨 테스트를 하는 것도 가능하다.