quadra 2.4.0__tar.gz → 2.5.0__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.
Files changed (299) hide show
  1. {quadra-2.4.0 → quadra-2.5.0}/PKG-INFO +3 -2
  2. {quadra-2.4.0 → quadra-2.5.0}/pyproject.toml +1 -1
  3. {quadra-2.4.0 → quadra-2.5.0}/quadra/__init__.py +1 -1
  4. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/core/default.yaml +1 -0
  5. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/export.py +5 -6
  6. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/utils.py +70 -35
  7. {quadra-2.4.0 → quadra-2.5.0}/LICENSE +0 -0
  8. {quadra-2.4.0 → quadra-2.5.0}/README.md +0 -0
  9. {quadra-2.4.0 → quadra-2.5.0}/quadra/callbacks/__init__.py +0 -0
  10. {quadra-2.4.0 → quadra-2.5.0}/quadra/callbacks/anomalib.py +0 -0
  11. {quadra-2.4.0 → quadra-2.5.0}/quadra/callbacks/lightning.py +0 -0
  12. {quadra-2.4.0 → quadra-2.5.0}/quadra/callbacks/mlflow.py +0 -0
  13. {quadra-2.4.0 → quadra-2.5.0}/quadra/callbacks/scheduler.py +0 -0
  14. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/__init__.py +0 -0
  15. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/caformer_m36.yaml +0 -0
  16. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/caformer_s36.yaml +0 -0
  17. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/convnextv2_base.yaml +0 -0
  18. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/convnextv2_femto.yaml +0 -0
  19. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/convnextv2_tiny.yaml +0 -0
  20. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/dino_vitb8.yaml +0 -0
  21. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/dino_vits8.yaml +0 -0
  22. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/dinov2_vitb14.yaml +0 -0
  23. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/dinov2_vits14.yaml +0 -0
  24. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/efficientnet_b0.yaml +0 -0
  25. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/efficientnet_b1.yaml +0 -0
  26. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/efficientnet_b2.yaml +0 -0
  27. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/efficientnet_b3.yaml +0 -0
  28. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/efficientnetv2_s.yaml +0 -0
  29. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/levit_128s.yaml +0 -0
  30. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/mnasnet0_5.yaml +0 -0
  31. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/resnet101.yaml +0 -0
  32. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/resnet18.yaml +0 -0
  33. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/resnet18_ssl.yaml +0 -0
  34. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/resnet50.yaml +0 -0
  35. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/smp.yaml +0 -0
  36. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/tiny_vit_21m_224.yaml +0 -0
  37. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/unetr.yaml +0 -0
  38. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/vit16_base.yaml +0 -0
  39. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/vit16_small.yaml +0 -0
  40. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/vit16_tiny.yaml +0 -0
  41. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/backbone/xcit_tiny_24_p8_224.yaml +0 -0
  42. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/callbacks/all.yaml +0 -0
  43. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/callbacks/default.yaml +0 -0
  44. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/callbacks/default_anomalib.yaml +0 -0
  45. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/config.yaml +0 -0
  46. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/datamodule/base/anomaly.yaml +0 -0
  47. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/datamodule/base/classification.yaml +0 -0
  48. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/datamodule/base/multilabel_classification.yaml +0 -0
  49. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/datamodule/base/segmentation.yaml +0 -0
  50. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/datamodule/base/segmentation_multiclass.yaml +0 -0
  51. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/datamodule/base/sklearn_classification.yaml +0 -0
  52. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/datamodule/base/sklearn_classification_patch.yaml +0 -0
  53. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/datamodule/base/ssl.yaml +0 -0
  54. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/datamodule/generic/imagenette/classification/base.yaml +0 -0
  55. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/datamodule/generic/imagenette/ssl/base.yaml +0 -0
  56. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/datamodule/generic/mnist/anomaly/base.yaml +0 -0
  57. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/datamodule/generic/mvtec/anomaly/base.yaml +0 -0
  58. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/datamodule/generic/oxford_pet/segmentation/base.yaml +0 -0
  59. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/anomaly/cfa.yaml +0 -0
  60. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/anomaly/cflow.yaml +0 -0
  61. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/anomaly/csflow.yaml +0 -0
  62. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/anomaly/draem.yaml +0 -0
  63. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/anomaly/efficient_ad.yaml +0 -0
  64. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/anomaly/fastflow.yaml +0 -0
  65. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/anomaly/inference.yaml +0 -0
  66. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/anomaly/padim.yaml +0 -0
  67. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/anomaly/patchcore.yaml +0 -0
  68. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/classification/classification.yaml +0 -0
  69. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/classification/classification_evaluation.yaml +0 -0
  70. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/classification/multilabel_classification.yaml +0 -0
  71. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/classification/sklearn_classification.yaml +0 -0
  72. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/classification/sklearn_classification_patch.yaml +0 -0
  73. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/classification/sklearn_classification_patch_test.yaml +0 -0
  74. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/classification/sklearn_classification_test.yaml +0 -0
  75. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/segmentation/smp.yaml +0 -0
  76. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/segmentation/smp_evaluation.yaml +0 -0
  77. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/segmentation/smp_multiclass.yaml +0 -0
  78. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/segmentation/smp_multiclass_evaluation.yaml +0 -0
  79. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/ssl/barlow.yaml +0 -0
  80. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/ssl/byol.yaml +0 -0
  81. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/ssl/dino.yaml +0 -0
  82. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/ssl/linear_eval.yaml +0 -0
  83. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/ssl/simclr.yaml +0 -0
  84. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/base/ssl/simsiam.yaml +0 -0
  85. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/custom/cls.yaml +0 -0
  86. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/default.yaml +0 -0
  87. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/imagenette/classification/default.yaml +0 -0
  88. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/imagenette/ssl/barlow.yaml +0 -0
  89. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/imagenette/ssl/byol.yaml +0 -0
  90. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/imagenette/ssl/dino.yaml +0 -0
  91. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/imagenette/ssl/simclr.yaml +0 -0
  92. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/imagenette/ssl/simsiam.yaml +0 -0
  93. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mnist/anomaly/cfa.yaml +0 -0
  94. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mnist/anomaly/cflow.yaml +0 -0
  95. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mnist/anomaly/csflow.yaml +0 -0
  96. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mnist/anomaly/draem.yaml +0 -0
  97. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mnist/anomaly/fastflow.yaml +0 -0
  98. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mnist/anomaly/inference.yaml +0 -0
  99. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mnist/anomaly/padim.yaml +0 -0
  100. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mnist/anomaly/patchcore.yaml +0 -0
  101. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mvtec/anomaly/cfa.yaml +0 -0
  102. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mvtec/anomaly/cflow.yaml +0 -0
  103. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mvtec/anomaly/csflow.yaml +0 -0
  104. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mvtec/anomaly/draem.yaml +0 -0
  105. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mvtec/anomaly/efficient_ad.yaml +0 -0
  106. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mvtec/anomaly/fastflow.yaml +0 -0
  107. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mvtec/anomaly/inference.yaml +0 -0
  108. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mvtec/anomaly/padim.yaml +0 -0
  109. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/mvtec/anomaly/patchcore.yaml +0 -0
  110. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/experiment/generic/oxford_pet/segmentation/smp.yaml +0 -0
  111. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/export/default.yaml +0 -0
  112. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/hydra/anomaly_custom.yaml +0 -0
  113. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/hydra/default.yaml +0 -0
  114. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/inference/default.yaml +0 -0
  115. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/logger/comet.yaml +0 -0
  116. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/logger/csv.yaml +0 -0
  117. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/logger/mlflow.yaml +0 -0
  118. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/logger/tensorboard.yaml +0 -0
  119. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/loss/asl.yaml +0 -0
  120. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/loss/barlow.yaml +0 -0
  121. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/loss/bce.yaml +0 -0
  122. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/loss/byol.yaml +0 -0
  123. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/loss/cross_entropy.yaml +0 -0
  124. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/loss/dino.yaml +0 -0
  125. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/loss/simclr.yaml +0 -0
  126. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/loss/simsiam.yaml +0 -0
  127. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/loss/smp_ce.yaml +0 -0
  128. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/loss/smp_dice.yaml +0 -0
  129. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/loss/smp_dice_multiclass.yaml +0 -0
  130. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/loss/smp_mcc.yaml +0 -0
  131. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/loss/vicreg.yaml +0 -0
  132. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/anomalib/cfa.yaml +0 -0
  133. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/anomalib/cflow.yaml +0 -0
  134. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/anomalib/csflow.yaml +0 -0
  135. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/anomalib/dfm.yaml +0 -0
  136. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/anomalib/draem.yaml +0 -0
  137. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/anomalib/efficient_ad.yaml +0 -0
  138. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/anomalib/fastflow.yaml +0 -0
  139. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/anomalib/padim.yaml +0 -0
  140. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/anomalib/patchcore.yaml +0 -0
  141. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/barlow.yaml +0 -0
  142. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/byol.yaml +0 -0
  143. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/classification.yaml +0 -0
  144. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/dino.yaml +0 -0
  145. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/logistic_regression.yaml +0 -0
  146. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/multilabel_classification.yaml +0 -0
  147. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/simclr.yaml +0 -0
  148. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/simsiam.yaml +0 -0
  149. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/smp.yaml +0 -0
  150. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/smp_multiclass.yaml +0 -0
  151. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/model/vicreg.yaml +0 -0
  152. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/optimizer/adam.yaml +0 -0
  153. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/optimizer/adamw.yaml +0 -0
  154. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/optimizer/default.yaml +0 -0
  155. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/optimizer/lars.yaml +0 -0
  156. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/optimizer/sgd.yaml +0 -0
  157. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/scheduler/default.yaml +0 -0
  158. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/scheduler/rop.yaml +0 -0
  159. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/scheduler/step.yaml +0 -0
  160. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/scheduler/warmrestart.yaml +0 -0
  161. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/scheduler/warmup.yaml +0 -0
  162. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/anomalib/cfa.yaml +0 -0
  163. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/anomalib/cflow.yaml +0 -0
  164. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/anomalib/csflow.yaml +0 -0
  165. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/anomalib/draem.yaml +0 -0
  166. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/anomalib/efficient_ad.yaml +0 -0
  167. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/anomalib/fastflow.yaml +0 -0
  168. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/anomalib/inference.yaml +0 -0
  169. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/anomalib/padim.yaml +0 -0
  170. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/anomalib/patchcore.yaml +0 -0
  171. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/classification.yaml +0 -0
  172. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/classification_evaluation.yaml +0 -0
  173. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/default.yaml +0 -0
  174. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/segmentation.yaml +0 -0
  175. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/segmentation_evaluation.yaml +0 -0
  176. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/sklearn_classification.yaml +0 -0
  177. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/sklearn_classification_patch.yaml +0 -0
  178. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/sklearn_classification_patch_test.yaml +0 -0
  179. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/sklearn_classification_test.yaml +0 -0
  180. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/task/ssl.yaml +0 -0
  181. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/trainer/lightning_cpu.yaml +0 -0
  182. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/trainer/lightning_gpu.yaml +0 -0
  183. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/trainer/lightning_gpu_bf16.yaml +0 -0
  184. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/trainer/lightning_gpu_fp16.yaml +0 -0
  185. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/trainer/lightning_multigpu.yaml +0 -0
  186. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/trainer/sklearn_classification.yaml +0 -0
  187. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/transforms/byol.yaml +0 -0
  188. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/transforms/byol_no_random_resize.yaml +0 -0
  189. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/transforms/default.yaml +0 -0
  190. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/transforms/default_numpy.yaml +0 -0
  191. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/transforms/default_resize.yaml +0 -0
  192. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/transforms/dino.yaml +0 -0
  193. {quadra-2.4.0 → quadra-2.5.0}/quadra/configs/transforms/linear_eval.yaml +0 -0
  194. {quadra-2.4.0 → quadra-2.5.0}/quadra/datamodules/__init__.py +0 -0
  195. {quadra-2.4.0 → quadra-2.5.0}/quadra/datamodules/anomaly.py +0 -0
  196. {quadra-2.4.0 → quadra-2.5.0}/quadra/datamodules/base.py +0 -0
  197. {quadra-2.4.0 → quadra-2.5.0}/quadra/datamodules/classification.py +0 -0
  198. {quadra-2.4.0 → quadra-2.5.0}/quadra/datamodules/generic/__init__.py +0 -0
  199. {quadra-2.4.0 → quadra-2.5.0}/quadra/datamodules/generic/imagenette.py +0 -0
  200. {quadra-2.4.0 → quadra-2.5.0}/quadra/datamodules/generic/mnist.py +0 -0
  201. {quadra-2.4.0 → quadra-2.5.0}/quadra/datamodules/generic/mvtec.py +0 -0
  202. {quadra-2.4.0 → quadra-2.5.0}/quadra/datamodules/generic/oxford_pet.py +0 -0
  203. {quadra-2.4.0 → quadra-2.5.0}/quadra/datamodules/patch.py +0 -0
  204. {quadra-2.4.0 → quadra-2.5.0}/quadra/datamodules/segmentation.py +0 -0
  205. {quadra-2.4.0 → quadra-2.5.0}/quadra/datamodules/ssl.py +0 -0
  206. {quadra-2.4.0 → quadra-2.5.0}/quadra/datasets/__init__.py +0 -0
  207. {quadra-2.4.0 → quadra-2.5.0}/quadra/datasets/anomaly.py +0 -0
  208. {quadra-2.4.0 → quadra-2.5.0}/quadra/datasets/classification.py +0 -0
  209. {quadra-2.4.0 → quadra-2.5.0}/quadra/datasets/patch.py +0 -0
  210. {quadra-2.4.0 → quadra-2.5.0}/quadra/datasets/segmentation.py +0 -0
  211. {quadra-2.4.0 → quadra-2.5.0}/quadra/datasets/ssl.py +0 -0
  212. {quadra-2.4.0 → quadra-2.5.0}/quadra/losses/__init__.py +0 -0
  213. {quadra-2.4.0 → quadra-2.5.0}/quadra/losses/classification/__init__.py +0 -0
  214. {quadra-2.4.0 → quadra-2.5.0}/quadra/losses/classification/asl.py +0 -0
  215. {quadra-2.4.0 → quadra-2.5.0}/quadra/losses/classification/focal.py +0 -0
  216. {quadra-2.4.0 → quadra-2.5.0}/quadra/losses/classification/prototypical.py +0 -0
  217. {quadra-2.4.0 → quadra-2.5.0}/quadra/losses/ssl/__init__.py +0 -0
  218. {quadra-2.4.0 → quadra-2.5.0}/quadra/losses/ssl/barlowtwins.py +0 -0
  219. {quadra-2.4.0 → quadra-2.5.0}/quadra/losses/ssl/byol.py +0 -0
  220. {quadra-2.4.0 → quadra-2.5.0}/quadra/losses/ssl/dino.py +0 -0
  221. {quadra-2.4.0 → quadra-2.5.0}/quadra/losses/ssl/hyperspherical.py +0 -0
  222. {quadra-2.4.0 → quadra-2.5.0}/quadra/losses/ssl/idmm.py +0 -0
  223. {quadra-2.4.0 → quadra-2.5.0}/quadra/losses/ssl/simclr.py +0 -0
  224. {quadra-2.4.0 → quadra-2.5.0}/quadra/losses/ssl/simsiam.py +0 -0
  225. {quadra-2.4.0 → quadra-2.5.0}/quadra/losses/ssl/vicreg.py +0 -0
  226. {quadra-2.4.0 → quadra-2.5.0}/quadra/main.py +0 -0
  227. {quadra-2.4.0 → quadra-2.5.0}/quadra/metrics/__init__.py +0 -0
  228. {quadra-2.4.0 → quadra-2.5.0}/quadra/metrics/segmentation.py +0 -0
  229. {quadra-2.4.0 → quadra-2.5.0}/quadra/models/__init__.py +0 -0
  230. {quadra-2.4.0 → quadra-2.5.0}/quadra/models/base.py +0 -0
  231. {quadra-2.4.0 → quadra-2.5.0}/quadra/models/classification/__init__.py +0 -0
  232. {quadra-2.4.0 → quadra-2.5.0}/quadra/models/classification/backbones.py +0 -0
  233. {quadra-2.4.0 → quadra-2.5.0}/quadra/models/classification/base.py +0 -0
  234. {quadra-2.4.0 → quadra-2.5.0}/quadra/models/evaluation.py +0 -0
  235. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/__init__.py +0 -0
  236. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/backbone.py +0 -0
  237. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/base.py +0 -0
  238. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/classification/__init__.py +0 -0
  239. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/classification/base.py +0 -0
  240. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/ssl/__init__.py +0 -0
  241. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/ssl/barlowtwins.py +0 -0
  242. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/ssl/byol.py +0 -0
  243. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/ssl/common.py +0 -0
  244. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/ssl/dino.py +0 -0
  245. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/ssl/hyperspherical.py +0 -0
  246. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/ssl/idmm.py +0 -0
  247. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/ssl/simclr.py +0 -0
  248. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/ssl/simsiam.py +0 -0
  249. {quadra-2.4.0 → quadra-2.5.0}/quadra/modules/ssl/vicreg.py +0 -0
  250. {quadra-2.4.0 → quadra-2.5.0}/quadra/optimizers/__init__.py +0 -0
  251. {quadra-2.4.0 → quadra-2.5.0}/quadra/optimizers/lars.py +0 -0
  252. {quadra-2.4.0 → quadra-2.5.0}/quadra/optimizers/sam.py +0 -0
  253. {quadra-2.4.0 → quadra-2.5.0}/quadra/schedulers/__init__.py +0 -0
  254. {quadra-2.4.0 → quadra-2.5.0}/quadra/schedulers/base.py +0 -0
  255. {quadra-2.4.0 → quadra-2.5.0}/quadra/schedulers/warmup.py +0 -0
  256. {quadra-2.4.0 → quadra-2.5.0}/quadra/tasks/__init__.py +0 -0
  257. {quadra-2.4.0 → quadra-2.5.0}/quadra/tasks/anomaly.py +0 -0
  258. {quadra-2.4.0 → quadra-2.5.0}/quadra/tasks/base.py +0 -0
  259. {quadra-2.4.0 → quadra-2.5.0}/quadra/tasks/classification.py +0 -0
  260. {quadra-2.4.0 → quadra-2.5.0}/quadra/tasks/patch.py +0 -0
  261. {quadra-2.4.0 → quadra-2.5.0}/quadra/tasks/segmentation.py +0 -0
  262. {quadra-2.4.0 → quadra-2.5.0}/quadra/tasks/ssl.py +0 -0
  263. {quadra-2.4.0 → quadra-2.5.0}/quadra/trainers/README.md +0 -0
  264. {quadra-2.4.0 → quadra-2.5.0}/quadra/trainers/__init__.py +0 -0
  265. {quadra-2.4.0 → quadra-2.5.0}/quadra/trainers/classification.py +0 -0
  266. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/__init__.py +0 -0
  267. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/anomaly.py +0 -0
  268. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/classification.py +0 -0
  269. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/deprecation.py +0 -0
  270. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/evaluation.py +0 -0
  271. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/imaging.py +0 -0
  272. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/logger.py +0 -0
  273. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/mlflow.py +0 -0
  274. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/model_manager.py +0 -0
  275. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/models.py +0 -0
  276. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/patch/__init__.py +0 -0
  277. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/patch/dataset.py +0 -0
  278. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/patch/metrics.py +0 -0
  279. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/patch/model.py +0 -0
  280. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/patch/visualization.py +0 -0
  281. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/resolver.py +0 -0
  282. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/segmentation.py +0 -0
  283. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/tests/__init__.py +0 -0
  284. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/tests/fixtures/__init__.py +0 -0
  285. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/tests/fixtures/dataset/__init__.py +0 -0
  286. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/tests/fixtures/dataset/anomaly.py +0 -0
  287. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/tests/fixtures/dataset/classification.py +0 -0
  288. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/tests/fixtures/dataset/imagenette.py +0 -0
  289. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/tests/fixtures/dataset/segmentation.py +0 -0
  290. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/tests/fixtures/models/__init__.py +0 -0
  291. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/tests/fixtures/models/anomaly.py +0 -0
  292. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/tests/fixtures/models/classification.py +0 -0
  293. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/tests/fixtures/models/segmentation.py +0 -0
  294. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/tests/helpers.py +0 -0
  295. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/tests/models.py +0 -0
  296. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/validator.py +0 -0
  297. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/visualization.py +0 -0
  298. {quadra-2.4.0 → quadra-2.5.0}/quadra/utils/vit_explainability.py +0 -0
  299. {quadra-2.4.0 → quadra-2.5.0}/quadra_hydra_plugin/hydra_plugins/quadra_searchpath_plugin.py +0 -0
@@ -1,8 +1,9 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: quadra
3
- Version: 2.4.0
3
+ Version: 2.5.0
4
4
  Summary: Deep Learning experiment orchestration library
5
5
  License: Apache-2.0
6
+ License-File: LICENSE
6
7
  Keywords: deep learning,experiment,lightning,hydra-core
7
8
  Author: Federico Belotti
8
9
  Author-email: federico.belotti@orobix.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "quadra"
3
- version = "2.4.0"
3
+ version = "2.5.0"
4
4
  description = "Deep Learning experiment orchestration library"
5
5
  authors = [
6
6
  "Federico Belotti <federico.belotti@orobix.com>",
@@ -1,4 +1,4 @@
1
- __version__ = "2.4.0"
1
+ __version__ = "2.5.0"
2
2
 
3
3
 
4
4
  def get_version():
@@ -9,3 +9,4 @@ experiment_path: null
9
9
  upload_artifacts: False
10
10
  upload_models: ${export.types} # Default behavior in quadra <= 1.5.6
11
11
  log_level: info
12
+ mlflow_zip_models: False
@@ -430,16 +430,15 @@ def _safe_export_half_precision_onnx(
430
430
  export_output = export_onnx_model(
431
431
  model=model,
432
432
  output_path=os.path.dirname(export_model_path),
433
- onnx_config=onnx_config,
433
+ # Force to not simplify fp32 model
434
+ onnx_config=DictConfig({**onnx_config, "simplify": False}),
434
435
  input_shapes=input_shapes,
435
436
  half_precision=False,
436
437
  model_name=os.path.basename(export_model_path),
437
438
  )
438
- if export_output is not None:
439
- export_model_path, _ = export_output
440
- else:
441
- log.warning("Failed to export model")
442
- return False
439
+ if export_output is None:
440
+ # This should not happen
441
+ raise RuntimeError("Failed to export model")
443
442
 
444
443
  model_fp32 = onnx.load(export_model_path)
445
444
  test_data = {input_names[i]: inp[i].float().cpu().numpy() for i in range(len(inp))}
@@ -8,10 +8,12 @@ import glob
8
8
  import json
9
9
  import logging
10
10
  import os
11
+ import shutil
11
12
  import subprocess
12
13
  import sys
13
14
  import warnings
14
15
  from collections.abc import Iterable, Iterator, Sequence
16
+ from tempfile import TemporaryDirectory
15
17
  from typing import Any, cast
16
18
 
17
19
  import cv2
@@ -299,45 +301,78 @@ def finish(
299
301
  quadra_export.generate_torch_inputs(input_size, device=device, half_precision=half_precision),
300
302
  )
301
303
  types_to_upload = config.core.get("upload_models")
302
- for model_path in deployed_models:
303
- model_type = model_type_from_path(model_path)
304
- if model_type is None:
305
- logging.warning("%s model type not supported", model_path)
306
- continue
307
- if model_type is not None and model_type in types_to_upload:
308
- if model_type == "pytorch":
309
- logging.warning("Pytorch format still not supported for mlflow upload")
304
+ mlflow_zip_models = config.core.get("mlflow_zip_models", False)
305
+ model_uploaded = False
306
+ with mlflow.start_run(run_id=mlflow_logger.run_id) as _:
307
+ for model_path in deployed_models:
308
+ model_type = model_type_from_path(model_path)
309
+ model_name = os.path.basename(model_path)
310
+
311
+ if model_type is None:
312
+ logging.warning("%s model type not supported", model_path)
310
313
  continue
311
-
312
- model = quadra_export.import_deployment_model(
313
- model_path,
314
- device=device,
315
- inference_config=config.inference,
316
- )
317
-
318
- if model_type in ["torchscript", "pytorch"]:
319
- signature = infer_signature_model(model.model, inputs)
320
- with mlflow.start_run(run_id=mlflow_logger.run_id) as _:
321
- mlflow.pytorch.log_model(
322
- model.model,
323
- artifact_path=model_path,
324
- signature=signature,
325
- )
326
- elif model_type in ["onnx", "simplified_onnx"] and ONNX_AVAILABLE:
327
- signature = infer_signature_model(model, inputs)
328
- with mlflow.start_run(run_id=mlflow_logger.run_id) as _:
329
- if model.model_path is None:
330
- logging.warning(
331
- "Cannot log onnx model on mlflow, \
332
- BaseEvaluationModel 'model_path' attribute is None"
314
+ if model_type is not None and model_type in types_to_upload:
315
+ if model_type == "pytorch" and not mlflow_zip_models:
316
+ logging.warning("Pytorch format still not supported for mlflow upload")
317
+ continue
318
+
319
+ if mlflow_zip_models:
320
+ with TemporaryDirectory() as temp_dir:
321
+ if model_type == "pytorch" and os.path.isfile(
322
+ os.path.join(export_folder, "model_config.yaml")
323
+ ):
324
+ shutil.copy(model_path, temp_dir)
325
+ shutil.copy(os.path.join(export_folder, "model_config.yaml"), temp_dir)
326
+ shutil.make_archive("assets", "zip", root_dir=temp_dir)
327
+ else:
328
+ shutil.make_archive(
329
+ "assets",
330
+ "zip",
331
+ root_dir=os.path.dirname(model_path),
332
+ base_dir=model_name,
333
+ )
334
+ shutil.move("assets.zip", temp_dir)
335
+ mlflow.pyfunc.log_model(
336
+ artifact_path=model_path,
337
+ loader_module="not.used",
338
+ data_path=os.path.join(temp_dir, "assets.zip"),
339
+ pip_requirements=[""],
333
340
  )
334
- else:
335
- model_proto = onnx.load(model.model_path)
336
- mlflow.onnx.log_model(
337
- model_proto,
341
+ model_uploaded = True
342
+ else:
343
+ model = quadra_export.import_deployment_model(
344
+ model_path,
345
+ device=device,
346
+ inference_config=config.inference,
347
+ )
348
+
349
+ if model_type in ["torchscript", "pytorch"]:
350
+ signature = infer_signature_model(model.model, inputs)
351
+ mlflow.pytorch.log_model(
352
+ model.model,
338
353
  artifact_path=model_path,
339
354
  signature=signature,
340
355
  )
356
+ model_uploaded = True
357
+
358
+ elif model_type in ["onnx", "simplified_onnx"] and ONNX_AVAILABLE:
359
+ if model.model_path is None:
360
+ logging.warning(
361
+ "Cannot log onnx model on mlflow, \
362
+ BaseEvaluationModel 'model_path' attribute is None"
363
+ )
364
+ else:
365
+ signature = infer_signature_model(model, inputs)
366
+ model_proto = onnx.load(model.model_path)
367
+ mlflow.onnx.log_model(
368
+ model_proto,
369
+ artifact_path=model_path,
370
+ signature=signature,
371
+ )
372
+ model_uploaded = True
373
+
374
+ if model_uploaded:
375
+ mlflow.log_artifact(os.path.join(export_folder, "model.json"), export_folder)
341
376
 
342
377
  if tensorboard_logger is not None:
343
378
  config_paths = []
@@ -376,7 +411,7 @@ def model_type_from_path(model_path: str) -> str | None:
376
411
  - "pytorch" if the model has a '.pth' extension (PyTorch).
377
412
  - "simplified_onnx" if the model file ends with 'simplified.onnx' (Simplified ONNX).
378
413
  - "onnx" if the model has a '.onnx' extension (ONNX).
379
- - "json" id the model has a '.json' extension (JSON).
414
+ - "json" if the model has a '.json' extension (JSON).
380
415
  - None if model extension is not supported.
381
416
 
382
417
  Example:
File without changes
File without changes