# Using an MLflow Model Artifact in a Model REST API

You can use MLflow to create, deploy, and manage models as REST APIs to serve predictions

1. To create an MLflow model add the following information when you run an experiment:
``````mlflow.log_artifacts ("output")
mlflow.sklearn.log_model(lr, "model")``````

For example:

``````import os
import warnings
import sys
import mlflow
import pandas as pd
import numpy as np
from sklearn.metrics import mean_squared_error,
mean_absolute_error, r2_score
from sklearn.model_selection import train_test_split
from sklearn.linear_model import ElasticNet
import mlflow.sklearn

import logging

logging.basicConfig(level=logging.WARN)
logger = logging.getLogger(__name__)

def eval_metrics(actual, pred):
rmse = np.sqrt(mean_squared_error(actual, pred))
mae = mean_absolute_error(actual, pred)
r2 = r2_score(actual, pred)
return rmse, mae, r2

if __name__ == "__main__":
mlflow.set_experiment("wine-quality-test")
csv_url = (
"https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv"
)
try:
except Exception as e:
logger.exception(
internet connection. Error: %s", e
)

# Split the data into training and test sets. (0.75, 0.25)
split.
train, test = train_test_split(data)
# The predicted column is "quality" which is a scalar from [3, 9]
train_x = train.drop(["quality"], axis=1)
test_x = test.drop(["quality"], axis=1)
train_y = train[["quality"]]
test_y = test[["quality"]]
alpha = float(sys.argv) if len(sys.argv) > 1 else 0.5
l1_ratio = float(sys.argv) if len(sys.argv) > 2 else 0.5
with mlflow.start_run():
lr = ElasticNet(alpha=alpha, l1_ratio=l1_ratio,
random_state=42)
lr.fit(train_x, train_y)
predicted_qualities = lr.predict(test_x)
(rmse, mae, r2) = eval_metrics(test_y,
predicted_qualities)
print("Elasticnet model (alpha=%f, l1_ratio=%f):" %
(alpha, l1_ratio))
print(" RMSE: %s" % rmse)
print(" MAE: %s" % mae)
print(" R2: %s" % r2)
mlflow.log_param("alpha", alpha)
mlflow.log_param("l1_ratio", l1_ratio)
mlflow.log_metric("rmse", rmse)
mlflow.log_metric("r2", r2)
mlflow.log_metric("mae", mae)
mlflow.sklearn.log_model(lr, "model")``````

In this example we are training a machine learning model using linear regression to predict wine quality. This script creates the MLflow model artifact and logs it to the model directory: `/home/cdsw/.experiments/<experiment_id>/<run_id>/artifacts/models`

2. To view the model, navigate to the Experiments page and select your experiment name. CML displays the Runs page and lists all of your current runs.
3. Click the run from step 1 that created the MLflow model. CML displays the Runs detail page
4. Click Artifacts to display a list of all the logged artifacts for the run.
5. Click model. CML displays the MLflow information you use to create predictions for your experiment.
{"ft_lang_label":"__label__en","ft_lang_prob":0.60123736,"math_prob":0.9561684,"size":2866,"snap":"2023-14-2023-23","text_gpt3_token_len":746,"char_repetition_ratio":0.12893082,"word_repetition_ratio":0.0,"special_character_ratio":0.26762038,"punctuation_ratio":0.18882467,"nsfw_num_words":0,"has_unicode_error":false,"math_prob_llama3":0.99674696,"pos_list":[0],"im_url_duplicate_count":[null],"WARC_HEADER":"{\"WARC-Type\":\"response\",\"WARC-Date\":\"2023-06-03T01:22:29Z\",\"WARC-Record-ID\":\"<urn:uuid:1a9e740b-6e7b-4679-b512-03ed781d68b2>\",\"Content-Length\":\"6995\",\"Content-Type\":\"application/http; msgtype=response\",\"WARC-Warcinfo-ID\":\"<urn:uuid:6694ea66-55f8-48ce-aa68-1750c7f9cf0f>\",\"WARC-Concurrent-To\":\"<urn:uuid:654edb32-6750-4548-aada-77e664a9acfb>\",\"WARC-IP-Address\":\"18.160.10.71\",\"WARC-Target-URI\":\"https://docs.cloudera.com/machine-learning/cloud/experiments/topics/ml-exp-v2-mlflow-model-artifact.html\",\"WARC-Payload-Digest\":\"sha1:DOPJAPH6DH7B6ZGVHQVI2PY534E7DDHG\",\"WARC-Block-Digest\":\"sha1:M7GEQEKEWG6MB6HXXQL6M53QSWN2V5FM\",\"WARC-Identified-Payload-Type\":\"text/html\",\"warc_filename\":\"/cc_download/warc_2023/CC-MAIN-2023-23/CC-MAIN-2023-23_segments_1685224648911.0_warc_CC-MAIN-20230603000901-20230603030901-00477.warc.gz\"}"}