def test_serving(): ws = _get_ws() exp = skil.Experiment(ws) save_model() model = skil.Model('model.h5', experiment=exp) dep = skil.Deployment(ws.skil) service = model.deploy(dep) from keras.datasets import mnist (x_train, y_train), (x_test, y_test) = mnist.load_data() x_test = x_test.reshape(10000, 784) x_test = x_test.astype('float32') x_test /= 255 service.predict_single(x_test[0]) service.predict(x_test[:10]) service.stop() time.sleep(4) with pytest.raises(Exception): service.predict(x_test[:10]) service.start() time.sleep(4) service.predict(x_test[:10]) service.delete() os.remove('model.h5')
def test_deployment_serde(): dep = skil.Deployment() dep.save('dep.json') recov = skil.Deployment.load('dep.json') assert recov.get_config() == dep.get_config()
def test_service_serde(): dep = skil.Deployment() model = skil.Model('keras_mnist.h5', name='bar') service = model.deploy(dep) service.save('service.json') recov = skil.Service.load('service.json') assert recov.get_config() == service.get_config()
def deploy(self, deployment=None, start_server=True, scale=1, input_names=None, output_names=None, verbose=True): """Deploys the model # Arguments: deployment: `Deployment` instance. start_server: boolean. If `True`, the service is immedietely started. scale: integer. Scale-out for deployment. input_names: list of strings. Input variable names of the model. output_names: list of strings. Output variable names of the model. verbose: boolean. If `True`, api response will be printed. # Returns: `Service` instance. """ if not deployment: deployment = skil.Deployment(skil=self.skil, name=self.name) uris = [ "{}/model/{}/default".format(deployment.name, self.name), "{}/model/{}/v1".format(deployment.name, self.name) ] if not self.service: deploy_model_request = skil_client.ImportModelRequest( name=self.name, scale=scale, file_location=self.model_path, model_type="model", uri=uris, input_names=input_names, output_names=output_names) # TODO: why ".response"? Doesn't make sense. self.deployment = deployment.response models = self.skil.api.models(self.deployment.id) deployed_model = [m for m in models if m.name == self.name] if deployed_model: self.model_deployment = deployed_model[0] else: self.model_deployment = self.skil.api.deploy_model( self.deployment.id, deploy_model_request) if verbose: self.skil.printer.pprint(self.model_deployment) self.service = Service(self.skil, self, self.deployment, self.model_deployment) if start_server: self.service.start() return self.service
def test_service_creation(): sk = skil.Skil() work_space = skil.WorkSpace(sk) exp = skil.Experiment(work_space) model = skil.Model('keras_mnist.h5', experiment=exp) model.add_evaluation(0.95) dep = skil.Deployment(sk) model.deploy(dep) work_space.delete() exp.delete() model.delete() dep.delete()
def deploy(self, deployment=None, start_server=True, scale=1, input_names=None, output_names=None, verbose=True): if not deployment: deployment = skil.Deployment(skil=self.skil, name=self.name) uris = [ "{}/model/{}/default".format(deployment.name, self.name), "{}/model/{}/v1".format(deployment.name, self.name) ] deploy_model_request = skil_client.ImportModelRequest( name=self.name, scale=scale, file_location=self.model_path, model_type="model", uri=uris, input_names=input_names, output_names=output_names) self.deployment = deployment.response self.model_deployment = self.skil.api.deploy_model( self.deployment.id, deploy_model_request) if verbose: self.skil.printer.pprint(self.model_deployment) service = Service(self.skil, self.name, self.deployment, self.model_deployment) if start_server: service.start() return service
def test_deployment_by_id(): sk = _get_sk() dep = skil.Deployment(sk, name='test_dep' + str(uuid.uuid1())[:6]) dep_id = dep.id dep2 = skil.get_deployment_by_id(sk, dep_id) assert dep.name == dep2.name
def test_transform_service_creation(): ws = _get_ws() exp = skil.Experiment(ws) model = skil.Transform('iris_tp.json', experiment=exp) dep = skil.Deployment(ws.skil) model.deploy(dep)
import skil import numpy as np skil_server = skil.Skil() work_space = skil.WorkSpace(skil_server) experiment = skil.Experiment(work_space) transform = skil.Transform(transform='iris_tp.json', experiment=experiment) model = skil.Model(model='iris_model.h5', experiment=experiment) deployment = skil.Deployment(skil_server) pipeline = skil.Pipeline(deployment, model, transform) with open('iris.data', 'r') as f: data = np.array(f.readlines()) print(pipeline.predict(data))
import skil import cv2 skil_server = skil.Skil() model = skil.Model('yolo_v2.pb', name='yolo-tf', model_id='yolo-3493723') deployment = skil.Deployment(skil_server, 'yolo') service = model.deploy(deployment, input_names=['input'], output_names=['output'], scale=2) cap = cv2.VideoCapture(0) while True: _, image = cap.read() detection = service.detect_objects(image) image = skil.utils.yolo.annotate_image(image, detection) cv2.imshow('yolo', image)
def test_deployment_creation(): sk = skil.Skil() dep = skil.Deployment(sk) dep.delete()
import skil import cv2 model = skil.Model('yolo.pb', model_id='yolo_42', name='yolo') service = model.deploy(skil.Deployment(), input_names=['input'], output_names=['output']) image = cv2.imread("say_yolo_again.jpg") detection = service.detect_objects(image) image = skil.utils.yolo.annotate_image(image, detection) cv2.imwrite('annotated.jpg', image)
def test_deployment_deletion(): dep = skil.Deployment() dep.delete()
def test_service_creation(): ws = _get_ws() exp = skil.Experiment(ws) model = skil.Model('keras_mnist.h5', experiment=exp) dep = skil.Deployment(ws.skil) model.deploy(dep)
def test_deployment_creation(): sk = _get_sk() dep = skil.Deployment(sk)