Jupyter 노트북으로 생성한 ML 알고리즘을 Python 코드로 변환하는 과정에 대해 설명합니다.
- 확장자가 ipyb인 jupyter notebook 파일을 아래 명령어를 이용하여 python 파일로 변환 합니다.
jupyter nbconvert xgboost-wine-quality.ipynb --to script --output step0-xgboost-wine-quality
xgboost-wine-quality.ipynb을 상기 명령어로 변환하면, step0-xgboost-wine-quality.py와 같이 python 파일로 변환할 수 있습니다.
- 불필요한 코드 정리
jupyter notebook에서 데이터의 구조를 이해하고, 도표를 작성할때 사용했던 코드들은 본격적인 학습에서는 사용되지 않습니다. 따라서, step1-xgboost-wine-quality.py와 같이 불필요한 코드를 삭제합니다.
- Python 함수로 리팩터링
함수로 변경하면 refactoring이 쉬워지고 유지 관리가 수월하여 지므로 step2-xgboost-wine-quality.py와 같이 함수로 변환합니다. 이때, main은 진입점(entry point)이므로 실행중인지 여부를 확인하여 아래처럼 사용합니다.
if __name__ == '__main__':
main()
- Inference
xgboost-wine-quality-inference.ipynb을 참조하여 추론(inference)를 위한 python 코드를 생성합니다. 추론을 위해서는 학습시 저장한 모델을 부르고, RESTful API 특성에 맞춰서 event를 처리할 수 있어야 합니다. inference.py은 학습한 모델을 로드하고, event를 parsing하여 predict()에서 사용할 수 있는 포맷으로 변환한 다음에 추론을 수행하고, 결과를 리턴값으로 전달하는 것을 보여줍니다.
추론 동작을 확인하기 위해 inference-test.py에서는 samples.json을 로드하여, RESTful API에서 사용하는 event의 형태를 만든후에, inference.py의 handler()을 통해 추론 동작을 수행합니다. 따라서, 실제 인프라를 구축하여 추론 API를 생성하기 전에 inference.py의 동작을 검증할 수 있습니다.