OTX v2 tiled instance segmentation models fail to perform PTQ optimization
goodsong81 opened this issue · comments
Describe the bug
Traceback (most recent call last):
File "/home/songkich/miniconda3/envs/otx-v2/bin/otx", line 8, in <module>
sys.exit(main())
^^^^^^
File "/mnt/sdb/workarea/otx/src/otx/cli/__init__.py", line 17, in main
OTXCLI()
File "/mnt/sdb/workarea/otx/src/otx/cli/cli.py", line 55, in __init__
self.run()
File "/mnt/sdb/workarea/otx/src/otx/cli/cli.py", line 574, in run
fn(**fn_kwargs)
File "/mnt/sdb/workarea/otx/src/otx/engine/engine.py", line 564, in optimize
return model.optimize(
^^^^^^^^^^^^^^^
File "/mnt/sdb/workarea/otx/src/otx/core/model/entity/base.py", line 452, in optimize
compressed_model = nncf.quantize( # type: ignore[attr-defined]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/quantization/quantize_model.py", line 98, in quantize
return quantize_impl(
^^^^^^^^^^^^^^
File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/openvino/quantization/quantize_model.py", line 349, in quantize_impl
return quantize_fn(
^^^^^^^^^^^^
File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/telemetry/decorator.py", line 72, in wrapped
retval = fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/openvino/quantization/quantize_model.py", line 164, in native_quantize_impl
quantized_model = quantization_algorithm.apply(model, graph, dataset=calibration_dataset)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/quantization/algorithms/post_training/algorithm.py", line 112, in apply
return self._pipeline.run_from_step(model, dataset, graph, 0, step_index_to_statistics)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/quantization/algorithms/pipeline.py", line 161, in run_from_step
step_statistics = collect_statistics(statistic_points, step_model, step_graph, dataset)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/quantization/algorithms/pipeline.py", line 49, in collect_statistics
statistics_aggregator.collect_statistics(model, graph)
File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/openvino/statistics/aggregator.py", line 34, in collect_statistics
super().collect_statistics(model, graph)
File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/common/tensor_statistics/aggregator.py", line 63, in collect_statistics
for input_data in track(
File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/nncf/common/logging/track_progress.py", line 145, in __iter__
yield from self.progress.track(
File "/home/songkich/miniconda3/envs/otx-v2/lib/python3.11/site-packages/rich/progress.py", line 1209, in track
for value in sequence:
File "/mnt/sdb/workarea/otx/src/otx/core/model/entity/base.py", line 466, in transform_fn
resized_image = self.model.resize(image, (self.model.w, self.model.h))
^^^^^^^^^^^^^^^^^
AttributeError: 'InstanceSegmentationTiler' object has no attribute 'resize'
Steps to Reproduce
On the latest releases/2.0.0 (16683f2)
otx train --config src/otx/recipe/instance_segmentation/maskrcnn_efficientnetb2b_tile.yaml --data_root tests/assets/car_tree_bug --work_dir /tmp/tile
otx export --work_dir /tmp/tile
otx optimize --work_dir /tmp/tile --checkpoint /tmp/tile/.latest/export/exported_model.xml
Environment:
- OS:
- Framework version:
- Python version:
- OpenVINO version:
- CUDA/cuDNN version:
- GPU model and memory:
@harimkang I created 2 PRs one for develop the other for releases/2.0.0:
https://github.com/openvinotoolkit/training_extensions/pull/3261/files
https://github.com/openvinotoolkit/training_extensions/pull/3262/files
Merged PR - #3262
@eugene123tw @harimkang Similar but different issue after the fix (#3262).
Traceback (most recent call last):
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/bin/otx", line 8, in <module>
sys.exit(main())
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/otx/cli/__init__.py", line 17, in main
OTXCLI()
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/otx/cli/cli.py", line 55, in __init__
self.run()
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/otx/cli/cli.py", line 574, in run
fn(**fn_kwargs)
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/otx/engine/engine.py", line 564, in optimize
return model.optimize(
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/otx/core/model/entity/base.py", line 453, in optimize
compressed_model = nncf.quantize( # type: ignore[attr-defined]
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/quantization/quantize_model.py", line 98, in quantize
return quantize_impl(
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/openvino/quantization/quantize_model.py", line 349, in quantize_impl
return quantize_fn(
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/telemetry/decorator.py", line 72, in wrapped
retval = fn(*args, **kwargs)
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/openvino/quantization/quantize_model.py", line 164, in native_quantize_impl
quantized_model = quantization_algorithm.apply(model, graph, dataset=calibration_dataset)
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/quantization/algorithms/post_training/algorithm.py", line 112, in apply
return self._pipeline.run_from_step(model, dataset, graph, 0, step_index_to_statistics)
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/quantization/algorithms/pipeline.py", line 161, in run_from_step
step_statistics = collect_statistics(statistic_points, step_model, step_graph, dataset)
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/quantization/algorithms/pipeline.py", line 49, in collect_statistics
statistics_aggregator.collect_statistics(model, graph)
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/openvino/statistics/aggregator.py", line 34, in collect_statistics
super().collect_statistics(model, graph)
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/common/tensor_statistics/aggregator.py", line 63, in collect_statistics
for input_data in track(
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/nncf/common/logging/track_progress.py", line 145, in __iter__
yield from self.progress.track(
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/rich/progress.py", line 1209, in track
for value in sequence:
File "/home/validation/actions-runner/_work/training_extensions/training_extensions/.tox/perf-benchmark/lib/python3.10/site-packages/otx/core/model/entity/base.py", line 471, in transform_fn
return self.model._change_layout(resized_image) # noqa: SLF001
AttributeError: 'InstanceSegmentationTiler' object has no attribute '_change_layout'
https://github.com/openvinotoolkit/training_extensions/actions/runs/8551379495/job/23430269390
I forgot to change one line in releases/2.0.0: #3282
@goodsong81 #3282 merged, please check again. Thank you: