opensportslib 0.2.0.dev2__tar.gz → 0.2.0.dev3__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 (157) hide show
  1. {opensportslib-0.2.0.dev2/opensportslib.egg-info → opensportslib-0.2.0.dev3}/PKG-INFO +34 -8
  2. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/README.md +33 -7
  3. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/cli.py +4 -4
  4. opensportslib-0.2.0.dev3/opensportslib/configs/vqa/qwen.yaml +49 -0
  5. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/config/loader.py +1 -1
  6. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/setup/setup.py +6 -6
  7. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3/opensportslib.egg-info}/PKG-INFO +34 -8
  8. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib.egg-info/SOURCES.txt +0 -1
  9. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/pyproject.toml +1 -1
  10. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_config_architecture.py +40 -11
  11. opensportslib-0.2.0.dev2/opensportslib/configs/vqa/qwen.yaml +0 -228
  12. opensportslib-0.2.0.dev2/opensportslib/configs/vqa/xvars_lora.yaml +0 -243
  13. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/LICENSE +0 -0
  14. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/LICENSE-COMMERCIAL +0 -0
  15. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/MANIFEST.in +0 -0
  16. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/examples/quickstart/basic_classification.py +0 -0
  17. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/examples/quickstart/basic_localization.py +0 -0
  18. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/__init__.py +0 -0
  19. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/apis/__init__.py +0 -0
  20. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/apis/base_task_model.py +0 -0
  21. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/apis/classification.py +0 -0
  22. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/apis/localization.py +0 -0
  23. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/apis/vqa.py +0 -0
  24. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/configs/classification/default.yaml +0 -0
  25. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/configs/classification/sngar_frames.yaml +0 -0
  26. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/configs/classification/sngar_tracking.yaml +0 -0
  27. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/configs/classification/video.yaml +0 -0
  28. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/configs/default.yaml +0 -0
  29. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/configs/localization/calf_resnetpca512.yaml +0 -0
  30. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/configs/localization/default.yaml +0 -0
  31. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/configs/localization/netvladpp_resnetpca512.yaml +0 -0
  32. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/configs/localization/video_dali.yaml +0 -0
  33. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/configs/localization/video_ocv.yaml +0 -0
  34. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/__init__.py +0 -0
  35. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/config/__init__.py +0 -0
  36. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/config/accessors.py +0 -0
  37. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/config/conflicts.py +0 -0
  38. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/config/migrate.py +0 -0
  39. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/config/migrations/__init__.py +0 -0
  40. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/config/migrations/legacy_to_canonical.py +0 -0
  41. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/config/runtime_adapter.py +0 -0
  42. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/config/schema.py +0 -0
  43. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/config/schemas/__init__.py +0 -0
  44. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/config/schemas/schema_canonical.py +0 -0
  45. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/config/schemas/schema_legacy.py +0 -0
  46. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/config/validate.py +0 -0
  47. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/loss/__init__.py +0 -0
  48. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/loss/builder.py +0 -0
  49. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/loss/calf.py +0 -0
  50. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/loss/ce.py +0 -0
  51. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/loss/combine.py +0 -0
  52. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/loss/nll.py +0 -0
  53. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/optimizer/__init__.py +0 -0
  54. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/optimizer/builder.py +0 -0
  55. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/sampler/weighted_sampler.py +0 -0
  56. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/scheduler/__init__.py +0 -0
  57. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/scheduler/builder.py +0 -0
  58. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/trainer/__init__.py +0 -0
  59. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/trainer/classification_trainer.py +0 -0
  60. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/trainer/localization_trainer.py +0 -0
  61. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/trainer/vqa_trainer.py +0 -0
  62. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/utils/checkpoint.py +0 -0
  63. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/utils/config.py +0 -0
  64. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/utils/config_normalize.py +0 -0
  65. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/utils/data.py +0 -0
  66. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/utils/ddp.py +0 -0
  67. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/utils/default_args.py +0 -0
  68. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/utils/hf_runtime.py +0 -0
  69. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/utils/lightning.py +0 -0
  70. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/utils/load_annotations.py +0 -0
  71. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/utils/seed.py +0 -0
  72. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/utils/video_processing.py +0 -0
  73. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/core/utils/wandb.py +0 -0
  74. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/datasets/__init__.py +0 -0
  75. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/datasets/builder.py +0 -0
  76. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/datasets/classification_dataset.py +0 -0
  77. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/datasets/localization_dataset.py +0 -0
  78. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/datasets/utils/__init__.py +0 -0
  79. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/datasets/utils/tracking.py +0 -0
  80. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/datasets/vqa_dataset.py +0 -0
  81. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/legacy_config/classification.yaml +0 -0
  82. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/legacy_config/localization-e2e-ocv.yaml +0 -0
  83. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/legacy_config/localization-json_calf_resnetpca512.yaml +0 -0
  84. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/legacy_config/localization-json_netvlad++_resnetpca512.yaml +0 -0
  85. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/legacy_config/localization.yaml +0 -0
  86. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/legacy_config/sngar-frames.yaml +0 -0
  87. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/legacy_config/sngar-tracking.yaml +0 -0
  88. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/metrics/classification_metric.py +0 -0
  89. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/metrics/localization_metric.py +0 -0
  90. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/metrics/vqa_metric.py +0 -0
  91. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/__init__.py +0 -0
  92. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/backbones/builder.py +0 -0
  93. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/base/contextaware.py +0 -0
  94. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/base/e2e.py +0 -0
  95. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/base/learnablepooling.py +0 -0
  96. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/base/qwen_xvars.py +0 -0
  97. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/base/tracking.py +0 -0
  98. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/base/vars.py +0 -0
  99. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/base/video.py +0 -0
  100. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/base/video_chatgpt_compat.py +0 -0
  101. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/base/video_mae.py +0 -0
  102. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/base/xvars_videochatgpt.py +0 -0
  103. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/builder.py +0 -0
  104. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/heads/builder.py +0 -0
  105. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/neck/builder.py +0 -0
  106. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/utils/common.py +0 -0
  107. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/utils/impl/__init__.py +0 -0
  108. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/utils/impl/asformer.py +0 -0
  109. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/utils/impl/calf.py +0 -0
  110. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/utils/impl/gsm.py +0 -0
  111. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/utils/impl/gtad.py +0 -0
  112. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/utils/impl/tsm.py +0 -0
  113. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/utils/litebase.py +0 -0
  114. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/utils/modules.py +0 -0
  115. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/utils/shift.py +0 -0
  116. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/utils/utils.py +0 -0
  117. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/utils/vqa_prediction_priors.py +0 -0
  118. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/utils/vqa_prompting.py +0 -0
  119. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/models/utils/xvars_clip_index.py +0 -0
  120. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/tools/__init__.py +0 -0
  121. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/tools/_common.py +0 -0
  122. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/tools/hf_transfer.py +0 -0
  123. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/tools/osl_json_to_parquet.py +0 -0
  124. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib/tools/parquet_to_osl_json.py +0 -0
  125. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib.egg-info/dependency_links.txt +0 -0
  126. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib.egg-info/entry_points.txt +0 -0
  127. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib.egg-info/requires.txt +0 -0
  128. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/opensportslib.egg-info/top_level.txt +0 -0
  129. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/setup.cfg +0 -0
  130. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/conftest.py +0 -0
  131. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_classification_dataset_paths.py +0 -0
  132. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_classification_trainer_dataloader.py +0 -0
  133. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_config_split_override_sync.py +0 -0
  134. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_config_utils_smoke.py +0 -0
  135. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_conversion_tools.py +0 -0
  136. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_extract_xvars_features.py +0 -0
  137. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_hf_transfer_tools.py +0 -0
  138. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_localization_dali_filenames.py +0 -0
  139. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_package_smoke.py +0 -0
  140. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_pretrained_config_merge_policy.py +0 -0
  141. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_public_apis_smoke.py +0 -0
  142. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_subset_train_infer_integration.py +0 -0
  143. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_task_model_api_contract.py +0 -0
  144. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_vqa_metrics_semantic.py +0 -0
  145. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_vqa_training_lora.py +0 -0
  146. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tests/test_vqa_xvars_videochatgpt.py +0 -0
  147. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tools/convert/build_soccernet_gar.py +0 -0
  148. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tools/convert/build_soccernet_gar_action_spotting.py +0 -0
  149. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tools/convert/build_xvars_indexes.py +0 -0
  150. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tools/convert/extract_xvars_clip_features.py +0 -0
  151. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tools/convert/osl_json_to_parquet_webdataset.py +0 -0
  152. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tools/convert/parquet_webdataset_to_osl_json.py +0 -0
  153. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tools/download/download_hf_repo.py +0 -0
  154. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tools/download/download_osl_hf.py +0 -0
  155. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tools/download/upload_osl_hf.py +0 -0
  156. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tools/training/classification.py +0 -0
  157. {opensportslib-0.2.0.dev2 → opensportslib-0.2.0.dev3}/tools/training/localization.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opensportslib
3
- Version: 0.2.0.dev2
3
+ Version: 0.2.0.dev3
4
4
  Summary: OpenSportsLib is the professional library, designed for advanced video understanding in sports. It provides state-of-the-art tools for action recognition, spotting, retrieval, and captioning, making it ideal for researchers, analysts, and developers working with sports video data.
5
5
  Author: Jeet Vora
6
6
  Requires-Python: >=3.12
@@ -93,13 +93,26 @@ opensportslib setup --pyg
93
93
 
94
94
  # Optional: install for DALI support
95
95
  opensportslib setup --dali
96
- ```
96
+
97
+ # Optional: install the X-VARS-compatible VQA dependency profile
98
+ opensportslib setup --vqa_xvars
99
+
100
+ # Optional: install the Qwen-compatible VQA dependency profile
101
+ opensportslib setup --vqa_qwen
102
+ ```
97
103
  ---
98
104
 
99
105
  **Note:**
100
106
  Run `opensportslib setup` to automatically configure dependencies.
101
107
  If issues occur, manually install compatible versions of `torch`, `torchvision`, and related libraries according to your CUDA version or system compatibility.
102
108
 
109
+ For VQA, use exactly one backend-specific dependency profile:
110
+
111
+ - `--vqa_xvars` installs the X-VARS-compatible Hugging Face stack from `XVARS_DEPENDENCY_PINS`
112
+ - `--vqa_qwen` installs the Qwen-compatible Hugging Face stack from `QWEN_DEPENDENCY_PINS`
113
+
114
+ The `vqa_qwen` config supports `Qwen/Qwen2.5-7B-Instruct` and `Qwen/Qwen3.5-9B-Base`.
115
+
103
116
  ---
104
117
 
105
118
  ## Data and pretrained models
@@ -287,7 +300,7 @@ metrics_from_file = my_model.evaluate(
287
300
  from opensportslib.apis import VQAModel
288
301
 
289
302
  my_model = VQAModel(
290
- config="/path/to/vqa.yaml",
303
+ config="opensportslib/configs/vqa/qwen.yaml",
291
304
  weights=None, # optional: path or Hugging Face model ID
292
305
  )
293
306
 
@@ -300,13 +313,20 @@ single_prediction = my_model.infer(
300
313
  video_path="/path/to/video.mp4",
301
314
  question="What card would you give? Why?",
302
315
  )
303
-
304
- metrics = my_model.evaluate(
305
- test_set="/path/to/test_annotations.json",
306
- predictions=predictions,
307
- )
308
316
  ```
309
317
 
318
+ Use `opensportslib/configs/vqa/xvars.yaml` with `opensportslib setup --vqa_xvars`
319
+ for the X-VARS-compatible backend, or `opensportslib/configs/vqa/qwen.yaml` with
320
+ `opensportslib setup --vqa_qwen` for the Qwen-compatible backend. The Qwen
321
+ backend currently supports `Qwen/Qwen2.5-7B-Instruct` and
322
+ `Qwen/Qwen3.5-9B-Base`.
323
+
324
+ For X-VARS, `feature_source: indexed_or_raw_clip` prefers indexed CLIP features
325
+ when available and falls back to extracting CLIP features from raw video during
326
+ `infer()`. Pre-extracted features remain the preferred path for parity, speed,
327
+ and reproducibility. See [docs/xvars_integration_phases.md](docs/xvars_integration_phases.md)
328
+ for the full X-VARS setup workflow.
329
+
310
330
 
311
331
  ---
312
332
 
@@ -414,6 +434,12 @@ opensportslib setup --pyg
414
434
 
415
435
  # Optional: install for DALI support
416
436
  opensportslib setup --dali
437
+
438
+ # Optional: install the X-VARS-compatible VQA dependency profile
439
+ opensportslib setup --vqa_xvars
440
+
441
+ # Optional: install the Qwen-compatible VQA dependency profile
442
+ opensportslib setup --vqa_qwen
417
443
  ```
418
444
 
419
445
  ### Git workflow
@@ -58,13 +58,26 @@ opensportslib setup --pyg
58
58
 
59
59
  # Optional: install for DALI support
60
60
  opensportslib setup --dali
61
- ```
61
+
62
+ # Optional: install the X-VARS-compatible VQA dependency profile
63
+ opensportslib setup --vqa_xvars
64
+
65
+ # Optional: install the Qwen-compatible VQA dependency profile
66
+ opensportslib setup --vqa_qwen
67
+ ```
62
68
  ---
63
69
 
64
70
  **Note:**
65
71
  Run `opensportslib setup` to automatically configure dependencies.
66
72
  If issues occur, manually install compatible versions of `torch`, `torchvision`, and related libraries according to your CUDA version or system compatibility.
67
73
 
74
+ For VQA, use exactly one backend-specific dependency profile:
75
+
76
+ - `--vqa_xvars` installs the X-VARS-compatible Hugging Face stack from `XVARS_DEPENDENCY_PINS`
77
+ - `--vqa_qwen` installs the Qwen-compatible Hugging Face stack from `QWEN_DEPENDENCY_PINS`
78
+
79
+ The `vqa_qwen` config supports `Qwen/Qwen2.5-7B-Instruct` and `Qwen/Qwen3.5-9B-Base`.
80
+
68
81
  ---
69
82
 
70
83
  ## Data and pretrained models
@@ -252,7 +265,7 @@ metrics_from_file = my_model.evaluate(
252
265
  from opensportslib.apis import VQAModel
253
266
 
254
267
  my_model = VQAModel(
255
- config="/path/to/vqa.yaml",
268
+ config="opensportslib/configs/vqa/qwen.yaml",
256
269
  weights=None, # optional: path or Hugging Face model ID
257
270
  )
258
271
 
@@ -265,13 +278,20 @@ single_prediction = my_model.infer(
265
278
  video_path="/path/to/video.mp4",
266
279
  question="What card would you give? Why?",
267
280
  )
268
-
269
- metrics = my_model.evaluate(
270
- test_set="/path/to/test_annotations.json",
271
- predictions=predictions,
272
- )
273
281
  ```
274
282
 
283
+ Use `opensportslib/configs/vqa/xvars.yaml` with `opensportslib setup --vqa_xvars`
284
+ for the X-VARS-compatible backend, or `opensportslib/configs/vqa/qwen.yaml` with
285
+ `opensportslib setup --vqa_qwen` for the Qwen-compatible backend. The Qwen
286
+ backend currently supports `Qwen/Qwen2.5-7B-Instruct` and
287
+ `Qwen/Qwen3.5-9B-Base`.
288
+
289
+ For X-VARS, `feature_source: indexed_or_raw_clip` prefers indexed CLIP features
290
+ when available and falls back to extracting CLIP features from raw video during
291
+ `infer()`. Pre-extracted features remain the preferred path for parity, speed,
292
+ and reproducibility. See [docs/xvars_integration_phases.md](docs/xvars_integration_phases.md)
293
+ for the full X-VARS setup workflow.
294
+
275
295
 
276
296
  ---
277
297
 
@@ -379,6 +399,12 @@ opensportslib setup --pyg
379
399
 
380
400
  # Optional: install for DALI support
381
401
  opensportslib setup --dali
402
+
403
+ # Optional: install the X-VARS-compatible VQA dependency profile
404
+ opensportslib setup --vqa_xvars
405
+
406
+ # Optional: install the Qwen-compatible VQA dependency profile
407
+ opensportslib setup --vqa_qwen
382
408
  ```
383
409
 
384
410
  ### Git workflow
@@ -11,8 +11,8 @@ def main(argv: Optional[list[str]] = None) -> int:
11
11
  parser.add_argument("command", choices=["setup"])
12
12
  parser.add_argument("--pyg", action="store_true")
13
13
  parser.add_argument("--dali", action="store_true")
14
- parser.add_argument("--xvars", action="store_true")
15
- parser.add_argument("--qwen", action="store_true")
14
+ parser.add_argument("--vqa_xvars", action="store_true")
15
+ parser.add_argument("--vqa_qwen", action="store_true")
16
16
 
17
17
  args = parser.parse_args(argv)
18
18
 
@@ -20,8 +20,8 @@ def main(argv: Optional[list[str]] = None) -> int:
20
20
  setup(
21
21
  pyg=args.pyg,
22
22
  dali=args.dali,
23
- xvars=args.xvars,
24
- qwen=args.qwen
23
+ vqa_xvars=args.vqa_xvars,
24
+ vqa_qwen=args.vqa_qwen
25
25
  )
26
26
  return 0
27
27
 
@@ -0,0 +1,49 @@
1
+ SYSTEM:
2
+ paths:
3
+ save_dir: ./checkpoints_vqa_qwen
4
+
5
+ MODEL:
6
+ components:
7
+ video_encoder:
8
+ kind: encoder
9
+ source:
10
+ provider: opensportslib
11
+ name: xvars_clip_features
12
+ load:
13
+ weights_path: /home/vorajv/X-VARS/weights/14_model.pth.tar
14
+ params:
15
+ feature_source: indexed_or_raw_clip
16
+ vision_tower: openai/clip-vit-large-patch14
17
+ feature_dim: 1024
18
+ overrides: {}
19
+ mm_projector:
20
+ kind: projector
21
+ source:
22
+ provider: opensportslib
23
+ params:
24
+ input_dim: 1024
25
+ overrides: {}
26
+ llm_decoder:
27
+ kind: decoder
28
+ source:
29
+ provider: huggingface
30
+ # Supported models: Qwen/Qwen2.5-7B-Instruct or Qwen/Qwen3.5-9B-Base
31
+ name: Qwen/Qwen3.5-9B-Base
32
+ params:
33
+ # Supported models: Qwen/Qwen2.5-7B-Instruct or Qwen/Qwen3.5-9B-Base
34
+ repo_id: Qwen/Qwen3.5-9B-Base
35
+ overrides: {}
36
+ metadata:
37
+ backend: qwen_xvars_infer
38
+
39
+ TRAIN:
40
+ execution:
41
+ prompt:
42
+ system_prompt: You are a football video assistant. Answer the VQA question using the provided video context and referee priors.
43
+
44
+ hf:
45
+ tokenizer_id: ${MODEL.components.llm_decoder.params.repo_id}
46
+ prefer_cuda: true
47
+ local_files_only: false
48
+ device_map: auto
49
+ offload_folder: ./hf_offload_qwen
@@ -18,7 +18,7 @@ from .migrate import migrate_config
18
18
  from .runtime_adapter import maybe_namespace, namespace_to_plain_dict
19
19
 
20
20
  _YAML_SUFFIXES = {".yaml", ".yml"}
21
- _TASK_DIRS = {"classification", "localization"}
21
+ _TASK_DIRS = {"classification", "localization", "vqa"}
22
22
  _INTERPOLATION_RE = re.compile(r"\$\{([^}]+)\}")
23
23
 
24
24
 
@@ -183,12 +183,12 @@ def verify():
183
183
  else:
184
184
  print("Running on CPU")
185
185
 
186
- def setup(dali=False, pyg=False, xvars=False, qwen=False):
186
+ def setup(dali=False, pyg=False, vqa_xvars=False, vqa_qwen=False):
187
187
  install_torch()
188
188
  install_extras(dali=dali, pyg=pyg)
189
- if xvars:
189
+ if vqa_xvars:
190
190
  install_xvars_dependencies(XVARS_DEPENDENCY_PINS)
191
- if qwen:
191
+ if vqa_qwen:
192
192
  install_xvars_dependencies(QWEN_DEPENDENCY_PINS)
193
193
  verify()
194
194
 
@@ -202,9 +202,9 @@ if __name__ == "__main__":
202
202
  parser = argparse.ArgumentParser()
203
203
  parser.add_argument("--dali", action="store_true")
204
204
  parser.add_argument("--pyg", action="store_true")
205
- parser.add_argument("--xvars", action="store_true")
206
- parser.add_argument("--qwen", action="store_true")
205
+ parser.add_argument("--vqa_xvars", action="store_true")
206
+ parser.add_argument("--vqa_qwen", action="store_true")
207
207
 
208
208
  args = parser.parse_args()
209
209
 
210
- setup(dali=args.dali, pyg=args.pyg, xvars=args.xvars, qwen=args.qwen)
210
+ setup(dali=args.dali, pyg=args.pyg, vqa_xvars=args.vqa_xvars, vqa_qwen=args.vqa_qwen)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opensportslib
3
- Version: 0.2.0.dev2
3
+ Version: 0.2.0.dev3
4
4
  Summary: OpenSportsLib is the professional library, designed for advanced video understanding in sports. It provides state-of-the-art tools for action recognition, spotting, retrieval, and captioning, making it ideal for researchers, analysts, and developers working with sports video data.
5
5
  Author: Jeet Vora
6
6
  Requires-Python: >=3.12
@@ -93,13 +93,26 @@ opensportslib setup --pyg
93
93
 
94
94
  # Optional: install for DALI support
95
95
  opensportslib setup --dali
96
- ```
96
+
97
+ # Optional: install the X-VARS-compatible VQA dependency profile
98
+ opensportslib setup --vqa_xvars
99
+
100
+ # Optional: install the Qwen-compatible VQA dependency profile
101
+ opensportslib setup --vqa_qwen
102
+ ```
97
103
  ---
98
104
 
99
105
  **Note:**
100
106
  Run `opensportslib setup` to automatically configure dependencies.
101
107
  If issues occur, manually install compatible versions of `torch`, `torchvision`, and related libraries according to your CUDA version or system compatibility.
102
108
 
109
+ For VQA, use exactly one backend-specific dependency profile:
110
+
111
+ - `--vqa_xvars` installs the X-VARS-compatible Hugging Face stack from `XVARS_DEPENDENCY_PINS`
112
+ - `--vqa_qwen` installs the Qwen-compatible Hugging Face stack from `QWEN_DEPENDENCY_PINS`
113
+
114
+ The `vqa_qwen` config supports `Qwen/Qwen2.5-7B-Instruct` and `Qwen/Qwen3.5-9B-Base`.
115
+
103
116
  ---
104
117
 
105
118
  ## Data and pretrained models
@@ -287,7 +300,7 @@ metrics_from_file = my_model.evaluate(
287
300
  from opensportslib.apis import VQAModel
288
301
 
289
302
  my_model = VQAModel(
290
- config="/path/to/vqa.yaml",
303
+ config="opensportslib/configs/vqa/qwen.yaml",
291
304
  weights=None, # optional: path or Hugging Face model ID
292
305
  )
293
306
 
@@ -300,13 +313,20 @@ single_prediction = my_model.infer(
300
313
  video_path="/path/to/video.mp4",
301
314
  question="What card would you give? Why?",
302
315
  )
303
-
304
- metrics = my_model.evaluate(
305
- test_set="/path/to/test_annotations.json",
306
- predictions=predictions,
307
- )
308
316
  ```
309
317
 
318
+ Use `opensportslib/configs/vqa/xvars.yaml` with `opensportslib setup --vqa_xvars`
319
+ for the X-VARS-compatible backend, or `opensportslib/configs/vqa/qwen.yaml` with
320
+ `opensportslib setup --vqa_qwen` for the Qwen-compatible backend. The Qwen
321
+ backend currently supports `Qwen/Qwen2.5-7B-Instruct` and
322
+ `Qwen/Qwen3.5-9B-Base`.
323
+
324
+ For X-VARS, `feature_source: indexed_or_raw_clip` prefers indexed CLIP features
325
+ when available and falls back to extracting CLIP features from raw video during
326
+ `infer()`. Pre-extracted features remain the preferred path for parity, speed,
327
+ and reproducibility. See [docs/xvars_integration_phases.md](docs/xvars_integration_phases.md)
328
+ for the full X-VARS setup workflow.
329
+
310
330
 
311
331
  ---
312
332
 
@@ -414,6 +434,12 @@ opensportslib setup --pyg
414
434
 
415
435
  # Optional: install for DALI support
416
436
  opensportslib setup --dali
437
+
438
+ # Optional: install the X-VARS-compatible VQA dependency profile
439
+ opensportslib setup --vqa_xvars
440
+
441
+ # Optional: install the Qwen-compatible VQA dependency profile
442
+ opensportslib setup --vqa_qwen
417
443
  ```
418
444
 
419
445
  ### Git workflow
@@ -29,7 +29,6 @@ opensportslib/configs/localization/netvladpp_resnetpca512.yaml
29
29
  opensportslib/configs/localization/video_dali.yaml
30
30
  opensportslib/configs/localization/video_ocv.yaml
31
31
  opensportslib/configs/vqa/qwen.yaml
32
- opensportslib/configs/vqa/xvars_lora.yaml
33
32
  opensportslib/core/__init__.py
34
33
  opensportslib/core/config/__init__.py
35
34
  opensportslib/core/config/accessors.py
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "opensportslib"
7
- version = "0.2.0.dev2"
7
+ version = "0.2.0.dev3"
8
8
  description = "OpenSportsLib is the professional library, designed for advanced video understanding in sports. It provides state-of-the-art tools for action recognition, spotting, retrieval, and captioning, making it ideal for researchers, analysts, and developers working with sports video data."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -1,7 +1,6 @@
1
1
  from pathlib import Path
2
2
 
3
3
  import pytest
4
- import yaml
5
4
 
6
5
  from opensportslib.core.config import load_config, migrate_config, validate_config
7
6
  from opensportslib.core.config.accessors import (
@@ -25,16 +24,19 @@ def test_public_config_api_is_canonical_first():
25
24
  def test_legacy_inputs_route_through_migration(tmp_path):
26
25
  config_path = tmp_path / "legacy.yaml"
27
26
  config_path.write_text(
28
- yaml.safe_dump(
29
- {
30
- "DATA": {
31
- "data_dir": str(tmp_path / "data"),
32
- "annotations": {"train": str(tmp_path / "train.json")},
33
- },
34
- "MODEL": {"backbone": {"type": "smoke_backbone"}},
35
- "SYSTEM": {"save_dir": str(tmp_path / "ckpt")},
36
- },
37
- sort_keys=False,
27
+ "\n".join(
28
+ [
29
+ "DATA:",
30
+ f" data_dir: {tmp_path / 'data'}",
31
+ " annotations:",
32
+ f" train: {tmp_path / 'train.json'}",
33
+ "MODEL:",
34
+ " backbone:",
35
+ " type: smoke_backbone",
36
+ "SYSTEM:",
37
+ f" save_dir: {tmp_path / 'ckpt'}",
38
+ "",
39
+ ]
38
40
  ),
39
41
  encoding="utf-8",
40
42
  )
@@ -83,6 +85,33 @@ def test_localization_experiment_composes_all_layers():
83
85
  assert cfg["MODEL"]["components"]["video_encoder"]["source"]["name"] == "rny008_gsm"
84
86
 
85
87
 
88
+ def test_vqa_xvars_experiment_composes_all_layers():
89
+ cfg = load_config("opensportslib/configs/vqa/xvars.yaml", as_namespace=False)
90
+
91
+ assert cfg["VERSION"] == 2
92
+ assert cfg["TASK"] == "vqa"
93
+ assert cfg["SYSTEM"]["paths"]["log_dir"] == "./logs"
94
+ assert cfg["SYSTEM"]["paths"]["save_dir"] == "./checkpoints_vqa_lora"
95
+ assert cfg["SYSTEM"]["paths"]["work_dir"] == "./checkpoints_vqa_lora"
96
+ assert cfg["DATA"]["common"]["runtime"]["loader_backend"] == "opencv"
97
+ assert cfg["MODEL"]["metadata"]["backend"] == "xvars_videochatgpt"
98
+ assert cfg["TRAIN"]["execution"]["hf"]["tokenizer_id"] == "/home/vorajv/X-VARS/weights/base_model_videoChatGPT"
99
+
100
+
101
+ def test_vqa_qwen_experiment_composes_all_layers():
102
+ cfg = load_config("opensportslib/configs/vqa/qwen.yaml", as_namespace=False)
103
+
104
+ assert cfg["VERSION"] == 2
105
+ assert cfg["TASK"] == "vqa"
106
+ assert cfg["SYSTEM"]["paths"]["log_dir"] == "./logs"
107
+ assert cfg["SYSTEM"]["paths"]["save_dir"] == "./checkpoints_vqa_qwen"
108
+ assert cfg["SYSTEM"]["paths"]["work_dir"] == "./checkpoints_vqa_qwen"
109
+ assert cfg["DATA"]["common"]["runtime"]["loader_backend"] == "opencv"
110
+ assert cfg["MODEL"]["metadata"]["backend"] == "qwen_xvars_infer"
111
+ assert cfg["MODEL"]["components"]["llm_decoder"]["source"]["name"] == "Qwen/Qwen3.5-9B-Base"
112
+ assert cfg["TRAIN"]["execution"]["hf"]["offload_folder"] == "./hf_offload_qwen"
113
+
114
+
86
115
  def test_validation_accepts_canonical_schema():
87
116
  canonical = load_config(
88
117
  "opensportslib/configs/localization/default.yaml",
@@ -1,228 +0,0 @@
1
- TASK: VQA
2
- VERSION: 2
3
-
4
- SYSTEM:
5
- paths:
6
- log_dir: ./logs
7
- save_dir: ./checkpoints_vqa_qwen
8
- work_dir: ./checkpoints_vqa_qwen
9
- device: cuda
10
- gpu:
11
- count: 1
12
- id: 0
13
- reproducibility:
14
- use_seed: true
15
- seed: 42
16
-
17
- DATA:
18
- common:
19
- dataset_name: OSL-XFoul
20
- data_root: /home/vorajv/dataset/OSL-XFoul
21
- feature_index: /home/vorajv/dataset/OSL-XFoul/feature_index.json
22
- prediction_index: /home/vorajv/dataset/OSL-XFoul/prediction_index.json
23
- runtime:
24
- loader_backend: opencv
25
- splits:
26
- train:
27
- annotation_path: /home/vorajv/dataset/OSL-XFoul/train.json
28
- source_path: /home/vorajv/dataset/OSL-XFoul
29
- dataloader:
30
- batch_size: 1
31
- shuffle: true
32
- num_workers: 0
33
- pin_memory: false
34
- mp_context: spawn
35
- persistent_workers: false
36
- valid:
37
- annotation_path: /home/vorajv/dataset/OSL-XFoul/valid.json
38
- source_path: /home/vorajv/dataset/OSL-XFoul
39
- dataloader:
40
- batch_size: 1
41
- shuffle: false
42
- num_workers: 0
43
- pin_memory: false
44
- mp_context: spawn
45
- persistent_workers: false
46
- test:
47
- annotation_path: /home/vorajv/dataset/OSL-XFoul/test.json
48
- source_path: /home/vorajv/dataset/OSL-XFoul
49
- dataloader:
50
- batch_size: 1
51
- shuffle: false
52
- num_workers: 0
53
- pin_memory: false
54
- mp_context: spawn
55
- persistent_workers: false
56
- inputs:
57
- video:
58
- modality: video
59
- representation: raw
60
- source:
61
- format: mp4
62
- sampling:
63
- num_frames: 100
64
- input_fps: 25
65
- target_fps: 17
66
- start_frame: 63
67
- end_frame: 87
68
- transform: {}
69
- augmentations: {}
70
- params: {}
71
- question:
72
- modality: text
73
- representation: raw
74
- source:
75
- format: json
76
- sampling: {}
77
- transform: {}
78
- augmentations: {}
79
- params: {}
80
-
81
- MODEL:
82
- runtime:
83
- dtype: fp16
84
- device: auto
85
- compile: false
86
- freeze: false
87
- load:
88
- checkpoint_path: null
89
- pretrained: false
90
- strict: true
91
- map_location: null
92
- format: auto
93
- components:
94
- video_encoder:
95
- kind: encoder
96
- source:
97
- provider: opensportslib
98
- name: xvars_clip_features
99
- load:
100
- weights_path: /home/vorajv/X-VARS/weights/14_model.pth.tar
101
- params:
102
- feature_source: indexed_or_raw_clip
103
- vision_tower: openai/clip-vit-large-patch14
104
- feature_dim: 1024
105
- overrides: {}
106
- mm_projector:
107
- kind: projector
108
- source:
109
- provider: opensportslib
110
- params:
111
- input_dim: 1024
112
- overrides: {}
113
- llm_decoder:
114
- kind: decoder
115
- source:
116
- provider: huggingface
117
- # Qwen/Qwen2.5-7B-Instruct or Qwen/Qwen3.5-9B-Base
118
- name: Qwen/Qwen3.5-9B-Base
119
- params:
120
- # Qwen/Qwen2.5-7B-Instruct or Qwen/Qwen3.5-9B-Base
121
- repo_id: Qwen/Qwen3.5-9B-Base
122
- overrides: {}
123
- topology:
124
- - from: video_encoder
125
- to: mm_projector
126
- - from: mm_projector
127
- to: llm_decoder
128
- metadata:
129
- backend: qwen_xvars_infer
130
-
131
- IO:
132
- inputs:
133
- video: video_encoder
134
- question: llm_decoder
135
- outputs:
136
- answer_text: llm_decoder
137
- explanation_text: llm_decoder
138
-
139
- TRAIN:
140
- trainer:
141
- type: vqa
142
-
143
- epochs: 3
144
-
145
- criterion:
146
- type: CrossEntropyLoss
147
-
148
- optimizer:
149
- type: AdamW
150
- lr: 0.0002
151
- weight_decay: 0.001
152
-
153
- scheduler:
154
- type: constant
155
-
156
- execution:
157
- enabled: true
158
- training_backend: xvars_videochatgpt_lora
159
- feature_backend: xvars_clip
160
- view_sampling_policy: random_train_deterministic_eval
161
- acc_grad_iter: 8
162
- log_interval: 1
163
- dry_run: false
164
-
165
- xvars:
166
- feature_mode: strict_xvars
167
- projection_path: null
168
-
169
- prompt:
170
- style: detailed
171
- system_prompt: You are a football video assistant. Answer the VQA question using the provided video context and referee priors.
172
- include_priors: true
173
- prediction_prior_adapter: xvars_referee
174
- prior_fields: [action, offence, contact, bodypart]
175
- video_token_len: 300
176
-
177
- generation:
178
- max_new_tokens: 128
179
- temperature: 0.0
180
-
181
- eval_profile:
182
- metric_set: [exact_match, contains_match, token_f1, referee_semantic]
183
- aggregation: mean
184
- exclusions: []
185
-
186
- sft:
187
- max_seq_length: 480
188
- include_video_tokens: true
189
- disable_tqdm: false
190
- reference_mode: all
191
- append_eos_token: true
192
- gradient_checkpointing: true
193
- save_strategy: epoch
194
-
195
- hf:
196
- tokenizer_id: ${MODEL.components.llm_decoder.params.repo_id}
197
- prefer_cuda: true
198
- local_files_only: false
199
- device_map: auto
200
- offload_folder: ./hf_offload_qwen
201
-
202
- lora:
203
- r: 16
204
- alpha: 32
205
- dropout: 0.05
206
- bias: none
207
- prepare_kbit: true
208
- target_modules: [mm_projector, upsample_features, up_proj, down_proj, gate_proj, k_proj, q_proj, v_proj, o_proj]
209
- exclude_modules: '^base_lm\.model\.mm_projector$'
210
-
211
- quantization:
212
- enabled: false
213
- load_in_4bit: true
214
- bnb_4bit_quant_type: nf4
215
- compute_dtype: float16
216
- bnb_4bit_use_double_quant: true
217
-
218
- checkpoint:
219
- save_adapter: true
220
- merge_and_save: false
221
-
222
- selection:
223
- monitor: loss
224
- mode: min
225
-
226
- checkpoint:
227
- save_every: 1
228
- save_best: true