/
deploy_model.py
66 lines (51 loc) · 2 KB
/
deploy_model.py
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
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
import argparse
from azureml.core import Model
from aml_utils import config, workspace, deployment
import json
def main(model_names, service_name, compute_config_file, environment_path, aks_target_name=None):
ws = workspace.retrieve_workspace()
models = []
for name in model_names:
models.append(Model(ws, name=name))
print(f"model_name: {name}")
# Get repo root path, every other path will be relative to this
base_path = config.get_root_path()
# Deployment configuration
compute_config_file = base_path / compute_config_file
environment_path = base_path / environment_path
src_path = base_path / "src"
deployment_params = deployment.build_deployment_params(
ws,
script_dir=src_path,
script_file='score.py',
environment_path=environment_path,
compute_config_file=compute_config_file,
aks_target_name=aks_target_name
)
service = deployment.launch_deployment(
ws,
service_name=service_name,
models=models,
deployment_params=deployment_params
)
print(f'Waiting for deployment of {service.name} to finish...')
service.wait_for_deployment(show_output=True)
def parse_args(args_list=None):
parser = argparse.ArgumentParser()
parser.add_argument('--model-names', type=json.loads, required=True)
parser.add_argument('--config-path', type=str, required=True)
parser.add_argument('--env-path', type=str, required=True)
parser.add_argument('--service-name', type=str, default='webservice')
parser.add_argument('--aks-target-name', type=str, default=None)
return parser.parse_args(args_list)
if __name__ == "__main__":
args = parse_args()
main(
model_name=args.model_names,
service_name=args.service_name,
compute_config_file=args.config_path,
environment_path=args.env_path,
aks_target_name=args.aks_target_name
)