[Fix] Estimate sub-model latency in the process of NAS #568
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
I tried to add latency constrains in NAS (add
constraints_range=dict(latency=(0., 10.))
in dicttrain_cfg
ofconfigs/nas/mmcls/spos/spos_mobilenet_search_8xb128_in1k.py
), but found there was no time measurement actually.Through this PR, sub-model time measurement will be properly performed in NAS.
Reason of bug
When we get sub-model informations as 'flops / params / latency' in
mmrazor/engine/runner/utils/check.py
, we need results from functionestimator.estimate
. However, variablelatency_cfg
is not provided to functionestimator.estimate
, andlatency_cfg
is default to None. Thenmeasure_latency
will be always False inmmrazor/models/task_modules/estimators/resource_estimator.py
and no time measurement will be produced.Modification
Add Args
measure_latency
in functionestimator.estimate
. Make some code modification.