returnn 1.20250810.211220__tar.gz → 1.20251104.113756__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.

Files changed (481) hide show
  1. {returnn-1.20250810.211220/returnn.egg-info → returnn-1.20251104.113756}/PKG-INFO +1 -1
  2. returnn-1.20251104.113756/_setup_info_generated.py +2 -0
  3. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/config.py +1 -1
  4. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/basic.py +45 -17
  5. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/distrib_files.py +65 -6
  6. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/generating.py +12 -21
  7. returnn-1.20251104.113756/returnn/datasets/huggingface.py +434 -0
  8. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/lm.py +20 -0
  9. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/meta.py +92 -23
  10. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/multi_proc.py +6 -5
  11. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/text_dict.py +1 -1
  12. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_backend.py +14 -0
  13. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_cache.py +4 -2
  14. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/array_.py +87 -21
  15. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/attention.py +1 -0
  16. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/conv.py +7 -4
  17. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/decoder/transformer.py +36 -17
  18. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/dims.py +26 -10
  19. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/encoder/conformer.py +33 -8
  20. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/hooks.py +3 -3
  21. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/module.py +8 -1
  22. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/nested.py +10 -1
  23. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/normalization.py +1 -1
  24. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/rand.py +14 -0
  25. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/signal.py +1 -1
  26. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/_dim_extra.py +375 -557
  27. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/_tensor_extra.py +6 -1
  28. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/_backend.py +7 -0
  29. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_low_level/_backend.py +15 -0
  30. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/layers/basic.py +2 -0
  31. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/data/returnn_dataset_wrapper.py +9 -3
  32. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/engine.py +43 -2
  33. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/frontend/_backend.py +31 -1
  34. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/updater.py +60 -30
  35. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/diagnose_gpu.py +65 -31
  36. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/basic.py +25 -8
  37. returnn-1.20251104.113756/returnn/util/collect_outputs_dict.py +79 -0
  38. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/file_cache.py +46 -4
  39. {returnn-1.20250810.211220 → returnn-1.20251104.113756/returnn.egg-info}/PKG-INFO +1 -1
  40. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn.egg-info/SOURCES.txt +4 -0
  41. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/rf_utils.py +26 -5
  42. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_Dataset.py +104 -1
  43. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TFUtil.py +1 -70
  44. returnn-1.20251104.113756/tests/test_datasets_huggingface.py +201 -0
  45. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_array.py +40 -0
  46. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_attention.py +2 -2
  47. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_base.py +45 -0
  48. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_conv.py +19 -0
  49. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_decoder_transformer.py +245 -0
  50. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_encoder_conformer.py +136 -25
  51. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_signal.py +34 -0
  52. returnn-1.20251104.113756/tests/test_tensor.py +189 -0
  53. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_torch_engine.py +122 -0
  54. returnn-1.20251104.113756/tools/file-cache.py +109 -0
  55. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/torch_scale_tuning.py +1 -1
  56. returnn-1.20250810.211220/_setup_info_generated.py +0 -2
  57. returnn-1.20250810.211220/tests/test_tensor.py +0 -40
  58. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/.editorconfig +0 -0
  59. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/.gitignore +0 -0
  60. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/.gitmodules +0 -0
  61. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/.kateconfig +0 -0
  62. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/CHANGELOG.md +0 -0
  63. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/CODEOWNERS +0 -0
  64. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/CONTRIBUTING.md +0 -0
  65. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/LICENSE +0 -0
  66. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/MANIFEST.in +0 -0
  67. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/README.rst +0 -0
  68. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/__init__.py +0 -0
  69. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/12AX.cluster_map +0 -0
  70. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/_setup_returnn_env.py +0 -0
  71. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-fwd.config +0 -0
  72. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-horovod-mpi.py +0 -0
  73. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-horovod-mpi.py.sh +0 -0
  74. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-horovod-mpi.sh +0 -0
  75. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-hyper-param-tuning.config +0 -0
  76. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-iter-dataset.py +0 -0
  77. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-list-devices.py +0 -0
  78. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-lua-torch-layer.config +0 -0
  79. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-pretrain.config +0 -0
  80. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-record-and-push-to-webserver.py +0 -0
  81. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-returnn-as-framework.py +0 -0
  82. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-rf-pt-benchmark.py +0 -0
  83. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-rf.config +0 -0
  84. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-rhn-enwik8.config +0 -0
  85. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-sprint-interface.py +0 -0
  86. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-att-copy.config +0 -0
  87. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-attention.config +0 -0
  88. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
  89. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
  90. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-enc-dec.config +0 -0
  91. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-hard-att-copy.config +0 -0
  92. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-lstm-benchmark.py +0 -0
  93. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
  94. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
  95. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-native-lstm.12ax.config +0 -0
  96. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-native-lstm2.12ax.config +0 -0
  97. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
  98. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-neural-transducer.12ax.config +0 -0
  99. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-rec-explicit-lstm.config +0 -0
  100. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-rec-explicit-rnn.config +0 -0
  101. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-rec-self-att.config +0 -0
  102. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-search-compiled-graph.py +0 -0
  103. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
  104. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-timit-lstm-ctc.config +0 -0
  105. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-torch.config +0 -0
  106. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
  107. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/demo.sh +0 -0
  108. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
  109. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
  110. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
  111. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/README.txt +0 -0
  112. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/chars.txt +0 -0
  113. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/config_demo +0 -0
  114. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/config_fwd +0 -0
  115. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/config_real +0 -0
  116. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
  117. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/decode.py +0 -0
  118. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
  119. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/go.sh +0 -0
  120. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/lines.txt +0 -0
  121. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/split/eval.txt +0 -0
  122. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/split/train.txt +0 -0
  123. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/IAM/split/valid.txt +0 -0
  124. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/README.md +0 -0
  125. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial/create_test_h5.py +0 -0
  126. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial/forwardconfig +0 -0
  127. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial/go.sh +0 -0
  128. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial/trainconfig +0 -0
  129. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
  130. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
  131. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial_rgb/go.sh +0 -0
  132. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
  133. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/pyproject.toml +0 -0
  134. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/requirements.txt +0 -0
  135. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/__init__.py +0 -0
  136. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/__main__.py +0 -0
  137. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/__old_mod_loader__.py +0 -0
  138. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/__setup__.py +0 -0
  139. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/__init__.py +0 -0
  140. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/audio.py +0 -0
  141. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/bundle_file.py +0 -0
  142. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/cached.py +0 -0
  143. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/cached2.py +0 -0
  144. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/hdf.py +0 -0
  145. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/map.py +0 -0
  146. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/normalization_data.py +0 -0
  147. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/numpy_dump.py +0 -0
  148. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/postprocessing.py +0 -0
  149. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/raw_wav.py +0 -0
  150. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/sprint.py +0 -0
  151. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/stereo.py +0 -0
  152. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/util/__init__.py +0 -0
  153. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/util/feature_extraction.py +0 -0
  154. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/util/strings.py +0 -0
  155. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/datasets/util/vocabulary.py +0 -0
  156. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/engine/__init__.py +0 -0
  157. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/engine/base.py +0 -0
  158. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/engine/batch.py +0 -0
  159. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/__init__.py +0 -0
  160. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/__main__.py +0 -0
  161. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/.git +0 -0
  162. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
  163. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
  164. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
  165. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
  166. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
  167. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
  168. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
  169. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
  170. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
  171. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
  172. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
  173. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
  174. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
  175. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
  176. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
  177. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
  178. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
  179. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
  180. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
  181. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
  182. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
  183. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
  184. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
  185. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
  186. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/__init__.py +0 -0
  187. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/README.md +0 -0
  188. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/__init__.py +0 -0
  189. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/edit.py +0 -0
  190. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/reroute.py +0 -0
  191. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/select.py +0 -0
  192. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/subgraph.py +0 -0
  193. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/transform.py +0 -0
  194. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/extern/graph_editor/util.py +0 -0
  195. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/forward_iface.py +0 -0
  196. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/__init__.py +0 -0
  197. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/__init__.py +0 -0
  198. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/backend.cpp +0 -0
  199. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/backend.hpp +0 -0
  200. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/module.cpp +0 -0
  201. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/module.hpp +0 -0
  202. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/py_utils.hpp +0 -0
  203. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/tensor_ops.cpp +0 -0
  204. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_native/tensor_ops.hpp +0 -0
  205. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_numpy_backend.py +0 -0
  206. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_random_journal.py +0 -0
  207. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/_utils.py +0 -0
  208. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/audio/__init__.py +0 -0
  209. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/audio/mel.py +0 -0
  210. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/audio/specaugment.py +0 -0
  211. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/backend.py +0 -0
  212. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/build_from_dict.py +0 -0
  213. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/cond.py +0 -0
  214. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/const.py +0 -0
  215. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/container.py +0 -0
  216. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/control_flow_ctx.py +0 -0
  217. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/conversions/__init__.py +0 -0
  218. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
  219. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/conversions/hf_llama.py +0 -0
  220. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/conversions/torch_nn.py +0 -0
  221. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/decoder/__init__.py +0 -0
  222. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/device.py +0 -0
  223. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/dropout.py +0 -0
  224. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/dtype.py +0 -0
  225. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/encoder/__init__.py +0 -0
  226. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/encoder/base.py +0 -0
  227. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/encoder/conformer_v2.py +0 -0
  228. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/encoder/e_branchformer.py +0 -0
  229. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/encoder/transformer.py +0 -0
  230. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/gradient.py +0 -0
  231. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/graph.py +0 -0
  232. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/init.py +0 -0
  233. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/label_smoothing.py +0 -0
  234. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/linear.py +0 -0
  235. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/loop.py +0 -0
  236. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/loss.py +0 -0
  237. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/math_.py +0 -0
  238. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/matmul.py +0 -0
  239. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/parameter.py +0 -0
  240. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/parametrizations.py +0 -0
  241. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/parametrize.py +0 -0
  242. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/piecewise_linear.py +0 -0
  243. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/rec.py +0 -0
  244. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/reduce.py +0 -0
  245. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/run_ctx.py +0 -0
  246. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/state.py +0 -0
  247. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/stepwise_scheduler.py +0 -0
  248. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/tensor_array.py +0 -0
  249. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/frontend/types.py +0 -0
  250. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/import_/__init__.py +0 -0
  251. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/import_/common.py +0 -0
  252. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/import_/git.py +0 -0
  253. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/import_/import_.py +0 -0
  254. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/learning_rate_control.py +0 -0
  255. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/log.py +0 -0
  256. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/native_op.cpp +0 -0
  257. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/native_op.py +0 -0
  258. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/pretrain.py +0 -0
  259. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/sprint/__init__.py +0 -0
  260. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/sprint/cache.py +0 -0
  261. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/sprint/control.py +0 -0
  262. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/sprint/error_signals.py +0 -0
  263. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/sprint/extern_interface.py +0 -0
  264. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/sprint/interface.py +0 -0
  265. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/README.md +0 -0
  266. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/__init__.py +0 -0
  267. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/_tensor_mixin_base.py +0 -0
  268. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/_tensor_op_overloads.py +0 -0
  269. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/control_flow_ctx.py +0 -0
  270. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/dim.py +0 -0
  271. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/marked_dim.py +0 -0
  272. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/tensor.py +0 -0
  273. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/tensor_dict.py +0 -0
  274. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tensor/utils.py +0 -0
  275. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/__init__.py +0 -0
  276. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/compat.py +0 -0
  277. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/data_pipeline.py +0 -0
  278. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/distributed.py +0 -0
  279. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/engine.py +0 -0
  280. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/README.md +0 -0
  281. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/__init__.py +0 -0
  282. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/_utils.py +0 -0
  283. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/cond.py +0 -0
  284. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
  285. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
  286. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/dims.py +0 -0
  287. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/layer.py +0 -0
  288. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/loop.py +0 -0
  289. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/make_layer.py +0 -0
  290. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/masked_computation.py +0 -0
  291. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
  292. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
  293. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/frontend_low_level/__init__.py +0 -0
  294. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/horovod.py +0 -0
  295. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/hyper_param_tuning.py +0 -0
  296. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/layers/__init__.py +0 -0
  297. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/layers/base.py +0 -0
  298. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/layers/rec.py +0 -0
  299. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/layers/segmental_model.py +0 -0
  300. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/layers/signal_processing.py +0 -0
  301. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/layers/variable.py +0 -0
  302. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/native_op.py +0 -0
  303. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/network.py +0 -0
  304. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/sprint.py +0 -0
  305. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/updater.py +0 -0
  306. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/util/__init__.py +0 -0
  307. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/util/basic.py +0 -0
  308. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/util/data.py +0 -0
  309. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/util/gradient_checkpoint.py +0 -0
  310. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/util/ken_lm.py +0 -0
  311. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/tf/util/open_fst.py +0 -0
  312. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/README.md +0 -0
  313. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/__init__.py +0 -0
  314. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/data/__init__.py +0 -0
  315. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/data/extern_data.py +0 -0
  316. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/data/pipeline.py +0 -0
  317. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/data/queued_data_iter.py +0 -0
  318. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/data/tensor_utils.py +0 -0
  319. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/distributed.py +0 -0
  320. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/frontend/__init__.py +0 -0
  321. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/frontend/_rand.py +0 -0
  322. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/frontend/bridge.py +0 -0
  323. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/frontend/raw_ops.py +0 -0
  324. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/optim/README.md +0 -0
  325. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/optim/__init__.py +0 -0
  326. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/optim/lion.py +0 -0
  327. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/README.md +0 -0
  328. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/__init__.py +0 -0
  329. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/array_.py +0 -0
  330. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/debug_inf_nan.py +0 -0
  331. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/exception_helper.py +0 -0
  332. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/gradient_checkpoint.py +0 -0
  333. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/module.py +0 -0
  334. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/torch/util/scaled_gradient.py +0 -0
  335. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/__init__.py +0 -0
  336. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/better_exchook.py +0 -0
  337. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/bpe.py +0 -0
  338. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/debug.py +0 -0
  339. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/debug_helpers.py +0 -0
  340. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/fsa.py +0 -0
  341. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/literal_py_to_pickle.py +0 -0
  342. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/lru_cache.py +0 -0
  343. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/math.py +0 -0
  344. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
  345. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/native_code_compiler.py +0 -0
  346. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/pprint.py +0 -0
  347. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/py-to-pickle.cpp +0 -0
  348. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/py_ext_mod_compiler.py +0 -0
  349. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/result_with_reason.py +0 -0
  350. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/sig_proc.py +0 -0
  351. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/task_system.py +0 -0
  352. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/train_proc_manager.py +0 -0
  353. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn/util/watch_memory.py +0 -0
  354. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn.egg-info/dependency_links.txt +0 -0
  355. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn.egg-info/requires.txt +0 -0
  356. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/returnn.egg-info/top_level.txt +0 -0
  357. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/rnn.py +0 -0
  358. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/setup.cfg +0 -0
  359. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/setup.py +0 -0
  360. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/DummySprintExec.py +0 -0
  361. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm-inspection-profile.xml +0 -0
  362. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/.gitignore +0 -0
  363. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/.name +0 -0
  364. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
  365. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
  366. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
  367. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
  368. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
  369. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/misc.xml +0 -0
  370. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/modules.xml +0 -0
  371. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/returnn.iml +0 -0
  372. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
  373. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/_set_num_threads1.py +0 -0
  374. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/_setup_returnn_env.py +0 -0
  375. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/_setup_test_env.py +0 -0
  376. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/bpe-unicode-demo.codes +0 -0
  377. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/bpe-unicode-demo.vocab +0 -0
  378. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/lexicon_opt.fst +0 -0
  379. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/lexicon_opt.isyms +0 -0
  380. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/lexicon_opt.jpg +0 -0
  381. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/lexicon_opt.osyms +0 -0
  382. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/lint_common.py +0 -0
  383. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/pycharm-inspect.py +0 -0
  384. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/pylint.py +0 -0
  385. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/returnn-as-framework.py +0 -0
  386. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/spelling.dic +0 -0
  387. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_Config.py +0 -0
  388. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_Fsa.py +0 -0
  389. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_GeneratingDataset.py +0 -0
  390. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_HDFDataset.py +0 -0
  391. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_LearningRateControl.py +0 -0
  392. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_Log.py +0 -0
  393. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_MultiProcDataset.py +0 -0
  394. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_Pretrain.py +0 -0
  395. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_ResNet.py +0 -0
  396. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_SprintDataset.py +0 -0
  397. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_SprintInterface.py +0 -0
  398. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TFEngine.py +0 -0
  399. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TFNativeOp.py +0 -0
  400. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TFNetworkLayer.py +0 -0
  401. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TFNetworkRecLayer.py +0 -0
  402. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TFNetworkSigProcLayer.py +0 -0
  403. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TFUpdater.py +0 -0
  404. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TF_determinism.py +0 -0
  405. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TaskSystem.py +0 -0
  406. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TaskSystem_SharedMem.py +0 -0
  407. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_TranslationDataset.py +0 -0
  408. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_Util.py +0 -0
  409. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_demos.py +0 -0
  410. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_fork_exec.py +0 -0
  411. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_hdf_dump.py +0 -0
  412. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_cond.py +0 -0
  413. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_const.py +0 -0
  414. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_container.py +0 -0
  415. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_gradient.py +0 -0
  416. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_label_smoothing.py +0 -0
  417. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_loop.py +0 -0
  418. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_math.py +0 -0
  419. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_normalization.py +0 -0
  420. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_piecewise_linear.py +0 -0
  421. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_rec.py +0 -0
  422. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_rf_reduce.py +0 -0
  423. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_threading.py +0 -0
  424. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_tools.py +0 -0
  425. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_torch_dataset.py +0 -0
  426. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_torch_frontend.py +0 -0
  427. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_torch_internal_frontend.py +0 -0
  428. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/test_torch_util.py +0 -0
  429. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tests/torch_utils.py +0 -0
  430. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/_setup_returnn_env.py +0 -0
  431. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/analyze-dataset-batches.py +0 -0
  432. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/bliss-collect-seq-lens.py +0 -0
  433. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/bliss-dump-text.py +0 -0
  434. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/bliss-get-segment-names.py +0 -0
  435. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/bliss-to-ogg-zip.py +0 -0
  436. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/bpe-create-lexicon.py +0 -0
  437. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/calculate-word-error-rate.py +0 -0
  438. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/cleanup-old-models.py +0 -0
  439. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/collect-orth-symbols.py +0 -0
  440. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/collect-words.py +0 -0
  441. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/compile_native_op.py +0 -0
  442. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/compile_tf_graph.py +0 -0
  443. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/debug-dump-search-scores.py +0 -0
  444. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/debug-plot-search-scores.py +0 -0
  445. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/dump-dataset-raw-strings.py +0 -0
  446. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/dump-dataset.py +0 -0
  447. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/dump-forward-stats.py +0 -0
  448. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/dump-forward.py +0 -0
  449. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/dump-network-json.py +0 -0
  450. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/dump-pickle.py +0 -0
  451. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/extract_state_tying_from_dataset.py +0 -0
  452. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/get-attention-weights.py +0 -0
  453. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/get-best-model-epoch.py +0 -0
  454. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/hdf_dump.py +0 -0
  455. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/hdf_dump_translation_dataset.py +0 -0
  456. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/import-blocks-mt-model.py +0 -0
  457. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/import-t2t-mt-model.py +0 -0
  458. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/.gitignore +0 -0
  459. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/Makefile +0 -0
  460. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/README.md +0 -0
  461. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/example/README.md +0 -0
  462. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/example/libs_list +0 -0
  463. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
  464. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
  465. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
  466. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/example/state_vars_list +0 -0
  467. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/example/tensor_names_list +0 -0
  468. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/file.h +0 -0
  469. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
  470. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
  471. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/main.cc +0 -0
  472. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/rescorer.h +0 -0
  473. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/vocabulary.cc +0 -0
  474. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/lattice_rescorer/vocabulary.h +0 -0
  475. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/tf_avg_checkpoints.py +0 -0
  476. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/tf_inspect_checkpoint.py +0 -0
  477. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/tf_inspect_summary_log.py +0 -0
  478. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/torch_avg_checkpoints.py +0 -0
  479. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/torch_export_to_onnx.py +0 -0
  480. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/torch_inspect_checkpoint.py +0 -0
  481. {returnn-1.20250810.211220 → returnn-1.20251104.113756}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20250810.211220
3
+ Version: 1.20251104.113756
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
@@ -0,0 +1,2 @@
1
+ version = '1.20251104.113756'
2
+ long_version = '1.20251104.113756+git.6706c85'
@@ -801,7 +801,7 @@ class SubProcCopyGlobalConfigPreInitFunc:
801
801
  from returnn.log import log
802
802
  from returnn import __old_mod_loader__
803
803
 
804
- better_exchook.install()
804
+ better_exchook.setup_all()
805
805
  __old_mod_loader__.disable_lazy_mod_loads()
806
806
 
807
807
  if self.global_config:
@@ -19,6 +19,7 @@ import os
19
19
  import math
20
20
  import numpy
21
21
  import functools
22
+ import types
22
23
  from typing import TYPE_CHECKING, Optional, Any, Set, Tuple, Union, Type, Dict, Sequence, List, Callable
23
24
 
24
25
  from returnn.log import log
@@ -154,7 +155,7 @@ class Dataset:
154
155
  self.seq_tags_filter = set(self._load_seq_list_file(seq_list_filter_file)) if seq_list_filter_file else None
155
156
  self.unique_seq_tags = unique_seq_tags
156
157
  self._seq_order_seq_lens_file = seq_order_seq_lens_file
157
- self._seq_order_seq_lens_by_idx = None
158
+ self._seq_order_seq_lens_by_idx: Optional[Sequence[Union[int, float]]] = None
158
159
  # There is probably no use case for combining the two, so avoid potential misconfiguration.
159
160
  assert self.partition_epoch == 1 or self.repeat_epoch == 1, (
160
161
  "Combining partition_epoch and repeat_epoch is prohibited."
@@ -486,12 +487,8 @@ class Dataset:
486
487
  """
487
488
  raise NotImplementedError
488
489
 
489
- def _get_seq_order_seq_lens_by_idx(self, seq_idx):
490
- """
491
- :param int seq_idx:
492
- :rtype: int
493
- """
494
- if not self._seq_order_seq_lens_by_idx:
490
+ def _get_seq_order_seq_lens_by_idx(self, seq_idx: int) -> Union[int, float]:
491
+ if self._seq_order_seq_lens_by_idx is None:
495
492
  assert self._seq_order_seq_lens_file
496
493
  if self._seq_order_seq_lens_file.endswith(".gz"):
497
494
  import gzip
@@ -502,11 +499,12 @@ class Dataset:
502
499
  seq_lens = eval(raw)
503
500
  assert isinstance(seq_lens, dict)
504
501
  all_tags = self.get_all_tags()
505
- self._seq_order_seq_lens_by_idx = [seq_lens[tag] for tag in all_tags]
502
+ self._seq_order_seq_lens_by_idx = numpy.array([seq_lens[tag] for tag in all_tags])
503
+ self._get_seq_order_seq_lens_by_idx = self._seq_order_seq_lens_by_idx.__getitem__ # faster
506
504
  return self._seq_order_seq_lens_by_idx[seq_idx]
507
505
 
508
506
  def get_seq_order_for_epoch(
509
- self, epoch: Optional[int], num_seqs: int, get_seq_len: Optional[Callable[[int], int]] = None
507
+ self, epoch: Optional[int], num_seqs: int, get_seq_len: Optional[Callable[[int], Union[int, float]]] = None
510
508
  ) -> Sequence[int]:
511
509
  """
512
510
  Returns the order of the given epoch.
@@ -515,7 +513,7 @@ class Dataset:
515
513
 
516
514
  :param epoch: for 'random', this determines the random seed
517
515
  :param num_seqs:
518
- :param get_seq_len: function (originalSeqIdx: int) -> int
516
+ :param get_seq_len: function (originalSeqIdx: int) -> int|float
519
517
  :return: the order for the given epoch. such that seq_idx -> underlying idx
520
518
  """
521
519
  if epoch is None:
@@ -561,17 +559,30 @@ class Dataset:
561
559
  seq_index = range(num_seqs - 1, -1, -1) # type: Union[range, Sequence[int]]
562
560
  elif seq_ordering_method in ["sorted", "sorted_reverse"]:
563
561
  assert get_seq_len
564
- reverse = -1 if seq_ordering_method == "sorted_reverse" else 1
565
- seq_lens = [reverse * get_seq_len(i) for i in range(num_seqs)]
562
+ seq_lens = _get_seq_len_as_array(get_seq_len, num_seqs)
563
+ if seq_ordering_method == "sorted_reverse":
564
+ seq_lens = -seq_lens
566
565
  seq_index = numpy.argsort(seq_lens, kind="stable")
567
- elif seq_ordering_method.startswith("random"):
568
- tmp = seq_ordering_method.split(":")
566
+ elif seq_ordering_method == "random" or seq_ordering_method.startswith("random:"):
567
+ tmp = seq_ordering_method.split(":", 1)
569
568
  nth = int(tmp[1]) if len(tmp) > 1 else 1
570
569
  # Keep this deterministic! Use fixed seed.
571
570
  rnd_seed = self._get_random_seed_for_epoch(epoch=epoch, num_epochs_fixed=nth)
572
571
  random_generator = numpy.random.RandomState(rnd_seed)
573
572
  seq_index = random_generator.permutation(num_seqs)
574
- elif seq_ordering_method.startswith("sort_bin_shuffle"):
573
+ elif seq_ordering_method == "random_sample" or seq_ordering_method.startswith("random_sample:"):
574
+ tmp = seq_ordering_method.split(":", 1)
575
+ nth = int(tmp[1]) if len(tmp) > 1 else 1
576
+ # Keep this deterministic! Use fixed seed.
577
+ rnd_seed = self._get_random_seed_for_epoch(epoch=epoch, num_epochs_fixed=nth)
578
+ random_generator = numpy.random.RandomState(rnd_seed)
579
+ seq_index = random_generator.randint(0, num_seqs, size=num_seqs)
580
+ elif (
581
+ seq_ordering_method == "sort_bin_shuffle"
582
+ or seq_ordering_method.startswith("sort_bin_shuffle:")
583
+ or seq_ordering_method == "sort_bin_shuffle_x2"
584
+ or seq_ordering_method.startswith("sort_bin_shuffle_x2:")
585
+ ):
575
586
  # Shuffle seqs, sort by length, and shuffle bins (then shuffle seqs within each bin if sort_bin_shuffle_x2).
576
587
  assert get_seq_len
577
588
  tmp = seq_ordering_method.split(":")[1:]
@@ -602,7 +613,7 @@ class Dataset:
602
613
  random_generator.shuffle(part) # Shuffle within the bin.
603
614
  out_index.append(part)
604
615
  seq_index = numpy.concatenate(out_index)
605
- elif seq_ordering_method.startswith("laplace"):
616
+ elif seq_ordering_method == "laplace" or seq_ordering_method.startswith("laplace:"):
606
617
  assert get_seq_len
607
618
  tmp = seq_ordering_method.split(":")[1:]
608
619
  if len(tmp) == 0:
@@ -616,7 +627,7 @@ class Dataset:
616
627
  nth = 1
617
628
  else:
618
629
  nth = int(tmp[1])
619
- seq_lens = numpy.array([get_seq_len(i) for i in range(num_seqs)])
630
+ seq_lens = _get_seq_len_as_array(get_seq_len, num_seqs)
620
631
  rnd_seed = self._get_random_seed_for_epoch(epoch=epoch, num_epochs_fixed=nth)
621
632
  random_generator = numpy.random.RandomState(rnd_seed)
622
633
  seq_index = random_generator.permutation(num_seqs) # type: Union[numpy.ndarray, List[int]]
@@ -1489,6 +1500,7 @@ def get_dataset_class(name: Union[str, Type[Dataset]]) -> Optional[Type[Dataset]
1489
1500
  "distrib_files",
1490
1501
  "postprocessing",
1491
1502
  "text_dict",
1503
+ "huggingface",
1492
1504
  ]
1493
1505
  for mod_name in mod_names:
1494
1506
  mod = import_module("returnn.datasets.%s" % mod_name)
@@ -1745,3 +1757,19 @@ def set_config_extern_data_from_dataset(config, dataset):
1745
1757
  "extern_data",
1746
1758
  {key: _data_kwargs_from_dataset_key(dataset=dataset, key=key) for key in dataset.get_data_keys()},
1747
1759
  )
1760
+
1761
+
1762
+ def _get_seq_len_as_array(get_seq_len: Callable[[int], Union[int, float]], num_seqs: int) -> numpy.ndarray:
1763
+ if num_seqs == 0:
1764
+ return numpy.zeros((0,), dtype=numpy.int32)
1765
+ if isinstance(get_seq_len, (types.BuiltinMethodType, types.MethodWrapperType, types.MethodType)):
1766
+ # Call it once. This might trigger some caching.
1767
+ get_seq_len(0)
1768
+ # Get it again. This might now get us a different (cached) function, e.g. array.__getitem__.
1769
+ get_seq_len = getattr(get_seq_len.__self__, get_seq_len.__name__)
1770
+ assert isinstance(get_seq_len, (types.BuiltinMethodType, types.MethodWrapperType, types.MethodType))
1771
+ obj = get_seq_len.__self__
1772
+ if isinstance(obj, numpy.ndarray) and get_seq_len.__name__ == "__getitem__":
1773
+ assert obj.shape == (num_seqs,)
1774
+ return obj
1775
+ return numpy.array([get_seq_len(i) for i in range(num_seqs)])
@@ -6,13 +6,14 @@ https://github.com/rwth-i6/returnn/issues/1519
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
+ from collections import deque
9
10
  from typing import Union, Optional, Any, Callable, Sequence, Tuple, List, Dict
10
11
  import os
11
12
  import sys
12
13
  import numpy
13
14
  from returnn.log import log
14
15
  from returnn.util import better_exchook
15
- from returnn.util.basic import override_env_var, try_run
16
+ from returnn.util.basic import override_env_var, try_run, OptionalNotImplementedError
16
17
  from returnn.util.literal_py_to_pickle import literal_eval
17
18
  from returnn.util.multi_proc_non_daemonic_spawn import NonDaemonicSpawnContext
18
19
  from returnn.config import SubProcCopyGlobalConfigPreInitFunc
@@ -134,7 +135,7 @@ class DistributeFilesDataset(CachedDataset2):
134
135
  def __init__(
135
136
  self,
136
137
  *,
137
- files: Union[List[FileTree], os.PathLike],
138
+ files: Union[List[FileTree], os.PathLike, Callable[[], List[FileTree]]],
138
139
  get_sub_epoch_dataset: Callable[[List[FileTree]], Dict[str, Any]],
139
140
  preload_next_n_sub_epochs: int = 1,
140
141
  buffer_size: int = 1,
@@ -150,9 +151,10 @@ class DistributeFilesDataset(CachedDataset2):
150
151
  can also be specified as a path to a .txt file containing one file per line,
151
152
  or a python file containing the repr of a list of arbitrarily nested python objects,
152
153
  or a JSON file containing a list of arbitarily nested (JSON) objects.
154
+ It can also be a callable which returns such a list.
153
155
  :param get_sub_epoch_dataset: callable which returns a dataset dict for a given subset of files
154
156
  :param preload_next_n_sub_epochs: how many sub epoch datasets to preload
155
- :param buffer_size: buffer size for each worker, amount of seqs to prefetch
157
+ :param buffer_size: buffer size for each worker, number of seqs to prefetch
156
158
  :param distrib_shard_files: set to true to shard the data across worker processes in
157
159
  distributed training scenaria
158
160
  :param _meta_info_cache: for internal use
@@ -243,6 +245,11 @@ class DistributeFilesDataset(CachedDataset2):
243
245
  return
244
246
  if isinstance(self.files, list):
245
247
  self._files = self.files
248
+ elif callable(self.files):
249
+ self._files = self.files()
250
+ assert isinstance(self._files, list), (
251
+ f"{self}: callable files {self.files} must return a list, got {type(self._files)}"
252
+ )
246
253
  elif isinstance(self.files, (str, os.PathLike)):
247
254
  _, ext = os.path.splitext(self.files)
248
255
  assert ext, f"{self}: no file extension on file list file {self.files}"
@@ -498,6 +505,24 @@ class DistributeFilesDataset(CachedDataset2):
498
505
  self._lazy_init_num_outputs()
499
506
  return self._data_keys
500
507
 
508
+ def get_all_tags(self) -> List[str]:
509
+ """get all tags"""
510
+ if self.partition_epoch > 1:
511
+ raise OptionalNotImplementedError(f"{self} get_all_tags not supported for partition_epoch > 1")
512
+ if self.epoch is None:
513
+ # Need to init the worker.
514
+ self.init_seq_order(epoch=1)
515
+ return self._workers[self.epoch].get_all_tags()
516
+
517
+ def get_total_num_seqs(self, *, fast: bool = False) -> int:
518
+ """get total num seqs"""
519
+ if self.partition_epoch > 1:
520
+ raise OptionalNotImplementedError(f"{self} get_total_num_seqs not supported for partition_epoch > 1")
521
+ if self.epoch is None:
522
+ # Need to init the worker.
523
+ self.init_seq_order(epoch=1)
524
+ return self._workers[self.epoch].get_total_num_seqs(fast=fast)
525
+
501
526
 
502
527
  def _get_key_for_file_tree(t: FileTree) -> str:
503
528
  """generates a deterministic key given a file tree"""
@@ -601,6 +626,26 @@ class _WorkerProcParent:
601
626
  assert msg == "data_seq"
602
627
  return data
603
628
 
629
+ def get_all_tags(self) -> List[str]:
630
+ """get all tags"""
631
+ self._lazy_wait_for_init_seq_order()
632
+ self.parent_conn.send(("get_all_tags", {}))
633
+ msg, data = self.parent_conn.recv()
634
+ assert msg == "all_tags"
635
+ if isinstance(data, Exception):
636
+ raise data
637
+ return data
638
+
639
+ def get_total_num_seqs(self, **kwargs) -> int:
640
+ """get total num seqs"""
641
+ self._lazy_wait_for_init_seq_order()
642
+ self.parent_conn.send(("get_total_num_seqs", kwargs))
643
+ msg, data = self.parent_conn.recv()
644
+ assert msg == "total_num_seqs"
645
+ if isinstance(data, Exception):
646
+ raise data
647
+ return data
648
+
604
649
  def exit(self, *, join: bool = True):
605
650
  """exit"""
606
651
  self._lazy_wait_for_init_seq_order()
@@ -636,7 +681,7 @@ def _worker_proc_loop(
636
681
  dataset = init_dataset(dataset_dict)
637
682
 
638
683
  got_init_seq_order = False
639
- cache: List[DatasetSeq] = []
684
+ cache: deque[DatasetSeq] = deque()
640
685
  next_seq_idx = 0
641
686
 
642
687
  # noinspection PyShadowingNames
@@ -701,7 +746,7 @@ def _worker_proc_loop(
701
746
  elif msg == "get_data_seq":
702
747
  seq_idx = kwargs["seq_idx"]
703
748
  while cache and cache[0].seq_idx < seq_idx:
704
- cache.pop(0)
749
+ cache.popleft()
705
750
  res = _get(seq_idx)
706
751
  parent_conn.send(("data_seq", res))
707
752
  elif msg == "init_seq_order":
@@ -714,7 +759,21 @@ def _worker_proc_loop(
714
759
  parent_conn.send(("num_seqs", num_seqs))
715
760
  got_init_seq_order = True
716
761
  next_seq_idx = 0
717
- cache[:] = []
762
+ cache.clear()
763
+ elif msg == "get_all_tags":
764
+ try:
765
+ tags = dataset.get_all_tags()
766
+ except Exception as exc:
767
+ parent_conn.send(("all_tags", exc))
768
+ else:
769
+ parent_conn.send(("all_tags", tags))
770
+ elif msg == "get_total_num_seqs":
771
+ try:
772
+ total_num_seqs = dataset.get_total_num_seqs(**kwargs)
773
+ except Exception as exc:
774
+ parent_conn.send(("total_num_seqs", exc))
775
+ else:
776
+ parent_conn.send(("total_num_seqs", total_num_seqs))
718
777
  else:
719
778
  raise Exception(f"unknown msg {msg!r}")
720
779
  except KeyboardInterrupt: # when parent dies
@@ -7,14 +7,13 @@ from __future__ import annotations
7
7
  from typing import Optional, Union, Any, Sequence, List, Tuple, Dict
8
8
  import numpy
9
9
  import sys
10
- import typing
11
10
 
12
11
  from returnn.util.basic import class_idx_seq_to_1_of_k, CollectionReadCheckCovered
13
12
  from returnn.log import log
14
13
  from returnn.tensor import Tensor, Dim, TensorDict
15
14
 
16
15
  from .util.feature_extraction import ExtractAudioFeatures
17
- from .util.vocabulary import *
16
+ from .util.vocabulary import Vocabulary, BytePairEncoding, CharacterTargets
18
17
  from .audio import OggZipDataset # noqa # for API compatibility
19
18
  from .basic import Dataset, DatasetSeq, convert_data_dims
20
19
  from .cached2 import CachedDataset2
@@ -1165,11 +1164,9 @@ class StaticDataset(CachedDataset2):
1165
1164
  """supports sorting"""
1166
1165
  return True
1167
1166
 
1168
- def _collect_single_seq(self, seq_idx):
1169
- """
1170
- :param int seq_idx:
1171
- :rtype: DatasetSeq
1172
- """
1167
+ def _collect_single_seq(self, seq_idx: int) -> Optional[DatasetSeq]:
1168
+ if seq_idx >= len(self._seq_order):
1169
+ return None
1173
1170
  corpus_seq_idx = self._seq_order[seq_idx]
1174
1171
  data = self.data[corpus_seq_idx]
1175
1172
  return DatasetSeq(
@@ -1280,12 +1277,6 @@ class CopyTaskDataset(GeneratingDataset):
1280
1277
  return DatasetSeq(seq_idx=seq_idx, features=seq_np, targets={"classes": seq_np})
1281
1278
 
1282
1279
 
1283
- # Multiple external sources where we could write automatic wrappers:
1284
- # * https://github.com/tensorflow/datasets
1285
- # * tf.contrib.keras.datasets, https://www.tensorflow.org/api_docs/python/tf/keras/datasets
1286
- # * nltk.corpus
1287
-
1288
-
1289
1280
  class TimitDataset(CachedDataset2):
1290
1281
  """
1291
1282
  DARPA TIMIT Acoustic-Phonetic Continuous Speech Corpus.
@@ -1553,7 +1544,7 @@ class TimitDataset(CachedDataset2):
1553
1544
 
1554
1545
  self._random_permute_audio = CollectionReadCheckCovered.from_bool_or_dict(random_permute_audio)
1555
1546
 
1556
- self._seq_order = None # type: typing.Optional[typing.Sequence[int]]
1547
+ self._seq_order: Optional[Sequence[int]] = None
1557
1548
  self._init_timit()
1558
1549
 
1559
1550
  self._audio_data = {} # seq_tag -> (audio, sample_rate). loaded by self._reader_thread_main
@@ -1927,8 +1918,8 @@ class BlissDataset(CachedDataset2):
1927
1918
  self._with_delta = with_delta
1928
1919
  self.num_inputs *= 1 + with_delta
1929
1920
  self._bpe_file = open(bpe_file, "r")
1930
- self._seqs = [] # type: typing.List[BlissDataset.SeqInfo]
1931
- self._vocab = {} # type: typing.Dict[str,int] # set in self._parse_vocab
1921
+ self._seqs: List[BlissDataset.SeqInfo] = []
1922
+ self._vocab: Dict[str, int] = {} # set in self._parse_vocab
1932
1923
  self._parse_bliss_xml(filename=path)
1933
1924
  # TODO: loading audio like in TimitDataset, and in parallel
1934
1925
  self._bpe = BytePairEncoding(vocab_file=vocab_file, bpe_file=bpe_file)
@@ -2100,7 +2091,7 @@ class LibriSpeechCorpus(CachedDataset2):
2100
2091
  self.targets = CharacterTargets(**chars)
2101
2092
  elif targets is None:
2102
2093
  assert bpe is None and chars is None
2103
- self.targets = None # type: typing.Optional[Vocabulary]
2094
+ self.targets: Optional[Vocabulary] = None
2104
2095
  else:
2105
2096
  raise Exception("invalid targets %r. provide bpe or chars" % targets)
2106
2097
  if self.targets:
@@ -2128,7 +2119,7 @@ class LibriSpeechCorpus(CachedDataset2):
2128
2119
  self._reference_seq_order = seqs
2129
2120
  self.transs = {s: self.transs[s] for s in seqs}
2130
2121
  self.epoch_wise_filter = epoch_wise_filter
2131
- self._seq_order = None # type: typing.Optional[typing.Sequence[int]]
2122
+ self._seq_order: Optional[Sequence[int]] = None
2132
2123
  self.init_seq_order()
2133
2124
 
2134
2125
  def _collect_trans(self):
@@ -2294,9 +2285,9 @@ class LibriSpeechCorpus(CachedDataset2):
2294
2285
  """:return: whether this dataset supports sharding"""
2295
2286
  return True
2296
2287
 
2297
- def get_current_seq_order(self):
2288
+ def get_current_seq_order(self) -> Sequence[int]:
2298
2289
  """
2299
- :rtype: typing.Sequence[int]
2290
+ :return: seq order of current epoch
2300
2291
  """
2301
2292
  assert self._seq_order is not None
2302
2293
  return self._seq_order
@@ -2446,7 +2437,7 @@ class Enwik8Corpus(CachedDataset2):
2446
2437
  self._batch_num_seqs = batch_num_seqs
2447
2438
  self._random = numpy.random.RandomState(1) # seed will be set in init_seq_order
2448
2439
  self._seq_starts = numpy.arange(0, len(self._data) - 1, seq_len)
2449
- self._seq_order = None # type: typing.Optional[typing.Sequence[int]]
2440
+ self._seq_order: Optional[Sequence[int]] = None
2450
2441
 
2451
2442
  def get_data_dtype(self, key):
2452
2443
  """