Example #1
0
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')
Example #2
0
def test_deployment_serde():
    dep = skil.Deployment()
    dep.save('dep.json')

    recov = skil.Deployment.load('dep.json')

    assert recov.get_config() == dep.get_config()
Example #3
0
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()
Example #4
0
    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()
Example #6
0
    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)
Example #9
0
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()
Example #12
0
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()
Example #14
0
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)
Example #15
0
def test_deployment_creation():
    sk = _get_sk()
    dep = skil.Deployment(sk)