Skip to content

Commit d6da858

Browse files
authored
Merge pull request #4 from MLOPsStudyGroup/scripts_master
updating deployment and update scripts
2 parents e113a4d + e302767 commit d6da858

11 files changed

+120
-106
lines changed

metadata.yaml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
project_name: Rain_aus
2-
project_version: v0.3
3-
model_type: scikit-learn_0.23
41
author: guipleite
52
datetime_creted: 29/03/2021_13:46:23:802394723
3+
deployment_uid: 59562979-4bb8-4cc4-85f0-fb7a280b8b3c
4+
model_type: scikit-learn_0.23
5+
model_uid: 3d5e76dc-a4a3-43a9-ab54-debbdbdc8673
6+
project_name: Rain_aus
7+
project_version: v0.3

src/scripts/Pipelines/model.joblib

-16.4 MB
Binary file not shown.

src/scripts/Pipelines/model_deploy_pipeline.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
import joblib
66
from ibm_watson_machine_learning import APIClient
77

8+
"""
9+
Usage:
10+
python3 model_deploy_pipeline.py ./pickle_model ../path/to/project/ ../credentials.yaml
11+
12+
"""
13+
814
MODEL_PATH = os.path.abspath(sys.argv[1])
915
PROJ_PATH = os.path.abspath(sys.argv[2])
1016
CRED_PATH = os.path.abspath(sys.argv[3])
@@ -60,3 +66,11 @@
6066
artifact_uid=model_uid,
6167
meta_props=deployment_props,
6268
)
69+
70+
deployment_uid = client.deployments.get_uid(deployment)
71+
72+
metadata["model_uid"] = model_uid
73+
metadata["deployment_uid"] = deployment_uid
74+
75+
f = open(META_PATH, "w+")
76+
yaml.dump(metadata, f, allow_unicode=True)

src/scripts/Pipelines/model_deployed_validate_pipeline.py

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@
66
from sklearn.metrics import confusion_matrix, accuracy_score
77
from sklearn.model_selection import cross_val_score
88
from ibm_watson_machine_learning import APIClient
9+
from sklearn.model_selection import train_test_split
10+
11+
"""
12+
Usage:
13+
python3 model_deployed_validate_pipeline.py path/to/data.csv ../../credentials.yaml path/to/project/
14+
15+
"""
916

1017
DATA_PATH = os.path.abspath(sys.argv[1])
1118
CRED_PATH = os.path.abspath(sys.argv[2])
@@ -20,26 +27,42 @@ def main():
2027
except yaml.YAMLError as exc:
2128
print(exc)
2229

30+
with open(META_PATH) as stream:
31+
try:
32+
metadata = yaml.safe_load(stream)
33+
except yaml.YAMLError as exc:
34+
print(exc)
35+
2336
data = pd.read_csv(DATA_PATH)
2437

2538
X = data.iloc[:, :-1]
2639
y = data[data.columns[-1]]
40+
X_train, X_test, y_train, y_test = train_test_split(
41+
X, y, test_size=0.3, random_state=0
42+
)
2743

2844
wml_credentials = {"url": credentials["url"], "apikey": credentials["apikey"]}
2945

3046
client = APIClient(wml_credentials)
3147
client.spaces.list()
3248

3349
SPACE_ID = credentials["space_id"]
34-
DEPLOYMENT_UID = input("DEPLOYMENT UID: ")
3550

36-
client.set.default_space(SPACE_ID)
51+
if "deployment_uid" in metadata.keys():
52+
DEPLOYMENT_UID = metadata["deployment_uid"]
53+
print("\nExtracting DEPLOYMENT UID from metadata file\n")
3754

38-
# deployment_uid = client.deployments.get_uid(DEPLOYMENT_UID)
55+
else:
56+
DEPLOYMENT_UID = input("DEPLOYMENT UID: ")
57+
58+
client.set.default_space(SPACE_ID)
3959

4060
payload = {
4161
"input_data": [
42-
{"fields": X.columns.to_numpy().tolist(), "values": X.to_numpy().tolist()}
62+
{
63+
"fields": X.columns.to_numpy().tolist(),
64+
"values": X_test.to_numpy().tolist(),
65+
}
4366
]
4467
}
4568
result = client.deployments.score(DEPLOYMENT_UID, payload)
@@ -53,7 +76,7 @@ def comb_eval(y, y_pred):
5376

5477
return {"cm": cm, "acc": acc}
5578

56-
eval = comb_eval(y, y_pred_values)
79+
eval = comb_eval(y_test, y_pred_values)
5780
print(eval)
5881

5982
return eval

src/scripts/Pipelines/model_evalute.py

Lines changed: 0 additions & 35 deletions
This file was deleted.
Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,63 @@
11
import sys
22
import os
3+
import time
34
import yaml
45
from ibm_watson_machine_learning import APIClient
56

6-
# MODEL_PATH = os.path.abspath(sys.argv[1])
7-
CRED_PATH = os.path.abspath(sys.argv[1])
8-
# PROJ_PATH = os.path.abspath(sys.argv[3])
9-
# META_PATH = PROJ_PATH+"/metadata.yaml"
7+
"""
8+
Usage:
9+
python3 model_reploy_pipeline.py ../path/to/project/ ../credentials.yaml
10+
11+
"""
12+
13+
PROJ_PATH = os.path.abspath(sys.argv[1])
14+
CRED_PATH = os.path.abspath(sys.argv[2])
15+
META_PATH = PROJ_PATH + "/metadata.yaml"
1016

1117
with open(CRED_PATH) as stream:
1218
try:
1319
credentials = yaml.safe_load(stream)
1420
except yaml.YAMLError as exc:
1521
print(exc)
1622

23+
with open(META_PATH) as stream:
24+
try:
25+
metadata = yaml.safe_load(stream)
26+
except yaml.YAMLError as exc:
27+
print(exc)
1728

1829
wml_credentials = {"url": credentials["url"], "apikey": credentials["apikey"]}
1930

2031
client = APIClient(wml_credentials)
2132
client.spaces.list()
2233

2334
SPACE_ID = credentials["space_id"]
24-
MODEL_GUID = input("MODEL GUID: ")
25-
DEPLOYMENT_UID = input("DEPLOYMENT UID: ")
35+
36+
if "deployment_uid" in metadata.keys():
37+
MODEL_GUID = metadata["model_uid"]
38+
DEPLOYMENT_UID = metadata["deployment_uid"]
39+
print("\nExtracting DEPLOYMENT UID and MODEL GUID from metadata file\n")
40+
41+
else:
42+
MODEL_GUID = input("MODEL GUID: ")
43+
DEPLOYMENT_UID = input("DEPLOYMENT UID: ")
2644

2745
client.set.default_space(SPACE_ID)
28-
MODEL_GUID = "b065a8c6-01ec-461b-96cc-c3abdcc35405"
29-
DEPLOYMENT_UID = "560eed08-7d74-4ed8-8429-8d26b88cd8a3"
3046

3147
client.repository.list_models_revisions(MODEL_GUID)
3248

3349
MODEL_VERSION = input("MODEL VERSION: ")
3450

35-
metadata = {
51+
meta = {
3652
client.deployments.ConfigurationMetaNames.ASSET: {
3753
"id": MODEL_GUID,
3854
"rev": MODEL_VERSION,
3955
}
4056
}
4157
updated_deployment = client.deployments.update(
42-
deployment_uid=DEPLOYMENT_UID, changes=metadata
58+
deployment_uid=DEPLOYMENT_UID, changes=meta
4359
)
4460

45-
import time
46-
4761
status = None
4862
while status not in ["ready", "failed"]:
4963
print(".", end=" ")
@@ -52,3 +66,4 @@
5266
status = deployment_details["entity"]["status"].get("state")
5367

5468
print("\nDeployment update finished with status: ", status)
69+
# print(deployment_details)

src/scripts/Pipelines/model_train.py

Lines changed: 0 additions & 41 deletions
This file was deleted.

src/scripts/Pipelines/model_update_deployment_pipeline.py

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,49 @@
33
import yaml
44
from ibm_watson_machine_learning import APIClient
55

6-
CRED_PATH = os.path.abspath(sys.argv[1])
6+
"""
7+
Usage:
8+
python3 model_update_deployment_pipeline.py ../path/to/project/ ../credentials.yaml
9+
10+
"""
11+
12+
PROJ_PATH = os.path.abspath(sys.argv[1])
13+
CRED_PATH = os.path.abspath(sys.argv[2])
14+
META_PATH = PROJ_PATH + "/metadata.yaml"
715

816
with open(CRED_PATH) as stream:
917
try:
1018
credentials = yaml.safe_load(stream)
1119
except yaml.YAMLError as exc:
1220
print(exc)
1321

22+
with open(META_PATH) as stream:
23+
try:
24+
metadata = yaml.safe_load(stream)
25+
except yaml.YAMLError as exc:
26+
print(exc)
1427

1528
wml_credentials = {"url": credentials["url"], "apikey": credentials["apikey"]}
1629

1730
client = APIClient(wml_credentials)
1831
client.spaces.list()
1932

2033
SPACE_ID = credentials["space_id"]
21-
MODEL_ID = input("MODEL ID: ")
22-
DEPLOYMENT_ID = input("DEPLOYMENT ID: ")
34+
35+
if "deployment_uid" in metadata.keys():
36+
MODEL_GUID = metadata["model_uid"]
37+
DEPLOYMENT_UID = metadata["deployment_uid"]
38+
print("\nExtracting DEPLOYMENT UID and MODEL GUID from metadata file\n")
39+
40+
else:
41+
MODEL_GUID = input("MODEL GUID: ")
42+
DEPLOYMENT_UID = input("DEPLOYMENT UID: ")
2343

2444
client.set.default_space(SPACE_ID)
2545

26-
change_meta = {client.deployments.ConfigurationMetaNames.ASSET: {"id": MODEL_ID}}
46+
change_meta = {client.deployments.ConfigurationMetaNames.ASSET: {"id": MODEL_GUID}}
2747

2848
print("Alterando o deploy abaixo: ")
29-
print(client.deployments.get_details(DEPLOYMENT_ID))
49+
print(client.deployments.get_details(DEPLOYMENT_UID))
3050

31-
client.deployments.update(DEPLOYMENT_ID, change_meta)
51+
client.deployments.update(DEPLOYMENT_UID, change_meta)

src/scripts/Pipelines/model_update_pipeline.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
import sys
22
import os
33
import yaml
4+
import joblib
45
from ibm_watson_machine_learning import APIClient
56

7+
"""
8+
Usage:
9+
python3 model_update_pipeline.py ./pickle_model ../path/to/project/ ../credentials.yaml
10+
11+
"""
12+
613
MODEL_PATH = os.path.abspath(sys.argv[1])
7-
CRED_PATH = os.path.abspath(sys.argv[2])
8-
PROJ_PATH = os.path.abspath(sys.argv[3])
14+
PROJ_PATH = os.path.abspath(sys.argv[2])
15+
CRED_PATH = os.path.abspath(sys.argv[3])
916
META_PATH = PROJ_PATH + "/metadata.yaml"
1017

1118
with open(CRED_PATH) as stream:
@@ -20,22 +27,31 @@
2027
except yaml.YAMLError as exc:
2128
print(exc)
2229

30+
with open(MODEL_PATH, "rb") as file:
31+
# pickle_model = pickle.load(file)
32+
pipeline = joblib.load(file)
2333

2434
wml_credentials = {"url": credentials["url"], "apikey": credentials["apikey"]}
2535

2636
client = APIClient(wml_credentials)
2737
client.spaces.list()
2838

2939
SPACE_ID = credentials["space_id"]
30-
MODEL_GUID = input("MODEL GUID: ")
40+
41+
if "model_uid" in metadata.keys():
42+
MODEL_GUID = metadata["model_uid"]
43+
print("\nExtracting MODEL GUID from metadata file\n")
44+
45+
else:
46+
MODEL_GUID = input("MODEL GUID: ")
3147

3248
client.set.default_space(SPACE_ID)
3349

3450
print("\nCreating new version")
3551

3652
published_model = client.repository.update_model(
3753
model_uid=MODEL_GUID,
38-
update_model=MODEL_PATH,
54+
update_model=pipeline,
3955
updated_meta_props={
4056
client.repository.ModelMetaNames.NAME: metadata["project_name"]
4157
+ "_"

src/scripts/Pipelines/pickle_model

-16.4 MB
Binary file not shown.

0 commit comments

Comments
 (0)