MLflow로 전처리, 기계 학습, 예측 API, 편하게 ML 라이프 사이클 관리

MLflow에서 실험 매개변수, 메트릭 및 학습된 모델의 기록에 대한 정보는 풍부하지만, 전처리와 학습 및 예측을 일련의 처리로 파이프라인화하는 이해하기 쉬운 샘플을 찾을 수 없었습니다. 그래서 만들어 보았습니다.

따라서이 샘플은 전처리 및 학습 및 예측의 파이프 라인화에 중점을 둡니다.
또한 MLflow에서 쉽게 예측 서비스(REST)를 시작할 수 있는 것에 대해서도 조금 살펴보겠습니다.

소스 코드는 이쪽
htps : // 기주 b. 코 m/ゔぉ 치콘 g/h2오_mlfぉw

개요


  • 데이터: 타이타닉호 승객의 생존

  • Pandas에서 전처리

  • H2O AutoML 에서 기계 학습

  • MLflow custom model에서 전처리와 학습 및 예측 연결

  • MLflow models serve 에서 예측 REST 서비스

  • 개발 환경 준비



    Conda에서 환경 만들기
    conda env update -f conda-dev.yml
    conda env update -f h2o/conda.yaml
    
    conda activate h2o_mlflow
    python --version # Python 3.8.5 など
    java -version # openjdk version "1.8.0_152-release" など
    

    코드


    main.py에 코드가 모두 들어 있습니다.
  • Preproc : 데이터 전처리 클래스
  • Age, Fare의 Min-Max 스케일링
  • Pandas DataFrame에서 H2OFrame으로 변환

  • Learner: 기계 학습 클래스
  • Predictor: 예측 전용 클래스

  • 전처리, 기계 학습, 테스트 예측 실행
    mlflow run h2o
    

    예측 API 서비스 시작


    mlflow run 명령이 몇 분 안에 끝나면 예측 API 시작 명령 예제가 출력되므로 복사하여 사용할 수 있습니다. 기본적으로 5000번 포트가 사용됩니다.
    MODEL=/var/folders/j5/1fzcsqzd2_j1s3_5d3qm447h0000gn/T/tmpu_840dh5/main.model
    
    mlflow models serve -m $MODEL
    

    예측 API용 Docker 이미지



    쉽게 만들 수 있습니다.
    mlflow models build-docker -m $MODEL
    

    예측 API 테스트


    pytest h2o/test_api.py
    

    동일한 테스트 데이터에 대해 API를 사용하여 예측하는 경우,main.py에서 모델을 직접로드하고 예측하는 경우를 비교하고,
    동일한 예측 결과가 되는지 확인

    참고) API의 JSON 형식



    요청
    { "columns": [ "x1", "x2", "x3" ],
      "data": [
                   [ 3,    2,    5 ],
                   [ 1,    4,    8 ] ] }
    

    Response(분류 문제)
    [ { "predict": 0, "p0": 0.7, "p1": 0.3 },
      { "predict": 1, "p0": 0.6, "p1": 0.4 } ]
    

    좋은 웹페이지 즐겨찾기