[Python] How to read in a model file saved using mlflow in the scoring script in Azure ML...

Discussão em 'Python' iniciado por Stack, Março 11, 2025.

  1. Stack

    Stack Membro Participativo

    I am working on a pipeline that saves a model using mlflow.sklearn.save_model in the training script. This model file then needs to be read in the scoring script

    model = LinearRegression()
    model.fit(X_train, y_train)

    mlflow.sklearn.save_model(
    sk_model=model,
    path=os.path.join(args.model)
    )


    The command job is as below:

    from azure.ai.ml import command, Input, Output

    training_component = command(name=...,
    description=...,
    display_name=...,
    environment=...,
    inputs = {
    'train_data' : Input(type='uri_folder'),
    },
    outputs = {
    'model' : Output(type='uri_folder', mode='rw_mount')
    },
    code=training_folder,
    command = '''python training.py \
    --train_data ${{inputs.train_data}} --model ${{outputs.model}}'''
    )


    Scoring script is as below:

    def main():
    # Main scoring script

    parser = argparse.ArgumentParser()
    parser.add_argument('--test_data', help='test data to check for model accuracy', type=str)
    parser.add_argument('--model', help = 'Model to be used for prediction', type = str)
    parser.add_argument('--metrics', help='Metrics of the model', type=str)

    args = parser.parse_args()

    test_data = pd.read_csv(os.path.join(args.test_data, os.listdir(args.test_data)[0]))
    model = pd.read_pickle(os.path.join(args.model, os.listdir(args.model)[0]))


    In the command job, I am specifying input as:

    inputs = {
    'test_data' : Input(type='uri_folder'),
    'model' : Input(type='uri_folder')
    },


    but the pipeline fails with below error:

    Execution failed. User process 'python' exited with status code 1. Please check log file 'user_logs/std_log.txt' for error details. Error: Traceback (most recent call last):
    File "scoring.py", line 40, in <module>
    main()
    File "scoring.py", line 20, in main
    model = pd.read_pickle(os.path.join(args.model, os.listdir(args.model)[0]))
    File "/azureml-envs/azureml_bc28677dc89f88f1b17ebecb9a380066/lib/python3.8/site-packages/pandas/io/pickle.py", line 217, in read_pickle
    return pickle.load(handles.handle) # type: ignore[arg-type]
    _pickle.UnpicklingError: invalid load key, 'f'.


    Can someone please let me know how to read in a model file saved using mlflow

    Continue reading...

Compartilhe esta Página