()
| 129 | |
| 130 | |
| 131 | def main() -> None: |
| 132 | parser = args_parser() |
| 133 | args = parser.parse_args() |
| 134 | |
| 135 | if args.model_name not in MODEL_NAME_TO_MODEL: |
| 136 | raise RuntimeError( |
| 137 | f"Model {args.model_name} is not a valid name. " |
| 138 | f"Available models are {list(MODEL_NAME_TO_MODEL.keys())}." |
| 139 | ) |
| 140 | |
| 141 | valid_compute_units = [compute_unit.name.lower() for compute_unit in ct.ComputeUnit] |
| 142 | if args.compute_unit not in valid_compute_units: |
| 143 | raise RuntimeError( |
| 144 | f"{args.compute_unit} is invalid. " |
| 145 | f"Valid compute units are {valid_compute_units}." |
| 146 | ) |
| 147 | |
| 148 | build_devtools_runner_including_coreml( |
| 149 | root_dir_path=get_root_dir_path(), conda_env_name=args.conda_environment_name |
| 150 | ) |
| 151 | |
| 152 | model, example_inputs, _, _ = EagerModelFactory.create_model( |
| 153 | *MODEL_NAME_TO_MODEL[args.model_name] |
| 154 | ) |
| 155 | |
| 156 | model.eval() |
| 157 | edge_program = module_to_edge( |
| 158 | module=model, |
| 159 | example_inputs=example_inputs, |
| 160 | ) |
| 161 | |
| 162 | coreml_compile_specs = get_compile_specs_from_args(args) |
| 163 | |
| 164 | with tempfile.TemporaryDirectory() as temp_dir_name: |
| 165 | working_dir_path = Path(temp_dir_name) / "debugger" |
| 166 | working_dir_path.mkdir(parents=True, exist_ok=True) |
| 167 | comparison_result = compare_intermediate_tensors( |
| 168 | edge_program=edge_program, |
| 169 | example_inputs=example_inputs, |
| 170 | coreml_compile_specs=coreml_compile_specs, |
| 171 | model_name=args.model_name, |
| 172 | working_dir_path=working_dir_path, |
| 173 | ) |
| 174 | |
| 175 | print( |
| 176 | tabulate(comparison_result.to_dataframe(), headers="keys", tablefmt="grid") |
| 177 | ) |
| 178 | |
| 179 | |
| 180 | if __name__ == "__main__": |
no test coverage detected