returnn 1.20251023.135024__tar.gz → 1.20251106.185107__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 (480) hide show
  1. {returnn-1.20251023.135024/returnn.egg-info → returnn-1.20251106.185107}/PKG-INFO +1 -1
  2. returnn-1.20251106.185107/_setup_info_generated.py +2 -0
  3. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/config.py +1 -1
  4. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/generating.py +3 -5
  5. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/lm.py +20 -0
  6. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/meta.py +92 -23
  7. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/util/vocabulary.py +90 -0
  8. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/attention.py +1 -0
  9. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/encoder/conformer.py +1 -0
  10. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/module.py +8 -1
  11. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/engine.py +37 -3
  12. returnn-1.20251106.185107/returnn/util/collect_outputs_dict.py +79 -0
  13. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/file_cache.py +15 -1
  14. {returnn-1.20251023.135024 → returnn-1.20251106.185107/returnn.egg-info}/PKG-INFO +1 -1
  15. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn.egg-info/SOURCES.txt +1 -0
  16. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_Dataset.py +83 -0
  17. returnn-1.20251023.135024/_setup_info_generated.py +0 -2
  18. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/.editorconfig +0 -0
  19. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/.gitignore +0 -0
  20. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/.gitmodules +0 -0
  21. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/.kateconfig +0 -0
  22. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/CHANGELOG.md +0 -0
  23. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/CODEOWNERS +0 -0
  24. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/CONTRIBUTING.md +0 -0
  25. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/LICENSE +0 -0
  26. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/MANIFEST.in +0 -0
  27. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/README.rst +0 -0
  28. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/__init__.py +0 -0
  29. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/12AX.cluster_map +0 -0
  30. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/_setup_returnn_env.py +0 -0
  31. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-fwd.config +0 -0
  32. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-horovod-mpi.py +0 -0
  33. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-horovod-mpi.py.sh +0 -0
  34. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-horovod-mpi.sh +0 -0
  35. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-hyper-param-tuning.config +0 -0
  36. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-iter-dataset.py +0 -0
  37. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-list-devices.py +0 -0
  38. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-lua-torch-layer.config +0 -0
  39. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-pretrain.config +0 -0
  40. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-record-and-push-to-webserver.py +0 -0
  41. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-returnn-as-framework.py +0 -0
  42. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-rf-pt-benchmark.py +0 -0
  43. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-rf.config +0 -0
  44. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-rhn-enwik8.config +0 -0
  45. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-sprint-interface.py +0 -0
  46. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-att-copy.config +0 -0
  47. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-attention.config +0 -0
  48. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
  49. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
  50. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-enc-dec.config +0 -0
  51. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-hard-att-copy.config +0 -0
  52. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-lstm-benchmark.py +0 -0
  53. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
  54. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
  55. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-native-lstm.12ax.config +0 -0
  56. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-native-lstm2.12ax.config +0 -0
  57. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
  58. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-neural-transducer.12ax.config +0 -0
  59. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-rec-explicit-lstm.config +0 -0
  60. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-rec-explicit-rnn.config +0 -0
  61. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-rec-self-att.config +0 -0
  62. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-search-compiled-graph.py +0 -0
  63. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
  64. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-timit-lstm-ctc.config +0 -0
  65. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-torch.config +0 -0
  66. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
  67. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/demo.sh +0 -0
  68. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
  69. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
  70. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
  71. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/README.txt +0 -0
  72. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/chars.txt +0 -0
  73. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/config_demo +0 -0
  74. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/config_fwd +0 -0
  75. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/config_real +0 -0
  76. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
  77. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/decode.py +0 -0
  78. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
  79. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/go.sh +0 -0
  80. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/lines.txt +0 -0
  81. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/split/eval.txt +0 -0
  82. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/split/train.txt +0 -0
  83. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/IAM/split/valid.txt +0 -0
  84. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/README.md +0 -0
  85. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/artificial/create_test_h5.py +0 -0
  86. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/artificial/forwardconfig +0 -0
  87. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/artificial/go.sh +0 -0
  88. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/artificial/trainconfig +0 -0
  89. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
  90. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
  91. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/artificial_rgb/go.sh +0 -0
  92. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
  93. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/pyproject.toml +0 -0
  94. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/requirements.txt +0 -0
  95. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/__init__.py +0 -0
  96. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/__main__.py +0 -0
  97. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/__old_mod_loader__.py +0 -0
  98. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/__setup__.py +0 -0
  99. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/__init__.py +0 -0
  100. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/audio.py +0 -0
  101. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/basic.py +0 -0
  102. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/bundle_file.py +0 -0
  103. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/cached.py +0 -0
  104. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/cached2.py +0 -0
  105. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/distrib_files.py +0 -0
  106. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/hdf.py +0 -0
  107. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/huggingface.py +0 -0
  108. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/map.py +0 -0
  109. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/multi_proc.py +0 -0
  110. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/normalization_data.py +0 -0
  111. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/numpy_dump.py +0 -0
  112. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/postprocessing.py +0 -0
  113. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/raw_wav.py +0 -0
  114. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/sprint.py +0 -0
  115. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/stereo.py +0 -0
  116. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/text_dict.py +0 -0
  117. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/util/__init__.py +0 -0
  118. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/util/feature_extraction.py +0 -0
  119. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/datasets/util/strings.py +0 -0
  120. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/engine/__init__.py +0 -0
  121. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/engine/base.py +0 -0
  122. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/engine/batch.py +0 -0
  123. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/__init__.py +0 -0
  124. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/__main__.py +0 -0
  125. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/.git +0 -0
  126. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
  127. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
  128. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
  129. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
  130. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
  131. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
  132. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
  133. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
  134. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
  135. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
  136. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
  137. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
  138. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
  139. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
  140. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
  141. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
  142. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
  143. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
  144. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
  145. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
  146. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
  147. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
  148. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
  149. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
  150. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/__init__.py +0 -0
  151. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/graph_editor/README.md +0 -0
  152. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/graph_editor/__init__.py +0 -0
  153. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/graph_editor/edit.py +0 -0
  154. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/graph_editor/reroute.py +0 -0
  155. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/graph_editor/select.py +0 -0
  156. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/graph_editor/subgraph.py +0 -0
  157. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/graph_editor/transform.py +0 -0
  158. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/extern/graph_editor/util.py +0 -0
  159. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/forward_iface.py +0 -0
  160. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/__init__.py +0 -0
  161. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/_backend.py +0 -0
  162. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/_cache.py +0 -0
  163. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/_native/__init__.py +0 -0
  164. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/_native/backend.cpp +0 -0
  165. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/_native/backend.hpp +0 -0
  166. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/_native/module.cpp +0 -0
  167. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/_native/module.hpp +0 -0
  168. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/_native/py_utils.hpp +0 -0
  169. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/_native/tensor_ops.cpp +0 -0
  170. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/_native/tensor_ops.hpp +0 -0
  171. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/_numpy_backend.py +0 -0
  172. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/_random_journal.py +0 -0
  173. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/_utils.py +0 -0
  174. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/array_.py +0 -0
  175. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/audio/__init__.py +0 -0
  176. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/audio/mel.py +0 -0
  177. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/audio/specaugment.py +0 -0
  178. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/backend.py +0 -0
  179. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/build_from_dict.py +0 -0
  180. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/cond.py +0 -0
  181. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/const.py +0 -0
  182. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/container.py +0 -0
  183. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/control_flow_ctx.py +0 -0
  184. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/conv.py +0 -0
  185. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/conversions/__init__.py +0 -0
  186. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
  187. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/conversions/hf_llama.py +0 -0
  188. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/conversions/torch_nn.py +0 -0
  189. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/decoder/__init__.py +0 -0
  190. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/decoder/transformer.py +0 -0
  191. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/device.py +0 -0
  192. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/dims.py +0 -0
  193. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/dropout.py +0 -0
  194. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/dtype.py +0 -0
  195. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/encoder/__init__.py +0 -0
  196. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/encoder/base.py +0 -0
  197. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/encoder/conformer_v2.py +0 -0
  198. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/encoder/e_branchformer.py +0 -0
  199. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/encoder/transformer.py +0 -0
  200. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/gradient.py +0 -0
  201. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/graph.py +0 -0
  202. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/hooks.py +0 -0
  203. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/init.py +0 -0
  204. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/label_smoothing.py +0 -0
  205. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/linear.py +0 -0
  206. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/loop.py +0 -0
  207. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/loss.py +0 -0
  208. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/math_.py +0 -0
  209. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/matmul.py +0 -0
  210. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/nested.py +0 -0
  211. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/normalization.py +0 -0
  212. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/parameter.py +0 -0
  213. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/parametrizations.py +0 -0
  214. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/parametrize.py +0 -0
  215. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/piecewise_linear.py +0 -0
  216. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/rand.py +0 -0
  217. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/rec.py +0 -0
  218. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/reduce.py +0 -0
  219. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/run_ctx.py +0 -0
  220. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/signal.py +0 -0
  221. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/state.py +0 -0
  222. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/stepwise_scheduler.py +0 -0
  223. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/tensor_array.py +0 -0
  224. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/frontend/types.py +0 -0
  225. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/import_/__init__.py +0 -0
  226. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/import_/common.py +0 -0
  227. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/import_/git.py +0 -0
  228. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/import_/import_.py +0 -0
  229. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/learning_rate_control.py +0 -0
  230. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/log.py +0 -0
  231. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/native_op.cpp +0 -0
  232. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/native_op.py +0 -0
  233. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/pretrain.py +0 -0
  234. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/sprint/__init__.py +0 -0
  235. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/sprint/cache.py +0 -0
  236. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/sprint/control.py +0 -0
  237. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/sprint/error_signals.py +0 -0
  238. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/sprint/extern_interface.py +0 -0
  239. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/sprint/interface.py +0 -0
  240. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tensor/README.md +0 -0
  241. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tensor/__init__.py +0 -0
  242. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tensor/_dim_extra.py +0 -0
  243. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tensor/_tensor_extra.py +0 -0
  244. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tensor/_tensor_mixin_base.py +0 -0
  245. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tensor/_tensor_op_overloads.py +0 -0
  246. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tensor/control_flow_ctx.py +0 -0
  247. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tensor/dim.py +0 -0
  248. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tensor/marked_dim.py +0 -0
  249. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tensor/tensor.py +0 -0
  250. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tensor/tensor_dict.py +0 -0
  251. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tensor/utils.py +0 -0
  252. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/__init__.py +0 -0
  253. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/compat.py +0 -0
  254. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/data_pipeline.py +0 -0
  255. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/distributed.py +0 -0
  256. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/engine.py +0 -0
  257. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_layers/README.md +0 -0
  258. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_layers/__init__.py +0 -0
  259. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_layers/_backend.py +0 -0
  260. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_layers/_utils.py +0 -0
  261. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_layers/cond.py +0 -0
  262. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
  263. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
  264. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_layers/dims.py +0 -0
  265. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_layers/layer.py +0 -0
  266. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_layers/loop.py +0 -0
  267. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_layers/make_layer.py +0 -0
  268. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_layers/masked_computation.py +0 -0
  269. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
  270. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
  271. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_low_level/__init__.py +0 -0
  272. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/frontend_low_level/_backend.py +0 -0
  273. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/horovod.py +0 -0
  274. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/hyper_param_tuning.py +0 -0
  275. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/layers/__init__.py +0 -0
  276. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/layers/base.py +0 -0
  277. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/layers/basic.py +0 -0
  278. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/layers/rec.py +0 -0
  279. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/layers/segmental_model.py +0 -0
  280. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/layers/signal_processing.py +0 -0
  281. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/layers/variable.py +0 -0
  282. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/native_op.py +0 -0
  283. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/network.py +0 -0
  284. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/sprint.py +0 -0
  285. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/updater.py +0 -0
  286. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/util/__init__.py +0 -0
  287. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/util/basic.py +0 -0
  288. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/util/data.py +0 -0
  289. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/util/gradient_checkpoint.py +0 -0
  290. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/util/ken_lm.py +0 -0
  291. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/tf/util/open_fst.py +0 -0
  292. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/README.md +0 -0
  293. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/__init__.py +0 -0
  294. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/data/__init__.py +0 -0
  295. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/data/extern_data.py +0 -0
  296. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/data/pipeline.py +0 -0
  297. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/data/queued_data_iter.py +0 -0
  298. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
  299. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/data/tensor_utils.py +0 -0
  300. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/distributed.py +0 -0
  301. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/frontend/__init__.py +0 -0
  302. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/frontend/_backend.py +0 -0
  303. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/frontend/_rand.py +0 -0
  304. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/frontend/bridge.py +0 -0
  305. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/frontend/raw_ops.py +0 -0
  306. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/optim/README.md +0 -0
  307. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/optim/__init__.py +0 -0
  308. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/optim/lion.py +0 -0
  309. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/updater.py +0 -0
  310. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/util/README.md +0 -0
  311. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/util/__init__.py +0 -0
  312. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/util/array_.py +0 -0
  313. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/util/debug_inf_nan.py +0 -0
  314. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/util/diagnose_gpu.py +0 -0
  315. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/util/exception_helper.py +0 -0
  316. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/util/gradient_checkpoint.py +0 -0
  317. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/util/module.py +0 -0
  318. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/torch/util/scaled_gradient.py +0 -0
  319. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/__init__.py +0 -0
  320. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/basic.py +0 -0
  321. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/better_exchook.py +0 -0
  322. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/bpe.py +0 -0
  323. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/debug.py +0 -0
  324. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/debug_helpers.py +0 -0
  325. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/fsa.py +0 -0
  326. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/literal_py_to_pickle.py +0 -0
  327. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/lru_cache.py +0 -0
  328. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/math.py +0 -0
  329. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
  330. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/native_code_compiler.py +0 -0
  331. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/pprint.py +0 -0
  332. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/py-to-pickle.cpp +0 -0
  333. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/py_ext_mod_compiler.py +0 -0
  334. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/result_with_reason.py +0 -0
  335. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/sig_proc.py +0 -0
  336. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/task_system.py +0 -0
  337. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/train_proc_manager.py +0 -0
  338. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn/util/watch_memory.py +0 -0
  339. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn.egg-info/dependency_links.txt +0 -0
  340. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn.egg-info/requires.txt +0 -0
  341. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/returnn.egg-info/top_level.txt +0 -0
  342. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/rnn.py +0 -0
  343. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/setup.cfg +0 -0
  344. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/setup.py +0 -0
  345. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/DummySprintExec.py +0 -0
  346. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/PyCharm-inspection-profile.xml +0 -0
  347. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/PyCharm.idea/.gitignore +0 -0
  348. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/PyCharm.idea/.name +0 -0
  349. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
  350. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
  351. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
  352. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
  353. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
  354. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/PyCharm.idea/misc.xml +0 -0
  355. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/PyCharm.idea/modules.xml +0 -0
  356. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/PyCharm.idea/returnn.iml +0 -0
  357. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
  358. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/_set_num_threads1.py +0 -0
  359. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/_setup_returnn_env.py +0 -0
  360. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/_setup_test_env.py +0 -0
  361. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/bpe-unicode-demo.codes +0 -0
  362. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/bpe-unicode-demo.vocab +0 -0
  363. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/lexicon_opt.fst +0 -0
  364. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/lexicon_opt.isyms +0 -0
  365. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/lexicon_opt.jpg +0 -0
  366. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/lexicon_opt.osyms +0 -0
  367. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/lint_common.py +0 -0
  368. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/pycharm-inspect.py +0 -0
  369. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/pylint.py +0 -0
  370. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/returnn-as-framework.py +0 -0
  371. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/rf_utils.py +0 -0
  372. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/spelling.dic +0 -0
  373. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_Config.py +0 -0
  374. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_Fsa.py +0 -0
  375. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_GeneratingDataset.py +0 -0
  376. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_HDFDataset.py +0 -0
  377. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_LearningRateControl.py +0 -0
  378. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_Log.py +0 -0
  379. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_MultiProcDataset.py +0 -0
  380. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_Pretrain.py +0 -0
  381. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_ResNet.py +0 -0
  382. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_SprintDataset.py +0 -0
  383. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_SprintInterface.py +0 -0
  384. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_TFEngine.py +0 -0
  385. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_TFNativeOp.py +0 -0
  386. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_TFNetworkLayer.py +0 -0
  387. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_TFNetworkRecLayer.py +0 -0
  388. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_TFNetworkSigProcLayer.py +0 -0
  389. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_TFUpdater.py +0 -0
  390. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_TFUtil.py +0 -0
  391. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_TF_determinism.py +0 -0
  392. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_TaskSystem.py +0 -0
  393. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_TaskSystem_SharedMem.py +0 -0
  394. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_TranslationDataset.py +0 -0
  395. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_Util.py +0 -0
  396. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_datasets_huggingface.py +0 -0
  397. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_demos.py +0 -0
  398. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_fork_exec.py +0 -0
  399. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_hdf_dump.py +0 -0
  400. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_array.py +0 -0
  401. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_attention.py +0 -0
  402. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_base.py +0 -0
  403. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_cond.py +0 -0
  404. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_const.py +0 -0
  405. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_container.py +0 -0
  406. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_conv.py +0 -0
  407. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_decoder_transformer.py +0 -0
  408. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_encoder_conformer.py +0 -0
  409. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_gradient.py +0 -0
  410. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_label_smoothing.py +0 -0
  411. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_loop.py +0 -0
  412. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_math.py +0 -0
  413. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_normalization.py +0 -0
  414. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_piecewise_linear.py +0 -0
  415. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_rec.py +0 -0
  416. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_reduce.py +0 -0
  417. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_rf_signal.py +0 -0
  418. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_tensor.py +0 -0
  419. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_threading.py +0 -0
  420. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_tools.py +0 -0
  421. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_torch_dataset.py +0 -0
  422. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_torch_engine.py +0 -0
  423. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_torch_frontend.py +0 -0
  424. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_torch_internal_frontend.py +0 -0
  425. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/test_torch_util.py +0 -0
  426. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tests/torch_utils.py +0 -0
  427. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/_setup_returnn_env.py +0 -0
  428. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/analyze-dataset-batches.py +0 -0
  429. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/bliss-collect-seq-lens.py +0 -0
  430. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/bliss-dump-text.py +0 -0
  431. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/bliss-get-segment-names.py +0 -0
  432. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/bliss-to-ogg-zip.py +0 -0
  433. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/bpe-create-lexicon.py +0 -0
  434. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/calculate-word-error-rate.py +0 -0
  435. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/cleanup-old-models.py +0 -0
  436. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/collect-orth-symbols.py +0 -0
  437. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/collect-words.py +0 -0
  438. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/compile_native_op.py +0 -0
  439. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/compile_tf_graph.py +0 -0
  440. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/debug-dump-search-scores.py +0 -0
  441. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/debug-plot-search-scores.py +0 -0
  442. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/dump-dataset-raw-strings.py +0 -0
  443. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/dump-dataset.py +0 -0
  444. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/dump-forward-stats.py +0 -0
  445. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/dump-forward.py +0 -0
  446. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/dump-network-json.py +0 -0
  447. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/dump-pickle.py +0 -0
  448. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/extract_state_tying_from_dataset.py +0 -0
  449. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/file-cache.py +0 -0
  450. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/get-attention-weights.py +0 -0
  451. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/get-best-model-epoch.py +0 -0
  452. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/hdf_dump.py +0 -0
  453. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/hdf_dump_translation_dataset.py +0 -0
  454. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/import-blocks-mt-model.py +0 -0
  455. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/import-t2t-mt-model.py +0 -0
  456. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/.gitignore +0 -0
  457. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/Makefile +0 -0
  458. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/README.md +0 -0
  459. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/example/README.md +0 -0
  460. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/example/libs_list +0 -0
  461. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
  462. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
  463. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
  464. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/example/state_vars_list +0 -0
  465. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/example/tensor_names_list +0 -0
  466. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/file.h +0 -0
  467. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
  468. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
  469. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/main.cc +0 -0
  470. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/rescorer.h +0 -0
  471. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/vocabulary.cc +0 -0
  472. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/lattice_rescorer/vocabulary.h +0 -0
  473. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/tf_avg_checkpoints.py +0 -0
  474. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/tf_inspect_checkpoint.py +0 -0
  475. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/tf_inspect_summary_log.py +0 -0
  476. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/torch_avg_checkpoints.py +0 -0
  477. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/torch_export_to_onnx.py +0 -0
  478. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/torch_inspect_checkpoint.py +0 -0
  479. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
  480. {returnn-1.20251023.135024 → returnn-1.20251106.185107}/tools/torch_scale_tuning.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20251023.135024
3
+ Version: 1.20251106.185107
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.20251106.185107'
2
+ long_version = '1.20251106.185107+git.fd8d2d8'
@@ -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:
@@ -1164,11 +1164,9 @@ class StaticDataset(CachedDataset2):
1164
1164
  """supports sorting"""
1165
1165
  return True
1166
1166
 
1167
- def _collect_single_seq(self, seq_idx):
1168
- """
1169
- :param int seq_idx:
1170
- :rtype: DatasetSeq
1171
- """
1167
+ def _collect_single_seq(self, seq_idx: int) -> Optional[DatasetSeq]:
1168
+ if seq_idx >= len(self._seq_order):
1169
+ return None
1172
1170
  corpus_seq_idx = self._seq_order[seq_idx]
1173
1171
  data = self.data[corpus_seq_idx]
1174
1172
  return DatasetSeq(
@@ -694,6 +694,26 @@ class LmDataset(CachedDataset2):
694
694
  self.next_seq_idx = seq_idx + 1
695
695
  return DatasetSeq(seq_idx=seq_idx, features=data, targets=targets, seq_tag=seq_tag)
696
696
 
697
+ def finish_epoch(self, *, free_resources: bool = False):
698
+ """finish epoch"""
699
+ super().finish_epoch(free_resources=free_resources)
700
+
701
+ if free_resources:
702
+ self._orths_offsets_and_lens = None
703
+ if self._orth_mmaps is not None:
704
+ for m in self._orth_mmaps:
705
+ if m is not None:
706
+ m.close()
707
+ self._orth_mmaps = None
708
+ if self._orth_files is not None:
709
+ for f in self._orth_files:
710
+ if f is not None:
711
+ f.close()
712
+ self._orth_files = None
713
+
714
+ self._seq_list = None
715
+ self._seq_index_by_tag = None
716
+
697
717
 
698
718
  def _is_bliss(filename):
699
719
  """
@@ -964,7 +964,6 @@ class CombinedDataset(CachedDataset2):
964
964
  self.dataset_keys = set([m[0] for m in data_map.keys()]) # type: typing.Set[str]
965
965
  self.dataset_idx2key_map = dict(enumerate(sorted(self.dataset_keys))) # idx -> dataset-key
966
966
  self.data_keys = set(data_map.values()) # type: typing.Set[str]
967
- assert "data" in self.data_keys
968
967
  self.target_list = sorted(self.data_keys - {"data"})
969
968
 
970
969
  # Build target lookup table that maps from dataset_key and data_key (data key used by CombinedDataset)
@@ -994,8 +993,7 @@ class CombinedDataset(CachedDataset2):
994
993
  if data_dims:
995
994
  data_dims = convert_data_dims(data_dims)
996
995
  self.data_dims = data_dims
997
- assert "data" in data_dims
998
- for key in self.target_list:
996
+ for key in self.data_keys:
999
997
  assert key in data_dims
1000
998
  else:
1001
999
  self.data_dims = {}
@@ -1009,7 +1007,7 @@ class CombinedDataset(CachedDataset2):
1009
1007
  if dataset_data_key in dataset.labels:
1010
1008
  self.labels[data_key] = dataset.labels[dataset_data_key]
1011
1009
 
1012
- self.num_inputs = self.data_dims["data"][0]
1010
+ self.num_inputs = self.data_dims["data"][0] if "data" in self.data_dims else 0
1013
1011
  self.num_outputs = self.data_dims
1014
1012
 
1015
1013
  self.data_dtypes = {
@@ -1019,6 +1017,9 @@ class CombinedDataset(CachedDataset2):
1019
1017
 
1020
1018
  self.dataset_seq_idx_boundaries: Optional[List[int]] = None
1021
1019
  self.dataset_sorted_seq_idx_list: Optional[List[Tuple[int, int]]] = None
1020
+ self._sub_dataset_cur_loaded_seq_range: Optional[List[Tuple[int, int]]] = None
1021
+ # The usage is about the seqs already covered in dataset_sorted_seq_idx_list,
1022
+ # in case we dynamically build up this list.
1022
1023
  self.used_num_seqs_per_subset: Optional[List[int]] = None
1023
1024
 
1024
1025
  def init_seq_order(self, epoch=None, seq_list=None, seq_order=None):
@@ -1030,7 +1031,7 @@ class CombinedDataset(CachedDataset2):
1030
1031
  """
1031
1032
 
1032
1033
  assert seq_list is None and seq_order is None, "seq_list and seq_order not supported for %s" % self.__class__
1033
- need_reinit = self.epoch is None or self.epoch != epoch
1034
+ need_reinit = self.epoch is None or self.epoch != epoch or self.expected_load_seq_start > 0
1034
1035
  num_seqs_saved = self._num_seqs
1035
1036
  super(CombinedDataset, self).init_seq_order(
1036
1037
  epoch=epoch, seq_list=seq_list, seq_order=seq_order
@@ -1047,13 +1048,15 @@ class CombinedDataset(CachedDataset2):
1047
1048
  for dataset in self.datasets.values():
1048
1049
  dataset.init_seq_order(epoch=epoch)
1049
1050
 
1051
+ self._sub_dataset_cur_loaded_seq_range = [(0, 0)] * len(self.datasets)
1052
+
1050
1053
  # noinspection PyBroadException
1051
1054
  try:
1052
1055
  total_num_seqs = sum([self.datasets[k].num_seqs for k in sorted(self.datasets.keys())])
1053
1056
  except Exception:
1054
1057
  total_num_seqs = None
1055
1058
 
1056
- if total_num_seqs is not None:
1059
+ if total_num_seqs is not None and self.seq_ordering != "interleave":
1057
1060
  self.dataset_seq_idx_boundaries = self._create_dataset_seq_idx_boundaries()
1058
1061
 
1059
1062
  if self.sampling_sizes:
@@ -1090,7 +1093,7 @@ class CombinedDataset(CachedDataset2):
1090
1093
 
1091
1094
  # Re-initialize sequence orders of sub-datasets with created sequence list.
1092
1095
  self.used_num_seqs_per_subset = []
1093
- for dataset_idx, dataset_key in self.dataset_idx2key_map.items():
1096
+ for dataset_idx, dataset_key in sorted(self.dataset_idx2key_map.items()):
1094
1097
  assert self.datasets[dataset_key].have_corpus_seq_idx()
1095
1098
  self.datasets[dataset_key].init_seq_order(epoch=epoch, seq_order=seq_order_subdatasets[dataset_idx])
1096
1099
  self.used_num_seqs_per_subset.append(len(seq_order_subdatasets[dataset_idx]))
@@ -1098,6 +1101,11 @@ class CombinedDataset(CachedDataset2):
1098
1101
  else:
1099
1102
  self.dataset_sorted_seq_idx_list = [] # We will fill this as we go
1100
1103
  self.used_num_seqs_per_subset = [0] * len(self.datasets)
1104
+ self._num_seqs = total_num_seqs
1105
+
1106
+ # These are currently not supported/implemented.
1107
+ # All of these should just be done in the sub-datasets directly.
1108
+ assert self.partition_epoch == 1 and self.repeat_epoch == 1 and self._num_shards == 1
1101
1109
 
1102
1110
  return True
1103
1111
 
@@ -1236,13 +1244,30 @@ class CombinedDataset(CachedDataset2):
1236
1244
 
1237
1245
  return dataset.get_estimated_seq_length(dataset_seq_idx)
1238
1246
 
1239
- def _expand_dataset_sec_idxs(self, num_values):
1247
+ def _sub_dataset_make_cur_loaded(self, dataset_idx: int) -> bool:
1248
+ # Cur meaning for the next sequence to be added to dataset_sorted_seq_idx_list.
1249
+ seq_idx = self.used_num_seqs_per_subset[dataset_idx]
1250
+ cur_start, cur_end = self._sub_dataset_cur_loaded_seq_range[dataset_idx]
1251
+ if seq_idx >= cur_end:
1252
+ self._sub_dataset_load_seqs(dataset_idx, cur_start, seq_idx + 1)
1253
+ return True
1254
+ elif seq_idx < cur_start:
1255
+ return False
1256
+ else:
1257
+ return True
1258
+
1259
+ def _expand_dataset_seq_idxs(self, num_values: int) -> bool:
1240
1260
  """
1241
- :param int num_values: Add num_values entries to the dataset-segment-idx mapping table
1242
- :return: something?
1243
- :rtype: bool
1261
+ Try to extend dataset_sorted_seq_idx_list.
1262
+ We expect that we have reached the end of it.
1263
+
1264
+ :param num_values: Add num_values entries to the dataset-segment-idx mapping table
1265
+ :return: whether we added num_values entries
1244
1266
  """
1245
- for i in range(num_values):
1267
+ for _ in range(num_values):
1268
+ for j in range(len(self.datasets)):
1269
+ self._sub_dataset_make_cur_loaded(j)
1270
+
1246
1271
  if self.seq_ordering == "default": # i.e. in order
1247
1272
  dataset_idx = 0
1248
1273
  while dataset_idx < len(self.datasets):
@@ -1265,6 +1290,32 @@ class CombinedDataset(CachedDataset2):
1265
1290
  else:
1266
1291
  return False # No dataset has remaining data
1267
1292
 
1293
+ elif self.seq_ordering == "interleave":
1294
+ complete_fracs_and_ds_idx = [
1295
+ (
1296
+ self.datasets[self.dataset_idx2key_map[j]].get_complete_frac(
1297
+ self.used_num_seqs_per_subset[j] - 1, allow_only_lr_suitable=True
1298
+ )
1299
+ if self.used_num_seqs_per_subset[j] > 0
1300
+ else 0.0,
1301
+ j,
1302
+ )
1303
+ for j in range(len(self.datasets))
1304
+ ]
1305
+ assert all(frac is not None for frac, _ in complete_fracs_and_ds_idx), (
1306
+ f"{self}: Datasets must provide complete frac for interleave,"
1307
+ f" got {complete_fracs_and_ds_idx}, dataset idx2key map {self.dataset_idx2key_map}"
1308
+ )
1309
+ # Sort by complete frac, i.e. datasets with the lowest complete frac first.
1310
+ complete_fracs_and_ds_idx.sort()
1311
+ 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
+ ):
1315
+ break
1316
+ else:
1317
+ return False # No dataset has remaining data
1318
+
1268
1319
  elif self.seq_ordering == "random_dataset":
1269
1320
  while True:
1270
1321
  # Build probability table
@@ -1323,19 +1374,23 @@ class CombinedDataset(CachedDataset2):
1323
1374
  def _load_seqs(self, start, end):
1324
1375
  # If the segment order is not yet known, fix the next few segments
1325
1376
  if end > len(self.dataset_sorted_seq_idx_list):
1326
- self._expand_dataset_sec_idxs(end - len(self.dataset_sorted_seq_idx_list))
1377
+ self._expand_dataset_seq_idxs(end - len(self.dataset_sorted_seq_idx_list))
1327
1378
 
1328
1379
  requested_seqs = self.dataset_sorted_seq_idx_list[start:end]
1329
1380
 
1330
1381
  for dataset_idx in range(len(self.datasets)):
1331
- dataset = self.datasets[self.dataset_idx2key_map[dataset_idx]]
1332
1382
  sub_requested_seqs = [s[1] for s in requested_seqs if s[0] == dataset_idx]
1333
1383
  if not sub_requested_seqs:
1334
1384
  continue
1335
1385
  sub_start, sub_end = min(sub_requested_seqs), max(sub_requested_seqs)
1336
- dataset.load_seqs(sub_start, sub_end + 1)
1386
+ self._sub_dataset_load_seqs(dataset_idx, sub_start, sub_end + 1)
1337
1387
  super(CombinedDataset, self)._load_seqs(start=start, end=end)
1338
1388
 
1389
+ def _sub_dataset_load_seqs(self, dataset_idx: int, start: int, end: int):
1390
+ self._sub_dataset_cur_loaded_seq_range[dataset_idx] = (start, end)
1391
+ dataset = self.datasets[self.dataset_idx2key_map[dataset_idx]]
1392
+ dataset.load_seqs(start, end)
1393
+
1339
1394
  def _get_data(self, dataset_key, dataset_seq_idx, data_key):
1340
1395
  """
1341
1396
  :type dataset_seq_idx: int
@@ -1348,7 +1403,10 @@ class CombinedDataset(CachedDataset2):
1348
1403
  if dataset_data_key is not None:
1349
1404
  return dataset.get_data(dataset_seq_idx, dataset_data_key)
1350
1405
  else:
1351
- return numpy.array([], self.data_dtypes[data_key])
1406
+ shape: List[int] = [0] * self.num_outputs[data_key][1]
1407
+ if shape and not self.is_data_sparse(data_key):
1408
+ shape[-1] = self.get_data_dim(data_key)
1409
+ return numpy.zeros(shape, dtype=self.data_dtypes[data_key])
1352
1410
 
1353
1411
  def _collect_single_seq(self, seq_idx):
1354
1412
  """
@@ -1362,19 +1420,30 @@ class CombinedDataset(CachedDataset2):
1362
1420
  dataset = self.datasets[dataset_key]
1363
1421
 
1364
1422
  seq_tag = dataset.get_tag(dataset_seq_idx)
1365
- features = self._get_data(dataset_key, dataset_seq_idx, "data")
1366
- targets = {target: self._get_data(dataset_key, dataset_seq_idx, target) for target in self.target_list}
1367
- return DatasetSeq(seq_idx=seq_idx, seq_tag=seq_tag, features=features, targets=targets)
1423
+ features = {key: self._get_data(dataset_key, dataset_seq_idx, key) for key in self.data_keys}
1424
+ complete_frac = None
1425
+ if self.seq_ordering == "interleave":
1426
+ # In the interleave case, by design, this should be monotonically increasing,
1427
+ # as per how we select the next seq in _expand_dataset_seq_idxs.
1428
+ complete_frac = dataset.get_complete_frac(dataset_seq_idx, allow_only_lr_suitable=True)
1429
+ # In other cases, complete_frac is not so straightforward.
1430
+ # In the case that the total num seqs is known, then it's anyway not necessary.
1431
+ return DatasetSeq(seq_idx=seq_idx, complete_frac=complete_frac, seq_tag=seq_tag, features=features)
1368
1432
 
1369
- def is_less_than_num_seqs(self, n):
1433
+ def is_less_than_num_seqs(self, n: int) -> bool:
1370
1434
  """
1371
- :param int n:
1372
- :rtype: bool
1435
+ :param n:
1373
1436
  """
1374
1437
  if n < len(self.dataset_sorted_seq_idx_list):
1375
1438
  return True
1376
1439
  else:
1377
- return self._expand_dataset_sec_idxs(n - len(self.dataset_sorted_seq_idx_list) + 1)
1440
+ return self._expand_dataset_seq_idxs(n - len(self.dataset_sorted_seq_idx_list) + 1)
1441
+
1442
+ def get_data_keys(self) -> List[str]:
1443
+ """data keys"""
1444
+ if "data" in self.data_keys:
1445
+ return ["data"] + sorted(self.data_keys - {"data"})
1446
+ return sorted(self.data_keys)
1378
1447
 
1379
1448
  def get_target_list(self):
1380
1449
  """
@@ -11,6 +11,7 @@ __all__ = [
11
11
  "SentencePieces",
12
12
  "CharacterTargets",
13
13
  "Utf8ByteTargets",
14
+ "HuggingFaceTokenizer",
14
15
  ]
15
16
 
16
17
  from typing import Optional, Union, Type, Callable, List, Dict
@@ -691,3 +692,92 @@ class Utf8ByteTargets(Vocabulary):
691
692
  assert ((seq >= 0) & (seq < 256)).all(), f"invalid byte value, must be within 0-255: {seq}"
692
693
  seq = seq.astype(numpy.uint8)
693
694
  return bytearray(seq).decode(encoding="utf8")
695
+
696
+
697
+ class HuggingFaceTokenizer(Vocabulary):
698
+ """
699
+ Uses the `AutoTokenizer` class from the `transformers` package.
700
+ """
701
+
702
+ def __init__(self, *, huggingface_repo_dir: str):
703
+ """
704
+ :param str huggingface_repo_dir: the directory containing the `tokenizer_config.json` file.
705
+ """
706
+ import transformers # noqa
707
+
708
+ # Make sure it is a string. (Could be e.g. Sis Path.)
709
+ huggingface_repo_dir = str(huggingface_repo_dir)
710
+ self._opts = {"huggingface_repo_dir": huggingface_repo_dir}
711
+ self._cache_key = huggingface_repo_dir
712
+ self.tokenizer = transformers.AutoTokenizer.from_pretrained(huggingface_repo_dir, trust_remote_code=True)
713
+ super().__init__(
714
+ vocab_file=None,
715
+ seq_postfix=None,
716
+ unknown_label=self.tokenizer.unk_token_id,
717
+ eos_label=self.tokenizer.eos_token_id,
718
+ bos_label=self.tokenizer.bos_token_id,
719
+ pad_label=self.tokenizer.pad_token_id,
720
+ )
721
+
722
+ def __repr__(self):
723
+ return "%s(%r)" % (self.__class__.__name__, self._opts)
724
+
725
+ def _parse_vocab(self):
726
+ self.num_labels = len(self.tokenizer)
727
+ # Do not load labels/vocab here. This is not really needed.
728
+
729
+ @property
730
+ def labels(self) -> List[str]:
731
+ """list of labels"""
732
+ if self._cache_key and self._cache_key in self._cache:
733
+ self._vocab, self._labels = self._cache[self._cache_key]
734
+ assert self.num_labels == len(self._vocab) == len(self._labels)
735
+ else:
736
+ self._labels = [self.tokenizer._convert_id_to_token(i) for i in range(self.num_labels)] # noqa
737
+ self._vocab = {label: i for (i, label) in enumerate(self._labels)}
738
+ if self._cache_key:
739
+ self._cache[self._cache_key] = (self._vocab, self._labels)
740
+ return self._labels
741
+
742
+ def is_id_valid(self, idx: int) -> bool:
743
+ """
744
+ :param idx:
745
+ """
746
+ return 0 <= idx < len(self.tokenizer)
747
+
748
+ def id_to_label(self, idx: int, default: Union[str, Type[KeyError], None] = KeyError) -> Optional[str]:
749
+ """
750
+ :param idx:
751
+ :param default:
752
+ """
753
+ if default is not KeyError and not self.is_id_valid(idx):
754
+ return default
755
+ return self.tokenizer.convert_ids_to_tokens(idx)
756
+
757
+ def label_to_id(self, label: str, default: Union[int, Type[KeyError], None] = KeyError) -> Optional[int]:
758
+ """
759
+ :param label:
760
+ :param default:
761
+ """
762
+ res = self.tokenizer.convert_token_to_id(label)
763
+ if res == self.unknown_label_id or res < 0 or res is None:
764
+ # It could be that the label really is the unknown-label, or it could be that the label is unknown.
765
+ if label == self.id_to_label(self.unknown_label_id):
766
+ return self.unknown_label_id
767
+ if default is KeyError:
768
+ raise KeyError("label %r not found" % label)
769
+ return default
770
+ return res
771
+
772
+ def get_seq(self, sentence: str) -> List[int]:
773
+ """
774
+ :param sentence: assumed to be seq of vocab entries separated by whitespace
775
+ """
776
+ return self.tokenizer(sentence)["input_ids"]
777
+
778
+ def get_seq_labels(self, seq):
779
+ """
780
+ :param list[int]|numpy.ndarray seq: 1D sequence
781
+ :rtype: str
782
+ """
783
+ return self.tokenizer.decode(seq, skip_special_tokens=True)
@@ -483,6 +483,7 @@ class RelPosSelfAttention(SelfAttentionBase):
483
483
  matrix_bd = _rel_pos_enc_shift(matrix_bd, axis, pos_emb_spatial_dim, hist_dim)
484
484
 
485
485
  scores = matrix_ac + matrix_bd # (batch, head, time1, time2)
486
+ del matrix_ac, matrix_bd
486
487
  scores *= self.key_dim_per_head.dimension**-0.5
487
488
  att_weights = rf.softmax(scores, axis=hist_dim)
488
489
  att_weights = rf.dropout(att_weights, self.att_dropout, axis=self.att_dropout_broadcast and hist_dim)
@@ -273,6 +273,7 @@ class ConformerEncoderLayer(rf.Module):
273
273
  x_mhsa = self.self_att(x_mhsa_ln, axis=spatial_dim)
274
274
  x_mhsa = rf.dropout(x_mhsa, self.dropout, axis=self.dropout_broadcast and self.out_dim)
275
275
  x_mhsa_out = x_mhsa + x_ffn1_out
276
+ del x_mhsa
276
277
 
277
278
  # Conv
278
279
  x_conv_ln = self.conv_layer_norm(x_mhsa_out)
@@ -274,10 +274,17 @@ class Functional(Module):
274
274
  (This is often not necessary, but sometimes useful.)
275
275
  """
276
276
 
277
- def __init__(self, func):
277
+ def __init__(self, func, *, attribs: Optional[Dict[str, Any]] = None):
278
+ """
279
+ :param func: callable. you might want to use functools.partial if you want to fix some arguments.
280
+ :param attribs: optional dict of attributes to set on this module. e.g. ``out_dim``.
281
+ """
278
282
  super().__init__()
279
283
  assert callable(func)
280
284
  self.func = func
285
+ if attribs:
286
+ for k, v in attribs.items():
287
+ setattr(self, k, v)
281
288
 
282
289
  def __repr__(self):
283
290
  return f"{self.__class__.__name__}({self.func.__qualname__})"
@@ -532,7 +532,7 @@ class Engine(EngineBase):
532
532
  for key, val in eval_info.items():
533
533
  self._tensorboard_writer.add_scalar(f"train/{key}", val, global_step=self.global_train_step)
534
534
  self._tensorboard_writer.add_scalar(
535
- f"train/learning_rate",
535
+ "train/learning_rate",
536
536
  self._updater.get_effective_learning_rate(),
537
537
  global_step=self.global_train_step,
538
538
  )
@@ -930,7 +930,7 @@ class Engine(EngineBase):
930
930
  if not os.path.exists(filename) and os.path.exists(model_epoch_filename):
931
931
  filename = model_epoch_filename
932
932
  print("Load model %s" % (filename,), file=log.v4)
933
- checkpoint_state = torch.load(filename, map_location=self._device)
933
+ checkpoint_state = _torch_load(filename, device=self._device)
934
934
  if epoch is None:
935
935
  epoch = checkpoint_state.get("epoch", self._start_epoch or 1)
936
936
  step = checkpoint_state.get("step", 1)
@@ -1030,7 +1030,7 @@ class Engine(EngineBase):
1030
1030
  print("(No relevant parameters matching.)", file=log.v3)
1031
1031
  continue
1032
1032
  print(f"Pre-load weights for key '{preload_key}' from {opts['filename']}", file=log.v3)
1033
- preload_model_state = torch.load(opts["filename"], map_location=self._device)
1033
+ preload_model_state = _torch_load(opts["filename"], device=self._device)
1034
1034
  if opts.get("checkpoint_key", "model") is not None:
1035
1035
  # This can be used if an external checkpoint saves a checkpoint a different structure that just the
1036
1036
  # model state dict. E.g., if a checkpoint is created using
@@ -1063,6 +1063,28 @@ class Engine(EngineBase):
1063
1063
  preload_model_state_keys = set(preload_model_state.keys())
1064
1064
  loaded_state_keys.update(preload_model_state.keys())
1065
1065
  missing_keys.difference_update(preload_model_state.keys())
1066
+
1067
+ custom_missing_load_func = opts.get("custom_missing_load_func")
1068
+ if custom_missing_load_func:
1069
+ custom_missing_vars_map = {}
1070
+ for var_name in missing_keys_preload:
1071
+ var_shape = self._pt_model.state_dict()[var_name].shape
1072
+ var_val = custom_missing_load_func(
1073
+ name=var_name,
1074
+ shape=var_shape,
1075
+ preload_model_state=preload_model_state,
1076
+ **util.get_fwd_compat_kwargs(),
1077
+ )
1078
+ if var_val is not None:
1079
+ assert var_val.shape == var_shape
1080
+ custom_missing_vars_map[var_name] = var_val
1081
+ preload_model_state.update(custom_missing_vars_map)
1082
+ missing_keys_preload, unexpected_keys_preload = self._pt_model.load_state_dict(
1083
+ preload_model_state, strict=False
1084
+ )
1085
+ loaded_state_keys.update(preload_model_state.keys())
1086
+ missing_keys.difference_update(preload_model_state.keys())
1087
+
1066
1088
  del preload_model_state
1067
1089
  gc.collect()
1068
1090
 
@@ -1700,3 +1722,15 @@ def _get_total_grad_norm(model: torch.nn.Module, p: float) -> float:
1700
1722
  p=p,
1701
1723
  ).item()
1702
1724
  )
1725
+
1726
+
1727
+ def _torch_load(filename: Union[str, os.PathLike], *, device: str) -> Dict[str, Any]:
1728
+ # Might resolve PtCheckpoint or Sisyphus Path objects or so.
1729
+ filename = os.fspath(filename)
1730
+
1731
+ if filename.endswith(".safetensors"):
1732
+ from safetensors.torch import load_file as safetensors_load
1733
+
1734
+ return safetensors_load(filename, device=device)
1735
+
1736
+ return torch.load(filename, map_location=device)
@@ -0,0 +1,79 @@
1
+ """
2
+ Customized (derived) dict to pass as ``collected_outputs`` to some of the RF modules,
3
+ or potential other use cases.
4
+
5
+ You can predefine (by pattern) what kind of outputs you want to collect and store in this dict.
6
+ """
7
+
8
+ from typing import Optional, Union, Sequence
9
+ import fnmatch
10
+
11
+
12
+ class CollectOutputsDict(dict):
13
+ """
14
+ Customized (derived) dict, where you can predefine (by key pattern)
15
+ what kind of keys you want to collect and store in this dict.
16
+ Other keys will be ignored.
17
+ """
18
+
19
+ def __init__(self, *args, allowed_key_patterns: Optional[Sequence[str]] = None, **kwargs):
20
+ """
21
+ Initialize the CollectOutputsDict.
22
+
23
+ :param allowed_key_patterns:
24
+ List of key patterns (with wildcards) that are allowed to be stored in the dict.
25
+ If None, all keys are allowed.
26
+ """
27
+ super().__init__(*args, **kwargs)
28
+ self.allowed_key_patterns = allowed_key_patterns
29
+
30
+ def __setitem__(self, key, value):
31
+ """
32
+ Set an item in the dict if the key matches allowed patterns.
33
+ """
34
+ if self.is_key_allowed(key):
35
+ super().__setitem__(key, value)
36
+
37
+ def setdefault(self, key, default=None):
38
+ """
39
+ Set default value for a key if it matches allowed patterns.
40
+ """
41
+ if self.is_key_allowed(key):
42
+ return super().setdefault(key, default)
43
+ return None
44
+
45
+ def update(self, mapping, **kwargs):
46
+ """
47
+ Update the dict with another mapping, only adding allowed keys.
48
+ """
49
+ assert not kwargs
50
+ for key, value in mapping.items():
51
+ if self.is_key_allowed(key):
52
+ super().__setitem__(key, value)
53
+
54
+ def is_key_allowed(self, key: str) -> bool:
55
+ """
56
+ Check if the key matches any of the allowed patterns.
57
+
58
+ :param key:
59
+ :return: True if the key is allowed, False otherwise.
60
+ """
61
+ if self.allowed_key_patterns is None:
62
+ return True # If no patterns defined, allow all keys
63
+ for pattern in self.allowed_key_patterns:
64
+ if fnmatch.fnmatch(key, pattern):
65
+ return True
66
+ return False
67
+
68
+
69
+ def is_key_allowed_in_collect_outputs_dict(collect_outputs: Union[CollectOutputsDict, dict], key: str) -> bool:
70
+ """
71
+ Check if a key is allowed in the given CollectOutputsDict.
72
+
73
+ :param collect_outputs:
74
+ :param key:
75
+ :return: True if the key is allowed, False otherwise.
76
+ """
77
+ if isinstance(collect_outputs, CollectOutputsDict):
78
+ return collect_outputs.is_key_allowed(key)
79
+ return True # If it's a regular dict, all keys are allowed
@@ -426,7 +426,21 @@ class FileCache:
426
426
  orig_mtime_ns = os.stat(src_filename).st_mtime_ns
427
427
  FileInfo(mtime_ns=orig_mtime_ns).save(info_file_name)
428
428
 
429
- _copy_with_prealloc(src_filename, dst_tmp_filename)
429
+ try:
430
+ _copy_with_prealloc(src_filename, dst_tmp_filename)
431
+ except Exception:
432
+ # Cleanup if it was created already.
433
+ # That avoids some of the ambiguity of the existence of the .copy file.
434
+ # https://github.com/rwth-i6/returnn/issues/1785
435
+ try:
436
+ os.remove(dst_tmp_filename)
437
+ except FileNotFoundError:
438
+ pass
439
+ try:
440
+ os.remove(info_file_name)
441
+ except FileNotFoundError: # not really expected here, but safe to ignore
442
+ pass
443
+ raise
430
444
  os.rename(dst_tmp_filename, dst_filename)
431
445
 
432
446
  @staticmethod
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20251023.135024
3
+ Version: 1.20251106.185107
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
@@ -320,6 +320,7 @@ returnn/util/__init__.py
320
320
  returnn/util/basic.py
321
321
  returnn/util/better_exchook.py
322
322
  returnn/util/bpe.py
323
+ returnn/util/collect_outputs_dict.py
323
324
  returnn/util/debug.py
324
325
  returnn/util/debug_helpers.py
325
326
  returnn/util/file_cache.py