code-loader 1.0.202.dev0__tar.gz → 1.0.202.dev1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/PKG-INFO +1 -1
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/inner_leap_binder/leapbinder_decorators.py +14 -36
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/pyproject.toml +1 -1
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/LICENSE +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/README.md +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/__init__.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/contract/__init__.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/contract/datasetclasses.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/contract/enums.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/contract/exceptions.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/contract/mapping.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/contract/responsedataclasses.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/contract/sim_config.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/contract/visualizer_classes.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/default_losses.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/default_metrics.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/experiment_api/__init__.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/experiment_api/api.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/experiment_api/cli_config_utils.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/experiment_api/client.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/experiment_api/epoch.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/experiment_api/experiment.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/experiment_api/experiment_context.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/experiment_api/types.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/experiment_api/utils.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/inner_leap_binder/__init__.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/inner_leap_binder/leapbinder.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/leaploader.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/leaploaderbase.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/mixpanel_tracker.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/plot_functions/__init__.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/plot_functions/plot_functions.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/plot_functions/visualize.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/utils.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/visualizers/__init__.py +0 -0
- {code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/visualizers/default_visualizers.py +0 -0
|
@@ -733,12 +733,22 @@ def tensorleap_load_model(prediction_types: Optional[List[PredictionTypeHandler]
|
|
|
733
733
|
assert isinstance(input_dict, dict), \
|
|
734
734
|
f'Expected input_dict to be a dict, got {type(input_dict)} instead.'
|
|
735
735
|
seen: set = set()
|
|
736
|
-
|
|
736
|
+
# A declared KV-cache is threaded by the platform, not wired from an input
|
|
737
|
+
# encoder, so those slots have no mapping node to assign — the loop feeds
|
|
738
|
+
# them real arrays even in mapping mode. Skip them, and count only the wired
|
|
739
|
+
# inputs so the remaining slot indices stay contiguous.
|
|
740
|
+
step_handler = leap_binder.setup_container.autoregressive_step
|
|
741
|
+
cache_tensors = (step_handler.cache_tensors if step_handler else None) or {}
|
|
742
|
+
slot = 0
|
|
743
|
+
for input_key, elem in input_dict.items():
|
|
744
|
+
if input_key in cache_tensors:
|
|
745
|
+
continue
|
|
737
746
|
self._reject_reused_input_source(elem, seen)
|
|
738
747
|
if isinstance(input_key, NodeMappingType):
|
|
739
748
|
elem.node_mapping.type = input_key
|
|
740
749
|
else:
|
|
741
|
-
elem.node_mapping.type = _safe_get_item(
|
|
750
|
+
elem.node_mapping.type = _safe_get_item(slot)
|
|
751
|
+
slot += 1
|
|
742
752
|
|
|
743
753
|
return ModelOutputPlaceholder()
|
|
744
754
|
|
|
@@ -1893,18 +1903,6 @@ class _MappingStatePlaceholder:
|
|
|
1893
1903
|
self._unsupported()
|
|
1894
1904
|
|
|
1895
1905
|
|
|
1896
|
-
def _shares_base(leaf, original):
|
|
1897
|
-
"""True when `leaf` is `original` or a view onto it (e.g. original[None])."""
|
|
1898
|
-
if leaf is original:
|
|
1899
|
-
return True
|
|
1900
|
-
base = getattr(leaf, 'base', None)
|
|
1901
|
-
while base is not None:
|
|
1902
|
-
if base is original:
|
|
1903
|
-
return True
|
|
1904
|
-
base = getattr(base, 'base', None)
|
|
1905
|
-
return False
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
1906
|
class _ModelLoopContext:
|
|
1909
1907
|
def __init__(self, sample_id, preprocess_response, prediction_names, is_mapping,
|
|
1910
1908
|
cache_tensors=None):
|
|
@@ -2016,29 +2014,9 @@ class _ModelLoopContext:
|
|
|
2016
2014
|
# identity check rather than demanding the hook produce tensors it cannot see.
|
|
2017
2015
|
if isinstance(fed, dict) and self.cache_tensors:
|
|
2018
2016
|
fed = {key: value for key, value in fed.items() if key not in self.cache_tensors}
|
|
2017
|
+
fed_ids = {id(leaf) for leaf in _ndarray_leaves(fed)}
|
|
2019
2018
|
hook_ids = {id(value) for value in self.fed_inputs.values()}
|
|
2020
|
-
|
|
2021
|
-
# axis an ONNX model needs and shares its memory, so `.base` is the original. Allowing
|
|
2022
|
-
# views keeps the guarantee that matters — no tensor may be COMPUTED between the hook
|
|
2023
|
-
# and the model, since the platform would not see that work — while not forcing every
|
|
2024
|
-
# integration to choose between the identity check and a model that expects a batch
|
|
2025
|
-
# dimension. A genuinely new array has no base among the hook's tensors.
|
|
2026
|
-
def _from_hook(leaf):
|
|
2027
|
-
if id(leaf) in hook_ids:
|
|
2028
|
-
return True
|
|
2029
|
-
base = getattr(leaf, 'base', None)
|
|
2030
|
-
while base is not None:
|
|
2031
|
-
if id(base) in hook_ids:
|
|
2032
|
-
return True
|
|
2033
|
-
base = getattr(base, 'base', None)
|
|
2034
|
-
return False
|
|
2035
|
-
|
|
2036
|
-
fed_leaves = list(_ndarray_leaves(fed))
|
|
2037
|
-
matched = {id(value) for value in self.fed_inputs.values()
|
|
2038
|
-
if any(_from_hook(leaf) and (id(leaf) == id(value)
|
|
2039
|
-
or _shares_base(leaf, value))
|
|
2040
|
-
for leaf in fed_leaves)}
|
|
2041
|
-
if not all(_from_hook(leaf) for leaf in fed_leaves) or matched != hook_ids:
|
|
2019
|
+
if fed_ids != hook_ids:
|
|
2042
2020
|
extra = (' (the declared KV-cache inputs are exempt — those are threaded for you)'
|
|
2043
2021
|
if self.cache_tensors else '')
|
|
2044
2022
|
self._fail('the model must be fed exactly the tensors the last hook call returned — '
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/contract/datasetclasses.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/contract/responsedataclasses.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/contract/visualizer_classes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/experiment_api/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/experiment_api/cli_config_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/experiment_api/experiment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/inner_leap_binder/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/inner_leap_binder/leapbinder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/plot_functions/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/plot_functions/plot_functions.py
RENAMED
|
File without changes
|
{code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/plot_functions/visualize.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.202.dev0 → code_loader-1.0.202.dev1}/code_loader/visualizers/default_visualizers.py
RENAMED
|
File without changes
|