Пример #1
0
 def test_args_invalid_model_path(self):
     device_id = 0
     model_path = "xxx_invalid.om"
     options = aclruntime.session_options()
     with pytest.raises(RuntimeError) as e:
         aclruntime.InferenceSession(model_path, device_id, options)
         print("when om_path invalid error msg is %s", e)
Пример #2
0
def infer_dynamicshape():
    device_id = 0
    options = aclruntime.session_options()
    session = aclruntime.InferenceSession(model_path, device_id, options)

    # only need call this functon compare infer_simple
    session.set_dynamic_shape("actual_input_1:1,3,224,224")
    session.set_custom_outsize([10000])

    # create new numpy data according inputs info
    barray = bytearray(session.get_inputs()[0].realsize)
    ndata = np.frombuffer(barray)
    # convert numpy to pytensors in device
    tensor = aclruntime.Tensor(ndata)
    tensor.to_device(device_id)

    outnames = [session.get_outputs()[0].name]
    feeds = {session.get_inputs()[0].name: tensor}

    outputs = session.run(outnames, feeds)
    print("outputs:", outputs)

    for out in outputs:
        out.to_host()
    print(session.sumary())
Пример #3
0
def infer_step():
    device_id = 0
    options = aclruntime.session_options()
    options.log_level = 1
    session = aclruntime.InferenceSession(model_path, device_id, options)

    # create new numpy data according inputs info
    barray = bytearray(session.get_inputs()[0].realsize)
    ndata = np.frombuffer(barray)
    # convert numpy to pytensors in device
    tensor = aclruntime.Tensor(ndata)
    tensor.to_device(device_id)

    outnames = [session.get_outputs()[0].name]
    feeds = {session.get_inputs()[0].name: tensor}

    # infer three step function
    session.run_setinputs(feeds)
    session.run_execute()
    outputs = session.run_getoutputs(outnames)

    # outputs = session.run(outnames, feeds)
    print("step outputs:", outputs)

    for out in outputs:
        out.to_host()
    # sumary inference throughput
    print(session.sumary())
Пример #4
0
 def test_args_invalid_device_id(self):
     device_id = 100
     model_path = self.get_resnet_static_om_path(1)
     options = aclruntime.session_options()
     with pytest.raises(RuntimeError) as e:
         aclruntime.InferenceSession(model_path, device_id, options)
         print("when device_id invalid error msg is %s", e)
Пример #5
0
def infer_run_simultaneous():
    device_id = 0

    # one call
    options = aclruntime.session_options()
    session = aclruntime.InferenceSession(model_path, device_id, options)
    # create new numpy data according inputs info
    barray = bytearray(session.get_inputs()[0].realsize)
    ndata = np.frombuffer(barray)
    # convert numpy to pytensors in device
    tensor = aclruntime.Tensor(ndata)
    tensor.to_device(device_id)
    outnames = [session.get_outputs()[0].name]
    feeds = {session.get_inputs()[0].name: tensor}

    # another call
    options1 = aclruntime.session_options()
    model_path1 = sys.argv[2]
    session1 = aclruntime.InferenceSession(model_path1, device_id, options1)
    # create new numpy data according inputs info
    barray1 = bytearray(session1.get_inputs()[0].realsize)
    ndata1 = np.frombuffer(barray1)
    # convert numpy to pytensors in device
    tensor1 = aclruntime.Tensor(ndata1)
    tensor1.to_device(device_id)
    outnames1 = [session1.get_outputs()[0].name]
    feeds1 = {session1.get_inputs()[0].name: tensor1}

    # one run
    outputs = session.run(outnames, feeds)
    print("outputs:", outputs)

    for out in outputs:
        out.to_host()
    # sumary inference throughput
    print(session.sumary())

    # another run
    outputs1 = session1.run(outnames1, feeds1)
    print("outputs1:", outputs1)

    for out in outputs1:
        out.to_host()
    # sumary inference throughput
    print(session1.sumary())
Пример #6
0
def init_inference_session(args):
    options = aclruntime.session_options()
    if args.acl_json_path != None:
        options.acl_json_path = args.acl_json_path
    if args.debug == True:
        logger.setLevel(logging.DEBUG)
        options.log_level = 1
    session = aclruntime.InferenceSession(args.model, args.device_id, options)

    set_session_options(session, args)
    logger.debug("session info:{}".format(session))
    return session
Пример #7
0
    def test_infer_invalid_device_id(self):
        device_id = 0
        options = aclruntime.session_options()
        model_path = self.get_resnet_static_om_path(1)
        session = aclruntime.InferenceSession(model_path, device_id, options)

        # create new numpy data according inputs info
        barray = bytearray(session.get_inputs()[0].realsize)
        ndata = np.frombuffer(barray)
        # convert numpy to pytensors in device
        tensor = aclruntime.Tensor(ndata)
        with pytest.raises(RuntimeError) as e:
            tensor.to_device(device_id + 100)
Пример #8
0
    def test_infer_invalid_input_type(self):
        device_id = 0
        options = aclruntime.session_options()
        model_path = self.get_resnet_static_om_path(1)
        session = aclruntime.InferenceSession(model_path, device_id, options)

        # create new numpy data according inputs info
        barray = bytearray(session.get_inputs()[0].realsize)
        ndata = np.frombuffer(barray)

        outnames = [session.get_outputs()[0].name]
        feeds = {session.get_inputs()[0].name: ndata}

        with pytest.raises(TypeError) as e:
            outputs = session.run(outnames, feeds)
            print("outputs:", outputs)
Пример #9
0
 def load(self, model_path, inputs=None, outputs=None, device_id=0):
     self.device_id = device_id
     self.model_path = model_path
     options = aclruntime.session_options()
     #options.log_level = 1
     self.session = aclruntime.InferenceSession(model_path, device_id,
                                                options)
     if not inputs:
         self.inputs = [meta.name for meta in self.session.get_inputs()]
     else:
         self.inputs = inputs
     if not outputs:
         self.outputs = [meta.name for meta in self.session.get_outputs()]
     else:
         self.outputs = outputs
     warmup(self.session, self.session.get_inputs(),
            self.session.get_outputs(), device_id)
Пример #10
0
    def test_infer_invalid_outname(self):
        device_id = 0
        options = aclruntime.session_options()
        model_path = self.get_resnet_static_om_path(1)
        session = aclruntime.InferenceSession(model_path, device_id, options)

        # create new numpy data according inputs info
        barray = bytearray(session.get_inputs()[0].realsize)
        ndata = np.frombuffer(barray)
        # convert numpy to pytensors in device
        tensor = aclruntime.Tensor(ndata)
        tensor.to_device(device_id)

        outnames = [session.get_outputs()[0].name + "xxx"]
        feeds = {session.get_inputs()[0].name: tensor}

        with pytest.raises(RuntimeError) as e:
            outputs = session.run(outnames, feeds)
            print("outputs:", outputs)
Пример #11
0
def get_model_info():
    device_id = 0
    options = aclruntime.session_options()
    # 方法1设置级别为debug模式后可以打印模型信息
    options.log_level = 1
    session = aclruntime.InferenceSession(model_path, device_id, options)

    # 方法2 直接打印session 也可以获取模型信息
    print(session)

    # 方法3 也可以直接通过get接口去获取
    intensors_desc = session.get_outputs()
    for i, info in enumerate(intensors_desc):
        print("input info i:{} shape:{} type:{} val:{} realsize:{} size:{}".
              format(i, info.shape, info.datatype, int(info.datatype),
                     info.realsize, info.size))

    intensors_desc = session.get_outputs()
    for i, info in enumerate(intensors_desc):
        print("outputs info i:{} shape:{} type:{} val:{} realsize:{} size:{}".
              format(i, info.shape, info.datatype, int(info.datatype),
                     info.realsize, info.size))
Пример #12
0
    def test_infer_runcase_empty_outputname(self):
        device_id = 0
        options = aclruntime.session_options()
        model_path = self.get_resnet_static_om_path(1)
        session = aclruntime.InferenceSession(model_path, device_id, options)

        # create new numpy data according inputs info
        barray = bytearray(session.get_inputs()[0].realsize)
        ndata = np.frombuffer(barray)
        # convert numpy to pytensors in device
        tensor = aclruntime.Tensor(ndata)
        tensor.to_device(device_id)

        outnames = []
        feeds = [tensor]

        outputs = session.run(outnames, feeds)
        print("outputs:", outputs)

        for out in outputs:
            out.to_host()
        print(session.sumary())
Пример #13
0
    def test_infer_no_set_dynamicshape(self):
        device_id = 0
        options = aclruntime.session_options()
        input_tensor_name = self.get_input_tensor_name()
        model_path = self.get_resnet_dymshape_om_path()
        session = aclruntime.InferenceSession(model_path, device_id, options)

        session.set_custom_outsize([10000])

        # create new numpy data according inputs info
        barray = bytearray(session.get_inputs()[0].realsize)
        ndata = np.frombuffer(barray)
        # convert numpy to pytensors in device
        tensor = aclruntime.Tensor(ndata)
        tensor.to_device(device_id)

        outnames = [ session.get_outputs()[0].name ]
        feeds = { session.get_inputs()[0].name : tensor}

        with pytest.raises(RuntimeError) as e:
            outputs = session.run(outnames, feeds)
            print("outputs:", outputs)
Пример #14
0
    def test_get_input_info(self):
        device_id = 0
        options = aclruntime.session_options()
        input_tensor_name = self.get_input_tensor_name()
        model_path = self.get_resnet_dymshape_om_path()
        session = aclruntime.InferenceSession(model_path, device_id, options)

        session.set_dynamic_shape(input_tensor_name+":1,3,112,112")
        session.set_custom_outsize([80000])
        basesize = session.get_inputs()[0].realsize

        session.set_dynamic_shape(input_tensor_name+":1,3,224,224")
        basesize1 = session.get_inputs()[0].realsize
        assert basesize1 == basesize*4

        session.set_dynamic_shape(input_tensor_name+":2,3,224,224")
        basesize2 = session.get_inputs()[0].realsize
        assert basesize2 == basesize1*2

        session.set_dynamic_shape(input_tensor_name+":8,3,224,224")
        basesize3 = session.get_inputs()[0].realsize
        assert basesize3 == basesize2*4
Пример #15
0
def acljson_run():
    device_id = 0
    options = aclruntime.session_options()
    options.acl_json_path = "./acl.json"
    session = aclruntime.InferenceSession(model_path, device_id, options)