returnn 1.20251106.185107__tar.gz → 1.20260118.2517__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.20251106.185107/returnn.egg-info → returnn-1.20260118.2517}/PKG-INFO +2 -2
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/README.rst +1 -1
- returnn-1.20260118.2517/_setup_info_generated.py +2 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/pyproject.toml +3 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/__old_mod_loader__.py +26 -2
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/lm.py +110 -42
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/meta.py +93 -43
- returnn-1.20260118.2517/returnn/datasets/postprocessing.py +981 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_backend.py +34 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/__init__.py +22 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_utils.py +1 -1
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/array_.py +48 -2
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/attention.py +53 -20
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/conv.py +273 -54
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/device.py +14 -1
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/encoder/conformer.py +19 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/encoder/transformer.py +2 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/loss.py +81 -3
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/math_.py +54 -14
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/native_op.cpp +182 -172
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/native_op.py +36 -31
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/sprint/cache.py +12 -13
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/_dim_extra.py +7 -7
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/_tensor_extra.py +10 -10
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/utils.py +7 -4
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/_backend.py +5 -3
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/layers/basic.py +15 -39
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/native_op.py +11 -58
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/network.py +1 -1
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/util/basic.py +22 -197
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/engine.py +120 -3
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/frontend/_backend.py +267 -29
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/frontend/bridge.py +61 -0
- returnn-1.20260118.2517/returnn/torch/frontend/compile_helper.py +106 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/array_.py +30 -0
- returnn-1.20260118.2517/returnn/torch/util/assert_.py +122 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/exception_helper.py +7 -1
- returnn-1.20260118.2517/returnn/torch/util/native_op.py +885 -0
- returnn-1.20260118.2517/returnn/torch/util/native_op_code_compiler.py +306 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/basic.py +6 -7
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/better_exchook.py +4 -0
- returnn-1.20260118.2517/returnn/util/cuda_env.py +332 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/debug.py +12 -2
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/native_code_compiler.py +104 -47
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/task_system.py +1 -1
- {returnn-1.20251106.185107 → returnn-1.20260118.2517/returnn.egg-info}/PKG-INFO +2 -2
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn.egg-info/SOURCES.txt +8 -0
- returnn-1.20260118.2517/tests/fsa_utils.py +196 -0
- returnn-1.20260118.2517/tests/numpy_ref_edit_distance.py +65 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/rf_utils.py +8 -4
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_Dataset.py +89 -8
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TFNativeOp.py +7 -371
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_Util.py +140 -3
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_array.py +112 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_attention.py +5 -5
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_base.py +112 -44
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_conv.py +31 -1
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_torch_engine.py +1 -1
- returnn-1.20260118.2517/tests/test_torch_native_op.py +1247 -0
- returnn-1.20251106.185107/_setup_info_generated.py +0 -2
- returnn-1.20251106.185107/returnn/datasets/postprocessing.py +0 -492
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/.editorconfig +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/.gitignore +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/.gitmodules +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/.kateconfig +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/CHANGELOG.md +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/CODEOWNERS +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/CONTRIBUTING.md +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/LICENSE +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/MANIFEST.in +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/12AX.cluster_map +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/_setup_returnn_env.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-fwd.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-horovod-mpi.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-horovod-mpi.py.sh +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-horovod-mpi.sh +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-hyper-param-tuning.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-iter-dataset.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-list-devices.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-lua-torch-layer.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-pretrain.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-record-and-push-to-webserver.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-returnn-as-framework.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-rf-pt-benchmark.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-rf.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-rhn-enwik8.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-sprint-interface.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-att-copy.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-attention.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-enc-dec.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-hard-att-copy.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-lstm-benchmark.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-native-lstm.12ax.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-native-lstm2.12ax.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-neural-transducer.12ax.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-rec-explicit-lstm.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-rec-explicit-rnn.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-rec-self-att.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-search-compiled-graph.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-timit-lstm-ctc.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-torch.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo.sh +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/README.txt +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/chars.txt +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/config_demo +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/config_fwd +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/config_real +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/decode.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/go.sh +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/lines.txt +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/split/eval.txt +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/split/train.txt +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/split/valid.txt +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/README.md +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial/create_test_h5.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial/forwardconfig +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial/go.sh +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial/trainconfig +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial_rgb/go.sh +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/requirements.txt +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/__main__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/__setup__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/config.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/audio.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/basic.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/bundle_file.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/cached.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/cached2.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/distrib_files.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/generating.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/hdf.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/huggingface.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/map.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/multi_proc.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/normalization_data.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/numpy_dump.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/raw_wav.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/sprint.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/stereo.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/text_dict.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/util/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/util/feature_extraction.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/util/strings.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/util/vocabulary.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/engine/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/engine/base.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/engine/batch.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/__main__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/.git +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/README.md +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/edit.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/reroute.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/select.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/subgraph.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/transform.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/util.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/forward_iface.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_cache.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/backend.cpp +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/backend.hpp +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/module.cpp +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/module.hpp +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/py_utils.hpp +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/tensor_ops.cpp +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/tensor_ops.hpp +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_numpy_backend.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_random_journal.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/audio/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/audio/mel.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/audio/specaugment.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/backend.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/build_from_dict.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/cond.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/const.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/container.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/control_flow_ctx.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/conversions/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/conversions/hf_llama.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/conversions/torch_nn.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/decoder/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/decoder/transformer.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/dims.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/dropout.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/dtype.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/encoder/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/encoder/base.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/encoder/conformer_v2.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/encoder/e_branchformer.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/gradient.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/graph.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/hooks.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/init.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/label_smoothing.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/linear.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/loop.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/matmul.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/module.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/nested.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/normalization.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/parameter.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/parametrizations.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/parametrize.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/piecewise_linear.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/rand.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/rec.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/reduce.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/run_ctx.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/signal.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/state.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/stepwise_scheduler.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/tensor_array.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/types.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/import_/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/import_/common.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/import_/git.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/import_/import_.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/learning_rate_control.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/log.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/pretrain.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/sprint/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/sprint/control.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/sprint/error_signals.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/sprint/extern_interface.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/sprint/interface.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/README.md +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/_tensor_mixin_base.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/_tensor_op_overloads.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/control_flow_ctx.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/dim.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/marked_dim.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/tensor.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/tensor_dict.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/compat.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/data_pipeline.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/distributed.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/engine.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/README.md +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/_utils.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/cond.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/dims.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/layer.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/loop.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/make_layer.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/masked_computation.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_low_level/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_low_level/_backend.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/horovod.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/hyper_param_tuning.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/layers/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/layers/base.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/layers/rec.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/layers/segmental_model.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/layers/signal_processing.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/layers/variable.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/sprint.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/updater.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/util/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/util/data.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/util/gradient_checkpoint.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/util/ken_lm.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/util/open_fst.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/README.md +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/data/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/data/extern_data.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/data/pipeline.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/data/queued_data_iter.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/data/tensor_utils.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/distributed.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/frontend/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/frontend/_rand.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/frontend/raw_ops.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/optim/README.md +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/optim/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/optim/lion.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/updater.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/README.md +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/debug_inf_nan.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/diagnose_gpu.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/gradient_checkpoint.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/module.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/scaled_gradient.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/__init__.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/bpe.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/collect_outputs_dict.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/debug_helpers.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/file_cache.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/fsa.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/literal_py_to_pickle.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/lru_cache.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/math.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/pprint.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/py-to-pickle.cpp +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/py_ext_mod_compiler.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/result_with_reason.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/sig_proc.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/train_proc_manager.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/watch_memory.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn.egg-info/dependency_links.txt +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn.egg-info/requires.txt +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn.egg-info/top_level.txt +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/rnn.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/setup.cfg +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/setup.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/DummySprintExec.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm-inspection-profile.xml +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/.gitignore +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/.name +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/misc.xml +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/modules.xml +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/returnn.iml +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/_set_num_threads1.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/_setup_returnn_env.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/_setup_test_env.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/bpe-unicode-demo.codes +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/bpe-unicode-demo.vocab +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/lexicon_opt.fst +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/lexicon_opt.isyms +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/lexicon_opt.jpg +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/lexicon_opt.osyms +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/lint_common.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/pycharm-inspect.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/pylint.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/returnn-as-framework.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/spelling.dic +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_Config.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_Fsa.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_GeneratingDataset.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_HDFDataset.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_LearningRateControl.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_Log.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_MultiProcDataset.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_Pretrain.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_ResNet.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_SprintDataset.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_SprintInterface.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TFEngine.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TFNetworkLayer.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TFNetworkRecLayer.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TFNetworkSigProcLayer.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TFUpdater.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TFUtil.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TF_determinism.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TaskSystem.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TaskSystem_SharedMem.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TranslationDataset.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_datasets_huggingface.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_demos.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_fork_exec.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_hdf_dump.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_cond.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_const.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_container.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_decoder_transformer.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_encoder_conformer.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_gradient.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_label_smoothing.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_loop.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_math.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_normalization.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_piecewise_linear.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_rec.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_reduce.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_signal.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_tensor.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_threading.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_tools.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_torch_dataset.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_torch_frontend.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_torch_internal_frontend.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_torch_util.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/torch_utils.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/_setup_returnn_env.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/analyze-dataset-batches.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/bliss-collect-seq-lens.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/bliss-dump-text.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/bliss-get-segment-names.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/bliss-to-ogg-zip.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/bpe-create-lexicon.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/calculate-word-error-rate.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/cleanup-old-models.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/collect-orth-symbols.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/collect-words.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/compile_native_op.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/compile_tf_graph.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/debug-dump-search-scores.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/debug-plot-search-scores.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/dump-dataset-raw-strings.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/dump-dataset.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/dump-forward-stats.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/dump-forward.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/dump-network-json.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/dump-pickle.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/extract_state_tying_from_dataset.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/file-cache.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/get-attention-weights.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/get-best-model-epoch.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/hdf_dump.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/hdf_dump_translation_dataset.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/import-blocks-mt-model.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/import-t2t-mt-model.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/.gitignore +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/Makefile +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/README.md +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/example/README.md +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/example/libs_list +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/example/state_vars_list +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/example/tensor_names_list +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/file.h +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/main.cc +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/rescorer.h +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/vocabulary.cc +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/vocabulary.h +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/tf_avg_checkpoints.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/tf_inspect_checkpoint.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/tf_inspect_summary_log.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/torch_avg_checkpoints.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/torch_export_to_onnx.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/torch_inspect_checkpoint.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
- {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/torch_scale_tuning.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: returnn
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.20260118.2517
|
|
4
4
|
Summary: The RWTH extensible training framework for universal recurrent neural networks
|
|
5
5
|
Home-page: https://github.com/rwth-i6/returnn/
|
|
6
6
|
Author: Albert Zeyer
|
|
@@ -36,7 +36,7 @@ Welcome to RETURNN
|
|
|
36
36
|
`RETURNN paper 2018 <https://arxiv.org/abs/1805.05225>`_.
|
|
37
37
|
|
|
38
38
|
RETURNN - RWTH extensible training framework for universal recurrent neural networks,
|
|
39
|
-
is a
|
|
39
|
+
is a PyTorch/TensorFlow-based implementation of modern recurrent neural network architectures.
|
|
40
40
|
It is optimized for fast and reliable training of recurrent neural networks in a multi-GPU environment.
|
|
41
41
|
|
|
42
42
|
The high-level features and goals of RETURNN are:
|
|
@@ -7,7 +7,7 @@ Welcome to RETURNN
|
|
|
7
7
|
`RETURNN paper 2018 <https://arxiv.org/abs/1805.05225>`_.
|
|
8
8
|
|
|
9
9
|
RETURNN - RWTH extensible training framework for universal recurrent neural networks,
|
|
10
|
-
is a
|
|
10
|
+
is a PyTorch/TensorFlow-based implementation of modern recurrent neural network architectures.
|
|
11
11
|
It is optimized for fast and reliable training of recurrent neural networks in a multi-GPU environment.
|
|
12
12
|
|
|
13
13
|
The high-level features and goals of RETURNN are:
|
|
@@ -16,6 +16,9 @@ extend-exclude = '''
|
|
|
16
16
|
[tool.ruff]
|
|
17
17
|
line-length = 120
|
|
18
18
|
target-version = "py38" # https://github.com/rwth-i6/returnn/issues/1326
|
|
19
|
+
extend-exclude = [
|
|
20
|
+
".github/workflows/_pytorch_collect_env.py",
|
|
21
|
+
]
|
|
19
22
|
|
|
20
23
|
[build-system]
|
|
21
24
|
requires = ["setuptools", "numpy"]
|
|
@@ -17,7 +17,7 @@ This is supported as well.
|
|
|
17
17
|
import sys
|
|
18
18
|
import os
|
|
19
19
|
import types
|
|
20
|
-
import
|
|
20
|
+
from typing import Any, Dict
|
|
21
21
|
import importlib
|
|
22
22
|
|
|
23
23
|
old_to_new_mod_mapping = {
|
|
@@ -122,7 +122,7 @@ class _LazyLoader(types.ModuleType):
|
|
|
122
122
|
fn = "%s/%s/__init__.py" % (_base_dir, full_mod_name.replace(".", "/"))
|
|
123
123
|
assert os.path.exists(fn), "_LazyLoader: mod %r not found in %r" % (full_mod_name, _base_dir)
|
|
124
124
|
self.__file__ = fn
|
|
125
|
-
self._lazy_mod_config = dict(full_mod_name=full_mod_name, **kwargs)
|
|
125
|
+
self._lazy_mod_config: Dict[str, Any] = dict(full_mod_name=full_mod_name, **kwargs)
|
|
126
126
|
|
|
127
127
|
def _load(self):
|
|
128
128
|
full_mod_name = self.__name__
|
|
@@ -172,6 +172,30 @@ class _LazyLoader(types.ModuleType):
|
|
|
172
172
|
return super(_LazyLoader, self).__getattribute__(item)
|
|
173
173
|
|
|
174
174
|
def __getattr__(self, item):
|
|
175
|
+
if item == "torch":
|
|
176
|
+
# torch.compile Dynamo hashing can trigger this, when it uses pickle to serialize some object state,
|
|
177
|
+
# which iterates through sys.modules and does getattr on each module.
|
|
178
|
+
# In this case, it searches for torch.
|
|
179
|
+
# File ".../torch/_inductor/codecache.py", line 607 in dumps
|
|
180
|
+
# File ".../torch/_inductor/codecache.py", line 622 in get_hash
|
|
181
|
+
# File ".../torch/_inductor/codecache.py", line 961 in compiled_fx_graph_hash
|
|
182
|
+
# ...
|
|
183
|
+
# Unfortunately, Pickler.dump is native code, so we cannot easily check whether that is the parent frame.
|
|
184
|
+
# The C stacktrace looks like:
|
|
185
|
+
# ...
|
|
186
|
+
# 7 Python 0x0000000102e7d504 call_attribute + 80
|
|
187
|
+
# 8 Python 0x0000000102e7d400 _Py_slot_tp_getattr_hook + 576
|
|
188
|
+
# 9 Python 0x0000000102e507a0 PyObject_GetOptionalAttr + 248
|
|
189
|
+
# 10 _pickle.cpython-313-darwin.so 0x0000000102d24fb4 get_deep_attribute + 104
|
|
190
|
+
# 11 _pickle.cpython-313-darwin.so 0x0000000102d250b8 _checkmodule + 88
|
|
191
|
+
# 12 _pickle.cpython-313-darwin.so 0x0000000102d22588 save_global + 3024
|
|
192
|
+
# 13 _pickle.cpython-313-darwin.so 0x0000000102d1eddc save + 3424
|
|
193
|
+
# ...
|
|
194
|
+
# Right now, we just check for `item == "torch"` as a heuristic,
|
|
195
|
+
# which should never exist for any of the old-style wrapped modules here.
|
|
196
|
+
# We could maybe also check sys._getframe(1).f_code or so and add some other heuristics...
|
|
197
|
+
raise AttributeError(f"module {self.__name__} has no attribute {item} (lazy loading skipped)")
|
|
198
|
+
|
|
175
199
|
module = self._load()
|
|
176
200
|
return getattr(module, item)
|
|
177
201
|
|
|
@@ -86,6 +86,7 @@ class LmDataset(CachedDataset2):
|
|
|
86
86
|
delayed_seq_data_start_symbol="[START]",
|
|
87
87
|
dtype: Optional[str] = None,
|
|
88
88
|
tag_prefix: Optional[str] = None,
|
|
89
|
+
_debug_limit_line_count: Optional[int] = None,
|
|
89
90
|
**kwargs,
|
|
90
91
|
):
|
|
91
92
|
"""
|
|
@@ -138,6 +139,8 @@ class LmDataset(CachedDataset2):
|
|
|
138
139
|
delayed_seq_data_start_symbol + original_sequence[:-1].
|
|
139
140
|
:param str delayed_seq_data_start_symbol: used for add_delayed_seq_data.
|
|
140
141
|
:param dtype: explicit dtype. if not given, automatically determined based on the number of labels.
|
|
142
|
+
:param tag_prefix: prefix for sequence tags. by default "line-".
|
|
143
|
+
:param _debug_limit_line_count:
|
|
141
144
|
"""
|
|
142
145
|
super(LmDataset, self).__init__(**kwargs)
|
|
143
146
|
|
|
@@ -316,6 +319,10 @@ class LmDataset(CachedDataset2):
|
|
|
316
319
|
self.num_skipped = 0
|
|
317
320
|
self.num_unknown = 0
|
|
318
321
|
|
|
322
|
+
if _debug_limit_line_count is None:
|
|
323
|
+
_debug_limit_line_count = _get_debug_limit_line_count()
|
|
324
|
+
self._debug_limit_line_count = _debug_limit_line_count
|
|
325
|
+
|
|
319
326
|
def _lazy_init(self):
|
|
320
327
|
if self._orths_offsets_and_lens is not None:
|
|
321
328
|
return
|
|
@@ -340,6 +347,9 @@ class LmDataset(CachedDataset2):
|
|
|
340
347
|
lens_per_corpus_file = []
|
|
341
348
|
start_time = time.time()
|
|
342
349
|
last_print_time = start_time
|
|
350
|
+
debug_limit_line_count = self._debug_limit_line_count
|
|
351
|
+
debug_limit_est_total = 0
|
|
352
|
+
debug_limit_hit = False
|
|
343
353
|
|
|
344
354
|
def _init_tmp_file():
|
|
345
355
|
nonlocal tmp_file, tmp_file_orth_files_index
|
|
@@ -368,13 +378,16 @@ class LmDataset(CachedDataset2):
|
|
|
368
378
|
|
|
369
379
|
if time.time() - last_print_time > 10:
|
|
370
380
|
print(
|
|
371
|
-
f" ... loaded {len(
|
|
381
|
+
f" ... loaded {len(orths)} sequences,"
|
|
372
382
|
f" {human_bytes_size(total_bytes_read)},"
|
|
373
383
|
f" after {hms(time.time() - start_time)}",
|
|
374
384
|
file=log.v4,
|
|
375
385
|
)
|
|
376
386
|
last_print_time = time.time()
|
|
377
387
|
|
|
388
|
+
if debug_limit_line_count is not None and len(orths) - prev_orth_len >= debug_limit_line_count:
|
|
389
|
+
raise _ReachedDebugLimitLineCount()
|
|
390
|
+
|
|
378
391
|
# If a list of files is provided, concatenate all.
|
|
379
392
|
if isinstance(corpus_file, str):
|
|
380
393
|
corpus_file = [corpus_file]
|
|
@@ -383,37 +396,46 @@ class LmDataset(CachedDataset2):
|
|
|
383
396
|
for file_name in corpus_file:
|
|
384
397
|
if self._use_cache_manager:
|
|
385
398
|
file_name = cf(file_name)
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
#
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
399
|
+
|
|
400
|
+
try:
|
|
401
|
+
if _is_bliss(file_name):
|
|
402
|
+
_init_tmp_file()
|
|
403
|
+
_iter_bliss(filename=file_name, callback=_tmp_file_add_line, decode=False)
|
|
404
|
+
elif file_name.endswith(".gz"):
|
|
405
|
+
_init_tmp_file()
|
|
406
|
+
_iter_txt(
|
|
407
|
+
filename=file_name,
|
|
408
|
+
callback=_tmp_file_add_line,
|
|
409
|
+
skip_empty_lines=self._skip_empty_lines,
|
|
410
|
+
decode=False,
|
|
411
|
+
)
|
|
412
|
+
else: # Raw txt file
|
|
413
|
+
# Directly mmap the file.
|
|
414
|
+
# We just need to scan once through it to find line offsets.
|
|
415
|
+
file = open(file_name, "rb")
|
|
416
|
+
file_mmap = mmap.mmap(file.fileno(), 0, flags=mmap.MAP_PRIVATE)
|
|
417
|
+
file_index = len(self._orth_files)
|
|
418
|
+
self._orth_files.append(file)
|
|
419
|
+
self._orth_mmaps.append(file_mmap)
|
|
420
|
+
|
|
421
|
+
pos = 0
|
|
422
|
+
while True:
|
|
423
|
+
next_new_line = file_mmap.find(b"\n", pos)
|
|
424
|
+
if next_new_line == -1:
|
|
425
|
+
break
|
|
426
|
+
line_len = next_new_line - pos
|
|
427
|
+
if line_len or not self._skip_empty_lines:
|
|
428
|
+
orths.append((file_index, pos, line_len))
|
|
429
|
+
total_bytes_read += line_len + 1
|
|
430
|
+
pos = next_new_line + 1
|
|
431
|
+
_maybe_report_status()
|
|
432
|
+
|
|
433
|
+
except _ReachedDebugLimitLineCount as exc:
|
|
434
|
+
assert exc.estimated_total_num_seqs is not None # currently only for _iter_txt implemented
|
|
435
|
+
debug_limit_est_total += exc.estimated_total_num_seqs
|
|
436
|
+
debug_limit_hit = True
|
|
437
|
+
else: # iteration completed without hitting debug limit
|
|
438
|
+
debug_limit_est_total += len(orths) - prev_orth_len
|
|
417
439
|
|
|
418
440
|
lens_per_corpus_file.append(len(orths) - prev_orth_len)
|
|
419
441
|
prev_orth_len = len(orths)
|
|
@@ -447,6 +469,18 @@ class LmDataset(CachedDataset2):
|
|
|
447
469
|
file=log.v4,
|
|
448
470
|
)
|
|
449
471
|
|
|
472
|
+
if debug_limit_hit:
|
|
473
|
+
est_frac_loaded = len(self._orths_offsets_and_lens) / debug_limit_est_total
|
|
474
|
+
new_partition_epoch = max(int(self.partition_epoch * est_frac_loaded), 1)
|
|
475
|
+
print(
|
|
476
|
+
f"LmDataset: debug limit of {debug_limit_line_count} lines (per file) hit,"
|
|
477
|
+
f" estimated total num seqs {debug_limit_est_total},"
|
|
478
|
+
f" loaded {len(self._orths_offsets_and_lens)}, {est_frac_loaded:.2%},"
|
|
479
|
+
f" adjusting partition_epoch from {self.partition_epoch} to {new_partition_epoch}",
|
|
480
|
+
file=log.v4,
|
|
481
|
+
)
|
|
482
|
+
self.partition_epoch = new_partition_epoch
|
|
483
|
+
|
|
450
484
|
# It's only estimated because we might filter some out or so.
|
|
451
485
|
self._estimated_num_seqs = len(self._orths_offsets_and_lens) // self.partition_epoch
|
|
452
486
|
|
|
@@ -784,19 +818,34 @@ def _iter_txt(
|
|
|
784
818
|
:param decode:
|
|
785
819
|
"""
|
|
786
820
|
f = open(filename, "rb")
|
|
821
|
+
f_ = f
|
|
787
822
|
if filename.endswith(".gz"):
|
|
788
823
|
f = gzip.GzipFile(fileobj=f)
|
|
789
824
|
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
825
|
+
count = 0
|
|
826
|
+
try:
|
|
827
|
+
for line in f:
|
|
828
|
+
if decode:
|
|
829
|
+
try:
|
|
830
|
+
line = line.decode("utf8")
|
|
831
|
+
except UnicodeDecodeError:
|
|
832
|
+
line = line.decode("latin_1") # or iso8859_15?
|
|
833
|
+
line = line.strip()
|
|
834
|
+
if skip_empty_lines and not line:
|
|
835
|
+
continue
|
|
836
|
+
count += 1
|
|
837
|
+
callback(line)
|
|
838
|
+
|
|
839
|
+
except _ReachedDebugLimitLineCount as exc:
|
|
840
|
+
print(f"Reached debug limit line count for {filename}, stopping early", file=log.v4)
|
|
841
|
+
pos = f_.tell()
|
|
842
|
+
f_.seek(0, os.SEEK_END)
|
|
843
|
+
size = f_.tell()
|
|
844
|
+
print(f" stopped at byte {human_bytes_size(pos)} / {human_bytes_size(size)}", file=log.v4)
|
|
845
|
+
estimated_num_seqs = int(count * (size / pos))
|
|
846
|
+
print(f" estimated total num seqs: {estimated_num_seqs}", file=log.v4)
|
|
847
|
+
exc.estimated_total_num_seqs = estimated_num_seqs
|
|
848
|
+
raise
|
|
800
849
|
|
|
801
850
|
|
|
802
851
|
def iter_corpus(
|
|
@@ -2517,6 +2566,25 @@ def get_post_processor_function(opts):
|
|
|
2517
2566
|
return chained_post_processors
|
|
2518
2567
|
|
|
2519
2568
|
|
|
2569
|
+
def _get_debug_limit_line_count() -> Optional[int]:
|
|
2570
|
+
"""
|
|
2571
|
+
:return: if set, limit to this many lines for debugging
|
|
2572
|
+
"""
|
|
2573
|
+
from returnn.config import get_global_config
|
|
2574
|
+
|
|
2575
|
+
config = get_global_config(raise_exception=False)
|
|
2576
|
+
if not config:
|
|
2577
|
+
return None
|
|
2578
|
+
|
|
2579
|
+
return config.int("lm_dataset_debug_limit_line_count", None)
|
|
2580
|
+
|
|
2581
|
+
|
|
2582
|
+
class _ReachedDebugLimitLineCount(Exception):
|
|
2583
|
+
"""internal exception to signal reached debug limit line count"""
|
|
2584
|
+
|
|
2585
|
+
estimated_total_num_seqs: Optional[int] = None
|
|
2586
|
+
|
|
2587
|
+
|
|
2520
2588
|
def _main():
|
|
2521
2589
|
from returnn.util import better_exchook
|
|
2522
2590
|
|
|
@@ -253,22 +253,12 @@ class MetaDataset(CachedDataset2):
|
|
|
253
253
|
}
|
|
254
254
|
|
|
255
255
|
self._seq_list_file = seq_list_file
|
|
256
|
-
self.seq_list_original =
|
|
257
|
-
self.
|
|
258
|
-
for key in self.dataset_keys:
|
|
259
|
-
assert len(self.seq_list_original[key]) == self.num_total_seqs
|
|
260
|
-
|
|
261
|
-
self.tag_idx = {tag: idx for (idx, tag) in enumerate(self.seq_list_original[self.default_dataset_key])}
|
|
256
|
+
self.seq_list_original: Optional[Dict[str, List[str]]] = None
|
|
257
|
+
self.tag_idx: Optional[Dict[str, int]] = None
|
|
262
258
|
|
|
263
259
|
self._seq_lens: Optional[Dict[str, NumbersDict]] = None
|
|
264
260
|
self._num_timesteps: Optional[NumbersDict] = None
|
|
265
261
|
self._seq_lens_file = seq_lens_file
|
|
266
|
-
if seq_lens_file:
|
|
267
|
-
seq_lens = load_json(filename=seq_lens_file)
|
|
268
|
-
assert isinstance(seq_lens, dict)
|
|
269
|
-
# dict[str,NumbersDict], seq-tag -> data-key -> len
|
|
270
|
-
self._seq_lens = {tag: NumbersDict(l) for (tag, l) in seq_lens.items()}
|
|
271
|
-
self._num_timesteps = sum([self._seq_lens[s] for s in self.seq_list_original[self.default_dataset_key]])
|
|
272
262
|
|
|
273
263
|
if data_dims:
|
|
274
264
|
data_dims = convert_data_dims(data_dims)
|
|
@@ -290,19 +280,20 @@ class MetaDataset(CachedDataset2):
|
|
|
290
280
|
self.num_outputs = self.data_dims
|
|
291
281
|
|
|
292
282
|
self.orig_seq_order_is_initialized = False
|
|
283
|
+
self._current_seq_order: List[int] = []
|
|
293
284
|
self.seq_list_ordered: Optional[Dict[str, List[str]]] = None
|
|
294
285
|
|
|
295
|
-
def
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
if not seq_list_file:
|
|
286
|
+
def _lazy_init_seq_list(self):
|
|
287
|
+
if self.seq_list_original is not None:
|
|
288
|
+
return
|
|
289
|
+
|
|
290
|
+
if not self._seq_list_file:
|
|
301
291
|
# We create a sequence list from all the sequences of the default dataset
|
|
302
292
|
# and hope that it also applies to the
|
|
303
293
|
# other datasets.
|
|
304
294
|
# This can only work if all datasets have the same tag format and the sequences in the other
|
|
305
295
|
# datasets are a subset of those in the default dataset.
|
|
296
|
+
# (But the order does not matter.)
|
|
306
297
|
default_dataset = self.datasets[self.default_dataset_key]
|
|
307
298
|
assert isinstance(default_dataset, Dataset)
|
|
308
299
|
print(
|
|
@@ -349,17 +340,18 @@ class MetaDataset(CachedDataset2):
|
|
|
349
340
|
break # only print one
|
|
350
341
|
del seq_list_set
|
|
351
342
|
raise Exception("Dataset %r is missing seqs." % key)
|
|
352
|
-
elif isinstance(
|
|
353
|
-
seq_list = Dataset._load_seq_list_file(
|
|
354
|
-
elif isinstance(
|
|
343
|
+
elif isinstance(self._seq_list_file, str):
|
|
344
|
+
seq_list = Dataset._load_seq_list_file(self._seq_list_file, expect_list=False)
|
|
345
|
+
elif isinstance(self._seq_list_file, dict):
|
|
355
346
|
for key in self.dataset_keys:
|
|
356
|
-
if key not in
|
|
347
|
+
if key not in self._seq_list_file:
|
|
357
348
|
raise ValueError(f"seq_list_file does not contain all datasets, missing {key}")
|
|
358
|
-
seq_list = {key: Dataset._load_seq_list_file(
|
|
349
|
+
seq_list = {key: Dataset._load_seq_list_file(self._seq_list_file[key]) for key in self.dataset_keys}
|
|
359
350
|
else:
|
|
360
|
-
raise TypeError(f"unexpected seq_list_file type {type(
|
|
351
|
+
raise TypeError(f"unexpected seq_list_file type {type(self._seq_list_file)}")
|
|
361
352
|
|
|
362
353
|
if isinstance(seq_list, list):
|
|
354
|
+
# Use same seq list for all datasets
|
|
363
355
|
seq_list = {key: seq_list for key in self.dataset_keys}
|
|
364
356
|
elif isinstance(seq_list, dict):
|
|
365
357
|
for key in self.dataset_keys:
|
|
@@ -368,10 +360,29 @@ class MetaDataset(CachedDataset2):
|
|
|
368
360
|
else:
|
|
369
361
|
raise TypeError(f"unexpected seq_list type {type(seq_list)}")
|
|
370
362
|
|
|
371
|
-
|
|
363
|
+
for key in self.dataset_keys:
|
|
364
|
+
assert len(seq_list[key]) == len(seq_list[self.default_dataset_key])
|
|
365
|
+
|
|
366
|
+
self.seq_list_original = seq_list
|
|
367
|
+
|
|
368
|
+
def _lazy_init_tag_idx(self):
|
|
369
|
+
if self.tag_idx is not None:
|
|
370
|
+
return
|
|
371
|
+
self._lazy_init_seq_list()
|
|
372
|
+
self.tag_idx = {tag: idx for (idx, tag) in enumerate(self.seq_list_original[self.default_dataset_key])}
|
|
373
|
+
|
|
374
|
+
def _lazy_init_seq_lens(self):
|
|
375
|
+
if self._seq_lens is not None:
|
|
376
|
+
return
|
|
377
|
+
assert self._seq_lens_file
|
|
378
|
+
seq_lens = load_json(filename=self._seq_lens_file)
|
|
379
|
+
assert isinstance(seq_lens, dict)
|
|
380
|
+
# dict[str,NumbersDict], seq-tag -> data-key -> len
|
|
381
|
+
self._seq_lens = {tag: NumbersDict(lens) for (tag, lens) in seq_lens.items()}
|
|
372
382
|
|
|
373
383
|
def _get_dataset_seq_length(self, seq_idx: int):
|
|
374
384
|
if not self.orig_seq_order_is_initialized:
|
|
385
|
+
self._lazy_init_seq_list()
|
|
375
386
|
# To use get_seq_length() we first have to init the sequence order once in original order.
|
|
376
387
|
# If sequence lengths are not needed by get_seq_order_for_epoch this is never executed.
|
|
377
388
|
self.datasets[self.default_dataset_key].init_seq_order(
|
|
@@ -379,6 +390,9 @@ class MetaDataset(CachedDataset2):
|
|
|
379
390
|
)
|
|
380
391
|
self.orig_seq_order_is_initialized = True
|
|
381
392
|
|
|
393
|
+
# Warning: This is not correct in the general case.
|
|
394
|
+
# get_seq_length needs to have load_seqs called beforehand per API contract.
|
|
395
|
+
# For some datasets, it might anyway work.
|
|
382
396
|
return self.datasets[self.default_dataset_key].get_seq_length(seq_idx)["data"]
|
|
383
397
|
|
|
384
398
|
def init_seq_order(self, epoch=None, seq_list=None, seq_order=None):
|
|
@@ -392,6 +406,7 @@ class MetaDataset(CachedDataset2):
|
|
|
392
406
|
self.epoch is None
|
|
393
407
|
or self.epoch != epoch
|
|
394
408
|
or self.seq_list_ordered is None
|
|
409
|
+
or not self._current_seq_order
|
|
395
410
|
or seq_list is not None
|
|
396
411
|
or seq_order is not None
|
|
397
412
|
or self.expected_load_seq_start > 0
|
|
@@ -401,16 +416,17 @@ class MetaDataset(CachedDataset2):
|
|
|
401
416
|
# This is called via initialize() with epoch=None, just to init some other things.
|
|
402
417
|
# We are not expected to have prepared any real epoch here.
|
|
403
418
|
self._num_seqs = 0
|
|
419
|
+
self._current_seq_order = []
|
|
404
420
|
return True
|
|
405
421
|
|
|
406
422
|
if not need_reinit:
|
|
407
|
-
self._num_seqs = len(self.seq_list_ordered[self.default_dataset_key])
|
|
408
423
|
return False
|
|
409
424
|
|
|
410
425
|
seq_order_dataset = None
|
|
411
426
|
if seq_order is not None:
|
|
412
427
|
seq_index = seq_order
|
|
413
428
|
elif seq_list is not None:
|
|
429
|
+
self._lazy_init_tag_idx()
|
|
414
430
|
seq_index = [self.tag_idx[tag] for tag in seq_list]
|
|
415
431
|
elif self.seq_order_control_dataset:
|
|
416
432
|
seq_order_dataset = self.datasets[self.seq_order_control_dataset]
|
|
@@ -418,13 +434,15 @@ class MetaDataset(CachedDataset2):
|
|
|
418
434
|
seq_order_dataset.init_seq_order(epoch=epoch)
|
|
419
435
|
seq_index = seq_order_dataset.get_current_seq_order()
|
|
420
436
|
else:
|
|
421
|
-
if self.
|
|
437
|
+
if self._seq_lens_file:
|
|
422
438
|
|
|
423
439
|
def get_seq_len(s):
|
|
424
440
|
"""
|
|
425
441
|
:param int s:
|
|
426
442
|
:rtype: int
|
|
427
443
|
"""
|
|
444
|
+
self._lazy_init_seq_list()
|
|
445
|
+
self._lazy_init_seq_lens()
|
|
428
446
|
return self._seq_lens[self.seq_list_original[self.default_dataset_key][s]]["data"]
|
|
429
447
|
|
|
430
448
|
elif self._seq_order_seq_lens_file:
|
|
@@ -432,8 +450,10 @@ class MetaDataset(CachedDataset2):
|
|
|
432
450
|
else:
|
|
433
451
|
self.orig_seq_order_is_initialized = False
|
|
434
452
|
get_seq_len = self._get_dataset_seq_length
|
|
435
|
-
seq_index = self.get_seq_order_for_epoch(epoch, self.
|
|
453
|
+
seq_index = self.get_seq_order_for_epoch(epoch, self.get_total_num_seqs(), get_seq_len)
|
|
436
454
|
self._num_seqs = len(seq_index)
|
|
455
|
+
self._current_seq_order = seq_index
|
|
456
|
+
self._lazy_init_seq_list()
|
|
437
457
|
self.seq_list_ordered = {key: [ls[s] for s in seq_index] for (key, ls) in self.seq_list_original.items()}
|
|
438
458
|
|
|
439
459
|
for dataset_key, dataset in self.datasets.items():
|
|
@@ -447,7 +467,7 @@ class MetaDataset(CachedDataset2):
|
|
|
447
467
|
"""supports sorting"""
|
|
448
468
|
if self.seq_order_control_dataset:
|
|
449
469
|
return self.datasets[self.seq_order_control_dataset].supports_seq_order_sorting()
|
|
450
|
-
if self.
|
|
470
|
+
if self._seq_lens_file or self._seq_order_seq_lens_file:
|
|
451
471
|
return True
|
|
452
472
|
return False
|
|
453
473
|
|
|
@@ -464,20 +484,40 @@ class MetaDataset(CachedDataset2):
|
|
|
464
484
|
:return: current seq order for the current epoch, after self.init_seq_order was called.
|
|
465
485
|
:rtype: list[int]
|
|
466
486
|
"""
|
|
467
|
-
return
|
|
487
|
+
return self._current_seq_order
|
|
468
488
|
|
|
469
489
|
def get_all_tags(self):
|
|
470
490
|
"""
|
|
471
491
|
:return: list of all seq tags, of the whole dataset, without partition epoch
|
|
472
492
|
:rtype: list[str]
|
|
473
493
|
"""
|
|
494
|
+
if self._seq_list_file is None:
|
|
495
|
+
return self.datasets[self.default_dataset_key].get_all_tags()
|
|
496
|
+
self._lazy_init_seq_list()
|
|
497
|
+
assert self.seq_list_original is not None
|
|
474
498
|
return self.seq_list_original[self.default_dataset_key]
|
|
475
499
|
|
|
476
500
|
def get_total_num_seqs(self, *, fast: bool = False) -> int:
|
|
477
501
|
"""
|
|
502
|
+
:param fast: if True, might raise an exception if not possible to get fast.
|
|
478
503
|
:return: total number of seqs, without partition epoch
|
|
479
504
|
"""
|
|
480
|
-
|
|
505
|
+
if self._seq_list_file is None:
|
|
506
|
+
return self.datasets[self.default_dataset_key].get_total_num_seqs(fast=fast)
|
|
507
|
+
if fast and self.seq_list_original is None:
|
|
508
|
+
raise OptionalNotImplementedError(f"{self} get_total_num_seqs, seq list not loaded yet")
|
|
509
|
+
self._lazy_init_seq_list()
|
|
510
|
+
assert self.seq_list_original is not None
|
|
511
|
+
return len(self.seq_list_original[self.default_dataset_key])
|
|
512
|
+
|
|
513
|
+
def get_num_timesteps(self):
|
|
514
|
+
"""num timesteps"""
|
|
515
|
+
if self._num_timesteps is None and self._seq_lens_file:
|
|
516
|
+
self._lazy_init_seq_lens()
|
|
517
|
+
self._num_timesteps = sum([self._seq_lens[s] for s in self.get_all_tags()], start=NumbersDict())
|
|
518
|
+
if self._seq_list_file is None:
|
|
519
|
+
return self.datasets[self.default_dataset_key].get_num_timesteps()
|
|
520
|
+
return super().get_num_timesteps()
|
|
481
521
|
|
|
482
522
|
def finish_epoch(self, *, free_resources: bool = False):
|
|
483
523
|
"""
|
|
@@ -503,8 +543,9 @@ class MetaDataset(CachedDataset2):
|
|
|
503
543
|
if start_ < end:
|
|
504
544
|
for dataset_key in self.dataset_keys:
|
|
505
545
|
self.datasets[dataset_key].load_seqs(start_, end)
|
|
506
|
-
|
|
507
|
-
|
|
546
|
+
if self.seq_list_ordered is not None:
|
|
547
|
+
for seq_idx in range(start_, end):
|
|
548
|
+
self._check_dataset_seq(dataset_key, seq_idx)
|
|
508
549
|
super(MetaDataset, self)._load_seqs(start=start, end=end)
|
|
509
550
|
|
|
510
551
|
def _check_dataset_seq(self, dataset_key, seq_idx):
|
|
@@ -531,7 +572,7 @@ class MetaDataset(CachedDataset2):
|
|
|
531
572
|
:type seq_idx: int
|
|
532
573
|
:rtype: DatasetSeq
|
|
533
574
|
"""
|
|
534
|
-
seq_tag = self.
|
|
575
|
+
seq_tag = self.get_tag(seq_idx)
|
|
535
576
|
features = {data_key: self._get_data(seq_idx, data_key) for data_key in self.data_keys}
|
|
536
577
|
return DatasetSeq(seq_idx=seq_idx, seq_tag=seq_tag, features=features)
|
|
537
578
|
|
|
@@ -540,8 +581,9 @@ class MetaDataset(CachedDataset2):
|
|
|
540
581
|
:param int sorted_seq_idx:
|
|
541
582
|
:rtype: NumbersDict
|
|
542
583
|
"""
|
|
543
|
-
if self.
|
|
544
|
-
|
|
584
|
+
if self._seq_lens_file:
|
|
585
|
+
self._lazy_init_seq_lens()
|
|
586
|
+
return self._seq_lens[self.get_tag(sorted_seq_idx)]
|
|
545
587
|
return super(MetaDataset, self).get_seq_length(sorted_seq_idx)
|
|
546
588
|
|
|
547
589
|
def get_tag(self, sorted_seq_idx):
|
|
@@ -549,7 +591,10 @@ class MetaDataset(CachedDataset2):
|
|
|
549
591
|
:param int sorted_seq_idx:
|
|
550
592
|
:rtype: str
|
|
551
593
|
"""
|
|
552
|
-
|
|
594
|
+
if self.seq_list_ordered is not None:
|
|
595
|
+
return self.seq_list_ordered[self.default_dataset_key][sorted_seq_idx]
|
|
596
|
+
else:
|
|
597
|
+
return self.datasets[self.default_dataset_key].get_tag(sorted_seq_idx)
|
|
553
598
|
|
|
554
599
|
def get_complete_frac(self, sorted_seq_idx: int, **kwargs) -> Optional[float]:
|
|
555
600
|
"""
|
|
@@ -961,6 +1006,7 @@ class CombinedDataset(CachedDataset2):
|
|
|
961
1006
|
super(CombinedDataset, self).__init__(**kwargs)
|
|
962
1007
|
assert self.shuffle_frames_of_nseqs == 0 # not implemented. anyway only for non-recurrent nets
|
|
963
1008
|
|
|
1009
|
+
self.data_map = data_map
|
|
964
1010
|
self.dataset_keys = set([m[0] for m in data_map.keys()]) # type: typing.Set[str]
|
|
965
1011
|
self.dataset_idx2key_map = dict(enumerate(sorted(self.dataset_keys))) # idx -> dataset-key
|
|
966
1012
|
self.data_keys = set(data_map.values()) # type: typing.Set[str]
|
|
@@ -1248,6 +1294,10 @@ class CombinedDataset(CachedDataset2):
|
|
|
1248
1294
|
# Cur meaning for the next sequence to be added to dataset_sorted_seq_idx_list.
|
|
1249
1295
|
seq_idx = self.used_num_seqs_per_subset[dataset_idx]
|
|
1250
1296
|
cur_start, cur_end = self._sub_dataset_cur_loaded_seq_range[dataset_idx]
|
|
1297
|
+
|
|
1298
|
+
if not self.datasets[self.dataset_idx2key_map[dataset_idx]].is_less_than_num_seqs(seq_idx):
|
|
1299
|
+
return False
|
|
1300
|
+
|
|
1251
1301
|
if seq_idx >= cur_end:
|
|
1252
1302
|
self._sub_dataset_load_seqs(dataset_idx, cur_start, seq_idx + 1)
|
|
1253
1303
|
return True
|
|
@@ -1294,10 +1344,12 @@ class CombinedDataset(CachedDataset2):
|
|
|
1294
1344
|
complete_fracs_and_ds_idx = [
|
|
1295
1345
|
(
|
|
1296
1346
|
self.datasets[self.dataset_idx2key_map[j]].get_complete_frac(
|
|
1297
|
-
self.used_num_seqs_per_subset[j]
|
|
1347
|
+
self.used_num_seqs_per_subset[j], allow_only_lr_suitable=True
|
|
1348
|
+
)
|
|
1349
|
+
if self.datasets[self.dataset_idx2key_map[j]].is_less_than_num_seqs(
|
|
1350
|
+
self.used_num_seqs_per_subset[j]
|
|
1298
1351
|
)
|
|
1299
|
-
|
|
1300
|
-
else 0.0,
|
|
1352
|
+
else float("inf"),
|
|
1301
1353
|
j,
|
|
1302
1354
|
)
|
|
1303
1355
|
for j in range(len(self.datasets))
|
|
@@ -1309,9 +1361,7 @@ class CombinedDataset(CachedDataset2):
|
|
|
1309
1361
|
# Sort by complete frac, i.e. datasets with the lowest complete frac first.
|
|
1310
1362
|
complete_fracs_and_ds_idx.sort()
|
|
1311
1363
|
for complete_frac, dataset_idx in complete_fracs_and_ds_idx:
|
|
1312
|
-
if
|
|
1313
|
-
self.used_num_seqs_per_subset[dataset_idx]
|
|
1314
|
-
):
|
|
1364
|
+
if complete_frac < float("inf"):
|
|
1315
1365
|
break
|
|
1316
1366
|
else:
|
|
1317
1367
|
return False # No dataset has remaining data
|