returnn 1.20250419.437__tar.gz → 1.20250422.113157__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.
Potentially problematic release.
This version of returnn might be problematic. Click here for more details.
- {returnn-1.20250419.437/returnn.egg-info → returnn-1.20250422.113157}/PKG-INFO +1 -1
- returnn-1.20250422.113157/_setup_info_generated.py +2 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/basic.py +3 -1
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/meta.py +12 -6
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/util/vocabulary.py +20 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/basic.py +39 -28
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/file_cache.py +101 -42
- {returnn-1.20250419.437 → returnn-1.20250422.113157/returnn.egg-info}/PKG-INFO +1 -1
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/dump-dataset.py +12 -6
- returnn-1.20250419.437/_setup_info_generated.py +0 -2
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/.editorconfig +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/.gitignore +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/.gitmodules +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/.kateconfig +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/CHANGELOG.md +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/CODEOWNERS +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/CONTRIBUTING.md +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/LICENSE +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/MANIFEST.in +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/README.rst +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/12AX.cluster_map +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/_setup_returnn_env.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-fwd.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-horovod-mpi.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-horovod-mpi.py.sh +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-horovod-mpi.sh +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-hyper-param-tuning.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-iter-dataset.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-list-devices.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-lua-torch-layer.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-pretrain.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-record-and-push-to-webserver.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-returnn-as-framework.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-rf-pt-benchmark.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-rf.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-rhn-enwik8.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-sprint-interface.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-att-copy.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-attention.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-enc-dec.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-hard-att-copy.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-lstm-benchmark.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-native-lstm.12ax.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-native-lstm2.12ax.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-neural-transducer.12ax.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-rec-explicit-lstm.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-rec-explicit-rnn.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-rec-self-att.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-search-compiled-graph.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-timit-lstm-ctc.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-torch.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo.sh +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/README.txt +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/chars.txt +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/config_demo +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/config_fwd +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/config_real +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/decode.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/go.sh +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/lines.txt +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/split/eval.txt +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/split/train.txt +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/split/valid.txt +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/README.md +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/artificial/create_test_h5.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/artificial/forwardconfig +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/artificial/go.sh +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/artificial/trainconfig +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/artificial_rgb/go.sh +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/pyproject.toml +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/requirements.txt +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/__main__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/__old_mod_loader__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/__setup__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/config.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/audio.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/bundle_file.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/cached.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/cached2.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/distrib_files.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/generating.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/hdf.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/lm.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/map.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/multi_proc.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/normalization_data.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/numpy_dump.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/postprocessing.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/raw_wav.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/sprint.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/stereo.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/text_dict.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/util/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/util/feature_extraction.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/datasets/util/strings.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/engine/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/engine/base.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/engine/batch.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/__main__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/.git +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/graph_editor/README.md +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/graph_editor/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/graph_editor/edit.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/graph_editor/reroute.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/graph_editor/select.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/graph_editor/subgraph.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/graph_editor/transform.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/extern/graph_editor/util.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/forward_iface.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/_backend.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/_cache.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/_native/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/_native/backend.cpp +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/_native/backend.hpp +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/_native/module.cpp +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/_native/module.hpp +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/_native/py_utils.hpp +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/_native/tensor_ops.cpp +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/_native/tensor_ops.hpp +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/_numpy_backend.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/_random_journal.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/_utils.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/array_.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/attention.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/audio/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/audio/mel.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/audio/specaugment.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/backend.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/build_from_dict.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/cond.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/const.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/container.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/control_flow_ctx.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/conv.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/conversions/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/conversions/hf_llama.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/conversions/torch_nn.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/decoder/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/decoder/transformer.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/device.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/dims.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/dropout.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/dtype.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/encoder/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/encoder/base.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/encoder/conformer.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/encoder/conformer_v2.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/encoder/e_branchformer.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/encoder/transformer.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/gradient.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/graph.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/hooks.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/init.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/label_smoothing.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/linear.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/loop.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/loss.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/math_.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/matmul.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/module.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/nested.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/normalization.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/parameter.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/parametrizations.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/parametrize.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/piecewise_linear.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/rand.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/rec.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/reduce.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/run_ctx.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/signal.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/state.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/stepwise_scheduler.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/tensor_array.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/frontend/types.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/import_/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/import_/common.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/import_/git.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/import_/import_.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/learning_rate_control.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/log.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/native_op.cpp +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/native_op.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/pretrain.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/sprint/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/sprint/cache.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/sprint/control.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/sprint/error_signals.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/sprint/extern_interface.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/sprint/interface.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tensor/README.md +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tensor/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tensor/_dim_extra.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tensor/_tensor_extra.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tensor/_tensor_mixin_base.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tensor/_tensor_op_overloads.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tensor/control_flow_ctx.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tensor/dim.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tensor/marked_dim.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tensor/tensor.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tensor/tensor_dict.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tensor/utils.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/compat.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/data_pipeline.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/distributed.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/engine.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_layers/README.md +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_layers/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_layers/_backend.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_layers/_utils.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_layers/cond.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_layers/dims.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_layers/layer.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_layers/loop.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_layers/make_layer.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_layers/masked_computation.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_low_level/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/frontend_low_level/_backend.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/horovod.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/hyper_param_tuning.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/layers/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/layers/base.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/layers/basic.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/layers/rec.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/layers/segmental_model.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/layers/signal_processing.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/layers/variable.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/native_op.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/network.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/sprint.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/updater.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/util/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/util/basic.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/util/data.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/util/gradient_checkpoint.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/util/ken_lm.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/tf/util/open_fst.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/README.md +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/data/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/data/extern_data.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/data/pipeline.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/data/queued_data_iter.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/data/tensor_utils.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/distributed.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/engine.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/frontend/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/frontend/_backend.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/frontend/_rand.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/frontend/bridge.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/frontend/raw_ops.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/optim/README.md +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/optim/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/optim/lion.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/updater.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/util/README.md +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/util/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/util/array_.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/util/debug_inf_nan.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/util/diagnose_gpu.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/util/exception_helper.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/util/gradient_checkpoint.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/util/module.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/torch/util/scaled_gradient.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/__init__.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/better_exchook.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/bpe.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/debug.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/debug_helpers.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/fsa.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/literal_py_to_pickle.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/lru_cache.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/math.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/native_code_compiler.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/pprint.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/py-to-pickle.cpp +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/py_ext_mod_compiler.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/result_with_reason.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/sig_proc.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/task_system.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/train_proc_manager.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn/util/watch_memory.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn.egg-info/SOURCES.txt +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn.egg-info/dependency_links.txt +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn.egg-info/requires.txt +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/returnn.egg-info/top_level.txt +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/rnn.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/setup.cfg +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/setup.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/DummySprintExec.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/PyCharm-inspection-profile.xml +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/PyCharm.idea/.gitignore +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/PyCharm.idea/.name +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/PyCharm.idea/misc.xml +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/PyCharm.idea/modules.xml +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/PyCharm.idea/returnn.iml +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/_set_num_threads1.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/_setup_returnn_env.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/_setup_test_env.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/bpe-unicode-demo.codes +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/bpe-unicode-demo.vocab +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/lexicon_opt.fst +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/lexicon_opt.isyms +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/lexicon_opt.jpg +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/lexicon_opt.osyms +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/lint_common.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/pycharm-inspect.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/pylint.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/returnn-as-framework.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/rf_utils.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/spelling.dic +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_Config.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_Dataset.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_Fsa.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_GeneratingDataset.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_HDFDataset.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_LearningRateControl.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_Log.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_MultiProcDataset.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_Pretrain.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_ResNet.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_SprintDataset.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_SprintInterface.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_TFEngine.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_TFNativeOp.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_TFNetworkLayer.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_TFNetworkRecLayer.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_TFNetworkSigProcLayer.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_TFUpdater.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_TFUtil.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_TF_determinism.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_TaskSystem.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_TaskSystem_SharedMem.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_TranslationDataset.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_Util.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_demos.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_fork_exec.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_hdf_dump.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_array.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_attention.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_base.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_cond.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_const.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_container.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_conv.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_decoder_transformer.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_encoder_conformer.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_gradient.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_label_smoothing.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_loop.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_math.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_normalization.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_piecewise_linear.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_rec.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_reduce.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_rf_signal.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_tensor.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_threading.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_tools.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_torch_dataset.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_torch_engine.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_torch_frontend.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_torch_internal_frontend.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/test_torch_util.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tests/torch_utils.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/_setup_returnn_env.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/analyze-dataset-batches.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/bliss-collect-seq-lens.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/bliss-dump-text.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/bliss-get-segment-names.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/bliss-to-ogg-zip.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/bpe-create-lexicon.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/calculate-word-error-rate.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/cleanup-old-models.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/collect-orth-symbols.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/collect-words.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/compile_native_op.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/compile_tf_graph.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/debug-dump-search-scores.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/debug-plot-search-scores.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/dump-dataset-raw-strings.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/dump-forward-stats.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/dump-forward.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/dump-network-json.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/dump-pickle.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/extract_state_tying_from_dataset.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/get-attention-weights.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/get-best-model-epoch.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/hdf_dump.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/hdf_dump_translation_dataset.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/import-blocks-mt-model.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/import-t2t-mt-model.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/.gitignore +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/Makefile +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/README.md +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/example/README.md +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/example/libs_list +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/example/state_vars_list +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/example/tensor_names_list +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/file.h +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/main.cc +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/rescorer.h +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/vocabulary.cc +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/lattice_rescorer/vocabulary.h +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/tf_avg_checkpoints.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/tf_inspect_checkpoint.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/tf_inspect_summary_log.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/torch_avg_checkpoints.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/torch_export_to_onnx.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/torch_inspect_checkpoint.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
- {returnn-1.20250419.437 → returnn-1.20250422.113157}/tools/torch_scale_tuning.py +0 -0
|
@@ -1116,7 +1116,9 @@ class Dataset:
|
|
|
1116
1116
|
|
|
1117
1117
|
def serialize_data(self, key: str, data: numpy.ndarray) -> str:
|
|
1118
1118
|
"""
|
|
1119
|
-
|
|
1119
|
+
This is deprecated, as this is slow!
|
|
1120
|
+
In case you have a :class:`Vocabulary`, just use :func:`Vocabulary.get_seq_labels`
|
|
1121
|
+
or :func:`Vocabulary.serialize_labels`.
|
|
1120
1122
|
|
|
1121
1123
|
:param key: e.g. "classes". self.labels[key] should be set
|
|
1122
1124
|
:param numpy.ndarray data: 0D or 1D
|
|
@@ -312,10 +312,7 @@ class MetaDataset(CachedDataset2):
|
|
|
312
312
|
try:
|
|
313
313
|
seq_list = default_dataset.get_all_tags()
|
|
314
314
|
except NotImplementedError:
|
|
315
|
-
raise NotImplementedError(
|
|
316
|
-
"Unsupported %s used as default in MetaDataset."
|
|
317
|
-
" Only datasets with known and tagged sequences can be used." % type(default_dataset)
|
|
318
|
-
)
|
|
315
|
+
raise NotImplementedError(f"{default_dataset}.get_all_tags() required by {self}, but not implemented.")
|
|
319
316
|
|
|
320
317
|
# Catch index out of bounds errors.
|
|
321
318
|
# Whether the tags are actually valid will be checked in _check_dataset_seq().
|
|
@@ -1858,12 +1855,14 @@ class VariableDataset(Dataset):
|
|
|
1858
1855
|
based on a user-provided function.
|
|
1859
1856
|
"""
|
|
1860
1857
|
|
|
1861
|
-
def __init__(self, *, get_dataset, dataset_lru_cache_size: int = 1, **kwargs):
|
|
1858
|
+
def __init__(self, *, get_dataset, dataset_lru_cache_size: int = 1, always_same_tags: bool = False, **kwargs):
|
|
1862
1859
|
"""
|
|
1863
1860
|
:param get_dataset: function (*, epoch: int, **_) -> Dict[str,Any], will be called for every sub-epoch.
|
|
1864
1861
|
It will cache the dataset(s) from the prev call (dataset_lru_cache_size),
|
|
1865
1862
|
and if the dict is the same of those, it will not recreate the dataset.
|
|
1866
|
-
:param dataset_lru_cache_size
|
|
1863
|
+
:param dataset_lru_cache_size:
|
|
1864
|
+
:param always_same_tags: whether all the datasets returned by ``get_dataset`` will have the same tags
|
|
1865
|
+
(same :func:`get_all_tags`).
|
|
1867
1866
|
"""
|
|
1868
1867
|
from functools import lru_cache
|
|
1869
1868
|
|
|
@@ -1872,6 +1871,7 @@ class VariableDataset(Dataset):
|
|
|
1872
1871
|
self._dataset_dict: Optional[Dict[str, Any]] = None
|
|
1873
1872
|
self._dataset: Optional[Dataset] = None
|
|
1874
1873
|
self._dataset_lru_cache_size = dataset_lru_cache_size
|
|
1874
|
+
self._always_same_tags = always_same_tags
|
|
1875
1875
|
self._make_dataset = lru_cache(maxsize=self._dataset_lru_cache_size)(
|
|
1876
1876
|
lambda dataset_dict: init_dataset(dataset_dict, parent_dataset=self)
|
|
1877
1877
|
)
|
|
@@ -1979,6 +1979,12 @@ class VariableDataset(Dataset):
|
|
|
1979
1979
|
"""is data sparse"""
|
|
1980
1980
|
return self._dataset.is_data_sparse(key)
|
|
1981
1981
|
|
|
1982
|
+
def get_all_tags(self) -> List[str]:
|
|
1983
|
+
"""all tags"""
|
|
1984
|
+
if self._always_same_tags:
|
|
1985
|
+
return self._dataset.get_all_tags()
|
|
1986
|
+
raise OptionalNotImplementedError(f"{self}.get_all_tags(): always_same_tags=False, thus could be inconsistent")
|
|
1987
|
+
|
|
1982
1988
|
|
|
1983
1989
|
class MultiEpochDataset(CachedDataset2):
|
|
1984
1990
|
"""
|
|
@@ -339,6 +339,26 @@ class Vocabulary:
|
|
|
339
339
|
labels = self.labels
|
|
340
340
|
return " ".join(map(labels.__getitem__, seq))
|
|
341
341
|
|
|
342
|
+
def serialize_labels(self, data: numpy.ndarray) -> str:
|
|
343
|
+
"""
|
|
344
|
+
Like :func:`get_seq_labels` but a bit more generic, to not just work on sequences,
|
|
345
|
+
but any shape.
|
|
346
|
+
|
|
347
|
+
Also like :func:`Dataset.serialize_data` but even slightly more generic.
|
|
348
|
+
"""
|
|
349
|
+
if data.ndim == 0:
|
|
350
|
+
return self.id_to_label(data.item())
|
|
351
|
+
if data.ndim == 1:
|
|
352
|
+
return self.get_seq_labels(data)
|
|
353
|
+
|
|
354
|
+
def _s(d_: numpy.ndarray) -> str:
|
|
355
|
+
assert d_.ndim >= 1
|
|
356
|
+
if d_.ndim == 1:
|
|
357
|
+
return ",".join(self._labels[i] for i in d_)
|
|
358
|
+
return ",".join(f"[{_s(d_[t])}]" for t in range(d_.shape[0]))
|
|
359
|
+
|
|
360
|
+
return _s(data)
|
|
361
|
+
|
|
342
362
|
|
|
343
363
|
class BytePairEncoding(Vocabulary):
|
|
344
364
|
"""
|
|
@@ -3153,42 +3153,53 @@ class LockFile:
|
|
|
3153
3153
|
Acquires the lock.
|
|
3154
3154
|
"""
|
|
3155
3155
|
import time
|
|
3156
|
-
import errno
|
|
3157
3156
|
|
|
3158
3157
|
wait_count = 0
|
|
3159
3158
|
while True:
|
|
3160
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3159
|
+
if self.try_lock():
|
|
3160
|
+
break
|
|
3161
|
+
# We did not get the lock. Wait a bit, and then retry.
|
|
3162
|
+
time.sleep(min(wait_count * 0.1, 1.0))
|
|
3163
|
+
wait_count += 1
|
|
3164
|
+
if wait_count == 10:
|
|
3165
|
+
print("Waiting for lock-file: %s" % self.lockfile)
|
|
3166
|
+
|
|
3167
|
+
def try_lock(self) -> bool:
|
|
3168
|
+
"""
|
|
3169
|
+
Tries to acquire the lock.
|
|
3170
|
+
|
|
3171
|
+
:return: whether the lock was acquired
|
|
3172
|
+
"""
|
|
3173
|
+
|
|
3174
|
+
import errno
|
|
3175
|
+
|
|
3176
|
+
# Try to create directory if it does not exist.
|
|
3177
|
+
try:
|
|
3178
|
+
os.makedirs(self.directory)
|
|
3179
|
+
except OSError as exc:
|
|
3180
|
+
# Possible errors:
|
|
3181
|
+
# ENOENT (No such file or directory), e.g. if some parent directory was deleted.
|
|
3182
|
+
# EEXIST (File exists), if the dir already exists.
|
|
3183
|
+
if exc.errno not in [errno.ENOENT, errno.EEXIST]:
|
|
3184
|
+
# Other error, so reraise.
|
|
3185
|
+
# Common ones are e.g.:
|
|
3186
|
+
# ENOSPC (No space left on device)
|
|
3187
|
+
# EACCES (Permission denied)
|
|
3188
|
+
raise
|
|
3189
|
+
# Ignore those errors.
|
|
3190
|
+
|
|
3191
|
+
for _ in range(2):
|
|
3174
3192
|
# Now try to create the lock.
|
|
3175
3193
|
try:
|
|
3176
3194
|
self.fd = os.open(self.lockfile, os.O_CREAT | os.O_EXCL | os.O_RDWR)
|
|
3177
|
-
return
|
|
3195
|
+
return True
|
|
3178
3196
|
except OSError as exc:
|
|
3179
|
-
# Possible errors:
|
|
3180
|
-
# ENOENT (No such file or directory), e.g. if the directory was deleted.
|
|
3181
|
-
# EEXIST (File exists), if the lock already exists.
|
|
3182
3197
|
if exc.errno not in [errno.ENOENT, errno.EEXIST]:
|
|
3183
|
-
raise #
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
time.sleep(1)
|
|
3189
|
-
wait_count += 1
|
|
3190
|
-
if wait_count == 10:
|
|
3191
|
-
print("Waiting for lock-file: %s" % self.lockfile)
|
|
3198
|
+
raise # raise any other error
|
|
3199
|
+
# We did not get the lock.
|
|
3200
|
+
# Remove potential stale lockfile before retrying.
|
|
3201
|
+
self.maybe_remove_old_lockfile()
|
|
3202
|
+
return False
|
|
3192
3203
|
|
|
3193
3204
|
def unlock(self):
|
|
3194
3205
|
"""
|
|
@@ -126,11 +126,8 @@ class FileCache:
|
|
|
126
126
|
raise e
|
|
127
127
|
if last_error is not None:
|
|
128
128
|
raise last_error
|
|
129
|
-
info_file = self._get_info_filename(dst_filename)
|
|
130
|
-
os.utime(dst_filename, None)
|
|
131
|
-
os.utime(info_file, None)
|
|
132
129
|
# protect info file from tempreaper, which looks at the mtime
|
|
133
|
-
self._touch_files_thread.files_extend([dst_filename,
|
|
130
|
+
self._touch_files_thread.files_extend([dst_filename, self._get_info_filename(dst_filename)])
|
|
134
131
|
return dst_filename
|
|
135
132
|
|
|
136
133
|
def release_files(self, filenames: Union[str, Iterable[str]]):
|
|
@@ -181,6 +178,9 @@ class FileCache:
|
|
|
181
178
|
elif self._is_info_filename(fn):
|
|
182
179
|
# skip keepalive files, they are processed together with the file they guard
|
|
183
180
|
continue
|
|
181
|
+
elif self._is_lock_filename(fn):
|
|
182
|
+
# skip lock files, removing them would accidentally release locks
|
|
183
|
+
continue
|
|
184
184
|
try:
|
|
185
185
|
f_stat = os.stat(fn)
|
|
186
186
|
except Exception as exc:
|
|
@@ -203,45 +203,85 @@ class FileCache:
|
|
|
203
203
|
for mtime, neg_size, fn in all_files:
|
|
204
204
|
size = -neg_size
|
|
205
205
|
delete_reason = None
|
|
206
|
-
if cur_time - mtime > self._cleanup_files_always_older_than_days * 60 * 60 * 24:
|
|
207
|
-
delete_reason = f"File is {(cur_time - mtime) / 60 / 60 / 24:.1f} days old"
|
|
208
|
-
else:
|
|
209
|
-
reached_more_recent_files = True
|
|
210
|
-
if not delete_reason and need_at_least_free_space_size > cur_expected_free:
|
|
211
|
-
# Still must delete some files.
|
|
212
|
-
if cur_time - mtime > cur_used_time_threshold:
|
|
213
|
-
delete_reason = f"Still need more space, file is {(cur_time - mtime) / 60 / 60:.1f} hours old"
|
|
214
|
-
else:
|
|
215
|
-
raise Exception(
|
|
216
|
-
f"We cannot free enough space on {self.cache_directory}.\n"
|
|
217
|
-
f"Needed: {human_bytes_size(need_at_least_free_space_size)},\n"
|
|
218
|
-
f"currently available: {human_bytes_size(cur_expected_free)},\n"
|
|
219
|
-
f"oldest file is still too recent: {fn}.\n"
|
|
220
|
-
f"{report_size_str}"
|
|
221
|
-
)
|
|
222
|
-
if not delete_reason and want_free_space_size > cur_expected_free:
|
|
223
|
-
if cur_time - mtime > self._cleanup_files_wanted_older_than_days * 60 * 60 * 24:
|
|
224
|
-
delete_reason = f"Still want more space, file is {(cur_time - mtime) / 60 / 60:.1f} hours old"
|
|
225
|
-
else:
|
|
226
|
-
# All further files are even more recent, so we would neither cleanup them,
|
|
227
|
-
# so we can also just stop now.
|
|
228
|
-
break
|
|
229
206
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
207
|
+
lock_dir, lock_file_name = self._get_lock_filename(fn)
|
|
208
|
+
lock_file = LockFile(directory=lock_dir, name=lock_file_name, lock_timeout=self._lock_timeout)
|
|
209
|
+
if not lock_file.try_lock():
|
|
210
|
+
print(f"FileCache: lock for {fn} is currently held, skipping.")
|
|
211
|
+
continue
|
|
212
|
+
try:
|
|
213
|
+
# Re-check mtime with lock, could have been updated by another
|
|
214
|
+
# process in the meantime.
|
|
215
|
+
# We do not update the `mtime` variable here, because the code
|
|
216
|
+
# assumes that the list of files is sorted by mtime to abort
|
|
217
|
+
# early when enough space has been made.
|
|
218
|
+
# Instead, we treat the case where the mtime was updated during
|
|
219
|
+
# cleanup as an outlier and continue as if no other mtimes had
|
|
220
|
+
# changed.
|
|
221
|
+
# See for discussion:
|
|
222
|
+
# - https://github.com/rwth-i6/returnn/issues/1675
|
|
223
|
+
# - https://github.com/rwth-i6/returnn/pull/1709
|
|
241
224
|
try:
|
|
242
|
-
os.
|
|
225
|
+
cur_mtime = os.stat(fn).st_mtime
|
|
226
|
+
except FileNotFoundError:
|
|
227
|
+
# File was deleted while waiting for the lock, or because it was
|
|
228
|
+
# a temporary copy file and was renamed to its final location.
|
|
229
|
+
# Since we don't know whether it was actually deleted or just
|
|
230
|
+
# renamed, we leave cur_expected_free unchanged.
|
|
231
|
+
continue
|
|
243
232
|
except Exception as exc:
|
|
244
|
-
print(f"FileCache:
|
|
233
|
+
print(f"FileCache: Error refreshing mtime of {fn}: {type(exc).__name__}: {exc}")
|
|
234
|
+
continue
|
|
235
|
+
if cur_mtime > mtime and (time.time() - cur_mtime) <= cur_used_time_threshold:
|
|
236
|
+
print(f"FileCache: {fn} has been updated during cleanup, skipping.")
|
|
237
|
+
continue
|
|
238
|
+
if cur_time - mtime > self._cleanup_files_always_older_than_days * 60 * 60 * 24:
|
|
239
|
+
delete_reason = f"File is {(cur_time - mtime) / 60 / 60 / 24:.1f} days old"
|
|
240
|
+
else:
|
|
241
|
+
reached_more_recent_files = True
|
|
242
|
+
if not delete_reason and need_at_least_free_space_size > cur_expected_free:
|
|
243
|
+
# Still must delete some files.
|
|
244
|
+
if cur_time - mtime > cur_used_time_threshold:
|
|
245
|
+
delete_reason = f"Still need more space, file is {(cur_time - mtime) / 60 / 60:.1f} hours old"
|
|
246
|
+
else:
|
|
247
|
+
raise Exception(
|
|
248
|
+
f"We cannot free enough space on {self.cache_directory}.\n"
|
|
249
|
+
f"Needed: {human_bytes_size(need_at_least_free_space_size)},\n"
|
|
250
|
+
f"currently available: {human_bytes_size(cur_expected_free)},\n"
|
|
251
|
+
f"oldest file is still too recent: {fn}.\n"
|
|
252
|
+
f"{report_size_str}"
|
|
253
|
+
)
|
|
254
|
+
if not delete_reason and want_free_space_size > cur_expected_free:
|
|
255
|
+
if cur_time - mtime > self._cleanup_files_wanted_older_than_days * 60 * 60 * 24:
|
|
256
|
+
delete_reason = f"Still want more space, file is {(cur_time - mtime) / 60 / 60:.1f} hours old"
|
|
257
|
+
else:
|
|
258
|
+
# All further files are even more recent, so we would neither cleanup them,
|
|
259
|
+
# so we can also just stop now.
|
|
260
|
+
break
|
|
261
|
+
|
|
262
|
+
if delete_reason:
|
|
263
|
+
cur_expected_free += size
|
|
264
|
+
print(
|
|
265
|
+
f"FileCache: Delete file {fn}, size {human_bytes_size(size)}. {delete_reason}."
|
|
266
|
+
f" After deletion, have {human_bytes_size(cur_expected_free)} free space."
|
|
267
|
+
)
|
|
268
|
+
try:
|
|
269
|
+
os.remove(fn)
|
|
270
|
+
except Exception as exc:
|
|
271
|
+
if not isinstance(exc, FileNotFoundError):
|
|
272
|
+
print(f"FileCache: Error while removing {fn}: {type(exc).__name__}: {exc}")
|
|
273
|
+
|
|
274
|
+
# We don't know whether the file was just renamed or actually deleted, so
|
|
275
|
+
# we do as if its space has not been freed.
|
|
276
|
+
cur_expected_free -= size
|
|
277
|
+
try:
|
|
278
|
+
os.remove(self._get_info_filename(fn))
|
|
279
|
+
except FileNotFoundError:
|
|
280
|
+
pass
|
|
281
|
+
except Exception as exc:
|
|
282
|
+
print(f"FileCache: Ignoring error file removing info file of {fn}: {type(exc).__name__}: {exc}")
|
|
283
|
+
finally:
|
|
284
|
+
lock_file.unlock()
|
|
245
285
|
|
|
246
286
|
if reached_more_recent_files and want_free_space_size <= cur_expected_free:
|
|
247
287
|
# Have enough free space now.
|
|
@@ -311,6 +351,16 @@ class FileCache:
|
|
|
311
351
|
""":return: the name of the corresponding info file to `filename`."""
|
|
312
352
|
return f"{filename}.returnn-info"
|
|
313
353
|
|
|
354
|
+
@staticmethod
|
|
355
|
+
def _get_lock_filename(filename: str) -> Tuple[str, str]:
|
|
356
|
+
""":return: lock file target directory and lock file name"""
|
|
357
|
+
return os.path.dirname(filename), os.path.basename(filename) + ".returnn-lock"
|
|
358
|
+
|
|
359
|
+
@staticmethod
|
|
360
|
+
def _is_lock_filename(filename: str) -> bool:
|
|
361
|
+
""":return: whether `filename` points to a lock file."""
|
|
362
|
+
return filename.endswith(".returnn-lock")
|
|
363
|
+
|
|
314
364
|
@staticmethod
|
|
315
365
|
def _is_info_filename(filename: str) -> bool:
|
|
316
366
|
""":return: whether `filename` points to a info file."""
|
|
@@ -324,13 +374,22 @@ class FileCache:
|
|
|
324
374
|
dst_dir = os.path.dirname(dst_filename)
|
|
325
375
|
os.makedirs(dst_dir, exist_ok=True)
|
|
326
376
|
|
|
377
|
+
lock_dir, lock_file = self._get_lock_filename(dst_filename)
|
|
378
|
+
info_file_name = self._get_info_filename(dst_filename)
|
|
379
|
+
|
|
327
380
|
# Copy the file, while holding a lock. See comment on lock_timeout above.
|
|
328
381
|
with LockFile(
|
|
329
|
-
directory=
|
|
382
|
+
directory=lock_dir, name=lock_file, lock_timeout=self._lock_timeout
|
|
330
383
|
) as lock, self._touch_files_thread.files_added_context(lock.lockfile):
|
|
331
384
|
# Maybe it was copied in the meantime, while waiting for the lock.
|
|
332
385
|
if self._check_existing_copied_file_maybe_cleanup(src_filename, dst_filename):
|
|
333
386
|
print(f"FileCache: using existing file {dst_filename}")
|
|
387
|
+
# Update mtime while holding lock, to synchronize with any concurrent cleanup.
|
|
388
|
+
# See for discussion:
|
|
389
|
+
# - https://github.com/rwth-i6/returnn/issues/1675
|
|
390
|
+
# - https://github.com/rwth-i6/returnn/pull/1709
|
|
391
|
+
os.utime(dst_filename, None)
|
|
392
|
+
os.utime(info_file_name, None)
|
|
334
393
|
return
|
|
335
394
|
|
|
336
395
|
print(f"FileCache: Copy file {src_filename} to cache")
|
|
@@ -352,7 +411,7 @@ class FileCache:
|
|
|
352
411
|
with self._touch_files_thread.files_added_context(dst_dir):
|
|
353
412
|
# save mtime before the copy process to have it pessimistic
|
|
354
413
|
orig_mtime_ns = os.stat(src_filename).st_mtime_ns
|
|
355
|
-
FileInfo(mtime_ns=orig_mtime_ns).save(
|
|
414
|
+
FileInfo(mtime_ns=orig_mtime_ns).save(info_file_name)
|
|
356
415
|
|
|
357
416
|
_copy_with_prealloc(src_filename, dst_tmp_filename)
|
|
358
417
|
os.rename(dst_tmp_filename, dst_filename)
|
|
@@ -18,6 +18,7 @@ from returnn.log import log
|
|
|
18
18
|
import argparse
|
|
19
19
|
import numpy
|
|
20
20
|
from returnn.datasets import init_dataset, Dataset
|
|
21
|
+
from returnn.datasets.util.vocabulary import Vocabulary
|
|
21
22
|
from returnn.util.basic import Stats, hms, hms_fraction, pretty_print, NumbersDict
|
|
22
23
|
from returnn.util import basic as util
|
|
23
24
|
|
|
@@ -87,6 +88,13 @@ def dump_dataset(options):
|
|
|
87
88
|
print("Done.")
|
|
88
89
|
return
|
|
89
90
|
|
|
91
|
+
# Inlined and cached can_serialize_data / serialize_data.
|
|
92
|
+
vocabs = {}
|
|
93
|
+
for key in dataset.get_data_keys():
|
|
94
|
+
labels = dataset.labels.get(key)
|
|
95
|
+
if labels and len(labels) > 1:
|
|
96
|
+
vocabs[key] = Vocabulary.create_vocab_from_labels(labels)
|
|
97
|
+
|
|
90
98
|
dump_file = None
|
|
91
99
|
if options.type == "numpy":
|
|
92
100
|
print("Dump files: %r*%r" % (options.dump_prefix, options.dump_postfix), file=log.v3)
|
|
@@ -192,9 +200,8 @@ def dump_dataset(options):
|
|
|
192
200
|
elif options.type == "stdout":
|
|
193
201
|
print("seq %s tag:" % progress, dataset.get_tag(seq_idx))
|
|
194
202
|
extra = ""
|
|
195
|
-
if "data" in
|
|
196
|
-
|
|
197
|
-
extra += " (%r)" % dataset.serialize_data(key="data", data=data)
|
|
203
|
+
if "data" in vocabs:
|
|
204
|
+
extra += " (%r)" % vocabs["data"].serialize_labels(data)
|
|
198
205
|
print("seq %s data: %s%s" % (progress, pretty_print(data), extra))
|
|
199
206
|
elif options.type == "print_shape":
|
|
200
207
|
print("seq %s data shape:" % progress, data.shape)
|
|
@@ -210,9 +217,8 @@ def dump_dataset(options):
|
|
|
210
217
|
)
|
|
211
218
|
elif options.type == "stdout":
|
|
212
219
|
extra = ""
|
|
213
|
-
if target in
|
|
214
|
-
|
|
215
|
-
extra += " (%r)" % dataset.serialize_data(key=target, data=targets)
|
|
220
|
+
if target in vocabs:
|
|
221
|
+
extra += " (%r)" % vocabs[target].serialize_labels(targets)
|
|
216
222
|
print("seq %i target %r: %s%s" % (seq_idx, target, pretty_print(targets), extra))
|
|
217
223
|
elif options.type == "print_shape":
|
|
218
224
|
print("seq %i target %r shape:" % (seq_idx, target), targets.shape)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-record-and-push-to-webserver.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-chunking-blstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-contribrnn-lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-maxgradnorm-lstm.12ax.config
RENAMED
|
File without changes
|
{returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-native-lstm-lowmem.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-native-lstm2.12ax.tuned.config
RENAMED
|
File without changes
|
{returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-tf-neural-transducer.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/demo-upd-mult-model.lstm.12ax.config
RENAMED
|
File without changes
|
|
File without changes
|
{returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png
RENAMED
|
File without changes
|
{returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png
RENAMED
|
File without changes
|
{returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/artificial/create_test_h5.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{returnn-1.20250419.437 → returnn-1.20250422.113157}/demos/mdlstm/artificial_rgb/create_test_h5.py
RENAMED
|
File without changes
|