mirror of
https://github.com/clearml/clearml
synced 2025-02-07 21:33:25 +00:00
Removed automagic reuse Model objects
This commit is contained in:
parent
71003e02b2
commit
7ab93e7dba
@ -50,8 +50,8 @@ class _Empty(object):
|
|||||||
|
|
||||||
|
|
||||||
class WeightsFileHandler(object):
|
class WeightsFileHandler(object):
|
||||||
_model_out_store_lookup = {}
|
# _model_out_store_lookup = {}
|
||||||
_model_in_store_lookup = {}
|
# _model_in_store_lookup = {}
|
||||||
_model_store_lookup_lock = threading.Lock()
|
_model_store_lookup_lock = threading.Lock()
|
||||||
_model_pre_callbacks = {}
|
_model_pre_callbacks = {}
|
||||||
_model_post_callbacks = {}
|
_model_post_callbacks = {}
|
||||||
@ -185,13 +185,15 @@ class WeightsFileHandler(object):
|
|||||||
if model_info.model:
|
if model_info.model:
|
||||||
trains_in_model = model_info.model
|
trains_in_model = model_info.model
|
||||||
else:
|
else:
|
||||||
trains_in_model, ref_model = WeightsFileHandler._model_in_store_lookup.get(
|
# # disable model reuse, let Model module try to find it for use
|
||||||
id(model) if model is not None else None, (None, None))
|
trains_in_model, ref_model = None, None
|
||||||
# noinspection PyCallingNonCallable
|
# trains_in_model, ref_model = WeightsFileHandler._model_in_store_lookup.get(
|
||||||
if ref_model is not None and model != ref_model():
|
# id(model) if model is not None else None, (None, None))
|
||||||
# old id pop it - it was probably reused because the object is dead
|
# # noinspection PyCallingNonCallable
|
||||||
WeightsFileHandler._model_in_store_lookup.pop(id(model))
|
# if ref_model is not None and model != ref_model():
|
||||||
trains_in_model, ref_model = None, None
|
# # old id pop it - it was probably reused because the object is dead
|
||||||
|
# WeightsFileHandler._model_in_store_lookup.pop(id(model))
|
||||||
|
# trains_in_model, ref_model = None, None
|
||||||
|
|
||||||
# check if object already has InputModel
|
# check if object already has InputModel
|
||||||
model_name_id = getattr(model, 'name', '') if model else ''
|
model_name_id = getattr(model, 'name', '') if model else ''
|
||||||
@ -241,13 +243,15 @@ class WeightsFileHandler(object):
|
|||||||
pass
|
pass
|
||||||
trains_in_model = model_info.model
|
trains_in_model = model_info.model
|
||||||
|
|
||||||
if model is not None:
|
# # disable model reuse, let Model module try to find it for use
|
||||||
# noinspection PyBroadException
|
# if model is not None:
|
||||||
try:
|
# # noinspection PyBroadException
|
||||||
ref_model = weakref.ref(model)
|
# try:
|
||||||
except Exception:
|
# ref_model = weakref.ref(model)
|
||||||
ref_model = None
|
# except Exception:
|
||||||
WeightsFileHandler._model_in_store_lookup[id(model)] = (trains_in_model, ref_model)
|
# ref_model = None
|
||||||
|
# WeightsFileHandler._model_in_store_lookup[id(model)] = (trains_in_model, ref_model)
|
||||||
|
|
||||||
# todo: support multiple models for the same task
|
# todo: support multiple models for the same task
|
||||||
task.connect(trains_in_model)
|
task.connect(trains_in_model)
|
||||||
# if we are running remotely we should deserialize the object
|
# if we are running remotely we should deserialize the object
|
||||||
@ -285,15 +289,17 @@ class WeightsFileHandler(object):
|
|||||||
try:
|
try:
|
||||||
WeightsFileHandler._model_store_lookup_lock.acquire()
|
WeightsFileHandler._model_store_lookup_lock.acquire()
|
||||||
|
|
||||||
|
# # disable model reuse, let Model module try to find it for use
|
||||||
|
trains_out_model, ref_model = None, None
|
||||||
# check if object already has InputModel
|
# check if object already has InputModel
|
||||||
trains_out_model, ref_model = WeightsFileHandler._model_out_store_lookup.get(
|
# trains_out_model, ref_model = WeightsFileHandler._model_out_store_lookup.get(
|
||||||
id(model) if model is not None else None, (None, None))
|
# id(model) if model is not None else None, (None, None))
|
||||||
# notice ref_model() is not an error/typo this is a weakref object call
|
# # notice ref_model() is not an error/typo this is a weakref object call
|
||||||
# noinspection PyCallingNonCallable
|
# # noinspection PyCallingNonCallable
|
||||||
if ref_model is not None and model != ref_model():
|
# if ref_model is not None and model != ref_model():
|
||||||
# old id pop it - it was probably reused because the object is dead
|
# # old id pop it - it was probably reused because the object is dead
|
||||||
WeightsFileHandler._model_out_store_lookup.pop(id(model))
|
# WeightsFileHandler._model_out_store_lookup.pop(id(model))
|
||||||
trains_out_model, ref_model = None, None
|
# trains_out_model, ref_model = None, None
|
||||||
|
|
||||||
model_info = WeightsFileHandler.ModelInfo(
|
model_info = WeightsFileHandler.ModelInfo(
|
||||||
model=trains_out_model, upload_filename=None, local_model_path=saved_path,
|
model=trains_out_model, upload_filename=None, local_model_path=saved_path,
|
||||||
@ -372,13 +378,14 @@ class WeightsFileHandler(object):
|
|||||||
framework=framework,
|
framework=framework,
|
||||||
base_model_id=in_model_id
|
base_model_id=in_model_id
|
||||||
)
|
)
|
||||||
if model is not None:
|
# # disable model reuse, let Model module try to find it for use
|
||||||
# noinspection PyBroadException
|
# if model is not None:
|
||||||
try:
|
# # noinspection PyBroadException
|
||||||
ref_model = weakref.ref(model)
|
# try:
|
||||||
except Exception:
|
# ref_model = weakref.ref(model)
|
||||||
ref_model = None
|
# except Exception:
|
||||||
WeightsFileHandler._model_out_store_lookup[id(model)] = (trains_out_model, ref_model)
|
# ref_model = None
|
||||||
|
# WeightsFileHandler._model_out_store_lookup[id(model)] = (trains_out_model, ref_model)
|
||||||
|
|
||||||
model_info.model = trains_out_model
|
model_info.model = trains_out_model
|
||||||
# call post model callback functions
|
# call post model callback functions
|
||||||
|
Loading…
Reference in New Issue
Block a user