def predict_onnx(model_uri, data): print(f"\nmlflow.onnx.load_model\nModel URI: {model_uri}") import mlflow.onnx import onnx_utils model = mlflow.onnx.load_model(model_uri) print("model.type:", type(model)) data = data.to_numpy() predictions = onnx_utils.score_model(model, data) display(predictions)
def main(model_uri, data_path): print("Options:") for k, v in locals().items(): print(f" {k}: {v}") data = pd.read_csv(data_path).to_numpy() model = mlflow.onnx.load_model(model_uri) print("model.type:", type(model)) predictions = onnx_utils.score_model(model, data) print("predictions.type:", type(predictions)) print("predictions.shape:", predictions.shape) print("predictions:", predictions)
def main(model_uri): print("model_uri:", model_uri) data = utils.get_prediction_data() print("\n**** mlflow.onnx.load_model\n") model = mlflow.onnx.load_model(model_uri) print("model.type:", type(model)) predictions = onnx_utils.score_model(model, data) print("predictions.type:", type(predictions)) print("predictions.shape:", predictions.shape) print("predictions:", predictions) utils.predict_pyfunc(model_uri, data) print("\n**** mlflow.pyfunc.load_model\n") model = mlflow.pyfunc.load_model(model_uri) print("model.type:", type(model)) data = pd.DataFrame(data) predictions = model.predict(data) print("predictions.type:", type(predictions)) print("predictions.shape:", predictions.shape) print("predictions:", predictions)
from argparse import ArgumentParser import mlflow import mlflow.onnx import utils import onnx_utils print("MLflow Version:", mlflow.__version__) print("Tracking URI:", mlflow.tracking.get_tracking_uri()) if __name__ == "__main__": parser = ArgumentParser() parser.add_argument("--model_uri", dest="model_uri", help="model_uri", default="../../data/train/wine-quality-white.csv") args = parser.parse_args() print("Arguments:") for arg in vars(args): print(f" {arg}: {getattr(args, arg)}") _,_,data,_ = utils.build_data() model = mlflow.onnx.load_model(args.model_uri) print("model.type:", type(model)) predictions = onnx_utils.score_model(model, data) print("predictions.type:",type(predictions)) print("predictions.shape:",predictions.shape) print("predictions:",predictions)
# TODO: convert tensor to Pyfunc scoring format if args.score_as_pyfunc: print("\n**** pyfunc.load_model") model = mlflow.pyfunc.load_model(model_uri) print("model.type:", type(model)) data_pd = pd.DataFrame( data.numpy()) # TODO: ValueError: Must pass 2-d input outputs = model.predict(data_pd) print("outputs.type:", type(outputs)) if args.score_as_onnx: print("\n**** onnx.load_model - onnx\n") import mlflow.onnx import onnx import onnx_utils print("ONNX Version:", onnx.__version__) model_uri = f"runs:/{args.run_id}/onnx-model" model = mlflow.onnx.load_model(model_uri) print("model.type:", type(model)) # TODO: convert tensor to ONNX scoring format # INVALID_ARGUMENT : Got invalid dimensions for input: input.1 for the following indices # index: 0 Got: 10000 Expected: 64 data = data.numpy() outputs = onnx_utils.score_model(model, data) print("outputs.type:", type(outputs)) print("outputs:\n", pd.DataFrame(outputs))
outputs = model(data) print("outputs.type:", type(outputs)) outputs = outputs.detach().numpy() outputs = pd.DataFrame(outputs) print("outputs:\n", outputs) print("\n==== pyfunc.load_model - pytorch\n") model = mlflow.pyfunc.load_model(model_uri) print("model.type:", type(model)) outputs = model.predict(data_pd) print("outputs.type:", type(outputs)) print("outputs:\n", outputs) artifacts = client.list_artifacts(args.run_id, "onnx-model") if len(artifacts) > 0: model_uri = f"runs:/{args.run_id}/onnx-model" print("\n==== onnx.load_model - onnx\n") model = mlflow.onnx.load_model(model_uri) print("model.type:", type(model)) outputs = onnx_utils.score_model(model, data_pd.to_numpy()) print("outputs.type:", type(outputs)) print("outputs:\n", pd.DataFrame(outputs)) print("\n==== pyfunc.load_model - onnx\n") print("model_uri:", model_uri) model = mlflow.pyfunc.load_model(model_uri) print("model.type:", type(model)) outputs = model.predict(data_pd) print("outputs.type:", type(outputs)) print("outputs:\n", outputs)