ins-pricing 0.4.2__tar.gz → 0.4.3__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 (143) hide show
  1. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/PKG-INFO +1 -1
  2. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/config_preprocess.py +7 -0
  3. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/trainers/trainer_base.py +13 -0
  4. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/trainers/trainer_ft.py +12 -7
  5. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/trainers/trainer_gnn.py +1 -1
  6. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/trainers/trainer_resn.py +2 -1
  7. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/utils/torch_trainer_mixin.py +8 -0
  8. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/setup.py +1 -1
  9. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing.egg-info/PKG-INFO +1 -1
  10. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/pyproject.toml +1 -1
  11. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/MANIFEST.in +0 -0
  12. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/README.md +0 -0
  13. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/CHANGELOG.md +0 -0
  14. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/README.md +0 -0
  15. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/RELEASE_NOTES_0.2.8.md +0 -0
  16. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/__init__.py +0 -0
  17. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/BayesOpt_entry.py +0 -0
  18. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/BayesOpt_incremental.py +0 -0
  19. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/Explain_Run.py +0 -0
  20. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/Explain_entry.py +0 -0
  21. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/Pricing_Run.py +0 -0
  22. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/__init__.py +0 -0
  23. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/bayesopt_entry_runner.py +0 -0
  24. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/utils/__init__.py +0 -0
  25. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/utils/cli_common.py +0 -0
  26. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/utils/cli_config.py +0 -0
  27. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/utils/evaluation_context.py +0 -0
  28. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/utils/import_resolver.py +0 -0
  29. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/utils/notebook_utils.py +0 -0
  30. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/utils/run_logging.py +0 -0
  31. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/cli/watchdog_run.py +0 -0
  32. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/docs/LOSS_FUNCTIONS.md +0 -0
  33. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/docs/modelling/BayesOpt_USAGE.md +0 -0
  34. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/docs/modelling/README.md +0 -0
  35. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/exceptions.py +0 -0
  36. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/frontend/QUICKSTART.md +0 -0
  37. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/frontend/README.md +0 -0
  38. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/frontend/__init__.py +0 -0
  39. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/frontend/app.py +0 -0
  40. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/frontend/config_builder.py +0 -0
  41. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/frontend/example_config.json +0 -0
  42. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/frontend/example_workflows.py +0 -0
  43. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/frontend/ft_workflow.py +0 -0
  44. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/frontend/runner.py +0 -0
  45. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/governance/README.md +0 -0
  46. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/governance/__init__.py +0 -0
  47. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/governance/approval.py +0 -0
  48. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/governance/audit.py +0 -0
  49. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/governance/registry.py +0 -0
  50. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/governance/release.py +0 -0
  51. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/__init__.py +0 -0
  52. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/BayesOpt.py +0 -0
  53. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/__init__.py +0 -0
  54. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/PHASE2_REFACTORING_SUMMARY.md +0 -0
  55. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/PHASE3_REFACTORING_SUMMARY.md +0 -0
  56. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/REFACTORING_SUMMARY.md +0 -0
  57. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/__init__.py +0 -0
  58. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/config_components.py +0 -0
  59. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/core.py +0 -0
  60. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/model_explain_mixin.py +0 -0
  61. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/model_plotting_mixin.py +0 -0
  62. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/models/__init__.py +0 -0
  63. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/models/model_ft_components.py +0 -0
  64. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/models/model_ft_trainer.py +0 -0
  65. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/models/model_gnn.py +0 -0
  66. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/models/model_resn.py +0 -0
  67. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/trainers/__init__.py +0 -0
  68. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/trainers/trainer_glm.py +0 -0
  69. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/trainers/trainer_xgb.py +0 -0
  70. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/utils/__init__.py +0 -0
  71. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/utils/constants.py +0 -0
  72. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/utils/distributed_utils.py +0 -0
  73. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/utils/io_utils.py +0 -0
  74. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/utils/losses.py +0 -0
  75. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/utils/metrics_and_devices.py +0 -0
  76. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/utils.py +0 -0
  77. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/bayesopt/utils_backup.py +0 -0
  78. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/core/evaluation.py +0 -0
  79. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/explain/__init__.py +0 -0
  80. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/explain/gradients.py +0 -0
  81. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/explain/metrics.py +0 -0
  82. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/explain/permutation.py +0 -0
  83. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/explain/shap_utils.py +0 -0
  84. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/plotting/__init__.py +0 -0
  85. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/plotting/common.py +0 -0
  86. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/plotting/curves.py +0 -0
  87. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/plotting/diagnostics.py +0 -0
  88. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/plotting/geo.py +0 -0
  89. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/modelling/plotting/importance.py +0 -0
  90. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/pricing/README.md +0 -0
  91. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/pricing/__init__.py +0 -0
  92. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/pricing/calibration.py +0 -0
  93. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/pricing/data_quality.py +0 -0
  94. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/pricing/exposure.py +0 -0
  95. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/pricing/factors.py +0 -0
  96. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/pricing/monitoring.py +0 -0
  97. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/pricing/rate_table.py +0 -0
  98. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/production/__init__.py +0 -0
  99. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/production/drift.py +0 -0
  100. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/production/monitoring.py +0 -0
  101. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/production/predict.py +0 -0
  102. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/production/preprocess.py +0 -0
  103. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/production/scoring.py +0 -0
  104. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/reporting/README.md +0 -0
  105. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/reporting/__init__.py +0 -0
  106. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/reporting/report_builder.py +0 -0
  107. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/reporting/scheduler.py +0 -0
  108. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/governance/__init__.py +0 -0
  109. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/governance/test_audit.py +0 -0
  110. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/governance/test_registry.py +0 -0
  111. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/governance/test_release.py +0 -0
  112. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/modelling/conftest.py +0 -0
  113. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/modelling/test_cross_val_generic.py +0 -0
  114. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/modelling/test_distributed_utils.py +0 -0
  115. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/modelling/test_explain.py +0 -0
  116. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/modelling/test_geo_tokens_split.py +0 -0
  117. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/modelling/test_graph_cache.py +0 -0
  118. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/modelling/test_plotting.py +0 -0
  119. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/modelling/test_plotting_library.py +0 -0
  120. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/modelling/test_preprocessor.py +0 -0
  121. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/pricing/__init__.py +0 -0
  122. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/pricing/test_calibration.py +0 -0
  123. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/pricing/test_exposure.py +0 -0
  124. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/pricing/test_factors.py +0 -0
  125. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/pricing/test_rate_table.py +0 -0
  126. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/production/__init__.py +0 -0
  127. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/production/test_monitoring.py +0 -0
  128. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/production/test_predict.py +0 -0
  129. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/production/test_preprocess.py +0 -0
  130. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/tests/production/test_scoring.py +0 -0
  131. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/utils/__init__.py +0 -0
  132. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/utils/device.py +0 -0
  133. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/utils/logging.py +0 -0
  134. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/utils/metrics.py +0 -0
  135. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/utils/paths.py +0 -0
  136. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/utils/profiling.py +0 -0
  137. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/utils/torch_compat.py +0 -0
  138. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing/utils/validation.py +0 -0
  139. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing.egg-info/SOURCES.txt +0 -0
  140. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing.egg-info/dependency_links.txt +0 -0
  141. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing.egg-info/requires.txt +0 -0
  142. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/ins_pricing.egg-info/top_level.txt +0 -0
  143. {ins_pricing-0.4.2 → ins_pricing-0.4.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ins_pricing
3
- Version: 0.4.2
3
+ Version: 0.4.3
4
4
  Summary: Reusable modelling, pricing, governance, and reporting utilities.
5
5
  Author: meishi125478
6
6
  License: Proprietary
@@ -195,6 +195,7 @@ class BayesOptConfig:
195
195
  cache_predictions: bool = False
196
196
  prediction_cache_dir: Optional[str] = None
197
197
  prediction_cache_format: str = "parquet"
198
+ dataloader_workers: Optional[int] = None
198
199
 
199
200
  def __post_init__(self) -> None:
200
201
  """Validate configuration after initialization."""
@@ -210,6 +211,12 @@ class BayesOptConfig:
210
211
  errors.append(
211
212
  f"task_type must be one of {valid_task_types}, got '{self.task_type}'"
212
213
  )
214
+ if self.dataloader_workers is not None:
215
+ try:
216
+ if int(self.dataloader_workers) < 0:
217
+ errors.append("dataloader_workers must be >= 0 when provided.")
218
+ except (TypeError, ValueError):
219
+ errors.append("dataloader_workers must be an integer when provided.")
213
220
  # Validate loss_name
214
221
  try:
215
222
  normalized_loss = normalize_loss_name(self.loss_name, self.task_type)
@@ -306,6 +306,19 @@ class TrainerBase:
306
306
  self.enable_distributed_optuna: bool = False
307
307
  self._distributed_forced_params: Optional[Dict[str, Any]] = None
308
308
 
309
+ def _apply_dataloader_overrides(self, model: Any) -> Any:
310
+ """Apply dataloader-related overrides from config to a model."""
311
+ cfg = getattr(self.ctx, "config", None)
312
+ if cfg is None:
313
+ return model
314
+ workers = getattr(cfg, "dataloader_workers", None)
315
+ if workers is not None:
316
+ model.dataloader_workers = int(workers)
317
+ profile = getattr(cfg, "resource_profile", None)
318
+ if profile:
319
+ model.resource_profile = str(profile)
320
+ return model
321
+
309
322
  def _export_preprocess_artifacts(self) -> Dict[str, Any]:
310
323
  dummy_columns: List[str] = []
311
324
  if getattr(self.ctx, "train_oht_data", None) is not None:
@@ -163,6 +163,7 @@ class FTTrainer(TrainerBase):
163
163
  num_numeric_tokens=num_numeric_tokens,
164
164
  loss_name=loss_name,
165
165
  )
166
+ model = self._apply_dataloader_overrides(model)
166
167
  model.set_params(model_params)
167
168
  try:
168
169
  return float(model.fit_unsupervised(
@@ -248,7 +249,7 @@ class FTTrainer(TrainerBase):
248
249
  requested_heads=params.get("n_heads")
249
250
  )
250
251
 
251
- return FTTransformerSklearn(
252
+ model = FTTransformerSklearn(
252
253
  model_nme=self.ctx.model_nme,
253
254
  num_cols=self.ctx.num_features,
254
255
  cat_cols=self.ctx.cate_list,
@@ -266,7 +267,10 @@ class FTTrainer(TrainerBase):
266
267
  use_ddp=self.ctx.config.use_ft_ddp,
267
268
  num_numeric_tokens=num_numeric_tokens,
268
269
  loss_name=loss_name,
269
- ).set_params({"_geo_params": geo_params_local} if geo_enabled else {})
270
+ )
271
+ model = self._apply_dataloader_overrides(model)
272
+ model.set_params({"_geo_params": geo_params_local} if geo_enabled else {})
273
+ return model
270
274
 
271
275
  def fit_predict(model, X_train, y_train, w_train, X_val, y_val, w_val, trial_obj):
272
276
  geo_train = geo_val = None
@@ -353,6 +357,7 @@ class FTTrainer(TrainerBase):
353
357
  weight_decay=float(resolved_params.get("weight_decay", 0.0)),
354
358
  loss_name=loss_name,
355
359
  )
360
+ tmp_model = self._apply_dataloader_overrides(tmp_model)
356
361
  tmp_model.set_params(resolved_params)
357
362
  geo_train_full = self.ctx.train_geo_tokens
358
363
  geo_train = None if geo_train_full is None else geo_train_full.iloc[train_idx]
@@ -387,6 +392,7 @@ class FTTrainer(TrainerBase):
387
392
  weight_decay=float(resolved_params.get("weight_decay", 0.0)),
388
393
  loss_name=loss_name,
389
394
  )
395
+ self.model = self._apply_dataloader_overrides(self.model)
390
396
  if refit_epochs is not None:
391
397
  self.model.epochs = int(refit_epochs)
392
398
  self.model.set_params(resolved_params)
@@ -460,6 +466,7 @@ class FTTrainer(TrainerBase):
460
466
  weight_decay=float(resolved_params.get("weight_decay", 0.0)),
461
467
  loss_name=loss_name,
462
468
  )
469
+ model = self._apply_dataloader_overrides(model)
463
470
  model.set_params(resolved_params)
464
471
 
465
472
  geo_train = geo_val = None
@@ -565,6 +572,7 @@ class FTTrainer(TrainerBase):
565
572
  num_numeric_tokens=self._resolve_numeric_tokens(),
566
573
  loss_name=loss_name,
567
574
  )
575
+ model = self._apply_dataloader_overrides(model)
568
576
  adaptive_heads, heads_adjusted = self._resolve_adaptive_heads(
569
577
  d_model=resolved_params.get("d_model", model.d_model),
570
578
  requested_heads=resolved_params.get("n_heads"),
@@ -728,6 +736,7 @@ class FTTrainer(TrainerBase):
728
736
  num_numeric_tokens=self._resolve_numeric_tokens(),
729
737
  loss_name=loss_name,
730
738
  )
739
+ self.model = self._apply_dataloader_overrides(self.model)
731
740
  resolved_params = dict(params or {})
732
741
  # Reuse supervised tuning structure params unless explicitly overridden.
733
742
  if not resolved_params and self.best_params:
@@ -797,8 +806,4 @@ class FTTrainer(TrainerBase):
797
806
  self.model,
798
807
  pred_prefix=pred_prefix,
799
808
  predict_kwargs_train=predict_kwargs_train,
800
- predict_kwargs_test=predict_kwargs_test
801
- )
802
-
803
-
804
- # =============================================================================
809
+
@@ -59,7 +59,7 @@ class GNNTrainer(TrainerBase):
59
59
  self.ctx.config.gnn_knn_gpu_mem_overhead),
60
60
  loss_name=loss_name,
61
61
  )
62
- return model
62
+ return self._apply_dataloader_overrides(model)
63
63
 
64
64
  def cross_val(self, trial: optuna.trial.Trial) -> float:
65
65
  base_tw_power = self.ctx.default_tweedie_power()
@@ -45,7 +45,7 @@ class ResNetTrainer(TrainerBase):
45
45
  getattr(self.ctx.config, "resn_weight_decay", 1e-4),
46
46
  )
47
47
  )
48
- return ResNetSklearn(
48
+ model = ResNetSklearn(
49
49
  model_nme=self.ctx.model_nme,
50
50
  input_dim=self._resolve_input_dim(),
51
51
  hidden_dim=int(params.get("hidden_dim", 64)),
@@ -64,6 +64,7 @@ class ResNetTrainer(TrainerBase):
64
64
  use_ddp=self.ctx.config.use_resn_ddp,
65
65
  loss_name=loss_name
66
66
  )
67
+ return self._apply_dataloader_overrides(model)
67
68
 
68
69
  # ========= Cross-validation (for BayesOpt) =========
69
70
  def cross_val(self, trial: optuna.trial.Trial) -> float:
@@ -232,6 +232,14 @@ class TorchTrainerMixin:
232
232
  """Determine number of DataLoader workers."""
233
233
  if os.name == 'nt':
234
234
  return 0
235
+ override = getattr(self, "dataloader_workers", None)
236
+ if override is None:
237
+ override = os.environ.get("BAYESOPT_DATALOADER_WORKERS")
238
+ if override is not None:
239
+ try:
240
+ return max(0, int(override))
241
+ except (TypeError, ValueError):
242
+ pass
235
243
  if getattr(self, "is_ddp_enabled", False):
236
244
  return 0
237
245
  profile = profile or self._resolve_resource_profile()
@@ -3,7 +3,7 @@ from setuptools import setup, find_packages
3
3
 
4
4
  setup(
5
5
  name="ins_pricing",
6
- version="0.4.2",
6
+ version="0.4.3",
7
7
  description="Reusable modelling, pricing, governance, and reporting utilities.",
8
8
  author="meishi125478",
9
9
  license="Proprietary",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ins_pricing
3
- Version: 0.4.2
3
+ Version: 0.4.3
4
4
  Summary: Reusable modelling, pricing, governance, and reporting utilities.
5
5
  Author: meishi125478
6
6
  License: Proprietary
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ins_pricing"
7
- version = "0.4.2"
7
+ version = "0.4.3"
8
8
  description = "Reusable modelling, pricing, governance, and reporting utilities."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
File without changes
File without changes
File without changes