MCPcopy Index your code
hub / github.com/apache/tvm / test_coreml_runtime

Function test_coreml_runtime

tests/python/contrib/test_coreml_runtime.py:35–104  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

33
34@pytest.mark.skip("skip because coremltools is not available in CI")
35def test_coreml_runtime():
36 import coremltools
37 from coremltools.models.neural_network import NeuralNetworkBuilder
38
39 def create_coreml_model():
40 shape = (2,)
41 alpha = 2
42
43 inputs = [
44 ("input0", coremltools.models.datatypes.Array(*shape)),
45 ("input1", coremltools.models.datatypes.Array(*shape)),
46 ]
47 outputs = [
48 ("output0", coremltools.models.datatypes.Array(*shape)),
49 ("output1", coremltools.models.datatypes.Array(*shape)),
50 ]
51 builder = NeuralNetworkBuilder(inputs, outputs)
52 builder.add_elementwise(
53 name="Add", input_names=["input0", "input1"], output_name="output0", mode="ADD"
54 )
55 builder.add_elementwise(
56 name="Mul", alpha=alpha, input_names=["input0"], output_name="output1", mode="MULTIPLY"
57 )
58 return coremltools.models.MLModel(builder.spec)
59
60 def verify(coreml_model, model_path, dev):
61 coreml_model = create_coreml_model()
62
63 out_spec = coreml_model.output_description._fd_spec
64 out_names = [spec.name for spec in out_spec]
65
66 # inference via coremltools
67 inputs = {}
68 for in_spec in coreml_model.input_description._fd_spec:
69 name = in_spec.name
70 shape = in_spec.type.multiArrayType.shape
71 inputs[name] = np.random.random_sample(shape)
72
73 coreml_outputs = [coreml_model.predict(inputs)[name] for name in out_names]
74
75 # inference via tvm coreml runtime
76 runtime = coreml_runtime.create("main", model_path, dev)
77 for name in inputs:
78 runtime.set_input(name, tvm.runtime.tensor(inputs[name], dev))
79 runtime.invoke()
80 tvm_outputs = [runtime.get_output(i).numpy() for i in range(runtime.get_num_outputs())]
81
82 for c_out, t_out in zip(coreml_outputs, tvm_outputs):
83 np.testing.assert_almost_equal(c_out, t_out, 3)
84
85 def check_remote(coreml_model):
86 temp = utils.tempdir()
87 compiled_model = xcode.compile_coreml(coreml_model, out_dir=temp.temp_dir)
88 xcode.popen_test_rpc(
89 proxy_host, proxy_port, key, destination=destination, libs=[compiled_model]
90 )
91 compiled_model = os.path.basename(compiled_model)
92 remote = rpc.connect(proxy_host, proxy_port, key=key)

Callers 1

Calls 3

create_coreml_modelFunction · 0.85
check_localFunction · 0.85
check_remoteFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…