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.

Files changed (489) hide show
  1. {returnn-1.20251106.185107/returnn.egg-info → returnn-1.20260118.2517}/PKG-INFO +2 -2
  2. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/README.rst +1 -1
  3. returnn-1.20260118.2517/_setup_info_generated.py +2 -0
  4. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/pyproject.toml +3 -0
  5. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/__old_mod_loader__.py +26 -2
  6. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/lm.py +110 -42
  7. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/meta.py +93 -43
  8. returnn-1.20260118.2517/returnn/datasets/postprocessing.py +981 -0
  9. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_backend.py +34 -0
  10. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/__init__.py +22 -0
  11. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_utils.py +1 -1
  12. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/array_.py +48 -2
  13. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/attention.py +53 -20
  14. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/conv.py +273 -54
  15. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/device.py +14 -1
  16. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/encoder/conformer.py +19 -0
  17. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/encoder/transformer.py +2 -0
  18. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/loss.py +81 -3
  19. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/math_.py +54 -14
  20. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/native_op.cpp +182 -172
  21. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/native_op.py +36 -31
  22. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/sprint/cache.py +12 -13
  23. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/_dim_extra.py +7 -7
  24. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/_tensor_extra.py +10 -10
  25. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/utils.py +7 -4
  26. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/_backend.py +5 -3
  27. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/layers/basic.py +15 -39
  28. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/native_op.py +11 -58
  29. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/network.py +1 -1
  30. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/util/basic.py +22 -197
  31. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/engine.py +120 -3
  32. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/frontend/_backend.py +267 -29
  33. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/frontend/bridge.py +61 -0
  34. returnn-1.20260118.2517/returnn/torch/frontend/compile_helper.py +106 -0
  35. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/array_.py +30 -0
  36. returnn-1.20260118.2517/returnn/torch/util/assert_.py +122 -0
  37. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/exception_helper.py +7 -1
  38. returnn-1.20260118.2517/returnn/torch/util/native_op.py +885 -0
  39. returnn-1.20260118.2517/returnn/torch/util/native_op_code_compiler.py +306 -0
  40. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/basic.py +6 -7
  41. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/better_exchook.py +4 -0
  42. returnn-1.20260118.2517/returnn/util/cuda_env.py +332 -0
  43. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/debug.py +12 -2
  44. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/native_code_compiler.py +104 -47
  45. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/task_system.py +1 -1
  46. {returnn-1.20251106.185107 → returnn-1.20260118.2517/returnn.egg-info}/PKG-INFO +2 -2
  47. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn.egg-info/SOURCES.txt +8 -0
  48. returnn-1.20260118.2517/tests/fsa_utils.py +196 -0
  49. returnn-1.20260118.2517/tests/numpy_ref_edit_distance.py +65 -0
  50. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/rf_utils.py +8 -4
  51. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_Dataset.py +89 -8
  52. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TFNativeOp.py +7 -371
  53. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_Util.py +140 -3
  54. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_array.py +112 -0
  55. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_attention.py +5 -5
  56. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_base.py +112 -44
  57. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_conv.py +31 -1
  58. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_torch_engine.py +1 -1
  59. returnn-1.20260118.2517/tests/test_torch_native_op.py +1247 -0
  60. returnn-1.20251106.185107/_setup_info_generated.py +0 -2
  61. returnn-1.20251106.185107/returnn/datasets/postprocessing.py +0 -492
  62. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/.editorconfig +0 -0
  63. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/.gitignore +0 -0
  64. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/.gitmodules +0 -0
  65. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/.kateconfig +0 -0
  66. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/CHANGELOG.md +0 -0
  67. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/CODEOWNERS +0 -0
  68. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/CONTRIBUTING.md +0 -0
  69. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/LICENSE +0 -0
  70. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/MANIFEST.in +0 -0
  71. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/__init__.py +0 -0
  72. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/12AX.cluster_map +0 -0
  73. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/_setup_returnn_env.py +0 -0
  74. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-fwd.config +0 -0
  75. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-horovod-mpi.py +0 -0
  76. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-horovod-mpi.py.sh +0 -0
  77. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-horovod-mpi.sh +0 -0
  78. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-hyper-param-tuning.config +0 -0
  79. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-iter-dataset.py +0 -0
  80. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-list-devices.py +0 -0
  81. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-lua-torch-layer.config +0 -0
  82. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-pretrain.config +0 -0
  83. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-record-and-push-to-webserver.py +0 -0
  84. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-returnn-as-framework.py +0 -0
  85. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-rf-pt-benchmark.py +0 -0
  86. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-rf.config +0 -0
  87. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-rhn-enwik8.config +0 -0
  88. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-sprint-interface.py +0 -0
  89. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-att-copy.config +0 -0
  90. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-attention.config +0 -0
  91. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
  92. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
  93. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-enc-dec.config +0 -0
  94. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-hard-att-copy.config +0 -0
  95. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-lstm-benchmark.py +0 -0
  96. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
  97. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
  98. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-native-lstm.12ax.config +0 -0
  99. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-native-lstm2.12ax.config +0 -0
  100. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
  101. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-neural-transducer.12ax.config +0 -0
  102. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-rec-explicit-lstm.config +0 -0
  103. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-rec-explicit-rnn.config +0 -0
  104. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-rec-self-att.config +0 -0
  105. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-search-compiled-graph.py +0 -0
  106. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
  107. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-timit-lstm-ctc.config +0 -0
  108. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-torch.config +0 -0
  109. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
  110. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/demo.sh +0 -0
  111. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
  112. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
  113. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
  114. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/README.txt +0 -0
  115. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/chars.txt +0 -0
  116. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/config_demo +0 -0
  117. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/config_fwd +0 -0
  118. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/config_real +0 -0
  119. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
  120. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/decode.py +0 -0
  121. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
  122. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/go.sh +0 -0
  123. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/lines.txt +0 -0
  124. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/split/eval.txt +0 -0
  125. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/split/train.txt +0 -0
  126. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/IAM/split/valid.txt +0 -0
  127. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/README.md +0 -0
  128. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial/create_test_h5.py +0 -0
  129. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial/forwardconfig +0 -0
  130. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial/go.sh +0 -0
  131. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial/trainconfig +0 -0
  132. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
  133. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
  134. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial_rgb/go.sh +0 -0
  135. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
  136. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/requirements.txt +0 -0
  137. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/__init__.py +0 -0
  138. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/__main__.py +0 -0
  139. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/__setup__.py +0 -0
  140. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/config.py +0 -0
  141. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/__init__.py +0 -0
  142. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/audio.py +0 -0
  143. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/basic.py +0 -0
  144. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/bundle_file.py +0 -0
  145. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/cached.py +0 -0
  146. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/cached2.py +0 -0
  147. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/distrib_files.py +0 -0
  148. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/generating.py +0 -0
  149. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/hdf.py +0 -0
  150. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/huggingface.py +0 -0
  151. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/map.py +0 -0
  152. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/multi_proc.py +0 -0
  153. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/normalization_data.py +0 -0
  154. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/numpy_dump.py +0 -0
  155. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/raw_wav.py +0 -0
  156. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/sprint.py +0 -0
  157. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/stereo.py +0 -0
  158. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/text_dict.py +0 -0
  159. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/util/__init__.py +0 -0
  160. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/util/feature_extraction.py +0 -0
  161. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/util/strings.py +0 -0
  162. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/datasets/util/vocabulary.py +0 -0
  163. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/engine/__init__.py +0 -0
  164. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/engine/base.py +0 -0
  165. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/engine/batch.py +0 -0
  166. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/__init__.py +0 -0
  167. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/__main__.py +0 -0
  168. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/.git +0 -0
  169. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
  170. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
  171. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
  172. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
  173. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
  174. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
  175. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
  176. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
  177. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
  178. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
  179. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
  180. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
  181. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
  182. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
  183. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
  184. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
  185. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
  186. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
  187. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
  188. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
  189. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
  190. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
  191. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
  192. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
  193. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/__init__.py +0 -0
  194. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/README.md +0 -0
  195. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/__init__.py +0 -0
  196. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/edit.py +0 -0
  197. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/reroute.py +0 -0
  198. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/select.py +0 -0
  199. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/subgraph.py +0 -0
  200. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/transform.py +0 -0
  201. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/extern/graph_editor/util.py +0 -0
  202. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/forward_iface.py +0 -0
  203. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/__init__.py +0 -0
  204. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_cache.py +0 -0
  205. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/backend.cpp +0 -0
  206. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/backend.hpp +0 -0
  207. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/module.cpp +0 -0
  208. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/module.hpp +0 -0
  209. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/py_utils.hpp +0 -0
  210. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/tensor_ops.cpp +0 -0
  211. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_native/tensor_ops.hpp +0 -0
  212. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_numpy_backend.py +0 -0
  213. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/_random_journal.py +0 -0
  214. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/audio/__init__.py +0 -0
  215. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/audio/mel.py +0 -0
  216. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/audio/specaugment.py +0 -0
  217. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/backend.py +0 -0
  218. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/build_from_dict.py +0 -0
  219. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/cond.py +0 -0
  220. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/const.py +0 -0
  221. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/container.py +0 -0
  222. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/control_flow_ctx.py +0 -0
  223. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/conversions/__init__.py +0 -0
  224. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
  225. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/conversions/hf_llama.py +0 -0
  226. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/conversions/torch_nn.py +0 -0
  227. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/decoder/__init__.py +0 -0
  228. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/decoder/transformer.py +0 -0
  229. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/dims.py +0 -0
  230. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/dropout.py +0 -0
  231. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/dtype.py +0 -0
  232. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/encoder/__init__.py +0 -0
  233. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/encoder/base.py +0 -0
  234. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/encoder/conformer_v2.py +0 -0
  235. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/encoder/e_branchformer.py +0 -0
  236. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/gradient.py +0 -0
  237. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/graph.py +0 -0
  238. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/hooks.py +0 -0
  239. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/init.py +0 -0
  240. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/label_smoothing.py +0 -0
  241. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/linear.py +0 -0
  242. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/loop.py +0 -0
  243. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/matmul.py +0 -0
  244. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/module.py +0 -0
  245. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/nested.py +0 -0
  246. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/normalization.py +0 -0
  247. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/parameter.py +0 -0
  248. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/parametrizations.py +0 -0
  249. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/parametrize.py +0 -0
  250. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/piecewise_linear.py +0 -0
  251. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/rand.py +0 -0
  252. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/rec.py +0 -0
  253. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/reduce.py +0 -0
  254. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/run_ctx.py +0 -0
  255. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/signal.py +0 -0
  256. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/state.py +0 -0
  257. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/stepwise_scheduler.py +0 -0
  258. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/tensor_array.py +0 -0
  259. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/frontend/types.py +0 -0
  260. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/import_/__init__.py +0 -0
  261. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/import_/common.py +0 -0
  262. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/import_/git.py +0 -0
  263. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/import_/import_.py +0 -0
  264. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/learning_rate_control.py +0 -0
  265. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/log.py +0 -0
  266. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/pretrain.py +0 -0
  267. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/sprint/__init__.py +0 -0
  268. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/sprint/control.py +0 -0
  269. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/sprint/error_signals.py +0 -0
  270. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/sprint/extern_interface.py +0 -0
  271. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/sprint/interface.py +0 -0
  272. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/README.md +0 -0
  273. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/__init__.py +0 -0
  274. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/_tensor_mixin_base.py +0 -0
  275. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/_tensor_op_overloads.py +0 -0
  276. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/control_flow_ctx.py +0 -0
  277. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/dim.py +0 -0
  278. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/marked_dim.py +0 -0
  279. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/tensor.py +0 -0
  280. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tensor/tensor_dict.py +0 -0
  281. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/__init__.py +0 -0
  282. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/compat.py +0 -0
  283. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/data_pipeline.py +0 -0
  284. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/distributed.py +0 -0
  285. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/engine.py +0 -0
  286. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/README.md +0 -0
  287. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/__init__.py +0 -0
  288. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/_utils.py +0 -0
  289. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/cond.py +0 -0
  290. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
  291. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
  292. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/dims.py +0 -0
  293. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/layer.py +0 -0
  294. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/loop.py +0 -0
  295. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/make_layer.py +0 -0
  296. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/masked_computation.py +0 -0
  297. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
  298. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
  299. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_low_level/__init__.py +0 -0
  300. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/frontend_low_level/_backend.py +0 -0
  301. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/horovod.py +0 -0
  302. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/hyper_param_tuning.py +0 -0
  303. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/layers/__init__.py +0 -0
  304. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/layers/base.py +0 -0
  305. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/layers/rec.py +0 -0
  306. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/layers/segmental_model.py +0 -0
  307. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/layers/signal_processing.py +0 -0
  308. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/layers/variable.py +0 -0
  309. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/sprint.py +0 -0
  310. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/updater.py +0 -0
  311. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/util/__init__.py +0 -0
  312. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/util/data.py +0 -0
  313. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/util/gradient_checkpoint.py +0 -0
  314. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/util/ken_lm.py +0 -0
  315. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/tf/util/open_fst.py +0 -0
  316. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/README.md +0 -0
  317. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/__init__.py +0 -0
  318. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/data/__init__.py +0 -0
  319. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/data/extern_data.py +0 -0
  320. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/data/pipeline.py +0 -0
  321. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/data/queued_data_iter.py +0 -0
  322. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
  323. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/data/tensor_utils.py +0 -0
  324. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/distributed.py +0 -0
  325. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/frontend/__init__.py +0 -0
  326. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/frontend/_rand.py +0 -0
  327. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/frontend/raw_ops.py +0 -0
  328. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/optim/README.md +0 -0
  329. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/optim/__init__.py +0 -0
  330. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/optim/lion.py +0 -0
  331. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/updater.py +0 -0
  332. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/README.md +0 -0
  333. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/__init__.py +0 -0
  334. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/debug_inf_nan.py +0 -0
  335. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/diagnose_gpu.py +0 -0
  336. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/gradient_checkpoint.py +0 -0
  337. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/module.py +0 -0
  338. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/torch/util/scaled_gradient.py +0 -0
  339. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/__init__.py +0 -0
  340. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/bpe.py +0 -0
  341. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/collect_outputs_dict.py +0 -0
  342. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/debug_helpers.py +0 -0
  343. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/file_cache.py +0 -0
  344. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/fsa.py +0 -0
  345. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/literal_py_to_pickle.py +0 -0
  346. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/lru_cache.py +0 -0
  347. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/math.py +0 -0
  348. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
  349. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/pprint.py +0 -0
  350. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/py-to-pickle.cpp +0 -0
  351. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/py_ext_mod_compiler.py +0 -0
  352. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/result_with_reason.py +0 -0
  353. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/sig_proc.py +0 -0
  354. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/train_proc_manager.py +0 -0
  355. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn/util/watch_memory.py +0 -0
  356. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn.egg-info/dependency_links.txt +0 -0
  357. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn.egg-info/requires.txt +0 -0
  358. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/returnn.egg-info/top_level.txt +0 -0
  359. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/rnn.py +0 -0
  360. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/setup.cfg +0 -0
  361. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/setup.py +0 -0
  362. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/DummySprintExec.py +0 -0
  363. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm-inspection-profile.xml +0 -0
  364. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/.gitignore +0 -0
  365. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/.name +0 -0
  366. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
  367. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
  368. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
  369. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
  370. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
  371. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/misc.xml +0 -0
  372. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/modules.xml +0 -0
  373. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/returnn.iml +0 -0
  374. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
  375. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/_set_num_threads1.py +0 -0
  376. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/_setup_returnn_env.py +0 -0
  377. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/_setup_test_env.py +0 -0
  378. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/bpe-unicode-demo.codes +0 -0
  379. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/bpe-unicode-demo.vocab +0 -0
  380. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/lexicon_opt.fst +0 -0
  381. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/lexicon_opt.isyms +0 -0
  382. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/lexicon_opt.jpg +0 -0
  383. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/lexicon_opt.osyms +0 -0
  384. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/lint_common.py +0 -0
  385. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/pycharm-inspect.py +0 -0
  386. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/pylint.py +0 -0
  387. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/returnn-as-framework.py +0 -0
  388. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/spelling.dic +0 -0
  389. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_Config.py +0 -0
  390. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_Fsa.py +0 -0
  391. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_GeneratingDataset.py +0 -0
  392. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_HDFDataset.py +0 -0
  393. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_LearningRateControl.py +0 -0
  394. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_Log.py +0 -0
  395. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_MultiProcDataset.py +0 -0
  396. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_Pretrain.py +0 -0
  397. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_ResNet.py +0 -0
  398. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_SprintDataset.py +0 -0
  399. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_SprintInterface.py +0 -0
  400. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TFEngine.py +0 -0
  401. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TFNetworkLayer.py +0 -0
  402. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TFNetworkRecLayer.py +0 -0
  403. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TFNetworkSigProcLayer.py +0 -0
  404. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TFUpdater.py +0 -0
  405. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TFUtil.py +0 -0
  406. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TF_determinism.py +0 -0
  407. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TaskSystem.py +0 -0
  408. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TaskSystem_SharedMem.py +0 -0
  409. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_TranslationDataset.py +0 -0
  410. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_datasets_huggingface.py +0 -0
  411. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_demos.py +0 -0
  412. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_fork_exec.py +0 -0
  413. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_hdf_dump.py +0 -0
  414. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_cond.py +0 -0
  415. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_const.py +0 -0
  416. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_container.py +0 -0
  417. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_decoder_transformer.py +0 -0
  418. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_encoder_conformer.py +0 -0
  419. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_gradient.py +0 -0
  420. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_label_smoothing.py +0 -0
  421. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_loop.py +0 -0
  422. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_math.py +0 -0
  423. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_normalization.py +0 -0
  424. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_piecewise_linear.py +0 -0
  425. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_rec.py +0 -0
  426. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_reduce.py +0 -0
  427. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_rf_signal.py +0 -0
  428. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_tensor.py +0 -0
  429. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_threading.py +0 -0
  430. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_tools.py +0 -0
  431. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_torch_dataset.py +0 -0
  432. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_torch_frontend.py +0 -0
  433. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_torch_internal_frontend.py +0 -0
  434. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/test_torch_util.py +0 -0
  435. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tests/torch_utils.py +0 -0
  436. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/_setup_returnn_env.py +0 -0
  437. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/analyze-dataset-batches.py +0 -0
  438. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/bliss-collect-seq-lens.py +0 -0
  439. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/bliss-dump-text.py +0 -0
  440. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/bliss-get-segment-names.py +0 -0
  441. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/bliss-to-ogg-zip.py +0 -0
  442. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/bpe-create-lexicon.py +0 -0
  443. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/calculate-word-error-rate.py +0 -0
  444. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/cleanup-old-models.py +0 -0
  445. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/collect-orth-symbols.py +0 -0
  446. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/collect-words.py +0 -0
  447. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/compile_native_op.py +0 -0
  448. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/compile_tf_graph.py +0 -0
  449. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/debug-dump-search-scores.py +0 -0
  450. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/debug-plot-search-scores.py +0 -0
  451. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/dump-dataset-raw-strings.py +0 -0
  452. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/dump-dataset.py +0 -0
  453. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/dump-forward-stats.py +0 -0
  454. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/dump-forward.py +0 -0
  455. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/dump-network-json.py +0 -0
  456. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/dump-pickle.py +0 -0
  457. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/extract_state_tying_from_dataset.py +0 -0
  458. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/file-cache.py +0 -0
  459. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/get-attention-weights.py +0 -0
  460. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/get-best-model-epoch.py +0 -0
  461. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/hdf_dump.py +0 -0
  462. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/hdf_dump_translation_dataset.py +0 -0
  463. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/import-blocks-mt-model.py +0 -0
  464. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/import-t2t-mt-model.py +0 -0
  465. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/.gitignore +0 -0
  466. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/Makefile +0 -0
  467. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/README.md +0 -0
  468. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/example/README.md +0 -0
  469. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/example/libs_list +0 -0
  470. {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
  471. {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
  472. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
  473. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/example/state_vars_list +0 -0
  474. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/example/tensor_names_list +0 -0
  475. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/file.h +0 -0
  476. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
  477. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
  478. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/main.cc +0 -0
  479. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/rescorer.h +0 -0
  480. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/vocabulary.cc +0 -0
  481. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/lattice_rescorer/vocabulary.h +0 -0
  482. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/tf_avg_checkpoints.py +0 -0
  483. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/tf_inspect_checkpoint.py +0 -0
  484. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/tf_inspect_summary_log.py +0 -0
  485. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/torch_avg_checkpoints.py +0 -0
  486. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/torch_export_to_onnx.py +0 -0
  487. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/torch_inspect_checkpoint.py +0 -0
  488. {returnn-1.20251106.185107 → returnn-1.20260118.2517}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
  489. {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.20251106.185107
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 Theano/TensorFlow-based implementation of modern recurrent neural network architectures.
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 Theano/TensorFlow-based implementation of modern recurrent neural network architectures.
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:
@@ -0,0 +1,2 @@
1
+ version = '1.20260118.002517'
2
+ long_version = '1.20260118.002517+git.cfcf6ca'
@@ -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 typing
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) # type: typing.Dict[str]
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(self._orths_offsets_and_lens)} sequences,"
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
- if _is_bliss(file_name):
387
- _init_tmp_file()
388
- _iter_bliss(filename=file_name, callback=_tmp_file_add_line, decode=False)
389
- elif file_name.endswith(".gz"):
390
- _init_tmp_file()
391
- _iter_txt(
392
- filename=file_name,
393
- callback=_tmp_file_add_line,
394
- skip_empty_lines=self._skip_empty_lines,
395
- decode=False,
396
- )
397
- else: # Raw txt file
398
- # Directly mmap the file.
399
- # We just need to scan once through it to find line offsets.
400
- file = open(file_name, "rb")
401
- file_mmap = mmap.mmap(file.fileno(), 0, flags=mmap.MAP_PRIVATE)
402
- file_index = len(self._orth_files)
403
- self._orth_files.append(file)
404
- self._orth_mmaps.append(file_mmap)
405
-
406
- pos = 0
407
- while True:
408
- next_new_line = file_mmap.find(b"\n", pos)
409
- if next_new_line == -1:
410
- break
411
- line_len = next_new_line - pos
412
- if line_len or not self._skip_empty_lines:
413
- orths.append((file_index, pos, line_len))
414
- total_bytes_read += line_len + 1
415
- pos = next_new_line + 1
416
- _maybe_report_status()
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
- for line in f:
791
- if decode:
792
- try:
793
- line = line.decode("utf8")
794
- except UnicodeDecodeError:
795
- line = line.decode("latin_1") # or iso8859_15?
796
- line = line.strip()
797
- if skip_empty_lines and not line:
798
- continue
799
- callback(line)
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 = self._load_seq_list(seq_list_file)
257
- self.num_total_seqs = len(self.seq_list_original[self.default_dataset_key])
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 _load_seq_list(self, seq_list_file: Optional[Union[str, Dict[str, str]]] = None) -> Dict[str, List[str]]:
296
- """
297
- :param seq_list_file:
298
- :return: dict: dataset key -> seq list
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(seq_list_file, str):
353
- seq_list = Dataset._load_seq_list_file(seq_list_file, expect_list=False)
354
- elif isinstance(seq_list_file, dict):
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 seq_list_file:
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(seq_list_file[key]) for key in self.dataset_keys}
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(seq_list_file)}")
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
- return seq_list
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._seq_lens:
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.num_total_seqs, get_seq_len)
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._seq_lens or self._seq_order_seq_lens_file:
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 [self.tag_idx[tag] for tag in self.seq_list_ordered[self.default_dataset_key]]
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
- return self.num_total_seqs
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
- for seq_idx in range(start_, end):
507
- self._check_dataset_seq(dataset_key, seq_idx)
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.seq_list_ordered[self.default_dataset_key][seq_idx]
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._seq_lens:
544
- return self._seq_lens[self.seq_list_ordered[self.default_dataset_key][sorted_seq_idx]]
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
- return self.seq_list_ordered[self.default_dataset_key][sorted_seq_idx]
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] - 1, allow_only_lr_suitable=True
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
- if self.used_num_seqs_per_subset[j] > 0
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 self.datasets[self.dataset_idx2key_map[dataset_idx]].is_less_than_num_seqs(
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