diff --git a/examples/meter-detection/FAIL.md b/examples/meter-detection/FAIL.md new file mode 100644 index 0000000..8245c9f --- /dev/null +++ b/examples/meter-detection/FAIL.md @@ -0,0 +1,156 @@ +❯ qc-cli ai-hub upload \ + "examples/meter-detection/data/aihub_calibration" \ + "examples/meter-detection/data/inputs.npz" +╭────────────────────────────── Traceback (most recent call last) ───────────────────────────────╮ +│ /Users/sami/dev/qualcomm/qc-cli/src/commands/ai_hub.py:371 in upload │ +│ │ +│ 368 │ quantized_model_id: str | None = None │ +│ 369 │ compiled_model_id: str | None = None │ +│ 370 │ if UploadStep.quantize in selected: │ +│ ❱ 371 │ │ quantized_model_id = _quantize_step(cfg, config, calibration_path, from_job, │ +│ model_s3_uri, onnx_path) │ +│ 372 │ if UploadStep.compile in selected: │ +│ 373 │ │ compiled_model_id = _compile_step( │ +│ 374 │ │ │ cfg, │ +│ │ +│ /Users/sami/dev/qualcomm/qc-cli/src/commands/ai_hub.py:142 in _quantize_step │ +│ │ +│ 139 │ st = state_ops.store(config_path) │ +│ 140 │ specs = _input_specs(cfg) │ +│ 141 │ try: │ +│ ❱ 142 │ │ resolved = resolve_onnx( │ +│ 143 │ │ │ cfg=cfg, │ +│ 144 │ │ │ output_dir=cfg.aihub.output_dir, │ +│ 145 │ │ │ from_job=from_job, │ +│ │ +│ /Users/sami/dev/qualcomm/qc-cli/src/qualcomm/artifacts.py:69 in resolve_onnx │ +│ │ +│ 66 │ run_name = job or Path(artifact).name.removesuffix(".tar.gz").replace("/", "-") │ +│ 67 │ root = Path(output_dir) / run_name / "source" │ +│ 68 │ tar_path = root / "model.tar.gz" │ +│ ❱ 69 │ s3_ops.download_file(cfg.aws.region, cfg.aws.profile, artifact, str(tar_path)) │ +│ 70 │ │ +│ 71 │ extract_dir = root / "extracted" │ +│ 72 │ extract_dir.mkdir(parents=True, exist_ok=True) │ +│ │ +│ /Users/sami/dev/qualcomm/qc-cli/src/aws/s3.py:38 in download_file │ +│ │ +│ 35 │ │ raise ValueError(f"Expected S3 URI with bucket and key, got: {s3_uri}") │ +│ 36 │ dest = Path(local_path) │ +│ 37 │ dest.parent.mkdir(parents=True, exist_ok=True) │ +│ ❱ 38 │ _client(region, profile).download_file(bucket, key, str(dest)) │ +│ 39 │ return str(dest) │ +│ 40 │ +│ 41 │ +│ │ +│ /Users/sami/dev/qualcomm/qc-cli/.venv/lib/python3.13/site-packages/botocore/context.py:123 in │ +│ wrapper │ +│ │ +│ 120 │ │ │ with start_as_current_context(): │ +│ 121 │ │ │ │ if hook: │ +│ 122 │ │ │ │ │ hook() │ +│ ❱ 123 │ │ │ │ return func(*args, **kwargs) │ +│ 124 │ │ │ +│ 125 │ │ return wrapper │ +│ 126 │ +│ │ +│ /Users/sami/dev/qualcomm/qc-cli/.venv/lib/python3.13/site-packages/boto3/s3/inject.py:223 in │ +│ download_file │ +│ │ +│ 220 │ │ transfer. │ +│ 221 │ """ │ +│ 222 │ with S3Transfer(self, Config) as transfer: │ +│ ❱ 223 │ │ return transfer.download_file( │ +│ 224 │ │ │ bucket=Bucket, │ +│ 225 │ │ │ key=Key, │ +│ 226 │ │ │ filename=Filename, │ +│ │ +│ /Users/sami/dev/qualcomm/qc-cli/.venv/lib/python3.13/site-packages/boto3/s3/transfer.py:406 in │ +│ download_file │ +│ │ +│ 403 │ │ │ bucket, key, filename, extra_args, subscribers │ +│ 404 │ │ ) │ +│ 405 │ │ try: │ +│ ❱ 406 │ │ │ future.result() │ +│ 407 │ │ # This is for backwards compatibility where when retries are │ +│ 408 │ │ # exceeded we need to throw the same error from boto3 instead of │ +│ 409 │ │ # s3transfer's built in RetriesExceededError as current users are │ +│ │ +│ /Users/sami/dev/qualcomm/qc-cli/.venv/lib/python3.13/site-packages/s3transfer/futures.py:111 │ +│ in result │ +│ │ +│ 108 │ │ │ # Usually the result() method blocks until the transfer is done, │ +│ 109 │ │ │ # however if a KeyboardInterrupt is raised we want want to exit │ +│ 110 │ │ │ # out of this and propagate the exception. │ +│ ❱ 111 │ │ │ return self._coordinator.result() │ +│ 112 │ │ except KeyboardInterrupt as e: │ +│ 113 │ │ │ self.cancel() │ +│ 114 │ │ │ raise e │ +│ │ +│ /Users/sami/dev/qualcomm/qc-cli/.venv/lib/python3.13/site-packages/s3transfer/futures.py:287 │ +│ in result │ +│ │ +│ 284 │ │ # Once done waiting, raise an exception if present or return the │ +│ 285 │ │ # final result. │ +│ 286 │ │ if self._exception: │ +│ ❱ 287 │ │ │ raise self._exception │ +│ 288 │ │ return self._result │ +│ 289 │ │ +│ 290 │ def cancel(self, msg='', exc_type=CancelledError): │ +│ │ +│ /Users/sami/dev/qualcomm/qc-cli/.venv/lib/python3.13/site-packages/s3transfer/tasks.py:272 in │ +│ _main │ +│ │ +│ 269 │ │ │ │ +│ 270 │ │ │ # Call the submit method to start submitting tasks to execute the │ +│ 271 │ │ │ # transfer. │ +│ ❱ 272 │ │ │ self._submit(transfer_future=transfer_future, **kwargs) │ +│ 273 │ │ except BaseException as e: │ +│ 274 │ │ │ # If there was an exception raised during the submission of task │ +│ 275 │ │ │ # there is a chance that the final task that signals if a transfer │ +│ │ +│ /Users/sami/dev/qualcomm/qc-cli/.venv/lib/python3.13/site-packages/s3transfer/download.py:355 │ +│ in _submit │ +│ │ +│ 352 │ │ │ transfer_future.meta.size is None │ +│ 353 │ │ │ or transfer_future.meta.etag is None │ +│ 354 │ │ ): │ +│ ❱ 355 │ │ │ response = client.head_object( │ +│ 356 │ │ │ │ Bucket=transfer_future.meta.call_args.bucket, │ +│ 357 │ │ │ │ Key=transfer_future.meta.call_args.key, │ +│ 358 │ │ │ │ **transfer_future.meta.call_args.extra_args, │ +│ │ +│ /Users/sami/dev/qualcomm/qc-cli/.venv/lib/python3.13/site-packages/botocore/client.py:602 in │ +│ _api_call │ +│ │ +│ 599 │ │ │ │ │ f"{py_operation_name}() only accepts keyword arguments." │ +│ 600 │ │ │ │ ) │ +│ 601 │ │ │ # The "self" in this scope is referring to the BaseClient. │ +│ ❱ 602 │ │ │ return self._make_api_call(operation_name, kwargs) │ +│ 603 │ │ │ +│ 604 │ │ _api_call.__name__ = str(py_operation_name) │ +│ 605 │ +│ │ +│ /Users/sami/dev/qualcomm/qc-cli/.venv/lib/python3.13/site-packages/botocore/context.py:123 in │ +│ wrapper │ +│ │ +│ 120 │ │ │ with start_as_current_context(): │ +│ 121 │ │ │ │ if hook: │ +│ 122 │ │ │ │ │ hook() │ +│ ❱ 123 │ │ │ │ return func(*args, **kwargs) │ +│ 124 │ │ │ +│ 125 │ │ return wrapper │ +│ 126 │ +│ │ +│ /Users/sami/dev/qualcomm/qc-cli/.venv/lib/python3.13/site-packages/botocore/client.py:1078 in │ +│ _make_api_call │ +│ │ +│ 1075 │ │ │ │ 'error_code_override' │ +│ 1076 │ │ │ ) or error_info.get("Code") │ +│ 1077 │ │ │ error_class = self.exceptions.from_code(error_code) │ +│ ❱ 1078 │ │ │ raise error_class(parsed_response, operation_name) │ +│ 1079 │ │ else: │ +│ 1080 │ │ │ return parsed_response │ +│ 1081 │ +╰────────────────────────────────────────────────────────────────────────────────────────────────╯ +ClientError: An error occurred (404) when calling the HeadObject operation: Not Found \ No newline at end of file