Ejemplo n.º 1
0
 def test_mark_custom_outputs(self, identity_identity_network):
     builder, network, parser = func.invoke(
         ModifyNetwork(identity_identity_network,
                       outputs=["identity_out_0"]))
     with builder, network, parser:
         assert network.num_outputs == 1
         assert network.get_output(0).name == "identity_out_0"
Ejemplo n.º 2
0
 def test_unmark_shape_outputs(self, reshape_network):
     builder, network, parser = func.invoke(
         ModifyNetwork(reshape_network,
                       outputs=constants.MARK_ALL,
                       exclude_outputs=["reduce_prod_out_gs_2"]))
     with builder, network, parser:
         assert network.num_outputs == 1
Ejemplo n.º 3
0
 def test_layerwise(self, load_identity_identity):
     load_network = ModifyNetwork(load_identity_identity, outputs=constants.MARK_ALL)
     builder, network, parser = load_network()
     with builder, network, parser:
         for layer in network:
             for index in range(layer.num_outputs):
                 assert layer.get_output(index).is_network_output
Ejemplo n.º 4
0
 def test_mark_shape_outputs(self, reshape_network):
     builder, network, parser = func.invoke(
         ModifyNetwork(reshape_network,
                       outputs=["output", "reduce_prod_out_gs_2"]))
     with builder, network, parser:
         assert network.num_outputs == 2
         assert network.get_output(0).name == "reduce_prod_out_gs_2"
         assert network.get_output(0).is_shape_tensor
Ejemplo n.º 5
0
    def check_network(self, suffix):
        """
        Checks whether the provided network is accurate compared to golden values.

        Returns:
            OrderedDict[str, OutputCompareResult]:
                    A mapping of output names to an object describing whether they matched, and what the
                    required tolerances were.
        """
        from polygraphy.comparator import Comparator, CompareFunc, DataLoader
        from polygraphy.backend.trt import EngineFromNetwork, TrtRunner, ModifyNetwork, SaveEngine

        with G_LOGGER.verbosity(severity=G_LOGGER.severity if self.args.
                                show_output else G_LOGGER.CRITICAL):
            data_loader = tool_util.get_data_loader(self.args)

            self.args.strict_types = True  # HACK: Override strict types so things actually run in the right precision.
            config = tool_util.get_trt_config_loader(self.args,
                                                     data_loader)(self.builder,
                                                                  self.network)

            suffix = "-{:}-{:}".format(suffix, self.precision)
            engine_path = misc.insert_suffix(self.args.save_engine, suffix)

            self.builder, self.network, self.parser = ModifyNetwork(
                (self.builder, self.network, self.parser),
                outputs=self.args.trt_outputs)()

            engine_loader = SaveEngine(EngineFromNetwork(
                (self.builder, self.network, self.parser), config),
                                       path=engine_path)

            runners = [TrtRunner(engine_loader)]

            results = Comparator.run(runners, data_loader=data_loader)
            if self.args.validate:
                Comparator.validate(results)
            results.update(self.golden)

            compare_func = CompareFunc.basic_compare_func(
                atol=self.args.atol,
                rtol=self.args.rtol,
                check_shapes=not self.args.no_shape_check)
            accuracy_result = Comparator.compare_accuracy(
                results, compare_func=compare_func)

        tolerances = list(accuracy_result.values())[0][
            0]  # First iteration of first runner pair
        for name, req_tol in tolerances.items():
            if bool(req_tol):
                G_LOGGER.success(
                    "PASSED | Output: {:} | Required Tolerances: {:}".format(
                        name, req_tol))
            else:
                G_LOGGER.error(
                    "FAILED | Output: {:} | Required Tolerances: {:}".format(
                        name, req_tol))
        return accuracy_result
Ejemplo n.º 6
0
 def test_exclude_outputs_with_mark_layerwise(self,
                                              identity_identity_network):
     builder, network, parser = func.invoke(
         ModifyNetwork(identity_identity_network,
                       outputs=constants.MARK_ALL,
                       exclude_outputs=["identity_out_2"]))
     with builder, network, parser:
         assert network.num_outputs == 1
         assert network.get_output(0).name == "identity_out_0"
Ejemplo n.º 7
0
    def test_modify_network(self):
        from polygraphy.backend.trt import ModifyNetwork

        ModifyNetwork(None)
Ejemplo n.º 8
0
 def test_exclude_outputs_with_layerwise(self, load_identity_identity):
     builder, network, parser = ModifyNetwork(load_identity_identity, outputs=constants.MARK_ALL, exclude_outputs=["identity_out_2"])()
     with builder, network, parser:
         assert network.num_outputs == 1
         assert network.get_output(0).name == "identity_out_0"
Ejemplo n.º 9
0
 def test_custom_outputs(self, load_identity_identity):
     builder, network, parser = ModifyNetwork(load_identity_identity, outputs=["identity_out_0"])()
     with builder, network, parser:
         assert network.num_outputs == 1
         assert network.get_output(0).name == "identity_out_0"