-
Notifications
You must be signed in to change notification settings - Fork 38
Expand file tree
/
Copy pathExport_Model.py
More file actions
131 lines (86 loc) · 2.91 KB
/
Copy pathExport_Model.py
File metadata and controls
131 lines (86 loc) · 2.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# Databricks notebook source
# MAGIC %md ### Export Registered Model
# MAGIC
# MAGIC ##### Overview
# MAGIC * Export a registered model and all the runs associated with its latest versions to a DBFS folder.
# MAGIC * Output file `model.json` contains model metadata.
# MAGIC * Each run and its artifacts are stored as a sub-directory.
# MAGIC
# MAGIC #### Output folder structure
# MAGIC
# MAGIC ```
# MAGIC +-model.json
# MAGIC +-d2309e6c74dc4679b576a37abf6b6af8/
# MAGIC | +-run.json
# MAGIC | +-artifacts/
# MAGIC | +-plot.png
# MAGIC | +-sklearn-model/
# MAGIC | | +-model.pkl
# MAGIC | | +-conda.yaml
# MAGIC | | +-MLmodel
# MAGIC ```
# MAGIC
# MAGIC ##### Widgets
# MAGIC * Model - Registered model name.
# MAGIC * Destination base folder - Base output directory to which the model name will be appended to.
# MAGIC
# MAGIC #### Setup
# MAGIC * See Setup in [README]($00_README_Export_Import).
# COMMAND ----------
# MAGIC %md ### Setup
# COMMAND ----------
dbutils.widgets.text(" Model", "")
model_name = dbutils.widgets.get(" Model")
dbutils.widgets.text("Destination base folder", "")
output_dir = dbutils.widgets.get("Destination base folder")
output_dir += f"/{model_name}"
model_name, output_dir
print("model_name:",model_name)
print("output_dir:",output_dir)
# COMMAND ----------
if len(model_name)==0: raise Exception("ERROR: Model is required")
if len(output_dir)==0: raise Exception("ERROR: DBFS destination is required")
import mlflow
# COMMAND ----------
# MAGIC %run ./Common
# COMMAND ----------
# MAGIC %md ### Display MLflow UI URI of Registered Model
# COMMAND ----------
display_registered_model_uri(model_name)
# COMMAND ----------
# MAGIC %md ### Remove any previous exported model data
# MAGIC
# MAGIC Note: may be a bit finicky (S3 eventual consistency). Just try the remove again if subsequent export fails.
# COMMAND ----------
dbutils.fs.rm(output_dir, True)
dbutils.fs.mkdirs(output_dir)
# COMMAND ----------
# MAGIC %md ### Export the model
# COMMAND ----------
from mlflow_export_import.model.export_model import ModelExporter
exporter = ModelExporter()
exporter.export_model(model_name, output_dir)
# COMMAND ----------
# MAGIC %sh ls -l /dbfs/mnt/andre-work/exim/models/andre_02_Sklearn_Train_Predict/ec7bc29448b54ea497cd88dbcd46a155/run.json
# COMMAND ----------
# MAGIC %md ### Display exported model files
# COMMAND ----------
import os
output_dir = output_dir.replace("dbfs:","/dbfs")
os.environ['OUTPUT_DIR'] = output_dir
# COMMAND ----------
# MAGIC %sh echo $OUTPUT_DIR
# COMMAND ----------
# MAGIC %sh ls -l $OUTPUT_DIR
# COMMAND ----------
# MAGIC %sh cat $OUTPUT_DIR/model.json
# COMMAND ----------
# MAGIC %md #### Display run information
# COMMAND ----------
find_run_dir(output_dir, "RUN_DIR", "manifest.json")
# COMMAND ----------
# MAGIC %sh echo $RUN_DIR
# COMMAND ----------
# MAGIC %sh ls -l $RUN_DIR
# COMMAND ----------
# MAGIC %sh cat $RUN_DIR/run.json