import json from datetime import datetime from clipper_admin import ClipperConnection, DockerContainerManager clipper_conn = ClipperConnection(DockerContainerManager()) from thermal_model import get_model_per_zone, normal_schedule, dr_schedule, execute_schedule try: clipper_conn.start_clipper() default_output = json.dumps([-1] * 24) clipper_conn.register_application(name="ciee_thermal", input_type="string", default_output=default_output, slo_micros=1000000000) print 'apps', clipper_conn.get_all_apps() models = get_model_per_zone("2018-01-30 00:00:00 PST") # model parameters: # zone: string # date: string # schedule: [(hsp, csp), ... x 24 ...] def execute_thermal_model(params): """ Accepts list of JSON string as argument """ ret = [] for param in params: args = json.loads(param) zone = args['zone'] date = str(args['date']) schedule = args['schedule'] temps, actions = execute_schedule(date, schedule, models[zone], 65)
# clipper_start from clipper_admin import ClipperConnection, DockerContainerManager clipper_conn = ClipperConnection(DockerContainerManager()) clipper_conn.start_clipper() clipper_conn.connect() clipper_conn.register_application( name="digit", input_type="doubles", default_output="-1.0", slo_micros=10000000) # 10,000,000 micros == 10 sec clipper_conn.get_all_apps() ################################################# ######### Define Own Prediction Function ######## ################################################# import sklearn import numpy as np from sklearn.neural_network import MLPClassifier from sklearn.externals import joblib from clipper_admin.deployers import python as python_deployer for version_postfix in ["10x1k", "10x2k", "20x1k", "15x2k"]: model_path = "../../models/sklearn/" model_name = "dig_nn_model_" + version_postfix + ".sav" clf = joblib.load(model_path + model_name)
try: clipper_conn.start_clipper() clipper_conn.register_application(name=APP_NAME, input_type="doubles", default_output="-1.0", slo_micros=1000000) deploy_pytorch_model(clipper_conn, name=MODEL_NAME, version="1", input_type="doubles", func=predict, pytorch_model=model, pkgs_to_install=pip_deps) clipper_conn.link_model_to_app(app_name=APP_NAME, model_name=MODEL_NAME) except: clipper_conn.connect() # Check all apps print(clipper_conn.get_all_apps()) # Test inference # inputs = np.array([[1., 2., 3.], [2., 3., 4.], [3., 4., 5.]]) # print(predict(model, inputs)) inputs = np.array([1., 2., 3.]).tolist( ) # Inputs can only be one-dimensional or there will be json serialization error headers = {"Content-type": "aplication/json"} result = requests.post("http://localhost:1337/" + APP_NAME + "/predict", headers=headers, data=json.dumps({"input": inputs})).json() print(result)