예제 #1
0
def test_update_dynamic_profiling_result():
    model = ModelService.get_models_by_name('ResNet50')[0]
    dpr = DynamicProfileResultBO(
        'gpu:01', 'Tesla K40c', 1, ProfileMemory(1000, 2000, 1000),
        ProfileLatency((1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1)),
        ProfileThroughput((1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1)))
    # check update
    assert ModelService.update_dynamic_profiling_result(model.id, dpr)
    # check result
    model = ModelService.get_models_by_name('ResNet50')[0]
    assert model.profile_result.dynamic_results[0].memory.cpu_memory == 2000
예제 #2
0
def test_update_model():
    model = ModelService.get_models_by_name('ResNet50')[0]
    model.acc = 0.9
    model.weight.weight = bytes([123, 255])

    # check if update success
    assert ModelService.update_model(model)

    model_ = ModelService.get_models_by_name('ResNet50')[0]

    # check updated model
    assert abs(model_.acc - 0.9) < 1e-6
    assert model_.weight.weight == model.weight.weight
예제 #3
0
def retrieve_model_by_name(architecture_name: str = 'ResNet50',
                           framework: Framework = None,
                           engine: Engine = None):
    """Query a model by name, framework or engine.
    Arguments:
        architecture_name (str): Model architecture name.
        framework (Framework): Framework name, optional query key. Default to None.
        engine (Engine): Model optimization engine name.
    Returns:
        ModelBO: Model business object.
    """

    # retrieve
    models = ModelService.get_models_by_name(architecture_name,
                                             framework=framework,
                                             engine=engine)
    # check if found
    if len(models) == 0:
        raise FileNotFoundError('Model not found!')
    # TODO: filter version
    model = models[0]

    get_remote_model_weight(model)

    return model
예제 #4
0
def test_register_dynamic_profiling_result():
    model = ModelService.get_models_by_name('ResNet50')[0]
    dpr = DynamicProfileResultBO(
        'gpu:01', 'Tesla K40c', 1, ProfileMemory(1000, 1000, 1000),
        ProfileLatency((1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1)),
        ProfileThroughput((1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1)))
    assert ModelService.append_dynamic_profiling_result(model.id, dpr)
예제 #5
0
def test_get_model_by_name():
    models = ModelService.get_models_by_name('ResNet50')

    # check length
    assert len(models) == 1
    # check name
    for model in models:
        assert model.name == 'ResNet50'
예제 #6
0
def test_delete_dynamic_profiling_result():
    model = ModelService.get_models_by_name('ResNet50')[0]

    dpr = DynamicProfileResultBO(
        'gpu:02', 'Tesla K40c', 1, ProfileMemory(1000, 1000, 1000),
        ProfileLatency((1, 1, 2), (1, 1, 1), (1, 1, 1), (1, 1, 1)),
        ProfileThroughput((1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1)))
    ModelService.append_dynamic_profiling_result(model.id, dpr)

    # reload
    model = ModelService.get_models_by_name('ResNet50')[0]
    dpr_bo = model.profile_result.dynamic_results[0]
    dpr_bo2 = model.profile_result.dynamic_results[1]

    # check delete
    assert ModelService.delete_dynamic_profiling_result(
        model.id, dpr_bo.ip, dpr_bo.device_id)

    # check result
    model = ModelService.get_models_by_name('ResNet50')[0]
    assert len(model.profile_result.dynamic_results) == 1

    dpr_left = model.profile_result.dynamic_results[0]
    assert dpr_bo2.latency.init_latency.avg == dpr_left.latency.init_latency.avg
예제 #7
0
def test_register_static_profiling_result():
    model = ModelService.get_models_by_name('ResNet50')[0]
    spr = StaticProfileResultBO(5000, 200000, 200000, 10000, 10000, 10000)
    assert ModelService.register_static_profiling_result(model.id, spr)
예제 #8
0
def test_get_model_by_id():
    model_bo = ModelService.get_models_by_name('ResNet50')[0]
    model = ModelService.get_model_by_id(model_bo.id)

    # check model id
    assert model.id == model_bo.id
예제 #9
0
def test_delete_model():
    model = ModelService.get_models_by_name('ResNet50')[0]
    assert ModelService.delete_model_by_id(model.id)