On CPU processing 10+ questions with moondream can easily last much longer than the time out on the lock in the answer file.
This means that a second instance can start processing the same image as the first one. And continue to do so over the rest of the collection. Essentially making the second instance useless and wasting resources.
Option 1: Increasing the time out
Doing so can be annoying during testing phase, when forced interruption and quick retry are frequent. Also there is never a guarantee that an arbitrary duration will very be enough.
Option 2: Locker keeps updating the time while processing
Approach is more sound. But it is difficult to implement because bvqa sends all the questions at once to the describer. The describer only returns when all completed. So we either need:
an answer callback (if the describer allows it)
or a separate thread in bvqa to keep updating the time while waiting for the describer to return
On CPU processing 10+ questions with moondream can easily last much longer than the time out on the lock in the answer file.
This means that a second instance can start processing the same image as the first one. And continue to do so over the rest of the collection. Essentially making the second instance useless and wasting resources.
Option 1: Increasing the time out
Doing so can be annoying during testing phase, when forced interruption and quick retry are frequent. Also there is never a guarantee that an arbitrary duration will very be enough.
Option 2: Locker keeps updating the time while processing
Approach is more sound. But it is difficult to implement because bvqa sends all the questions at once to the describer. The describer only returns when all completed. So we either need: