모듈 5: 일괄 처리 채점 수행 및 레이크하우스에 예측 저장

이 모듈에서는 Microsoft Fabric MLflow 모델 레지스트리에서 학습되고 등록된 LightGBMRegressor 모델을 가져오고 레이크하우스에서 로드된 테스트 데이터 세트에서 일괄 예측을 수행하는 방법을 알아봅니다.

중요

Microsoft Fabric은 현재 미리 보기로 제공됩니다. 이 정보는 릴리스되기 전에 상당히 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보와 관련하여 명시적이거나 묵시적인 어떠한 보증도 하지 않습니다.

Notebook에서 팔로우

이 자습서의 각 단계에서 사용되는 python 명령/스크립트는 함께 제공되는 Notebook: 05-perform-batch-scoring-and-save-predictions-to-lakehouse.ipynb에서 찾을 수 있습니다. 실행하기 전에 레이크하우스를 Notebook에 연결 해야 합니다.

일괄 처리 채점 수행 및 예측 저장

  1. puYear=2016 및 puMonth=3에 대해 필터링된 nyctaxi_prep lakehouse 테이블에서 정리된 데이터의 임의 샘플을 읽습니다.

    SEED = 1234 # Random seed
    input_df = spark.read.format("delta").load("Tables/nyctaxi_prep")\
                .filter("puYear = 2016 AND puMonth = 3")\
                .sample(True, 0.01, seed=SEED) ## Sampling data to reduce execution time for this tutorial
    
  2. 필요한 pyspark.ml 및 synapse.ml 라이브러리를 가져오고 모듈 4: 기계 학습 모델 학습 및 등록의 마지막 단계에서 복사한 run_uri 사용하여 학습되고 등록된 LightGBMRegressor 모델을 로드합니다.

    import mlflow
    from pyspark.ml.feature import OneHotEncoder, VectorAssembler, StringIndexer
    from pyspark.ml import Pipeline
    from synapse.ml.core.platform import *
    from synapse.ml.lightgbm import LightGBMRegressor
    
    ## Define run_uri to fetch the model
    run_uri = "<enter the run_uri from module 04 here>"
    loaded_model = mlflow.spark.load_model(run_uri, dfs_tmpdir="Files/tmp/mlflow")
    
  3. 입력 데이터 프레임에서 모델 변환을 실행하여 예측을 생성하고 다음 명령을 사용하여 모델 학습을 위해 만든 불필요한 벡터 기능을 제거합니다.

    # Generate predictions by applying model transform on the input dataframe
    predictions = loaded_model.transform(input_df)
    cols_toremove = ['storeAndFwdFlagIdx', 'timeBinsIdx', 'vendorIDIdx', 'paymentTypeIdx', 'vendorIDEnc',
    'rateCodeIdEnc', 'paymentTypeEnc', 'weekDayEnc', 'pickupHourEnc', 'storeAndFwdFlagEnc', 'timeBinsEnc', 'features','weekDayNameIdx',
    'pickupHourIdx', 'rateCodeIdIdx', 'weekDayNameEnc']
    output_df = predictions.withColumnRenamed("prediction", "predictedtripDuration").drop(*cols_toremove) 
    
  4. 다운스트림 사용량 및 분석을 위해 레이크 하우스 델타 테이블 nyctaxi_pred 예측을 저장합니다.

    table_name = "nyctaxi_pred"
    output_df.write.mode("overwrite").format("delta").save(f"Tables/{table_name}")
    print(f"Output Predictions saved to delta table: {table_name}")
    
  5. %%sql 매직 명령을 사용하여 실행할 수 있는 SparkSQL 쿼리를 비롯한 다양한 방법으로 최종 예측 데이터를 미리 봅니다. 그러면 Notebook 엔진에 셀이 SparkSQL 스크립트임을 알 수 있습니다.

    %%sql
    SELECT * FROM nyctaxi_pred LIMIT 20
    

    예측 데이터 테이블의 스크린샷

  6. 예측이 포함된 nyctaxi_pred 델타 테이블은 활성 패브릭 작업 영역의 레이크하우스 항목으로 이동하여 레이크하우스 UI에서 볼 수도 있습니다.

    레이크하우스 UI에 표시된 델타 테이블의 스크린샷

다음 단계