code-loader 1.0.164.dev1__tar.gz → 1.0.165.dev2__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.164.dev1 → code_loader-1.0.165.dev2}/PKG-INFO +1 -1
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/inner_leap_binder/leapbinder_decorators.py +46 -18
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/pyproject.toml +1 -1
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/LICENSE +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/README.md +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/__init__.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/contract/__init__.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/contract/datasetclasses.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/contract/enums.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/contract/exceptions.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/contract/mapping.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/contract/responsedataclasses.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/contract/visualizer_classes.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/default_losses.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/default_metrics.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/experiment_api/__init__.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/experiment_api/api.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/experiment_api/cli_config_utils.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/experiment_api/client.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/experiment_api/epoch.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/experiment_api/experiment.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/experiment_api/experiment_context.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/experiment_api/types.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/experiment_api/utils.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/inner_leap_binder/__init__.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/inner_leap_binder/leapbinder.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/leaploader.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/leaploaderbase.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/mixpanel_tracker.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/plot_functions/__init__.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/plot_functions/plot_functions.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/plot_functions/visualize.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/utils.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/visualizers/__init__.py +0 -0
- {code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/visualizers/default_visualizers.py +0 -0
|
@@ -362,7 +362,7 @@ def tensorleap_load_model(prediction_types: Optional[List[PredictionTypeHandler]
|
|
|
362
362
|
|
|
363
363
|
class ModelPlaceholder:
|
|
364
364
|
def __init__(self, prediction_types):
|
|
365
|
-
self.model = load_model_func()
|
|
365
|
+
self.model = load_model_func()
|
|
366
366
|
self.prediction_types = prediction_types
|
|
367
367
|
_validate_result(self.model)
|
|
368
368
|
|
|
@@ -532,23 +532,14 @@ def tensorleap_custom_metric(name: str,
|
|
|
532
532
|
|
|
533
533
|
direction_was_provided = direction is not _UNSET
|
|
534
534
|
|
|
535
|
-
if not direction_was_provided:
|
|
536
|
-
direction = MetricDirection.Downward
|
|
537
|
-
if not _call_from_tl_platform:
|
|
538
|
-
store_warning_by_param(
|
|
539
|
-
param_name="direction",
|
|
540
|
-
user_func_name=user_function.__name__,
|
|
541
|
-
default_value=direction,
|
|
542
|
-
link_to_docs="https://docs.tensorleap.ai/tensorleap-integration/writing-integration-code/custom-metrics"
|
|
543
|
-
|
|
544
|
-
)
|
|
545
|
-
|
|
546
535
|
def _validate_decorators_signature():
|
|
547
536
|
err_message = f"{user_function.__name__} validation failed.\n"
|
|
548
537
|
if not isinstance(name, str):
|
|
549
538
|
raise TypeError(err_message + f"`name` must be a string, got type {type(name).__name__}.")
|
|
550
539
|
valid_directions = {MetricDirection.Upward, MetricDirection.Downward}
|
|
551
|
-
if
|
|
540
|
+
if direction is _UNSET:
|
|
541
|
+
pass
|
|
542
|
+
elif isinstance(direction, MetricDirection):
|
|
552
543
|
if direction not in valid_directions:
|
|
553
544
|
raise ValueError(
|
|
554
545
|
err_message +
|
|
@@ -646,6 +637,7 @@ def tensorleap_custom_metric(name: str,
|
|
|
646
637
|
f'instead of {leap_binder.batch_size_to_validate}')
|
|
647
638
|
|
|
648
639
|
def _validate_result(result) -> None:
|
|
640
|
+
nonlocal direction
|
|
649
641
|
validate_output_structure(result, func_name=user_function.__name__,
|
|
650
642
|
expected_type_name="List[float | int | None | List[ConfusionMatrixElement] ] | NDArray[np.float32] or dictonary with one of these types as its values types")
|
|
651
643
|
supported_types_message = (f'{user_function.__name__}() validation failed: '
|
|
@@ -678,13 +670,17 @@ def tensorleap_custom_metric(name: str,
|
|
|
678
670
|
f'{user_function.__name__}() validation failed: The return len {f"of srt{key} value" if key is not None else ""} should be as the batch size.'
|
|
679
671
|
|
|
680
672
|
if isinstance(result, dict):
|
|
673
|
+
result_keys = set(result.keys())
|
|
681
674
|
for key, value in result.items():
|
|
682
675
|
_validate_single_metric(value, key)
|
|
683
676
|
|
|
684
677
|
assert isinstance(key, str), \
|
|
685
678
|
(f'{user_function.__name__}() validation failed: '
|
|
686
679
|
f'Keys in the return dict should be of type str. Got {type(key)}.')
|
|
687
|
-
|
|
680
|
+
|
|
681
|
+
assert direction is _UNSET or isinstance(direction, dict), \
|
|
682
|
+
(f'{user_function.__name__}() validation failed: '
|
|
683
|
+
f'direction should be a dict when using dict results. Got {type(direction)}.') #TODO - remove this assertion so a single value would controll all directions
|
|
688
684
|
|
|
689
685
|
if isinstance(direction, dict):
|
|
690
686
|
for direction_key in direction:
|
|
@@ -693,9 +689,9 @@ def tensorleap_custom_metric(name: str,
|
|
|
693
689
|
f'Keys in the direction mapping should be part of result keys. Got key {direction_key}.')
|
|
694
690
|
|
|
695
691
|
if compute_insights is not None:
|
|
696
|
-
assert isinstance(compute_insights,
|
|
692
|
+
assert isinstance(compute_insights, dict), \
|
|
697
693
|
(f'{user_function.__name__}() validation failed: '
|
|
698
|
-
f'compute_insights should be
|
|
694
|
+
f'compute_insights should be dict if using the dict results. Got {type(compute_insights)}.') #TODO - remove this assertion so a single value would controll all compute_insights
|
|
699
695
|
|
|
700
696
|
if isinstance(compute_insights, dict):
|
|
701
697
|
for ci_key in compute_insights:
|
|
@@ -703,6 +699,25 @@ def tensorleap_custom_metric(name: str,
|
|
|
703
699
|
(f'{user_function.__name__}() validation failed: '
|
|
704
700
|
f'Keys in the compute_insights mapping should be part of result keys. Got key {ci_key}.')
|
|
705
701
|
|
|
702
|
+
effective_direction = {} if direction is _UNSET else direction
|
|
703
|
+
defaulted_direction_keys = result_keys.difference(effective_direction.keys())
|
|
704
|
+
|
|
705
|
+
if defaulted_direction_keys:
|
|
706
|
+
effective_direction = {key: effective_direction.get(key, MetricDirection.Downward) for key in result}
|
|
707
|
+
|
|
708
|
+
leap_binder.setup_container.metrics[-1].metric_handler_data.direction = effective_direction
|
|
709
|
+
|
|
710
|
+
if defaulted_direction_keys and not _call_from_tl_platform:
|
|
711
|
+
effective_compute_insights = compute_insights or {}
|
|
712
|
+
warning_keys = {key for key in defaulted_direction_keys if effective_compute_insights.get(key, True)}
|
|
713
|
+
if warning_keys:
|
|
714
|
+
store_warning_by_param(
|
|
715
|
+
param_name=f"direction[{warning_keys}]",
|
|
716
|
+
user_func_name=user_function.__name__,
|
|
717
|
+
default_value=MetricDirection.Downward,
|
|
718
|
+
link_to_docs="https://docs.tensorleap.ai/tensorleap-integration/writing-integration-code/custom-metrics"
|
|
719
|
+
)
|
|
720
|
+
|
|
706
721
|
else:
|
|
707
722
|
_validate_single_metric(result)
|
|
708
723
|
|
|
@@ -710,6 +725,21 @@ def tensorleap_custom_metric(name: str,
|
|
|
710
725
|
assert isinstance(compute_insights, bool), \
|
|
711
726
|
(f'{user_function.__name__}() validation failed: '
|
|
712
727
|
f'compute_insights should be boolean. Got {type(compute_insights)}.')
|
|
728
|
+
if direction is not _UNSET:
|
|
729
|
+
assert isinstance(direction, MetricDirection), \
|
|
730
|
+
(f'{user_function.__name__}() validation failed: '
|
|
731
|
+
f'direction should be a MetricDirection when using a single result. Got {type(direction)}.')
|
|
732
|
+
|
|
733
|
+
else:
|
|
734
|
+
direction = MetricDirection.Downward
|
|
735
|
+
leap_binder.setup_container.metrics[-1].metric_handler_data.direction = direction
|
|
736
|
+
if not _call_from_tl_platform and compute_insights is not False:
|
|
737
|
+
store_warning_by_param(
|
|
738
|
+
param_name="direction",
|
|
739
|
+
user_func_name=user_function.__name__,
|
|
740
|
+
default_value=direction,
|
|
741
|
+
link_to_docs="https://docs.tensorleap.ai/tensorleap-integration/writing-integration-code/custom-metrics"
|
|
742
|
+
)
|
|
713
743
|
|
|
714
744
|
@functools.wraps(user_function)
|
|
715
745
|
def inner_without_validate(*args, **kwargs):
|
|
@@ -1770,5 +1800,3 @@ if not _call_from_tl_platform:
|
|
|
1770
1800
|
|
|
1771
1801
|
|
|
1772
1802
|
|
|
1773
|
-
|
|
1774
|
-
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/contract/datasetclasses.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/contract/responsedataclasses.py
RENAMED
|
File without changes
|
{code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/contract/visualizer_classes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/experiment_api/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/experiment_api/cli_config_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/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.164.dev1 → code_loader-1.0.165.dev2}/code_loader/inner_leap_binder/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/inner_leap_binder/leapbinder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/plot_functions/__init__.py
RENAMED
|
File without changes
|
{code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/plot_functions/plot_functions.py
RENAMED
|
File without changes
|
{code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/plot_functions/visualize.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.164.dev1 → code_loader-1.0.165.dev2}/code_loader/visualizers/default_visualizers.py
RENAMED
|
File without changes
|