returnn 1.20250220.200053__tar.gz → 1.20250223.154045__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 (476) hide show
  1. {returnn-1.20250220.200053/returnn.egg-info → returnn-1.20250223.154045}/PKG-INFO +1 -1
  2. returnn-1.20250223.154045/_setup_info_generated.py +2 -0
  3. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/_backend.py +8 -3
  4. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/array_.py +89 -6
  5. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/gradient.py +23 -0
  6. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/distributed.py +25 -12
  7. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/frontend/_backend.py +9 -4
  8. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/basic.py +2 -2
  9. {returnn-1.20250220.200053 → returnn-1.20250223.154045/returnn.egg-info}/PKG-INFO +1 -1
  10. returnn-1.20250220.200053/_setup_info_generated.py +0 -2
  11. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/.editorconfig +0 -0
  12. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/.gitignore +0 -0
  13. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/.gitmodules +0 -0
  14. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/.kateconfig +0 -0
  15. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/CHANGELOG.md +0 -0
  16. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/CODEOWNERS +0 -0
  17. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/CONTRIBUTING.md +0 -0
  18. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/LICENSE +0 -0
  19. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/MANIFEST.in +0 -0
  20. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/README.rst +0 -0
  21. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/__init__.py +0 -0
  22. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/12AX.cluster_map +0 -0
  23. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/_setup_returnn_env.py +0 -0
  24. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-fwd.config +0 -0
  25. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-horovod-mpi.py +0 -0
  26. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-horovod-mpi.py.sh +0 -0
  27. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-horovod-mpi.sh +0 -0
  28. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-hyper-param-tuning.config +0 -0
  29. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-iter-dataset.py +0 -0
  30. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-list-devices.py +0 -0
  31. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-lua-torch-layer.config +0 -0
  32. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-pretrain.config +0 -0
  33. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-record-and-push-to-webserver.py +0 -0
  34. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-returnn-as-framework.py +0 -0
  35. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-rf-pt-benchmark.py +0 -0
  36. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-rf.config +0 -0
  37. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-rhn-enwik8.config +0 -0
  38. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-sprint-interface.py +0 -0
  39. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-att-copy.config +0 -0
  40. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-attention.config +0 -0
  41. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-chunking-blstm.12ax.config +0 -0
  42. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-contribrnn-lstm.12ax.config +0 -0
  43. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-enc-dec.config +0 -0
  44. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-hard-att-copy.config +0 -0
  45. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-lstm-benchmark.py +0 -0
  46. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-maxgradnorm-lstm.12ax.config +0 -0
  47. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-native-lstm-lowmem.12ax.config +0 -0
  48. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-native-lstm.12ax.config +0 -0
  49. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-native-lstm2.12ax.config +0 -0
  50. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-native-lstm2.12ax.tuned.config +0 -0
  51. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-neural-transducer.12ax.config +0 -0
  52. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-rec-explicit-lstm.config +0 -0
  53. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-rec-explicit-rnn.config +0 -0
  54. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-rec-self-att.config +0 -0
  55. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-search-compiled-graph.py +0 -0
  56. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-tf-vanilla-lstm.12ax.config +0 -0
  57. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-timit-lstm-ctc.config +0 -0
  58. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-torch.config +0 -0
  59. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo-upd-mult-model.lstm.12ax.config +0 -0
  60. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/demo.sh +0 -0
  61. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/IAM_lines/a01-000u-00.png +0 -0
  62. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/IAM_lines/a01-007-04.png +0 -0
  63. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/IAM_lines/a01-007-06.png +0 -0
  64. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/README.txt +0 -0
  65. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/chars.txt +0 -0
  66. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/config_demo +0 -0
  67. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/config_fwd +0 -0
  68. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/config_real +0 -0
  69. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/create_IAM_dataset.py +0 -0
  70. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/decode.py +0 -0
  71. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/features/raw/demo.h5 +0 -0
  72. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/go.sh +0 -0
  73. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/lines.txt +0 -0
  74. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/split/eval.txt +0 -0
  75. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/split/train.txt +0 -0
  76. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/IAM/split/valid.txt +0 -0
  77. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/README.md +0 -0
  78. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/artificial/create_test_h5.py +0 -0
  79. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/artificial/forwardconfig +0 -0
  80. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/artificial/go.sh +0 -0
  81. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/artificial/trainconfig +0 -0
  82. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/artificial_rgb/create_test_h5.py +0 -0
  83. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/artificial_rgb/forwardconfig +0 -0
  84. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/artificial_rgb/go.sh +0 -0
  85. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/demos/mdlstm/artificial_rgb/trainconfig +0 -0
  86. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/pyproject.toml +0 -0
  87. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/requirements.txt +0 -0
  88. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/__init__.py +0 -0
  89. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/__main__.py +0 -0
  90. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/__old_mod_loader__.py +0 -0
  91. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/__setup__.py +0 -0
  92. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/config.py +0 -0
  93. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/__init__.py +0 -0
  94. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/audio.py +0 -0
  95. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/basic.py +0 -0
  96. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/bundle_file.py +0 -0
  97. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/cached.py +0 -0
  98. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/cached2.py +0 -0
  99. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/distrib_files.py +0 -0
  100. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/generating.py +0 -0
  101. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/hdf.py +0 -0
  102. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/lm.py +0 -0
  103. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/map.py +0 -0
  104. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/meta.py +0 -0
  105. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/multi_proc.py +0 -0
  106. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/normalization_data.py +0 -0
  107. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/numpy_dump.py +0 -0
  108. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/postprocessing.py +0 -0
  109. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/raw_wav.py +0 -0
  110. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/sprint.py +0 -0
  111. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/stereo.py +0 -0
  112. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/text_dict.py +0 -0
  113. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/util/__init__.py +0 -0
  114. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/util/feature_extraction.py +0 -0
  115. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/util/strings.py +0 -0
  116. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/datasets/util/vocabulary.py +0 -0
  117. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/engine/__init__.py +0 -0
  118. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/engine/base.py +0 -0
  119. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/engine/batch.py +0 -0
  120. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/__init__.py +0 -0
  121. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/__main__.py +0 -0
  122. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/.git +0 -0
  123. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/.gitignore +0 -0
  124. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/LICENSE +0 -0
  125. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/README.md +0 -0
  126. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/aligner.gif +0 -0
  127. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/check.png +0 -0
  128. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/core.cu +0 -0
  129. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/core.h +0 -0
  130. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/core_cpu.cpp +0 -0
  131. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/pytorch_binding/LICENSE +0 -0
  132. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/pytorch_binding/MANIFEST.in +0 -0
  133. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/pytorch_binding/README.md +0 -0
  134. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/pytorch_binding/binding.cpp +0 -0
  135. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.cu +0 -0
  136. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/pytorch_binding/core.h +0 -0
  137. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/pytorch_binding/requirements.txt +0 -0
  138. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/pytorch_binding/setup.py +0 -0
  139. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/__init__.py +0 -0
  140. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/pytorch_binding/warp_rna/test.py +0 -0
  141. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/ref_rna.py +0 -0
  142. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/setup.py +0 -0
  143. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op.cc +0 -0
  144. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/src/warp_rna_op_kernel_tmpl.h +0 -0
  145. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/tensorflow_binding/warp_rna/__init__.py +0 -0
  146. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/WarpRna/warp-rna/test.cpp +0 -0
  147. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/__init__.py +0 -0
  148. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/graph_editor/README.md +0 -0
  149. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/graph_editor/__init__.py +0 -0
  150. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/graph_editor/edit.py +0 -0
  151. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/graph_editor/reroute.py +0 -0
  152. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/graph_editor/select.py +0 -0
  153. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/graph_editor/subgraph.py +0 -0
  154. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/graph_editor/transform.py +0 -0
  155. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/extern/graph_editor/util.py +0 -0
  156. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/forward_iface.py +0 -0
  157. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/__init__.py +0 -0
  158. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/_cache.py +0 -0
  159. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/_native/__init__.py +0 -0
  160. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/_native/backend.cpp +0 -0
  161. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/_native/backend.hpp +0 -0
  162. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/_native/module.cpp +0 -0
  163. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/_native/module.hpp +0 -0
  164. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/_native/py_utils.hpp +0 -0
  165. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/_native/tensor_ops.cpp +0 -0
  166. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/_native/tensor_ops.hpp +0 -0
  167. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/_numpy_backend.py +0 -0
  168. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/_random_journal.py +0 -0
  169. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/_utils.py +0 -0
  170. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/attention.py +0 -0
  171. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/audio/__init__.py +0 -0
  172. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/audio/mel.py +0 -0
  173. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/audio/specaugment.py +0 -0
  174. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/backend.py +0 -0
  175. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/build_from_dict.py +0 -0
  176. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/cond.py +0 -0
  177. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/const.py +0 -0
  178. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/container.py +0 -0
  179. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/control_flow_ctx.py +0 -0
  180. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/conv.py +0 -0
  181. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/conversions/__init__.py +0 -0
  182. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/conversions/espnet_e_branchformer.py +0 -0
  183. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/conversions/hf_llama.py +0 -0
  184. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/conversions/torch_nn.py +0 -0
  185. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/decoder/__init__.py +0 -0
  186. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/decoder/transformer.py +0 -0
  187. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/device.py +0 -0
  188. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/dims.py +0 -0
  189. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/dropout.py +0 -0
  190. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/dtype.py +0 -0
  191. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/encoder/__init__.py +0 -0
  192. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/encoder/base.py +0 -0
  193. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/encoder/conformer.py +0 -0
  194. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/encoder/conformer_v2.py +0 -0
  195. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/encoder/e_branchformer.py +0 -0
  196. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/encoder/transformer.py +0 -0
  197. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/graph.py +0 -0
  198. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/hooks.py +0 -0
  199. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/init.py +0 -0
  200. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/label_smoothing.py +0 -0
  201. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/linear.py +0 -0
  202. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/loop.py +0 -0
  203. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/loss.py +0 -0
  204. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/math_.py +0 -0
  205. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/matmul.py +0 -0
  206. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/module.py +0 -0
  207. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/nested.py +0 -0
  208. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/normalization.py +0 -0
  209. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/parameter.py +0 -0
  210. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/parametrizations.py +0 -0
  211. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/parametrize.py +0 -0
  212. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/piecewise_linear.py +0 -0
  213. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/rand.py +0 -0
  214. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/rec.py +0 -0
  215. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/reduce.py +0 -0
  216. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/run_ctx.py +0 -0
  217. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/signal.py +0 -0
  218. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/state.py +0 -0
  219. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/stepwise_scheduler.py +0 -0
  220. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/tensor_array.py +0 -0
  221. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/frontend/types.py +0 -0
  222. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/import_/__init__.py +0 -0
  223. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/import_/common.py +0 -0
  224. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/import_/git.py +0 -0
  225. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/import_/import_.py +0 -0
  226. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/learning_rate_control.py +0 -0
  227. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/log.py +0 -0
  228. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/native_op.cpp +0 -0
  229. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/native_op.py +0 -0
  230. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/pretrain.py +0 -0
  231. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/sprint/__init__.py +0 -0
  232. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/sprint/cache.py +0 -0
  233. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/sprint/control.py +0 -0
  234. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/sprint/error_signals.py +0 -0
  235. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/sprint/extern_interface.py +0 -0
  236. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/sprint/interface.py +0 -0
  237. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tensor/README.md +0 -0
  238. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tensor/__init__.py +0 -0
  239. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tensor/_dim_extra.py +0 -0
  240. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tensor/_tensor_extra.py +0 -0
  241. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tensor/_tensor_mixin_base.py +0 -0
  242. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tensor/_tensor_op_overloads.py +0 -0
  243. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tensor/control_flow_ctx.py +0 -0
  244. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tensor/dim.py +0 -0
  245. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tensor/marked_dim.py +0 -0
  246. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tensor/tensor.py +0 -0
  247. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tensor/tensor_dict.py +0 -0
  248. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tensor/utils.py +0 -0
  249. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/__init__.py +0 -0
  250. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/compat.py +0 -0
  251. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/data_pipeline.py +0 -0
  252. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/distributed.py +0 -0
  253. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/engine.py +0 -0
  254. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_layers/README.md +0 -0
  255. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_layers/__init__.py +0 -0
  256. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_layers/_backend.py +0 -0
  257. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_layers/_utils.py +0 -0
  258. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_layers/cond.py +0 -0
  259. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_layers/config_entry_points.py +0 -0
  260. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_layers/debug_eager_mode.py +0 -0
  261. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_layers/dims.py +0 -0
  262. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_layers/layer.py +0 -0
  263. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_layers/loop.py +0 -0
  264. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_layers/make_layer.py +0 -0
  265. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_layers/masked_computation.py +0 -0
  266. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_layers/parameter_assign.py +0 -0
  267. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_layers/prev_tensor_ref.py +0 -0
  268. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_low_level/__init__.py +0 -0
  269. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/frontend_low_level/_backend.py +0 -0
  270. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/horovod.py +0 -0
  271. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/hyper_param_tuning.py +0 -0
  272. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/layers/__init__.py +0 -0
  273. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/layers/base.py +0 -0
  274. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/layers/basic.py +0 -0
  275. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/layers/rec.py +0 -0
  276. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/layers/segmental_model.py +0 -0
  277. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/layers/signal_processing.py +0 -0
  278. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/layers/variable.py +0 -0
  279. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/native_op.py +0 -0
  280. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/network.py +0 -0
  281. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/sprint.py +0 -0
  282. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/updater.py +0 -0
  283. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/util/__init__.py +0 -0
  284. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/util/basic.py +0 -0
  285. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/util/data.py +0 -0
  286. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/util/gradient_checkpoint.py +0 -0
  287. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/util/ken_lm.py +0 -0
  288. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/tf/util/open_fst.py +0 -0
  289. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/README.md +0 -0
  290. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/__init__.py +0 -0
  291. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/data/__init__.py +0 -0
  292. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/data/extern_data.py +0 -0
  293. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/data/pipeline.py +0 -0
  294. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/data/queued_data_iter.py +0 -0
  295. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/data/returnn_dataset_wrapper.py +0 -0
  296. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/data/tensor_utils.py +0 -0
  297. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/engine.py +0 -0
  298. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/frontend/__init__.py +0 -0
  299. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/frontend/_rand.py +0 -0
  300. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/frontend/bridge.py +0 -0
  301. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/frontend/raw_ops.py +0 -0
  302. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/optim/README.md +0 -0
  303. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/optim/__init__.py +0 -0
  304. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/optim/lion.py +0 -0
  305. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/updater.py +0 -0
  306. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/util/README.md +0 -0
  307. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/util/__init__.py +0 -0
  308. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/util/array_.py +0 -0
  309. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/util/debug_inf_nan.py +0 -0
  310. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/util/diagnose_gpu.py +0 -0
  311. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/util/exception_helper.py +0 -0
  312. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/util/gradient_checkpoint.py +0 -0
  313. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/util/module.py +0 -0
  314. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/torch/util/scaled_gradient.py +0 -0
  315. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/__init__.py +0 -0
  316. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/better_exchook.py +0 -0
  317. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/bpe.py +0 -0
  318. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/debug.py +0 -0
  319. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/debug_helpers.py +0 -0
  320. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/file_cache.py +0 -0
  321. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/fsa.py +0 -0
  322. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/literal_py_to_pickle.py +0 -0
  323. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/lru_cache.py +0 -0
  324. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/math.py +0 -0
  325. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/multi_proc_non_daemonic_spawn.py +0 -0
  326. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/native_code_compiler.py +0 -0
  327. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/pprint.py +0 -0
  328. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/py-to-pickle.cpp +0 -0
  329. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/py_ext_mod_compiler.py +0 -0
  330. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/result_with_reason.py +0 -0
  331. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/sig_proc.py +0 -0
  332. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/task_system.py +0 -0
  333. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/train_proc_manager.py +0 -0
  334. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn/util/watch_memory.py +0 -0
  335. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn.egg-info/SOURCES.txt +0 -0
  336. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn.egg-info/dependency_links.txt +0 -0
  337. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn.egg-info/requires.txt +0 -0
  338. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/returnn.egg-info/top_level.txt +0 -0
  339. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/rnn.py +0 -0
  340. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/setup.cfg +0 -0
  341. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/setup.py +0 -0
  342. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/DummySprintExec.py +0 -0
  343. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/PyCharm-inspection-profile.xml +0 -0
  344. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/PyCharm.idea/.gitignore +0 -0
  345. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/PyCharm.idea/.name +0 -0
  346. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/PyCharm.idea/codeStyleSettings.xml +0 -0
  347. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/PyCharm.idea/codeStyles/Project.xml +0 -0
  348. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/PyCharm.idea/codeStyles/codeStyleConfig.xml +0 -0
  349. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/PyCharm.idea/inspectionProfiles/Project_Default.xml +0 -0
  350. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/PyCharm.idea/inspectionProfiles/profiles_settings.xml +0 -0
  351. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/PyCharm.idea/misc.xml +0 -0
  352. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/PyCharm.idea/modules.xml +0 -0
  353. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/PyCharm.idea/returnn.iml +0 -0
  354. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/PyCharm.idea/scopes/scope_settings.xml +0 -0
  355. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/_set_num_threads1.py +0 -0
  356. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/_setup_returnn_env.py +0 -0
  357. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/_setup_test_env.py +0 -0
  358. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/bpe-unicode-demo.codes +0 -0
  359. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/bpe-unicode-demo.vocab +0 -0
  360. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/lexicon_opt.fst +0 -0
  361. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/lexicon_opt.isyms +0 -0
  362. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/lexicon_opt.jpg +0 -0
  363. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/lexicon_opt.osyms +0 -0
  364. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/lint_common.py +0 -0
  365. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/pycharm-inspect.py +0 -0
  366. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/pylint.py +0 -0
  367. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/returnn-as-framework.py +0 -0
  368. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/rf_utils.py +0 -0
  369. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/spelling.dic +0 -0
  370. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_Config.py +0 -0
  371. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_Dataset.py +0 -0
  372. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_Fsa.py +0 -0
  373. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_GeneratingDataset.py +0 -0
  374. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_HDFDataset.py +0 -0
  375. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_LearningRateControl.py +0 -0
  376. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_Log.py +0 -0
  377. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_MultiProcDataset.py +0 -0
  378. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_Pretrain.py +0 -0
  379. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_ResNet.py +0 -0
  380. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_SprintDataset.py +0 -0
  381. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_SprintInterface.py +0 -0
  382. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_TFEngine.py +0 -0
  383. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_TFNativeOp.py +0 -0
  384. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_TFNetworkLayer.py +0 -0
  385. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_TFNetworkRecLayer.py +0 -0
  386. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_TFNetworkSigProcLayer.py +0 -0
  387. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_TFUpdater.py +0 -0
  388. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_TFUtil.py +0 -0
  389. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_TF_determinism.py +0 -0
  390. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_TaskSystem.py +0 -0
  391. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_TaskSystem_SharedMem.py +0 -0
  392. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_TranslationDataset.py +0 -0
  393. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_Util.py +0 -0
  394. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_demos.py +0 -0
  395. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_fork_exec.py +0 -0
  396. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_hdf_dump.py +0 -0
  397. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_array.py +0 -0
  398. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_attention.py +0 -0
  399. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_base.py +0 -0
  400. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_cond.py +0 -0
  401. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_const.py +0 -0
  402. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_container.py +0 -0
  403. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_conv.py +0 -0
  404. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_decoder_transformer.py +0 -0
  405. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_encoder_conformer.py +0 -0
  406. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_gradient.py +0 -0
  407. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_label_smoothing.py +0 -0
  408. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_loop.py +0 -0
  409. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_math.py +0 -0
  410. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_normalization.py +0 -0
  411. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_piecewise_linear.py +0 -0
  412. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_rec.py +0 -0
  413. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_reduce.py +0 -0
  414. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_rf_signal.py +0 -0
  415. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_tensor.py +0 -0
  416. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_threading.py +0 -0
  417. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_tools.py +0 -0
  418. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_torch_dataset.py +0 -0
  419. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_torch_engine.py +0 -0
  420. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_torch_frontend.py +0 -0
  421. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_torch_internal_frontend.py +0 -0
  422. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/test_torch_util.py +0 -0
  423. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tests/torch_utils.py +0 -0
  424. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/_setup_returnn_env.py +0 -0
  425. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/analyze-dataset-batches.py +0 -0
  426. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/bliss-collect-seq-lens.py +0 -0
  427. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/bliss-dump-text.py +0 -0
  428. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/bliss-get-segment-names.py +0 -0
  429. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/bliss-to-ogg-zip.py +0 -0
  430. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/bpe-create-lexicon.py +0 -0
  431. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/calculate-word-error-rate.py +0 -0
  432. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/cleanup-old-models.py +0 -0
  433. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/collect-orth-symbols.py +0 -0
  434. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/collect-words.py +0 -0
  435. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/compile_native_op.py +0 -0
  436. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/compile_tf_graph.py +0 -0
  437. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/debug-dump-search-scores.py +0 -0
  438. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/debug-plot-search-scores.py +0 -0
  439. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/dump-dataset-raw-strings.py +0 -0
  440. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/dump-dataset.py +0 -0
  441. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/dump-forward-stats.py +0 -0
  442. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/dump-forward.py +0 -0
  443. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/dump-network-json.py +0 -0
  444. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/dump-pickle.py +0 -0
  445. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/extract_state_tying_from_dataset.py +0 -0
  446. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/get-attention-weights.py +0 -0
  447. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/get-best-model-epoch.py +0 -0
  448. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/hdf_dump.py +0 -0
  449. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/hdf_dump_translation_dataset.py +0 -0
  450. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/import-blocks-mt-model.py +0 -0
  451. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/import-t2t-mt-model.py +0 -0
  452. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/.gitignore +0 -0
  453. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/Makefile +0 -0
  454. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/README.md +0 -0
  455. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/example/README.md +0 -0
  456. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/example/libs_list +0 -0
  457. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.config +0 -0
  458. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/example/network.040/i600_m600_m600.sgd_b16_lr0_cl2.newbobabs.keep_over_epoch.lstm2.config +0 -0
  459. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/example/rescore_lattice.sh +0 -0
  460. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/example/state_vars_list +0 -0
  461. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/example/tensor_names_list +0 -0
  462. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/file.h +0 -0
  463. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/htklatticerescorer.cc +0 -0
  464. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/htklatticerescorer.h +0 -0
  465. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/main.cc +0 -0
  466. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/rescorer.h +0 -0
  467. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/vocabulary.cc +0 -0
  468. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/lattice_rescorer/vocabulary.h +0 -0
  469. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/tf_avg_checkpoints.py +0 -0
  470. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/tf_inspect_checkpoint.py +0 -0
  471. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/tf_inspect_summary_log.py +0 -0
  472. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/torch_avg_checkpoints.py +0 -0
  473. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/torch_export_to_onnx.py +0 -0
  474. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/torch_inspect_checkpoint.py +0 -0
  475. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/torch_inspect_checkpoint_and_opt.py +0 -0
  476. {returnn-1.20250220.200053 → returnn-1.20250223.154045}/tools/torch_scale_tuning.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20250220.200053
3
+ Version: 1.20250223.154045
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.20250223.154045'
2
+ long_version = '1.20250223.154045+git.354cf31'
@@ -350,6 +350,11 @@ class Backend(Generic[T]):
350
350
  """
351
351
  raise NotImplementedError
352
352
 
353
+ @staticmethod
354
+ def stop_gradient_scope() -> Any:
355
+ """stop gradient scope"""
356
+ raise NotImplementedError
357
+
353
358
  @staticmethod
354
359
  def scaled_gradient(tensor: Tensor, scale: Union[float, Tensor]) -> Tensor:
355
360
  """
@@ -905,9 +910,9 @@ class Backend(Generic[T]):
905
910
  ) -> Tensor:
906
911
  """
907
912
  Scatters into new zero-tensor.
908
- If entries in indices are duplicated, the corresponding values in source will be added together
909
- (scatter_add in PyTorch).
910
- (TF segment_sum can be implemented via this.)
913
+ If entries in indices are duplicated, with mode="sum", the corresponding values in source will be added together
914
+ (``scatter_add`` in PyTorch), otherwise min/max.
915
+ (segment_sum can be implemented via this.)
911
916
 
912
917
  :param source: [batch_dims..., indices_dim(s)..., feature_dims...]
913
918
  :param indices: [batch_dims..., indices_dim(s)...] -> out_dim
@@ -40,6 +40,8 @@ __all__ = [
40
40
  "gather",
41
41
  "scatter",
42
42
  "scatter_argmax",
43
+ "scatter_logsumexp",
44
+ "scatter_logmeanexp",
43
45
  "slice",
44
46
  "shift_right",
45
47
  "shift_left",
@@ -758,19 +760,20 @@ def scatter(
758
760
  ) -> Tensor:
759
761
  """
760
762
  Scatters into new zero-tensor.
761
- If entries in indices are duplicated, the corresponding values in source will be added together
762
- (scatter_add in PyTorch)
763
- with mode=="sum",
764
- or otherwise it will take the max/min.
763
+ If entries in indices are duplicated, with ``mode=="sum"``,
764
+ the corresponding values in source will be added together
765
+ (``scatter_add`` in PyTorch),
766
+ or otherwise it will take the respective reduction.
765
767
 
766
768
  ``scatter`` is the inverse of :func:`gather`.
767
769
 
768
- (TF segment_sum can be implemented via this.)
770
+ (segment_sum can be implemented via this.)
769
771
 
770
772
  :param source: [batch_dims..., indices_dim(s)..., feature_dims...]
771
773
  :param indices: [batch_dims..., indices_dim(s)...] -> out_dim
772
774
  :param indices_dim:
773
- :param mode: "sum" or "max" or "min". also see :func:`scatter_argmax`.
775
+ :param mode: "sum", "max", "min", "logsumexp", "logmeanexp", "argmax".
776
+ (Note: If you ever need mean, argmin, etc, please open an issue/PR.)
774
777
  :param fill_value:
775
778
  :param out_dim: The indices target dim.
776
779
  If not given, will be automatically determined as the sparse_dim from indices.
@@ -778,6 +781,16 @@ def scatter(
778
781
  and then we use :func:`rf.split_dims` afterwards.
779
782
  :return: [batch_dims..., out_dim(s)..., feature_dims...]
780
783
  """
784
+ if mode == "logsumexp":
785
+ return scatter_logsumexp(
786
+ source, indices=indices, indices_dim=indices_dim, fill_value=fill_value, out_dim=out_dim
787
+ )
788
+ if mode == "logmeanexp":
789
+ return scatter_logmeanexp(
790
+ source, indices=indices, indices_dim=indices_dim, fill_value=fill_value, out_dim=out_dim
791
+ )
792
+ if mode == "argmax":
793
+ return scatter_argmax(source, indices=indices, indices_dim=indices_dim, invalid_idx=fill_value, out_dim=out_dim)
781
794
  if not out_dim:
782
795
  assert isinstance(indices, Tensor) and indices.sparse_dim
783
796
  out_dim = indices.sparse_dim
@@ -858,6 +871,76 @@ def scatter_argmax(
858
871
  return out
859
872
 
860
873
 
874
+ def scatter_logsumexp(
875
+ source: Tensor,
876
+ *,
877
+ indices: Tensor,
878
+ indices_dim: Union[Dim, Sequence[Dim]],
879
+ fill_value: Optional[Union[int, float]] = None,
880
+ out_dim: Optional[Union[Dim, Sequence[Dim]]] = None,
881
+ ) -> Tensor:
882
+ """
883
+ Scatters into new zero-tensor.
884
+ If entries in indices are duplicated, the corresponding values in source will be log-sum-exp'ed together.
885
+ This is like :func:`scatter` with ``mode="logsumexp"``.
886
+
887
+ :param source: [batch_dims..., indices_dim(s)..., feature_dims...]
888
+ :param indices: [batch_dims..., indices_dim(s)...] -> out_dim
889
+ :param indices_dim:
890
+ :param fill_value:
891
+ :param out_dim: The indices target dim.
892
+ If not given, will be automatically determined as the sparse_dim from indices.
893
+ If multiple out dims, use indices into the merged out dims,
894
+ and then we use :func:`rf.split_dims` afterwards.
895
+ :return: [batch_dims..., out_dim(s)..., feature_dims...]
896
+ """
897
+ if not out_dim:
898
+ assert isinstance(indices, Tensor) and indices.sparse_dim
899
+ out_dim = indices.sparse_dim
900
+ with rf.stop_gradient_scope():
901
+ max_x = rf.scatter(source, indices=indices, indices_dim=indices_dim, mode="max", out_dim=out_dim) # [D_out,...]
902
+ max_x_ = rf.gather(max_x, indices=indices, axis=out_dim) # [D_src,...]
903
+ src_ = rf.exp(source - max_x_)
904
+ if fill_value is not None:
905
+ fill_value = rf.exp(fill_value - max_x_)
906
+ tensor = rf.scatter(
907
+ src_, indices=indices, indices_dim=indices_dim, mode="sum", fill_value=fill_value, out_dim=out_dim
908
+ )
909
+ tensor = rf.log(tensor)
910
+ tensor = rf.where(rf.is_neg_infinite(max_x), rf.zeros((), dtype=source.dtype, device=source.device), tensor)
911
+ tensor += max_x
912
+ return tensor
913
+
914
+
915
+ def scatter_logmeanexp(
916
+ source: Tensor,
917
+ *,
918
+ indices: Tensor,
919
+ indices_dim: Union[Dim, Sequence[Dim]],
920
+ fill_value: Optional[Union[int, float]] = None,
921
+ out_dim: Optional[Union[Dim, Sequence[Dim]]] = None,
922
+ ) -> Tensor:
923
+ """
924
+ Scatters into new zero-tensor.
925
+ If entries in indices are duplicated, the corresponding values in source will be log-mean-exp'ed together.
926
+ This is like :func:`scatter` with ``mode="logmeanexp"``.
927
+
928
+ :param source: [batch_dims..., indices_dim(s)..., feature_dims...]
929
+ :param indices: [batch_dims..., indices_dim(s)...] -> out_dim
930
+ :param indices_dim:
931
+ :param fill_value:
932
+ :param out_dim: The indices target dim.
933
+ If not given, will be automatically determined as the sparse_dim from indices.
934
+ If multiple out dims, use indices into the merged out dims,
935
+ and then we use :func:`rf.split_dims` afterwards.
936
+ :return: [batch_dims..., out_dim(s)..., feature_dims...]
937
+ """
938
+ ones = rf.ones(dims=indices.dims, dtype=source.dtype, device=source.device)
939
+ counts = rf.scatter(ones, indices=indices, indices_dim=indices_dim, fill_value=1, out_dim=out_dim)
940
+ y = scatter_logsumexp(source, indices=indices, indices_dim=indices_dim, fill_value=fill_value, out_dim=out_dim)
941
+ return y - rf.log(counts)
942
+
943
+
861
944
  # noinspection PyShadowingBuiltins
862
945
  def slice(
863
946
  source: Tensor,
@@ -11,6 +11,7 @@ __all__ = [
11
11
  "set_requires_gradient",
12
12
  "gradient",
13
13
  "stop_gradient",
14
+ "stop_gradient_scope",
14
15
  "scaled_gradient",
15
16
  "scaled_gradient_ext",
16
17
  "gradient_checkpoint_scope",
@@ -42,6 +43,28 @@ def stop_gradient(source: Tensor) -> Tensor:
42
43
  return source._raw_backend.stop_gradient(source)
43
44
 
44
45
 
46
+ def stop_gradient_scope():
47
+ """
48
+ Create a stop gradient scope.
49
+ All tensors created within this scope will have their gradient stopped.
50
+
51
+ Example::
52
+
53
+ a = ...
54
+ b = ...
55
+ with stop_gradient_scope():
56
+ x = a + b
57
+ y = x * c
58
+
59
+ In this example, the tensor ``x`` will have its gradient stopped,
60
+ i.e. the gradient of ``x`` w.r.t. ``a`` and ``b`` will be zero.
61
+
62
+ :return: context manager which enables stopping the gradient. It supports __enter__ and __exit__,
63
+ and the intended usage is with the `with` statement.
64
+ """
65
+ return global_backend.stop_gradient_scope()
66
+
67
+
45
68
  def scaled_gradient(source: Tensor, scale: Union[float, Tensor]) -> Tensor:
46
69
  """
47
70
  :param source:
@@ -3,10 +3,11 @@ torch.distributed utils
3
3
  """
4
4
 
5
5
  from __future__ import annotations
6
- from typing import Optional, Any, Dict
6
+ import ast
7
+ import logging
7
8
  import os
8
9
  import socket
9
- import logging
10
+ from typing import Optional, Any, Dict
10
11
 
11
12
  import torch
12
13
  from torch.nn.parallel import DistributedDataParallel
@@ -23,19 +24,31 @@ class DistributedContext:
23
24
  """
24
25
 
25
26
  def __init__(self, options: Dict[str, Any]):
26
- import torch.distributed as dist
27
-
28
27
  self._opts = CollectionReadCheckCovered(options)
29
28
 
30
- # when no backend is specified, both gloo and nccl backends will be created
31
- # the gloo backend will be used for collectives with CPU tensors and
32
- # the nccl backend will be used for collectives with CUDA tensors
33
- dist.init_process_group(backend=self._opts.get("backend", None))
29
+ # Subprocesses have issues initializing torch.distributed process groups.
30
+ #
31
+ # We therefore pass rank/size information of the process group via an env
32
+ # variable that is automatically inherited in any created subprocess.
33
+ env_var_name = "_RETURNN_TORCH_DISTRIBUTED_INIT_INFO"
34
+ prev_init_info = os.environ.get(env_var_name)
35
+ if prev_init_info:
36
+ self.prev_init_info = ast.literal_eval(prev_init_info)
37
+ self._rank = self.prev_init_info["rank"]
38
+ self._size = self.prev_init_info["size"]
39
+ else:
40
+ import torch.distributed as dist
41
+
42
+ # when no backend is specified, both gloo and nccl backends will be created
43
+ # the gloo backend will be used for collectives with CPU tensors and
44
+ # the nccl backend will be used for collectives with CUDA tensors
45
+ dist.init_process_group(backend=self._opts.get("backend", None))
46
+ self._rank = dist.get_rank()
47
+ self._size = dist.get_world_size()
48
+ os.environ[env_var_name] = repr({"rank": self._rank, "size": self._size})
34
49
 
35
50
  self._local_rank = int(os.environ["LOCAL_RANK"])
36
51
  self._local_size = int(os.environ["LOCAL_WORLD_SIZE"])
37
- self._rank = dist.get_rank()
38
- self._size = dist.get_world_size()
39
52
 
40
53
  _logger.info(
41
54
  "Torch distributed initialized. Hostname %s, pid %i, rank %i / size %i, local rank %s / local size %s."
@@ -123,9 +136,9 @@ _is_set_up = False
123
136
  _ctx = None # type: Optional[DistributedContext]
124
137
 
125
138
 
126
- def get_ctx(config=None) -> Optional[DistributedContext]:
139
+ def get_ctx(config: Optional[Config] = None) -> Optional[DistributedContext]:
127
140
  """
128
- :param Config|None config:
141
+ :param config:
129
142
  :returns: the global context if Torch distributed is enabled, or None otherwise.
130
143
  If we did not setup the context yet, it will automatically create it.
131
144
  """
@@ -3,7 +3,7 @@ Backend for exposing PyTorch-specific functionality.
3
3
  """
4
4
 
5
5
  from __future__ import annotations
6
- from typing import Optional, Union, Sequence, Tuple, List, Dict, Generator
6
+ from typing import Optional, Union, Any, Sequence, Tuple, List, Dict, Generator
7
7
  import contextlib
8
8
  import torch
9
9
  import numpy
@@ -212,6 +212,11 @@ class TorchBackend(Backend[torch.Tensor]):
212
212
  out.raw_tensor = out.raw_tensor.detach()
213
213
  return out
214
214
 
215
+ @staticmethod
216
+ def stop_gradient_scope() -> Any:
217
+ """stop gradient scope"""
218
+ return torch.no_grad()
219
+
215
220
  @staticmethod
216
221
  def scaled_gradient(tensor: Tensor, scale: Union[float, Tensor]) -> Tensor:
217
222
  """scaled gradient"""
@@ -1061,9 +1066,9 @@ class TorchBackend(Backend[torch.Tensor]):
1061
1066
  ) -> Tensor:
1062
1067
  """
1063
1068
  Scatters into new zero-tensor.
1064
- If entries in indices are duplicated, the corresponding values in source will be added together
1065
- (scatter_add in PyTorch).
1066
- (TF segment_sum can be implemented via this.)
1069
+ If entries in indices are duplicated, with mode="sum", the corresponding values in source will be added together
1070
+ (``scatter_add`` in PyTorch), otherwise min/max.
1071
+ (segment_sum can be implemented via this.)
1067
1072
 
1068
1073
  :param source: [batch_dims..., indices_dim(s)..., feature_dims...]
1069
1074
  :param indices: [batch_dims..., indices_dim(s)...] -> out_dim
@@ -3773,9 +3773,9 @@ def should_write_to_disk(config):
3773
3773
  if config.typed_value("torch_distributed") is not None:
3774
3774
  assert BackendEngine.is_torch_selected(), "torch_distributed assumes PyTorch"
3775
3775
 
3776
- import torch.distributed
3776
+ import returnn.torch.distributed as torch_distributed
3777
3777
 
3778
- if torch.distributed.get_rank() != 0:
3778
+ if torch_distributed.get_ctx(config).rank() != 0:
3779
3779
  return False
3780
3780
  elif config.is_true("use_horovod"):
3781
3781
  assert BackendEngine.is_tensorflow_selected(), "use_horovod currently assumes TensorFlow"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: returnn
3
- Version: 1.20250220.200053
3
+ Version: 1.20250223.154045
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
@@ -1,2 +0,0 @@
1
- version = '1.20250220.200053'
2
- long_version = '1.20250220.200053+git.bb5c0aa'