コード例 #1
0
def test_load(yatai_server_container, example_bento_service_class):
    example_bento_service_class = bentoml.ver(
        major=2, minor=5)(example_bento_service_class)
    yc = get_yatai_client(yatai_server_container)
    test_model = TestModel()
    svc = example_bento_service_class()
    svc.pack('model', test_model)
    svc.save(yatai_url=yatai_server_container)

    loaded_svc = yc.repository.load(f'{svc.name}:{svc.version}')
    assert loaded_svc.name == svc.name
コード例 #2
0
def test_list(yatai_server_container, example_bento_service_class):
    example_bento_service_class = bentoml.ver(
        major=2, minor=5)(example_bento_service_class)
    yc = get_yatai_client(yatai_server_container)
    test_model = TestModel()
    svc = example_bento_service_class()
    svc.pack('model', test_model)
    svc.save(yatai_url=yatai_server_container)

    bentos = yc.repository.list(bento_name=svc.name)
    assert len(bentos) == 5
コード例 #3
0
def test_load_from_dir(example_bento_service_class):
    example_bento_service_class = bentoml.ver(major=2, minor=6)(
        example_bento_service_class
    )
    yc = get_yatai_client()
    test_model = TestModel()
    svc = example_bento_service_class()
    svc.pack('model', test_model)
    saved_path = svc.save()

    loaded_svc = yc.repository.load(saved_path)
    assert loaded_svc.name == svc.name
コード例 #4
0
def test_get(yatai_server_container, example_bento_service_class):
    example_bento_service_class = bentoml.ver(
        major=2, minor=4)(example_bento_service_class)

    yc = get_yatai_client(yatai_server_container)
    test_model = TestModel()
    svc = example_bento_service_class()
    svc.pack('model', test_model)
    svc.save(yatai_url=yatai_server_container)
    svc_pb = yc.repository.get(f'{svc.name}:{svc.version}')
    assert svc_pb.bento_service_metadata.name == svc.name
    assert svc_pb.bento_service_metadata.version == svc.version
コード例 #5
0
def test_pull(yatai_server_container, example_bento_service_class):
    example_bento_service_class = bentoml.ver(
        major=2, minor=3)(example_bento_service_class)

    yc = get_yatai_client(yatai_server_container)
    test_model = TestModel()
    svc = example_bento_service_class()
    svc.pack('model', test_model)
    saved_path = svc.save(yatai_url=yatai_server_container)

    pulled_local_path = yc.repository.pull(f'{svc.name}:{svc.version}')
    assert pulled_local_path != saved_path
コード例 #6
0
def test_pack_metadata_invalid(example_bento_service_class):
    example_bento_service_class = bentoml.ver(
        major=2, minor=10)(example_bento_service_class)
    test_model = TestModel()
    svc = example_bento_service_class()

    # assert empty metadata before packing
    assert svc.artifacts.get('model').metadata == {}

    # try packing invalid
    model_metadata = "non-dictionary metadata"

    with pytest.raises(TypeError):
        svc.pack("model", test_model, metadata=model_metadata)
コード例 #7
0
def test_save_load(yatai_server_container, example_bento_service_class):
    example_bento_service_class = bentoml.ver(
        major=2, minor=1)(example_bento_service_class)

    yc = get_yatai_client(yatai_server_container)
    test_model = TestModel()
    svc = example_bento_service_class()
    svc.pack('model', test_model)

    saved_path = svc.save(yatai_url=yatai_server_container)
    assert saved_path

    bento_pb = yc.repository.get(f'{svc.name}:{svc.version}')
    bento_service = load_from_dir(bento_pb.uri.uri)
    assert bento_service.predict(1) == 2
コード例 #8
0
def test_open_api_spec_json(tmpdir, example_bento_service_class):
    example_bento_service_class = bentoml.ver(major=2, minor=10)(
        example_bento_service_class
    )
    test_model = TestModel()
    svc = example_bento_service_class()

    svc.pack("model", test_model)
    before_json_d = get_open_api_spec_json(svc)

    svc.save_to_dir(str(tmpdir))
    with open(os.path.join(str(tmpdir), 'docs.json')) as f:
        after_json_d = json.load(f)

    # check loaded json dictionary is the same as before saving
    assert before_json_d == after_json_d
コード例 #9
0
def test_push_with_labels(yatai_server_container, example_bento_service_class):
    example_bento_service_class = bentoml.ver(
        major=2, minor=2)(example_bento_service_class)

    yc = get_yatai_client(yatai_server_container)
    test_model = TestModel()
    svc = example_bento_service_class()
    svc.pack('model', test_model)
    saved_path = svc.save(labels={'foo': 'bar', 'abc': '123'})

    pushed_path = yc.repository.push(f'{svc.name}:{svc.version}')
    assert pushed_path != saved_path
    remote_bento_pb = yc.repository.get(f'{svc.name}:{svc.version}')
    assert remote_bento_pb.bento_service_metadata.labels
    labels = dict(remote_bento_pb.bento_service_metadata.labels)
    assert labels['foo'] == 'bar'
    assert labels['abc'] == '123'
コード例 #10
0
def test_pack_metadata(tmpdir, example_bento_service_class):
    example_bento_service_class = bentoml.ver(
        major=2, minor=10)(example_bento_service_class)
    test_model = TestModel()
    svc = example_bento_service_class()

    model_metadata = {
        'k1': 'v1',
        'job_id': 'ABC',
        'score': 0.84,
        'datasets': ['A', 'B'],
    }
    svc.pack("model", test_model, metadata=model_metadata)

    # check saved metadata is correct
    assert svc.artifacts.get('model').metadata == model_metadata

    svc.save_to_dir(str(tmpdir))
    model_service = bentoml.load(str(tmpdir))

    # check loaded metadata is correct
    assert model_service.artifacts.get('model').metadata == model_metadata
コード例 #11
0
def test_save_and_load_model(tmpdir, example_bento_service_class):
    example_bento_service_class = bentoml.ver(
        major=2, minor=10)(example_bento_service_class)

    test_model = TestModel()
    svc = example_bento_service_class.pack(model=test_model)

    assert svc.predict(1000) == 2000
    version = "test_" + uuid.uuid4().hex

    svc.save_to_dir(str(tmpdir), version=version)
    model_service = bentoml.load(str(tmpdir))

    expected_version = "2.10.{}".format(version)
    assert model_service.version == expected_version

    api = model_service.get_service_api('predict')
    assert api.name == "predict"
    assert isinstance(api.handler, DataframeHandler)
    assert api.func(1) == 2

    # Check api methods are available
    assert model_service.predict(1) == 2
コード例 #12
0
def test_pack_on_bento_service_instance(tmpdir, example_bento_service_class):
    example_bento_service_class = bentoml.ver(
        major=2, minor=10)(example_bento_service_class)
    test_model = TestModel()
    svc = example_bento_service_class()

    svc.pack("model", test_model)
    assert svc.predict(1000) == 2000

    version = "test_" + uuid.uuid4().hex
    svc.set_version(version)

    svc.save_to_dir(str(tmpdir))
    model_service = bentoml.load(str(tmpdir))

    expected_version = "2.10.{}".format(version)
    assert model_service.version == expected_version

    api = model_service.get_inference_api('predict')
    assert api.name == "predict"
    assert isinstance(api.input_adapter, DataframeInput)
    assert api.user_func(1) == 2
    # Check api methods are available
    assert model_service.predict(1) == 2