deep-learning-core 0.0.24__tar.gz → 0.0.26__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.
- deep_learning_core-0.0.26/.github/workflows/ci.yml +54 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/.github/workflows/publish-testpypi.yml +6 -20
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/.github/workflows/publish.yml +6 -20
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/AGENTS.md +1 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/PKG-INFO +71 -33
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/README.md +60 -27
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/pyproject.toml +11 -11
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/readme/README.md +9 -2
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/readme/guide/1_getting_started.md +1 -1
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/readme/guide/2_creating_an_experiment_repository.md +9 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/readme/guide/3_local_components_and_sweeps.md +3 -1
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/readme/technical/1_configuration.md +7 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/readme/technical/2_entry_points.md +3 -2
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/readme/technical/5_testing.md +3 -1
- deep_learning_core-0.0.26/readme/technical/6_reinforcement_learning.md +344 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/readme/tldr/2_create_and_run_an_experiment.md +8 -2
- deep_learning_core-0.0.26/src/dl_core/__init__.py +189 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/analysis/sweep_analyzer.py +1 -1
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/callbacks/local_metric_tracker.py +45 -5
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/cli.py +1 -1
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/component_describer.py +4 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/component_scaffold.py +74 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/__init__.py +17 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_callback.py +139 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/registry.py +71 -10
- deep_learning_core-0.0.26/src/dl_core/core/replay_buffer.py +179 -0
- deep_learning_core-0.0.26/src/dl_core/core/rl_trainer.py +679 -0
- deep_learning_core-0.0.26/src/dl_core/core/rl_types.py +83 -0
- deep_learning_core-0.0.26/src/dl_core/core/rollout_buffer.py +223 -0
- deep_learning_core-0.0.26/src/dl_core/environments/__init__.py +32 -0
- deep_learning_core-0.0.26/src/dl_core/environments/gymnasium_environment.py +67 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/init_experiment.py +67 -14
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/init_extensions.py +12 -0
- deep_learning_core-0.0.26/src/dl_core/models/__init__.py +14 -0
- deep_learning_core-0.0.26/src/dl_core/models/dqn.py +53 -0
- deep_learning_core-0.0.26/src/dl_core/models/ppo.py +90 -0
- deep_learning_core-0.0.26/src/dl_core/models/sac.py +122 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/optimizers/__init__.py +3 -3
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/project.py +1 -0
- deep_learning_core-0.0.26/src/dl_core/py.typed +1 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/schedulers/__init__.py +6 -6
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/single_run.py +76 -2
- deep_learning_core-0.0.26/src/dl_core/trainers/__init__.py +16 -0
- deep_learning_core-0.0.26/src/dl_core/trainers/dqn_trainer.py +379 -0
- deep_learning_core-0.0.26/src/dl_core/trainers/ppo_trainer.py +506 -0
- deep_learning_core-0.0.26/src/dl_core/trainers/q_learning_trainer.py +221 -0
- deep_learning_core-0.0.26/src/dl_core/trainers/sac_trainer.py +695 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/trainers/standard_trainer.py +0 -6
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/utils/config_validator.py +55 -39
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/utils/distributed_utils.py +0 -4
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/worker.py +2 -2
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_component_describer.py +21 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_component_scaffold.py +39 -0
- deep_learning_core-0.0.26/tests/test_config_validator.py +124 -0
- deep_learning_core-0.0.26/tests/test_dqn_trainer.py +315 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_init_experiment.py +29 -1
- deep_learning_core-0.0.26/tests/test_local_components.py +117 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_local_metric_tracker_callback.py +49 -0
- deep_learning_core-0.0.26/tests/test_ppo_trainer.py +265 -0
- deep_learning_core-0.0.26/tests/test_q_learning_trainer.py +175 -0
- deep_learning_core-0.0.26/tests/test_registry.py +38 -0
- deep_learning_core-0.0.26/tests/test_rl_environment_contracts.py +83 -0
- deep_learning_core-0.0.26/tests/test_rl_preflight.py +91 -0
- deep_learning_core-0.0.26/tests/test_rl_trainer.py +220 -0
- deep_learning_core-0.0.26/tests/test_sac_trainer.py +370 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_scaffold_smoke.py +5 -3
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_tracking_components.py +0 -1
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/uv.lock +420 -37
- deep_learning_core-0.0.24/.github/workflows/ci.yml +0 -60
- deep_learning_core-0.0.24/requirements-ci.txt +0 -11
- deep_learning_core-0.0.24/src/dl_core/__init__.py +0 -89
- deep_learning_core-0.0.24/src/dl_core/models/__init__.py +0 -7
- deep_learning_core-0.0.24/src/dl_core/trainers/__init__.py +0 -8
- deep_learning_core-0.0.24/tests/test_local_components.py +0 -35
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/.gitignore +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/LICENSE +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/plan.md +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/readme/technical/3_sweep_system.md +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/readme/technical/4_local_component_loading.md +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/readme/tldr/1_install_and_verify.md +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/accelerators/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/accelerators/cpu.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/accelerators/multi_gpu.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/accelerators/single_gpu.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/analysis/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/augmentations/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/augmentations/minimal.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/augmentations/standard.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/callbacks/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/callbacks/checkpoint.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/callbacks/dataset_refresh.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/callbacks/early_stopping.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/callbacks/metric_logger.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/adaptive_computation_trainer.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_accelerator.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_biometric_model.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_criterion.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_dataset.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_detector.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_executor.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_metric.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_metric_manager.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_metrics_source.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_model.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_sampler.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_tracker.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_trainer.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/base_transform.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/config_metadata.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/epoch_trainer.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/core/sequence_trainer.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/criterions/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/criterions/bce_with_logits.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/criterions/crossentropy.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/dataset_inspect.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/datasets/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/datasets/standard.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/executors/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/executors/local.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/metric_managers/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/metric_managers/standard_manager.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/metrics/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/metrics/accuracy.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/metrics/auc.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/metrics/f1.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/metrics/halt_steps.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/metrics_sources/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/metrics_sources/local.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/migrate.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/models/resnet.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/samplers/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/samplers/label.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/schedulers/cosinewithwarmup.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/smoke.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/sweep/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/sweep/config/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/sweep/config/config_builder.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/sweep/config/config_utils.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/sweep/runner.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/sweep/template/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/sweep/template/template_loader.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/sweep/template/template_merger.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/sweep/template/template_validator.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/sweep/template/tracking_utils.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/sweep_scaffold.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/sync.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/templates/README.md +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/templates/base/base.yaml +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/templates/base/base_sweep.yaml +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/templates/presets.yaml +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/templates/sweeps/example_sweep.yaml +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/trackers/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/trackers/local.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/utils/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/utils/artifact_manager.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/utils/checkpoint_utils.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/utils/common.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/utils/config.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/utils/config_names.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/utils/ema.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/utils/logging/__init__.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/utils/logging/logger.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/utils/runtime_utils.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/src/dl_core/utils/sweep_tracker.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/conftest.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_checkpoint_behavior.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_checkpoint_utils.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_dataset_bases.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_dataset_cli.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_init_extensions.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_metric_pipeline.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_samplers.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_sweep_runner.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_sync_cli.py +0 -0
- {deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/tests/test_trainer_hierarchy.py +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
env:
|
|
4
|
+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches:
|
|
9
|
+
- master
|
|
10
|
+
pull_request:
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
validate:
|
|
15
|
+
name: Python ${{ matrix.python-version }}
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
strategy:
|
|
20
|
+
fail-fast: false
|
|
21
|
+
matrix:
|
|
22
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
23
|
+
|
|
24
|
+
steps:
|
|
25
|
+
- name: Check out repository
|
|
26
|
+
uses: actions/checkout@v5
|
|
27
|
+
|
|
28
|
+
- name: Set up uv
|
|
29
|
+
uses: astral-sh/setup-uv@v7
|
|
30
|
+
|
|
31
|
+
- name: Set up Python
|
|
32
|
+
run: uv python install ${{ matrix.python-version }}
|
|
33
|
+
|
|
34
|
+
- name: Install locked dependencies
|
|
35
|
+
run: uv sync --locked --extra dev --python ${{ matrix.python-version }}
|
|
36
|
+
|
|
37
|
+
- name: Run Ruff
|
|
38
|
+
run: uv run --no-sync ruff check src tests
|
|
39
|
+
|
|
40
|
+
- name: Run tests with coverage
|
|
41
|
+
run: >-
|
|
42
|
+
uv run --no-sync python -m pytest
|
|
43
|
+
--cov=dl_core
|
|
44
|
+
--cov-report=term
|
|
45
|
+
--cov-fail-under=45
|
|
46
|
+
|
|
47
|
+
- name: Compile package
|
|
48
|
+
run: uv run --no-sync python -m compileall src/dl_core
|
|
49
|
+
|
|
50
|
+
- name: Build distribution artifacts
|
|
51
|
+
run: uv build --no-sources
|
|
52
|
+
|
|
53
|
+
- name: Check distribution metadata
|
|
54
|
+
run: uv run --no-sync twine check dist/*
|
{deep_learning_core-0.0.24 → deep_learning_core-0.0.26}/.github/workflows/publish-testpypi.yml
RENAMED
|
@@ -31,28 +31,14 @@ jobs:
|
|
|
31
31
|
- name: Set up Python
|
|
32
32
|
run: uv python install 3.11
|
|
33
33
|
|
|
34
|
-
- name:
|
|
35
|
-
run: uv
|
|
34
|
+
- name: Install locked dependencies
|
|
35
|
+
run: uv sync --locked --extra dev --python 3.11
|
|
36
36
|
|
|
37
|
-
- name:
|
|
38
|
-
run:
|
|
39
|
-
python3 - <<'PY'
|
|
40
|
-
from pathlib import Path
|
|
41
|
-
import tomllib
|
|
42
|
-
|
|
43
|
-
pyproject = tomllib.loads(Path("pyproject.toml").read_text())
|
|
44
|
-
dependencies = pyproject["project"]["dependencies"]
|
|
45
|
-
dev_dependencies = pyproject["project"]["optional-dependencies"]["dev"]
|
|
46
|
-
Path("requirements-ci.txt").write_text(
|
|
47
|
-
"\n".join([*dependencies, *dev_dependencies, "twine"]) + "\n",
|
|
48
|
-
encoding="utf-8",
|
|
49
|
-
)
|
|
50
|
-
PY
|
|
51
|
-
uv pip install --python .venv/bin/python -r requirements-ci.txt
|
|
52
|
-
uv pip install --python .venv/bin/python --no-deps --editable .
|
|
37
|
+
- name: Run Ruff
|
|
38
|
+
run: uv run --no-sync ruff check src tests
|
|
53
39
|
|
|
54
40
|
- name: Run tests
|
|
55
|
-
run:
|
|
41
|
+
run: uv run --no-sync python -m pytest
|
|
56
42
|
|
|
57
43
|
- name: Build distribution artifacts
|
|
58
44
|
run: |
|
|
@@ -60,7 +46,7 @@ jobs:
|
|
|
60
46
|
uv build --no-sources
|
|
61
47
|
|
|
62
48
|
- name: Check distribution metadata
|
|
63
|
-
run:
|
|
49
|
+
run: uv run --no-sync twine check dist/*
|
|
64
50
|
|
|
65
51
|
- name: Upload distribution artifacts
|
|
66
52
|
uses: actions/upload-artifact@v6
|
|
@@ -31,28 +31,14 @@ jobs:
|
|
|
31
31
|
- name: Set up Python
|
|
32
32
|
run: uv python install 3.11
|
|
33
33
|
|
|
34
|
-
- name:
|
|
35
|
-
run: uv
|
|
34
|
+
- name: Install locked dependencies
|
|
35
|
+
run: uv sync --locked --extra dev --python 3.11
|
|
36
36
|
|
|
37
|
-
- name:
|
|
38
|
-
run:
|
|
39
|
-
python3 - <<'PY'
|
|
40
|
-
from pathlib import Path
|
|
41
|
-
import tomllib
|
|
42
|
-
|
|
43
|
-
pyproject = tomllib.loads(Path("pyproject.toml").read_text())
|
|
44
|
-
dependencies = pyproject["project"]["dependencies"]
|
|
45
|
-
dev_dependencies = pyproject["project"]["optional-dependencies"]["dev"]
|
|
46
|
-
Path("requirements-ci.txt").write_text(
|
|
47
|
-
"\n".join([*dependencies, *dev_dependencies, "twine"]) + "\n",
|
|
48
|
-
encoding="utf-8",
|
|
49
|
-
)
|
|
50
|
-
PY
|
|
51
|
-
uv pip install --python .venv/bin/python -r requirements-ci.txt
|
|
52
|
-
uv pip install --python .venv/bin/python --no-deps --editable .
|
|
37
|
+
- name: Run Ruff
|
|
38
|
+
run: uv run --no-sync ruff check src tests
|
|
53
39
|
|
|
54
40
|
- name: Run tests
|
|
55
|
-
run:
|
|
41
|
+
run: uv run --no-sync python -m pytest
|
|
56
42
|
|
|
57
43
|
- name: Build distribution artifacts
|
|
58
44
|
run: |
|
|
@@ -60,7 +46,7 @@ jobs:
|
|
|
60
46
|
uv build --no-sources
|
|
61
47
|
|
|
62
48
|
- name: Check distribution metadata
|
|
63
|
-
run:
|
|
49
|
+
run: uv run --no-sync twine check dist/*
|
|
64
50
|
|
|
65
51
|
- name: Upload distribution artifacts
|
|
66
52
|
uses: actions/upload-artifact@v6
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
<rule>Use f-strings for string formatting.</rule>
|
|
29
29
|
<rule>Keep functions focused and avoid unnecessary nesting.</rule>
|
|
30
30
|
<rule>No formatter or linter configuration is defined in <code>pyproject.toml</code>; mirror nearby files instead of re-styling code arbitrarily.</rule>
|
|
31
|
+
<rule>Whenever package behavior, public APIs, CLI behavior, scaffold output, dependencies, or versions change, review <code>README.md</code> and the relevant <code>readme/</code> docs and keep them consistent with the code. If no documentation update is needed, state why.</rule>
|
|
31
32
|
</development_rules>
|
|
32
33
|
|
|
33
34
|
<architecture_rules>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deep-learning-core
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.26
|
|
4
4
|
Summary: Reusable deep learning framework core.
|
|
5
5
|
Project-URL: Homepage, https://github.com/Blazkowiz47/dl-core
|
|
6
|
-
Project-URL: Documentation, https://github.com/Blazkowiz47/dl-core/tree/
|
|
6
|
+
Project-URL: Documentation, https://github.com/Blazkowiz47/dl-core/tree/master/readme
|
|
7
7
|
Project-URL: Repository, https://github.com/Blazkowiz47/dl-core
|
|
8
8
|
Project-URL: Issues, https://github.com/Blazkowiz47/dl-core/issues
|
|
9
9
|
Author-email: blazkowiz47 <sushrutpatwardhan@gmail.com>
|
|
@@ -42,8 +42,10 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
42
42
|
Classifier: Programming Language :: Python :: 3.12
|
|
43
43
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
44
44
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
45
|
+
Classifier: Typing :: Typed
|
|
45
46
|
Requires-Python: >=3.10
|
|
46
47
|
Requires-Dist: albumentations
|
|
48
|
+
Requires-Dist: gymnasium<2,>=1.3
|
|
47
49
|
Requires-Dist: numpy
|
|
48
50
|
Requires-Dist: opencv-python-headless
|
|
49
51
|
Requires-Dist: psutil
|
|
@@ -53,13 +55,16 @@ Requires-Dist: torch
|
|
|
53
55
|
Requires-Dist: torchvision
|
|
54
56
|
Requires-Dist: tqdm
|
|
55
57
|
Provides-Extra: azure
|
|
56
|
-
Requires-Dist: deep-learning-azure<0.1,>=0.0.
|
|
58
|
+
Requires-Dist: deep-learning-azure<0.1,>=0.0.18; extra == 'azure'
|
|
57
59
|
Provides-Extra: dev
|
|
58
|
-
Requires-Dist: pytest; extra == 'dev'
|
|
60
|
+
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
|
|
61
|
+
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
62
|
+
Requires-Dist: ruff>=0.12; extra == 'dev'
|
|
63
|
+
Requires-Dist: twine>=6.0; extra == 'dev'
|
|
59
64
|
Provides-Extra: mlflow
|
|
60
|
-
Requires-Dist: deep-learning-mlflow<0.1,>=0.0.
|
|
65
|
+
Requires-Dist: deep-learning-mlflow<0.1,>=0.0.11; extra == 'mlflow'
|
|
61
66
|
Provides-Extra: wandb
|
|
62
|
-
Requires-Dist: deep-learning-wandb<0.1,>=0.0.
|
|
67
|
+
Requires-Dist: deep-learning-wandb<0.1,>=0.0.12; extra == 'wandb'
|
|
63
68
|
Description-Content-Type: text/markdown
|
|
64
69
|
|
|
65
70
|
# deep-learning-core
|
|
@@ -71,28 +76,38 @@ across many experiment repositories. It is intended to be the public base
|
|
|
71
76
|
package, while optional integrations such as Azure are layered on through
|
|
72
77
|
extras and companion extension packages.
|
|
73
78
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
- `
|
|
79
|
-
- `
|
|
80
|
-
- `
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
- `
|
|
90
|
-
|
|
91
|
-
- `
|
|
92
|
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
|
|
79
|
+
Current release: `deep-learning-core==0.0.26`.
|
|
80
|
+
|
|
81
|
+
Compatible companion package floors:
|
|
82
|
+
|
|
83
|
+
- `deep-learning-azure>=0.0.18,<0.1`
|
|
84
|
+
- `deep-learning-mlflow>=0.0.11,<0.1`
|
|
85
|
+
- `deep-learning-wandb>=0.0.12,<0.1`
|
|
86
|
+
|
|
87
|
+
## What's New in 0.0.26?
|
|
88
|
+
|
|
89
|
+
- Gymnasium-compatible environments can now be registered, discovered, and
|
|
90
|
+
created through a first-class environment contract
|
|
91
|
+
- `RLTrainer` provides an episode-based lifecycle, deterministic evaluation,
|
|
92
|
+
RL callback hooks, and resumable algorithm checkpoints alongside
|
|
93
|
+
`EpochTrainer`
|
|
94
|
+
- `QLearningTrainer` adds tabular epsilon-greedy learning for finite discrete
|
|
95
|
+
Gymnasium environments
|
|
96
|
+
- `DQNTrainer` adds replay-based discrete control with target networks,
|
|
97
|
+
Double-DQN targets, and a built-in MLP Q-network
|
|
98
|
+
- `PPOTrainer` adds clipped on-policy optimization, GAE, and discrete or
|
|
99
|
+
bounded-continuous actor-critic policies
|
|
100
|
+
- `SACTrainer` adds replay-based bounded-continuous control with twin critics,
|
|
101
|
+
Polyak targets, and optional automatic entropy tuning
|
|
102
|
+
- `dl-run --validate-only` now resolves RL environments, models, optimizers,
|
|
103
|
+
and callbacks without resetting or stepping an environment
|
|
104
|
+
- `dl-core add trainer MyPolicy --base rltrainer` scaffolds custom algorithms
|
|
105
|
+
against the episode-oriented lifecycle
|
|
106
|
+
- the local metric callback records RL episode, update, and evaluation metrics
|
|
107
|
+
- local component loading now cleans up registrations and import paths between
|
|
108
|
+
projects, while registry lookups prefer the most specific matching prefix
|
|
109
|
+
- configuration validation rejects malformed root and component structures
|
|
110
|
+
more consistently
|
|
96
111
|
|
|
97
112
|
## Install
|
|
98
113
|
|
|
@@ -202,7 +217,9 @@ that repository, run `uv sync`, then run:
|
|
|
202
217
|
uv run dl-run --config configs/base.yaml --validate-only
|
|
203
218
|
uv run dl-inspect-dataset --config configs/base.yaml
|
|
204
219
|
uv run dl-smoke --config configs/base.yaml
|
|
205
|
-
|
|
220
|
+
cp configs/base.yaml experiments/debug.yaml
|
|
221
|
+
uv run dl-run --config experiments/debug.yaml --validate-only
|
|
222
|
+
uv run dl-run --config experiments/debug.yaml
|
|
206
223
|
uv run dl-sweep experiments/lr_sweep.yaml --preview
|
|
207
224
|
uv run dl-sweep experiments/lr_sweep.yaml --only "*seed_2025*"
|
|
208
225
|
uv run dl-sweep experiments/lr_sweep.yaml
|
|
@@ -241,10 +258,12 @@ Then:
|
|
|
241
258
|
- `scripts/temporary/test_model.py`
|
|
242
259
|
- `experiments/lr_sweep.yaml`
|
|
243
260
|
- `AGENTS.md`
|
|
261
|
+
- `CLAUDE.md`
|
|
244
262
|
2. implement the generated dataset wrapper under `src/datasets/my_exp.py`
|
|
245
263
|
3. adjust `configs/base.yaml` so it points at the dataset/model/trainer you want
|
|
246
|
-
and set the
|
|
247
|
-
`deterministic`)
|
|
264
|
+
and set the shared reproducibility defaults you need (`seed` and
|
|
265
|
+
`deterministic`). Keep concrete single-run configs in `experiments/`,
|
|
266
|
+
including debug and baseline runs.
|
|
248
267
|
4. smoke-check the generated helpers:
|
|
249
268
|
|
|
250
269
|
```bash
|
|
@@ -258,7 +277,9 @@ uv run python scripts/temporary/test_model.py
|
|
|
258
277
|
uv run dl-run --config configs/base.yaml --validate-only
|
|
259
278
|
uv run dl-inspect-dataset --config configs/base.yaml
|
|
260
279
|
uv run dl-smoke --config configs/base.yaml
|
|
261
|
-
|
|
280
|
+
cp configs/base.yaml experiments/debug.yaml
|
|
281
|
+
uv run dl-run --config experiments/debug.yaml --validate-only
|
|
282
|
+
uv run dl-run --config experiments/debug.yaml
|
|
262
283
|
```
|
|
263
284
|
|
|
264
285
|
Once that works, move on to:
|
|
@@ -318,6 +339,20 @@ That means evaluator-side code can load:
|
|
|
318
339
|
|
|
319
340
|
without needing to reconstruct EMA state manually.
|
|
320
341
|
|
|
342
|
+
## Post-Training Checkpoint Hooks
|
|
343
|
+
|
|
344
|
+
After a successful training loop, `BaseTrainer.run()` calls
|
|
345
|
+
`select_checkpoint()` and passes the returned path into
|
|
346
|
+
`post_training(checkpoint_path)`. This hook runs before run-analysis artifacts
|
|
347
|
+
are persisted and before tracking callbacks upload finalized artifacts.
|
|
348
|
+
|
|
349
|
+
The default `select_checkpoint()` implementation keeps the existing checkpoint
|
|
350
|
+
callback behavior authoritative: it returns final `best.pth` when present,
|
|
351
|
+
falls back to final `latest.pth`, and returns `None` if no checkpoint exists.
|
|
352
|
+
Override `select_checkpoint()` when a project needs custom single- or
|
|
353
|
+
multi-metric model selection, and override `post_training()` for completed-run
|
|
354
|
+
evaluation, export, or report generation.
|
|
355
|
+
|
|
321
356
|
If Azure support is installed, `uv run dl-init --with-azure` will
|
|
322
357
|
also scaffold Azure-ready config placeholders and `azure-config.json`.
|
|
323
358
|
|
|
@@ -348,6 +383,7 @@ Common local component scaffolds:
|
|
|
348
383
|
```bash
|
|
349
384
|
uv run dl-core add model MyResNet
|
|
350
385
|
uv run dl-core add trainer MyTrainer
|
|
386
|
+
uv run dl-core add trainer MyPolicy --base rltrainer
|
|
351
387
|
uv run dl-core add callback MyMetrics
|
|
352
388
|
uv run dl-core add metric_manager MyManager
|
|
353
389
|
uv run dl-core add sampler MySampler
|
|
@@ -482,7 +518,7 @@ provided through `dl-azure`.
|
|
|
482
518
|
|
|
483
519
|
## Documentation
|
|
484
520
|
|
|
485
|
-
- [Documentation Index](https://github.com/Blazkowiz47/dl-core/tree/
|
|
521
|
+
- [Documentation Index](https://github.com/Blazkowiz47/dl-core/tree/master/readme)
|
|
486
522
|
- [GitHub Repository](https://github.com/Blazkowiz47/dl-core)
|
|
487
523
|
|
|
488
524
|
## License
|
|
@@ -493,5 +529,7 @@ MIT. See [LICENSE](LICENSE).
|
|
|
493
529
|
|
|
494
530
|
```bash
|
|
495
531
|
uv run --extra dev pytest
|
|
532
|
+
uv run --extra dev ruff check src tests
|
|
496
533
|
uv run python -m compileall src/dl_core
|
|
534
|
+
uv build --no-sources
|
|
497
535
|
```
|
|
@@ -7,28 +7,38 @@ across many experiment repositories. It is intended to be the public base
|
|
|
7
7
|
package, while optional integrations such as Azure are layered on through
|
|
8
8
|
extras and companion extension packages.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
- `
|
|
15
|
-
- `
|
|
16
|
-
- `
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
- `
|
|
26
|
-
|
|
27
|
-
- `
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
|
|
10
|
+
Current release: `deep-learning-core==0.0.26`.
|
|
11
|
+
|
|
12
|
+
Compatible companion package floors:
|
|
13
|
+
|
|
14
|
+
- `deep-learning-azure>=0.0.18,<0.1`
|
|
15
|
+
- `deep-learning-mlflow>=0.0.11,<0.1`
|
|
16
|
+
- `deep-learning-wandb>=0.0.12,<0.1`
|
|
17
|
+
|
|
18
|
+
## What's New in 0.0.26?
|
|
19
|
+
|
|
20
|
+
- Gymnasium-compatible environments can now be registered, discovered, and
|
|
21
|
+
created through a first-class environment contract
|
|
22
|
+
- `RLTrainer` provides an episode-based lifecycle, deterministic evaluation,
|
|
23
|
+
RL callback hooks, and resumable algorithm checkpoints alongside
|
|
24
|
+
`EpochTrainer`
|
|
25
|
+
- `QLearningTrainer` adds tabular epsilon-greedy learning for finite discrete
|
|
26
|
+
Gymnasium environments
|
|
27
|
+
- `DQNTrainer` adds replay-based discrete control with target networks,
|
|
28
|
+
Double-DQN targets, and a built-in MLP Q-network
|
|
29
|
+
- `PPOTrainer` adds clipped on-policy optimization, GAE, and discrete or
|
|
30
|
+
bounded-continuous actor-critic policies
|
|
31
|
+
- `SACTrainer` adds replay-based bounded-continuous control with twin critics,
|
|
32
|
+
Polyak targets, and optional automatic entropy tuning
|
|
33
|
+
- `dl-run --validate-only` now resolves RL environments, models, optimizers,
|
|
34
|
+
and callbacks without resetting or stepping an environment
|
|
35
|
+
- `dl-core add trainer MyPolicy --base rltrainer` scaffolds custom algorithms
|
|
36
|
+
against the episode-oriented lifecycle
|
|
37
|
+
- the local metric callback records RL episode, update, and evaluation metrics
|
|
38
|
+
- local component loading now cleans up registrations and import paths between
|
|
39
|
+
projects, while registry lookups prefer the most specific matching prefix
|
|
40
|
+
- configuration validation rejects malformed root and component structures
|
|
41
|
+
more consistently
|
|
32
42
|
|
|
33
43
|
## Install
|
|
34
44
|
|
|
@@ -138,7 +148,9 @@ that repository, run `uv sync`, then run:
|
|
|
138
148
|
uv run dl-run --config configs/base.yaml --validate-only
|
|
139
149
|
uv run dl-inspect-dataset --config configs/base.yaml
|
|
140
150
|
uv run dl-smoke --config configs/base.yaml
|
|
141
|
-
|
|
151
|
+
cp configs/base.yaml experiments/debug.yaml
|
|
152
|
+
uv run dl-run --config experiments/debug.yaml --validate-only
|
|
153
|
+
uv run dl-run --config experiments/debug.yaml
|
|
142
154
|
uv run dl-sweep experiments/lr_sweep.yaml --preview
|
|
143
155
|
uv run dl-sweep experiments/lr_sweep.yaml --only "*seed_2025*"
|
|
144
156
|
uv run dl-sweep experiments/lr_sweep.yaml
|
|
@@ -177,10 +189,12 @@ Then:
|
|
|
177
189
|
- `scripts/temporary/test_model.py`
|
|
178
190
|
- `experiments/lr_sweep.yaml`
|
|
179
191
|
- `AGENTS.md`
|
|
192
|
+
- `CLAUDE.md`
|
|
180
193
|
2. implement the generated dataset wrapper under `src/datasets/my_exp.py`
|
|
181
194
|
3. adjust `configs/base.yaml` so it points at the dataset/model/trainer you want
|
|
182
|
-
and set the
|
|
183
|
-
`deterministic`)
|
|
195
|
+
and set the shared reproducibility defaults you need (`seed` and
|
|
196
|
+
`deterministic`). Keep concrete single-run configs in `experiments/`,
|
|
197
|
+
including debug and baseline runs.
|
|
184
198
|
4. smoke-check the generated helpers:
|
|
185
199
|
|
|
186
200
|
```bash
|
|
@@ -194,7 +208,9 @@ uv run python scripts/temporary/test_model.py
|
|
|
194
208
|
uv run dl-run --config configs/base.yaml --validate-only
|
|
195
209
|
uv run dl-inspect-dataset --config configs/base.yaml
|
|
196
210
|
uv run dl-smoke --config configs/base.yaml
|
|
197
|
-
|
|
211
|
+
cp configs/base.yaml experiments/debug.yaml
|
|
212
|
+
uv run dl-run --config experiments/debug.yaml --validate-only
|
|
213
|
+
uv run dl-run --config experiments/debug.yaml
|
|
198
214
|
```
|
|
199
215
|
|
|
200
216
|
Once that works, move on to:
|
|
@@ -254,6 +270,20 @@ That means evaluator-side code can load:
|
|
|
254
270
|
|
|
255
271
|
without needing to reconstruct EMA state manually.
|
|
256
272
|
|
|
273
|
+
## Post-Training Checkpoint Hooks
|
|
274
|
+
|
|
275
|
+
After a successful training loop, `BaseTrainer.run()` calls
|
|
276
|
+
`select_checkpoint()` and passes the returned path into
|
|
277
|
+
`post_training(checkpoint_path)`. This hook runs before run-analysis artifacts
|
|
278
|
+
are persisted and before tracking callbacks upload finalized artifacts.
|
|
279
|
+
|
|
280
|
+
The default `select_checkpoint()` implementation keeps the existing checkpoint
|
|
281
|
+
callback behavior authoritative: it returns final `best.pth` when present,
|
|
282
|
+
falls back to final `latest.pth`, and returns `None` if no checkpoint exists.
|
|
283
|
+
Override `select_checkpoint()` when a project needs custom single- or
|
|
284
|
+
multi-metric model selection, and override `post_training()` for completed-run
|
|
285
|
+
evaluation, export, or report generation.
|
|
286
|
+
|
|
257
287
|
If Azure support is installed, `uv run dl-init --with-azure` will
|
|
258
288
|
also scaffold Azure-ready config placeholders and `azure-config.json`.
|
|
259
289
|
|
|
@@ -284,6 +314,7 @@ Common local component scaffolds:
|
|
|
284
314
|
```bash
|
|
285
315
|
uv run dl-core add model MyResNet
|
|
286
316
|
uv run dl-core add trainer MyTrainer
|
|
317
|
+
uv run dl-core add trainer MyPolicy --base rltrainer
|
|
287
318
|
uv run dl-core add callback MyMetrics
|
|
288
319
|
uv run dl-core add metric_manager MyManager
|
|
289
320
|
uv run dl-core add sampler MySampler
|
|
@@ -418,7 +449,7 @@ provided through `dl-azure`.
|
|
|
418
449
|
|
|
419
450
|
## Documentation
|
|
420
451
|
|
|
421
|
-
- [Documentation Index](https://github.com/Blazkowiz47/dl-core/tree/
|
|
452
|
+
- [Documentation Index](https://github.com/Blazkowiz47/dl-core/tree/master/readme)
|
|
422
453
|
- [GitHub Repository](https://github.com/Blazkowiz47/dl-core)
|
|
423
454
|
|
|
424
455
|
## License
|
|
@@ -429,5 +460,7 @@ MIT. See [LICENSE](LICENSE).
|
|
|
429
460
|
|
|
430
461
|
```bash
|
|
431
462
|
uv run --extra dev pytest
|
|
463
|
+
uv run --extra dev ruff check src tests
|
|
432
464
|
uv run python -m compileall src/dl_core
|
|
465
|
+
uv build --no-sources
|
|
433
466
|
```
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "deep-learning-core"
|
|
7
|
-
version = "0.0.
|
|
7
|
+
version = "0.0.26"
|
|
8
8
|
description = "Reusable deep learning framework core."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -34,9 +34,11 @@ classifiers = [
|
|
|
34
34
|
"Programming Language :: Python :: 3.12",
|
|
35
35
|
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
36
36
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
37
|
+
"Typing :: Typed",
|
|
37
38
|
]
|
|
38
39
|
dependencies = [
|
|
39
40
|
"albumentations",
|
|
41
|
+
"gymnasium>=1.3,<2",
|
|
40
42
|
"numpy",
|
|
41
43
|
"opencv-python-headless",
|
|
42
44
|
"psutil",
|
|
@@ -49,21 +51,24 @@ dependencies = [
|
|
|
49
51
|
|
|
50
52
|
[project.optional-dependencies]
|
|
51
53
|
azure = [
|
|
52
|
-
"deep-learning-azure>=0.0.
|
|
54
|
+
"deep-learning-azure>=0.0.18,<0.1",
|
|
53
55
|
]
|
|
54
56
|
mlflow = [
|
|
55
|
-
"deep-learning-mlflow>=0.0.
|
|
57
|
+
"deep-learning-mlflow>=0.0.11,<0.1",
|
|
56
58
|
]
|
|
57
59
|
wandb = [
|
|
58
|
-
"deep-learning-wandb>=0.0.
|
|
60
|
+
"deep-learning-wandb>=0.0.12,<0.1",
|
|
59
61
|
]
|
|
60
62
|
dev = [
|
|
61
|
-
"pytest",
|
|
63
|
+
"pytest>=8.0",
|
|
64
|
+
"pytest-cov>=5.0",
|
|
65
|
+
"ruff>=0.12",
|
|
66
|
+
"twine>=6.0",
|
|
62
67
|
]
|
|
63
68
|
|
|
64
69
|
[project.urls]
|
|
65
70
|
Homepage = "https://github.com/Blazkowiz47/dl-core"
|
|
66
|
-
Documentation = "https://github.com/Blazkowiz47/dl-core/tree/
|
|
71
|
+
Documentation = "https://github.com/Blazkowiz47/dl-core/tree/master/readme"
|
|
67
72
|
Repository = "https://github.com/Blazkowiz47/dl-core"
|
|
68
73
|
Issues = "https://github.com/Blazkowiz47/dl-core/issues"
|
|
69
74
|
|
|
@@ -81,11 +86,6 @@ dl-smoke = "dl_core.smoke:main"
|
|
|
81
86
|
dl-sweep = "dl_core.sweep.runner:main"
|
|
82
87
|
dl-train-worker = "dl_core.worker:main"
|
|
83
88
|
|
|
84
|
-
[tool.uv.sources]
|
|
85
|
-
"deep-learning-azure" = { path = "../dl-azure", editable = true }
|
|
86
|
-
"deep-learning-mlflow" = { path = "../dl-mlflow", editable = true }
|
|
87
|
-
"deep-learning-wandb" = { path = "../dl-wandb", editable = true }
|
|
88
|
-
|
|
89
89
|
[tool.hatch.build.targets.sdist]
|
|
90
90
|
exclude = [
|
|
91
91
|
"/.tmp-ci-venv",
|
|
@@ -4,6 +4,8 @@ This documentation is split into quick references, workflow guides, and
|
|
|
4
4
|
technical notes. The goal is the same as in the original framework repo, but
|
|
5
5
|
focused on the extracted package and the experiment-repo workflow around it.
|
|
6
6
|
|
|
7
|
+
Current public release: `deep-learning-core==0.0.26`.
|
|
8
|
+
|
|
7
9
|
## Companion Packages
|
|
8
10
|
|
|
9
11
|
- [`dl-azure`](https://github.com/Blazkowiz47/dl-azure): Azure execution and
|
|
@@ -41,6 +43,7 @@ mechanics.
|
|
|
41
43
|
- [Sweep System](./technical/3_sweep_system.md)
|
|
42
44
|
- [Local Component Loading](./technical/4_local_component_loading.md)
|
|
43
45
|
- [Testing](./technical/5_testing.md)
|
|
46
|
+
- [Reinforcement Learning](./technical/6_reinforcement_learning.md)
|
|
44
47
|
|
|
45
48
|
## Common Tasks
|
|
46
49
|
|
|
@@ -65,11 +68,15 @@ uv run dl-init --root-dir .
|
|
|
65
68
|
### Run a local training job
|
|
66
69
|
|
|
67
70
|
```bash
|
|
68
|
-
uv run dl-run --config configs/base.yaml
|
|
71
|
+
uv run dl-run --config configs/base.yaml --validate-only
|
|
72
|
+
cp configs/base.yaml experiments/debug.yaml
|
|
73
|
+
uv run dl-run --config experiments/debug.yaml --validate-only
|
|
74
|
+
uv run dl-run --config experiments/debug.yaml
|
|
69
75
|
```
|
|
70
76
|
|
|
71
77
|
Generated `configs/base.yaml` files include root-level `seed` and
|
|
72
|
-
`deterministic` defaults so reproducibility can be controlled explicitly.
|
|
78
|
+
`deterministic` defaults so reproducibility can be controlled explicitly. Keep
|
|
79
|
+
concrete single-run configs under `experiments/`, including debug runs.
|
|
73
80
|
|
|
74
81
|
### Smoke-check generated dataset and model helpers
|
|
75
82
|
|
|
@@ -54,7 +54,7 @@ Inside the generated repository:
|
|
|
54
54
|
```bash
|
|
55
55
|
uv add --editable ../dl-core
|
|
56
56
|
uv sync
|
|
57
|
-
uv run dl-run --config configs/base.yaml
|
|
57
|
+
uv run dl-run --config configs/base.yaml --validate-only
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
If that succeeds, your local package plus experiment repo integration is
|
|
@@ -32,6 +32,8 @@ uv run dl-init --name my-exp --root-dir . --with-mlflow
|
|
|
32
32
|
|
|
33
33
|
```text
|
|
34
34
|
my-exp/
|
|
35
|
+
AGENTS.md
|
|
36
|
+
CLAUDE.md
|
|
35
37
|
pyproject.toml
|
|
36
38
|
configs/
|
|
37
39
|
base.yaml
|
|
@@ -78,6 +80,8 @@ By default:
|
|
|
78
80
|
- `configs/presets.yaml`
|
|
79
81
|
- `experiments/lr_sweep.yaml`
|
|
80
82
|
- `experiments/experiments.log`
|
|
83
|
+
- `AGENTS.md`
|
|
84
|
+
- `CLAUDE.md`
|
|
81
85
|
|
|
82
86
|
Start there before editing the wrapper classes. After updating the dataset or
|
|
83
87
|
model wrapper, use:
|
|
@@ -88,3 +92,8 @@ uv run python scripts/temporary/test_model.py
|
|
|
88
92
|
```
|
|
89
93
|
|
|
90
94
|
before committing to a full `dl-run`.
|
|
95
|
+
|
|
96
|
+
Use `configs/base.yaml` for reusable shared defaults. Before a real single run,
|
|
97
|
+
copy or derive it into a named file under `experiments/`, for example
|
|
98
|
+
`experiments/debug.yaml`, validate that concrete config, and run `dl-run`
|
|
99
|
+
against the `experiments/` file.
|
|
@@ -104,7 +104,9 @@ The core dataset bases are intended for different data shapes:
|
|
|
104
104
|
## Local Training
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
|
-
uv run dl-run --config configs/base.yaml
|
|
107
|
+
uv run dl-run --config configs/base.yaml --validate-only
|
|
108
|
+
cp configs/base.yaml experiments/debug.yaml
|
|
109
|
+
uv run dl-run --config experiments/debug.yaml
|
|
108
110
|
```
|
|
109
111
|
|
|
110
112
|
## Sweeps
|
|
@@ -125,6 +125,13 @@ trainer:
|
|
|
125
125
|
That wrapper extends `dl_core.trainers.standard_trainer.StandardTrainer`,
|
|
126
126
|
which builds on the epoch-based `dl_core.core.EpochTrainer`.
|
|
127
127
|
|
|
128
|
+
After successful training, `BaseTrainer.run()` calls `select_checkpoint()` and
|
|
129
|
+
passes that path to `post_training(checkpoint_path)`. The default selector
|
|
130
|
+
returns final `best.pth` when the checkpoint callback created it, falls back to
|
|
131
|
+
final `latest.pth`, and otherwise returns `None`. Override `select_checkpoint()`
|
|
132
|
+
for custom single- or multi-metric model selection, and override
|
|
133
|
+
`post_training()` for completed-run evaluation or export work.
|
|
134
|
+
|
|
128
135
|
## Reproducibility
|
|
129
136
|
|
|
130
137
|
Generated base configs expose reproducibility at the root level:
|
|
@@ -73,7 +73,7 @@ scripts.
|
|
|
73
73
|
Runs a single local training job through the local executor.
|
|
74
74
|
|
|
75
75
|
```bash
|
|
76
|
-
uv run dl-run --config
|
|
76
|
+
uv run dl-run --config experiments/debug.yaml
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
Useful flags:
|
|
@@ -88,7 +88,8 @@ Notes:
|
|
|
88
88
|
- `--validate-only` now performs a lightweight preflight: it validates the
|
|
89
89
|
config, resolves the configured components, safely instantiates the dataset,
|
|
90
90
|
models, criterions, optimizer, and optional scheduler, then exits without
|
|
91
|
-
starting training
|
|
91
|
+
starting training. Malformed YAML roots and section types are reported as
|
|
92
|
+
validation errors instead of failing with an internal exception.
|
|
92
93
|
|
|
93
94
|
## `dl-smoke`
|
|
94
95
|
|