snowflake-ml-python 1.9.1__tar.gz → 1.9.2__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 (445) hide show
  1. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/CHANGELOG.md +38 -1
  2. {snowflake_ml_python-1.9.1/snowflake_ml_python.egg-info → snowflake_ml_python-1.9.2}/PKG-INFO +42 -4
  3. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/pyproject.toml +3 -3
  4. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/mixins.py +6 -4
  5. snowflake_ml_python-1.9.2/snowflake/ml/_internal/utils/service_logger.py +165 -0
  6. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/data/_internal/arrow_ingestor.py +4 -1
  7. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/data/data_connector.py +4 -34
  8. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/dataset/dataset.py +1 -1
  9. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/dataset/dataset_reader.py +2 -8
  10. snowflake_ml_python-1.9.2/snowflake/ml/experiment/__init__.py +3 -0
  11. snowflake_ml_python-1.9.2/snowflake/ml/experiment/callback.py +121 -0
  12. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/constants.py +15 -4
  13. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/payload_utils.py +150 -49
  14. snowflake_ml_python-1.9.2/snowflake/ml/jobs/_utils/scripts/constants.py +4 -0
  15. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +125 -22
  16. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/spec_utils.py +1 -1
  17. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/stage_utils.py +30 -14
  18. snowflake_ml_python-1.9.2/snowflake/ml/jobs/_utils/types.py +109 -0
  19. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/job.py +22 -6
  20. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/manager.py +5 -3
  21. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/ops/service_ops.py +17 -2
  22. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/sql/service.py +1 -38
  23. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/sklearn.py +9 -5
  24. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +1 -0
  25. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/pandas_handler.py +3 -0
  26. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/utils.py +4 -0
  27. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/model_signature.py +2 -0
  28. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/version.py +1 -1
  29. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2/snowflake_ml_python.egg-info}/PKG-INFO +42 -4
  30. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake_ml_python.egg-info/SOURCES.txt +2 -0
  31. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake_ml_python.egg-info/requires.txt +3 -2
  32. snowflake_ml_python-1.9.1/snowflake/ml/_internal/utils/service_logger.py +0 -65
  33. snowflake_ml_python-1.9.1/snowflake/ml/jobs/_utils/scripts/constants.py +0 -26
  34. snowflake_ml_python-1.9.1/snowflake/ml/jobs/_utils/types.py +0 -49
  35. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/LICENSE.txt +0 -0
  36. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/README.md +0 -0
  37. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/setup.cfg +0 -0
  38. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/__init__.py +0 -0
  39. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_classify_text.py +0 -0
  40. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_complete.py +0 -0
  41. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_embed_text_1024.py +0 -0
  42. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_embed_text_768.py +0 -0
  43. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_extract_answer.py +0 -0
  44. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_finetune.py +0 -0
  45. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_sentiment.py +0 -0
  46. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_sse_client.py +0 -0
  47. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_summarize.py +0 -0
  48. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_translate.py +0 -0
  49. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_util.py +0 -0
  50. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/env.py +0 -0
  51. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/env_utils.py +0 -0
  52. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
  53. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
  54. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
  55. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
  56. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
  57. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
  58. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
  59. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
  60. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
  61. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/file_utils.py +0 -0
  62. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
  63. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
  64. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
  65. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
  66. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/init_utils.py +0 -0
  67. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
  68. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/migrator_utils.py +0 -0
  69. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/platform_capabilities.py +0 -0
  70. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
  71. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/telemetry.py +0 -0
  72. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/type_utils.py +0 -0
  73. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/connection_params.py +0 -0
  74. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/db_utils.py +0 -0
  75. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/formatting.py +0 -0
  76. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/identifier.py +0 -0
  77. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/import_utils.py +0 -0
  78. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
  79. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/parallelize.py +0 -0
  80. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
  81. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
  82. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/result.py +0 -0
  83. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
  84. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
  85. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
  86. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/table_manager.py +0 -0
  87. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
  88. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/data/__init__.py +0 -0
  89. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/data/data_ingestor.py +0 -0
  90. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/data/data_source.py +0 -0
  91. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/data/ingestor_utils.py +0 -0
  92. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/data/torch_utils.py +0 -0
  93. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/dataset/__init__.py +0 -0
  94. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/dataset/dataset_factory.py +0 -0
  95. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/dataset/dataset_metadata.py +0 -0
  96. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
  97. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/experiment/_entities/__init__.py +0 -0
  98. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/experiment/_entities/experiment.py +0 -0
  99. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/experiment/_entities/run.py +0 -0
  100. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
  101. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/experiment/_experiment_info.py +0 -0
  102. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/experiment/experiment_tracking.py +0 -0
  103. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/__init__.py +0 -0
  104. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/access_manager.py +0 -0
  105. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/entity.py +0 -0
  106. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
  107. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
  108. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
  109. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
  110. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
  111. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
  112. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
  113. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
  114. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
  115. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
  116. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
  117. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
  118. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
  119. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
  120. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
  121. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
  122. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
  123. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
  124. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
  125. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
  126. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
  127. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
  128. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/feature_store.py +0 -0
  129. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/feature_view.py +0 -0
  130. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
  131. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/fileset/fileset.py +0 -0
  132. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/fileset/sfcfs.py +0 -0
  133. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/fileset/snowfs.py +0 -0
  134. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/fileset/stage_fs.py +0 -0
  135. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/__init__.py +0 -0
  136. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/function_payload_utils.py +0 -0
  137. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/interop_utils.py +0 -0
  138. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/query_helper.py +0 -0
  139. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +0 -0
  140. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
  141. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
  142. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/decorators.py +0 -0
  143. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/lineage/__init__.py +0 -0
  144. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/lineage/lineage_node.py +0 -0
  145. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/__init__.py +0 -0
  146. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/model/model_impl.py +0 -0
  147. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/model/model_version_impl.py +0 -0
  148. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
  149. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/ops/model_ops.py +0 -0
  150. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -0
  151. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
  152. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/sql/_base.py +0 -0
  153. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/sql/model.py +0 -0
  154. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/sql/model_version.py +0 -0
  155. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/sql/stage.py +0 -0
  156. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/sql/tag.py +0 -0
  157. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
  158. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
  159. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
  160. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
  161. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
  162. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
  163. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
  164. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
  165. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
  166. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
  167. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_env/model_env.py +0 -0
  168. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handler.py +0 -0
  169. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
  170. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
  171. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
  172. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
  173. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/huggingface_pipeline.py +0 -0
  174. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
  175. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
  176. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
  177. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
  178. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
  179. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
  180. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
  181. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
  182. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
  183. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
  184. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
  185. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
  186. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
  187. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
  188. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
  189. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_meta/model_meta.py +0 -0
  190. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
  191. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
  192. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
  193. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
  194. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_packager.py +0 -0
  195. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
  196. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
  197. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/base_handler.py +0 -0
  198. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
  199. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/core.py +0 -0
  200. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
  201. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
  202. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
  203. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
  204. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
  205. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/custom_model.py +0 -0
  206. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/event_handler.py +0 -0
  207. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
  208. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/target_platform.py +0 -0
  209. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/task.py +0 -0
  210. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/type_hints.py +0 -0
  211. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
  212. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
  213. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
  214. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
  215. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
  216. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
  217. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
  218. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
  219. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
  220. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
  221. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
  222. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
  223. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
  224. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/calibration/__init__.py +0 -0
  225. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
  226. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/__init__.py +0 -0
  227. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
  228. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
  229. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/birch.py +0 -0
  230. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
  231. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
  232. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
  233. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/k_means.py +0 -0
  234. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
  235. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
  236. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/optics.py +0 -0
  237. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
  238. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
  239. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
  240. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/compose/__init__.py +0 -0
  241. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
  242. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
  243. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/__init__.py +0 -0
  244. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
  245. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
  246. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
  247. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
  248. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
  249. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
  250. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/oas.py +0 -0
  251. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
  252. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
  253. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
  254. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
  255. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
  256. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
  257. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
  258. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
  259. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
  260. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/pca.py +0 -0
  261. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
  262. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
  263. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
  264. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
  265. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
  266. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
  267. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
  268. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
  269. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
  270. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
  271. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
  272. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
  273. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
  274. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
  275. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
  276. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
  277. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
  278. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
  279. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
  280. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
  281. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
  282. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
  283. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
  284. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
  285. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
  286. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
  287. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
  288. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
  289. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
  290. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
  291. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
  292. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/framework/_utils.py +0 -0
  293. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/framework/base.py +0 -0
  294. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
  295. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
  296. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
  297. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/impute/__init__.py +0 -0
  298. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
  299. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
  300. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
  301. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
  302. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
  303. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
  304. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
  305. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
  306. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
  307. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
  308. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
  309. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
  310. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
  311. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
  312. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
  313. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
  314. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
  315. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
  316. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
  317. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
  318. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
  319. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
  320. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/lars.py +0 -0
  321. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
  322. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
  323. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
  324. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
  325. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
  326. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
  327. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
  328. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
  329. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
  330. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
  331. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
  332. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
  333. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
  334. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
  335. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
  336. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
  337. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
  338. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
  339. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
  340. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
  341. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
  342. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
  343. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
  344. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
  345. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
  346. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
  347. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
  348. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
  349. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/manifold/__init__.py +0 -0
  350. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/manifold/isomap.py +0 -0
  351. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/manifold/mds.py +0 -0
  352. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
  353. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/manifold/tsne.py +0 -0
  354. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/metrics/__init__.py +0 -0
  355. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/metrics/classification.py +0 -0
  356. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/metrics/correlation.py +0 -0
  357. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/metrics/covariance.py +0 -0
  358. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
  359. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/metrics/ranking.py +0 -0
  360. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/metrics/regression.py +0 -0
  361. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/mixture/__init__.py +0 -0
  362. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
  363. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
  364. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
  365. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
  366. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
  367. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
  368. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
  369. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
  370. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
  371. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
  372. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
  373. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
  374. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
  375. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
  376. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
  377. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
  378. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
  379. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
  380. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
  381. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
  382. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
  383. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
  384. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
  385. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
  386. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
  387. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
  388. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
  389. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
  390. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
  391. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
  392. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
  393. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
  394. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
  395. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
  396. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
  397. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
  398. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
  399. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
  400. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
  401. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
  402. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
  403. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
  404. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
  405. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
  406. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
  407. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
  408. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
  409. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
  410. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
  411. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/svm/__init__.py +0 -0
  412. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
  413. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
  414. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
  415. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
  416. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/svm/svc.py +0 -0
  417. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/svm/svr.py +0 -0
  418. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/tree/__init__.py +0 -0
  419. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
  420. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
  421. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
  422. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
  423. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
  424. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
  425. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
  426. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
  427. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
  428. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
  429. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
  430. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
  431. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
  432. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
  433. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/explain_visualize.py +0 -0
  434. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/model_monitor.py +0 -0
  435. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/shap.py +0 -0
  436. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/registry/__init__.py +0 -0
  437. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/registry/_manager/model_manager.py +0 -0
  438. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/registry/registry.py +0 -0
  439. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/utils/authentication.py +0 -0
  440. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/utils/connection_params.py +0 -0
  441. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/utils/html_utils.py +0 -0
  442. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/utils/sparse.py +0 -0
  443. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/utils/sql_client.py +0 -0
  444. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
  445. {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake_ml_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,43 @@
1
1
  # Release History
2
2
 
3
- ## 1.9.1
3
+ ## 1.9.2
4
+
5
+ ### Bug Fixes
6
+
7
+ - DataConnector: Fix `self._session` related errors inside Container Runtime.
8
+ - Registry: Fix a bug when trying to pass `None` to array (`pd.dtype('O')`) in signature and pandas data handler.
9
+
10
+ ### New Features
11
+
12
+ - Experiment Tracking (PrPr): Automatically log the model, metrics, and parameters while training
13
+ XGBoost and LightGBM models.
14
+
15
+ ```python
16
+ from snowflake.ml.experiment import ExperimentTracking
17
+ from snowflake.ml.experiment.callback import SnowflakeXgboostCallback, SnowflakeLightgbmCallback
18
+
19
+ exp = ExperimentTracking(session=sp_session, database_name="ML", schema_name="PUBLIC")
20
+
21
+ exp.set_experiment("MY_EXPERIMENT")
22
+
23
+ # XGBoost
24
+ callback = SnowflakeXgboostCallback(
25
+ exp, log_model=True, log_metrics=True, log_params=True, model_name="model_name", model_signature=sig
26
+ )
27
+ model = XGBClassifier(callbacks=[callback])
28
+ with exp.start_run():
29
+ model.fit(X, y, eval_set=[(X_test, y_test)])
30
+
31
+ # LightGBM
32
+ callback = SnowflakeLightgbmCallback(
33
+ exp, log_model=True, log_metrics=True, log_params=True, model_name="model_name", model_signature=sig
34
+ )
35
+ model = LGBMClassifier()
36
+ with exp.start_run():
37
+ model.fit(X, y, eval_set=[(X_test, y_test)], callbacks=[callback])
38
+ ```
39
+
40
+ ## 1.9.1 (07-18-2025)
4
41
 
5
42
  ### Bug Fixes
6
43
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: snowflake-ml-python
3
- Version: 1.9.1
3
+ Version: 1.9.2
4
4
  Summary: The machine learning client library that is used for interacting with Snowflake to build machine learning solutions.
5
5
  Author-email: "Snowflake, Inc" <support@snowflake.com>
6
6
  License:
@@ -243,6 +243,7 @@ Requires-Dist: importlib_resources<7,>=6.1.1
243
243
  Requires-Dist: numpy<3,>=1.23
244
244
  Requires-Dist: packaging<25,>=20.9
245
245
  Requires-Dist: pandas<3,>=2.1.4
246
+ Requires-Dist: platformdirs<5
246
247
  Requires-Dist: pyarrow
247
248
  Requires-Dist: pydantic<3,>=2.8.2
248
249
  Requires-Dist: pyjwt<3,>=2.0.0
@@ -273,7 +274,7 @@ Requires-Dist: tensorflow<3,>=2.17.0; extra == "all"
273
274
  Requires-Dist: tokenizers<1,>=0.15.1; extra == "all"
274
275
  Requires-Dist: torch<3,>=2.0.1; extra == "all"
275
276
  Requires-Dist: torchdata<1,>=0.4; extra == "all"
276
- Requires-Dist: transformers<5,>=4.39.3; extra == "all"
277
+ Requires-Dist: transformers!=4.51.3,<5,>=4.39.3; extra == "all"
277
278
  Provides-Extra: altair
278
279
  Requires-Dist: altair<6,>=5; extra == "altair"
279
280
  Provides-Extra: catboost
@@ -298,7 +299,7 @@ Requires-Dist: sentence-transformers<4,>=2.7.0; extra == "transformers"
298
299
  Requires-Dist: sentencepiece<0.2.0,>=0.1.95; extra == "transformers"
299
300
  Requires-Dist: tokenizers<1,>=0.15.1; extra == "transformers"
300
301
  Requires-Dist: torch<3,>=2.0.1; extra == "transformers"
301
- Requires-Dist: transformers<5,>=4.39.3; extra == "transformers"
302
+ Requires-Dist: transformers!=4.51.3,<5,>=4.39.3; extra == "transformers"
302
303
  Dynamic: license-file
303
304
 
304
305
  # Snowpark ML
@@ -409,7 +410,44 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
409
410
 
410
411
  # Release History
411
412
 
412
- ## 1.9.1
413
+ ## 1.9.2
414
+
415
+ ### Bug Fixes
416
+
417
+ - DataConnector: Fix `self._session` related errors inside Container Runtime.
418
+ - Registry: Fix a bug when trying to pass `None` to array (`pd.dtype('O')`) in signature and pandas data handler.
419
+
420
+ ### New Features
421
+
422
+ - Experiment Tracking (PrPr): Automatically log the model, metrics, and parameters while training
423
+ XGBoost and LightGBM models.
424
+
425
+ ```python
426
+ from snowflake.ml.experiment import ExperimentTracking
427
+ from snowflake.ml.experiment.callback import SnowflakeXgboostCallback, SnowflakeLightgbmCallback
428
+
429
+ exp = ExperimentTracking(session=sp_session, database_name="ML", schema_name="PUBLIC")
430
+
431
+ exp.set_experiment("MY_EXPERIMENT")
432
+
433
+ # XGBoost
434
+ callback = SnowflakeXgboostCallback(
435
+ exp, log_model=True, log_metrics=True, log_params=True, model_name="model_name", model_signature=sig
436
+ )
437
+ model = XGBClassifier(callbacks=[callback])
438
+ with exp.start_run():
439
+ model.fit(X, y, eval_set=[(X_test, y_test)])
440
+
441
+ # LightGBM
442
+ callback = SnowflakeLightgbmCallback(
443
+ exp, log_model=True, log_metrics=True, log_params=True, model_name="model_name", model_signature=sig
444
+ )
445
+ model = LGBMClassifier()
446
+ with exp.start_run():
447
+ model.fit(X, y, eval_set=[(X_test, y_test)], callbacks=[callback])
448
+ ```
449
+
450
+ ## 1.9.1 (07-18-2025)
413
451
 
414
452
  ### Bug Fixes
415
453
 
@@ -8,7 +8,7 @@ description = "The machine learning client library that is used for interacting
8
8
  classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Other Environment", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Database", "Topic :: Software Development", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Scientific/Engineering :: Information Analysis",]
9
9
  requires-python = ">=3.9, <3.13"
10
10
  dynamic = [ "version", "readme",]
11
- dependencies = [ "absl-py>=0.15,<2", "anyio>=3.5.0,<5", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<3", "packaging>=20.9,<25", "pandas>=2.1.4,<3", "pyarrow", "pydantic>=2.8.2, <3", "pyjwt>=2.0.0, <3", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "s3fs>=2024.6.1,<2026", "scikit-learn<1.6", "scipy>=1.9,<2", "shap>=0.46.0,<1", "snowflake-connector-python[pandas]>=3.15.0,<4", "snowflake-snowpark-python>=1.17.0,<2,!=1.26.0", "snowflake.core>=1.0.2,<2", "sqlparse>=0.4,<1", "tqdm<5", "typing-extensions>=4.1.0,<5", "xgboost>=1.7.3,<3",]
11
+ dependencies = [ "absl-py>=0.15,<2", "anyio>=3.5.0,<5", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<3", "packaging>=20.9,<25", "pandas>=2.1.4,<3", "platformdirs<5", "pyarrow", "pydantic>=2.8.2, <3", "pyjwt>=2.0.0, <3", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "s3fs>=2024.6.1,<2026", "scikit-learn<1.6", "scipy>=1.9,<2", "shap>=0.46.0,<1", "snowflake-connector-python[pandas]>=3.15.0,<4", "snowflake-snowpark-python>=1.17.0,<2,!=1.26.0", "snowflake.core>=1.0.2,<2", "sqlparse>=0.4,<1", "tqdm<5", "typing-extensions>=4.1.0,<5", "xgboost>=1.7.3,<3",]
12
12
  [[project.authors]]
13
13
  name = "Snowflake, Inc"
14
14
  email = "support@snowflake.com"
@@ -24,7 +24,7 @@ Issues = "https://github.com/snowflakedb/snowflake-ml-python/issues"
24
24
  Changelog = "https://github.com/snowflakedb/snowflake-ml-python/blob/master/CHANGELOG.md"
25
25
 
26
26
  [project.optional-dependencies]
27
- all = [ "altair>=5,<6", "catboost>=1.2.0, <2", "keras>=2.0.0,<4", "lightgbm>=4.1.0, <5", "mlflow>=2.16.0, <3", "sentence-transformers>=2.7.0,<4", "sentencepiece>=0.1.95,<0.2.0", "streamlit>=1.30.0,<2", "tensorflow>=2.17.0,<3", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "torchdata>=0.4,<1", "transformers>=4.39.3,<5",]
27
+ all = [ "altair>=5,<6", "catboost>=1.2.0, <2", "keras>=2.0.0,<4", "lightgbm>=4.1.0, <5", "mlflow>=2.16.0, <3", "sentence-transformers>=2.7.0,<4", "sentencepiece>=0.1.95,<0.2.0", "streamlit>=1.30.0,<2", "tensorflow>=2.17.0,<3", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "torchdata>=0.4,<1", "transformers>=4.39.3,<5,!=4.51.3",]
28
28
  altair = [ "altair>=5,<6",]
29
29
  catboost = [ "catboost>=1.2.0, <2",]
30
30
  keras = [ "keras>=2.0.0,<4", "tensorflow>=2.17.0,<3", "torch>=2.0.1,<3",]
@@ -33,7 +33,7 @@ mlflow = [ "mlflow>=2.16.0, <3",]
33
33
  streamlit = [ "streamlit>=1.30.0,<2",]
34
34
  tensorflow = [ "tensorflow>=2.17.0,<3",]
35
35
  torch = [ "torch>=2.0.1,<3", "torchdata>=0.4,<1",]
36
- transformers = [ "sentence-transformers>=2.7.0,<4", "sentencepiece>=0.1.95,<0.2.0", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "transformers>=4.39.3,<5",]
36
+ transformers = [ "sentence-transformers>=2.7.0,<4", "sentencepiece>=0.1.95,<0.2.0", "tokenizers>=0.15.1,<1", "torch>=2.0.1,<3", "transformers>=4.39.3,<5,!=4.51.3",]
37
37
 
38
38
  [tool.setuptools.package-data]
39
39
  "*" = [ "*",]
@@ -21,10 +21,12 @@ class SerializableSessionMixin:
21
21
 
22
22
  def __getstate__(self) -> dict[str, Any]:
23
23
  """Customize pickling to exclude non-serializable session and related components."""
24
- if hasattr(super(), "__getstate__"):
25
- state: dict[str, Any] = super().__getstate__() # type: ignore[misc]
26
- else:
27
- state = self.__dict__.copy()
24
+ parent_state = (
25
+ super().__getstate__() # type: ignore[misc] # object.__getstate__ appears in 3.11
26
+ if hasattr(super(), "__getstate__")
27
+ else self.__dict__
28
+ )
29
+ state = dict(parent_state) # Create a copy so we can safely modify the state
28
30
 
29
31
  # Save session metadata for validation during unpickling
30
32
  session = state.pop(_SESSION_KEY, None)
@@ -0,0 +1,165 @@
1
+ import enum
2
+ import logging
3
+ import os
4
+ import sys
5
+ import tempfile
6
+ import time
7
+ import uuid
8
+ from typing import Optional
9
+
10
+ import platformdirs
11
+
12
+
13
+ class LogColor(enum.Enum):
14
+ GREY = "\x1b[38;20m"
15
+ RED = "\x1b[31;20m"
16
+ BOLD_RED = "\x1b[31;1m"
17
+ YELLOW = "\x1b[33;20m"
18
+ BLUE = "\x1b[34;20m"
19
+ GREEN = "\x1b[32;20m"
20
+ ORANGE = "\x1b[38;5;214m"
21
+ BOLD_ORANGE = "\x1b[38;5;214;1m"
22
+ PURPLE = "\x1b[35;20m"
23
+ BOLD_PURPLE = "\x1b[35;1m"
24
+
25
+
26
+ class CustomFormatter(logging.Formatter):
27
+
28
+ reset = "\x1b[0m"
29
+ log_format = "%(name)s [%(asctime)s] [%(levelname)s] %(message)s"
30
+
31
+ def __init__(self, info_color: LogColor) -> None:
32
+ super().__init__()
33
+ self.level_colors = {
34
+ logging.DEBUG: LogColor.GREY.value,
35
+ logging.INFO: info_color.value,
36
+ logging.WARNING: LogColor.YELLOW.value,
37
+ logging.ERROR: LogColor.RED.value,
38
+ logging.CRITICAL: LogColor.BOLD_RED.value,
39
+ }
40
+
41
+ def format(self, record: logging.LogRecord) -> str:
42
+ # default to DEBUG color
43
+ fmt = self.level_colors.get(record.levelno, self.level_colors[logging.DEBUG]) + self.log_format + self.reset
44
+ formatter = logging.Formatter(fmt)
45
+
46
+ # split the log message by lines and format each line individually
47
+ original_message = record.getMessage()
48
+ message_lines = original_message.splitlines()
49
+ formatted_lines = [
50
+ formatter.format(
51
+ logging.LogRecord(
52
+ name=record.name,
53
+ level=record.levelno,
54
+ pathname=record.pathname,
55
+ lineno=record.lineno,
56
+ msg=line,
57
+ args=None,
58
+ exc_info=None,
59
+ )
60
+ )
61
+ for line in message_lines
62
+ ]
63
+
64
+ return "\n".join(formatted_lines)
65
+
66
+
67
+ def _test_writability(directory: str) -> bool:
68
+ """Test if a directory is writable by creating and removing a test file."""
69
+ try:
70
+ os.makedirs(directory, exist_ok=True)
71
+ test_file = os.path.join(directory, f".write_test_{uuid.uuid4().hex[:8]}")
72
+ with open(test_file, "w") as f:
73
+ f.write("test")
74
+ os.remove(test_file)
75
+ return True
76
+ except OSError:
77
+ return False
78
+
79
+
80
+ def _try_log_location(log_dir: str, operation_id: str) -> Optional[str]:
81
+ """Try to create a log file in the given directory if it's writable."""
82
+ if _test_writability(log_dir):
83
+ return os.path.join(log_dir, f"{operation_id}.log")
84
+ return None
85
+
86
+
87
+ def _get_log_file_path(operation_id: str) -> Optional[str]:
88
+ """Get platform-independent log file path. Returns None if no writable location found."""
89
+ # Try locations in order of preference
90
+ locations = [
91
+ # Primary: User log directory
92
+ platformdirs.user_log_dir("snowflake-ml", "Snowflake"),
93
+ # Fallback 1: System temp directory
94
+ os.path.join(tempfile.gettempdir(), "snowflake-ml-logs"),
95
+ # Fallback 2: Current working directory
96
+ ".",
97
+ ]
98
+
99
+ for location in locations:
100
+ log_file_path = _try_log_location(location, operation_id)
101
+ if log_file_path:
102
+ return log_file_path
103
+
104
+ # No writable location found
105
+ return None
106
+
107
+
108
+ def _get_or_create_parent_logger(operation_id: str) -> logging.Logger:
109
+ """Get or create a parent logger with FileHandler for the operation."""
110
+ parent_logger_name = f"snowflake_ml_operation_{operation_id}"
111
+ parent_logger = logging.getLogger(parent_logger_name)
112
+
113
+ # Only add handler if it doesn't exist yet
114
+ if not parent_logger.handlers:
115
+ log_file_path = _get_log_file_path(operation_id)
116
+
117
+ if log_file_path:
118
+ # Successfully found a writable location
119
+ try:
120
+ file_handler = logging.FileHandler(log_file_path)
121
+ file_handler.setFormatter(logging.Formatter("%(name)s [%(asctime)s] [%(levelname)s] %(message)s"))
122
+ parent_logger.addHandler(file_handler)
123
+ parent_logger.setLevel(logging.DEBUG)
124
+ parent_logger.propagate = False # Don't propagate to root logger
125
+
126
+ # Log the file location
127
+ parent_logger.warning(f"Operation logs saved to: {log_file_path}")
128
+ except OSError as e:
129
+ # Even though we found a path, file creation failed
130
+ # Fall back to console-only logging
131
+ parent_logger.setLevel(logging.DEBUG)
132
+ parent_logger.propagate = False
133
+ parent_logger.warning(f"Could not create log file at {log_file_path}: {e}. Using console-only logging.")
134
+ else:
135
+ # No writable location found, use console-only logging
136
+ parent_logger.setLevel(logging.DEBUG)
137
+ parent_logger.propagate = False
138
+ parent_logger.warning("Filesystem appears to be readonly. Using console-only logging.")
139
+
140
+ return parent_logger
141
+
142
+
143
+ def get_logger(logger_name: str, info_color: LogColor, operation_id: Optional[str] = None) -> logging.Logger:
144
+ logger = logging.getLogger(logger_name)
145
+ handler = logging.StreamHandler(sys.stdout)
146
+ handler.setFormatter(CustomFormatter(info_color))
147
+ logger.addHandler(handler)
148
+
149
+ # If operation_id provided, set up parent logger with file handler
150
+ if operation_id:
151
+ parent_logger = _get_or_create_parent_logger(operation_id)
152
+ logger.parent = parent_logger
153
+ logger.propagate = True
154
+
155
+ return logger
156
+
157
+
158
+ def get_operation_id() -> str:
159
+ """Generate a unique operation ID."""
160
+ return f"model_deploy_{uuid.uuid4().hex[:8]}_{int(time.time())}"
161
+
162
+
163
+ def get_log_file_location(operation_id: str) -> Optional[str]:
164
+ """Get the log file path for an operation ID. Returns None if no writable location available."""
165
+ return _get_log_file_path(operation_id)
@@ -14,6 +14,7 @@ if TYPE_CHECKING:
14
14
  import ray
15
15
 
16
16
  from snowflake import snowpark
17
+ from snowflake.ml._internal.utils import mixins
17
18
  from snowflake.ml.data import data_ingestor, data_source, ingestor_utils
18
19
 
19
20
  _EMPTY_RECORD_BATCH = pa.RecordBatch.from_arrays([], [])
@@ -44,7 +45,7 @@ class _RecordBatchesBuffer:
44
45
  return popped
45
46
 
46
47
 
47
- class ArrowIngestor(data_ingestor.DataIngestor):
48
+ class ArrowIngestor(data_ingestor.DataIngestor, mixins.SerializableSessionMixin):
48
49
  """Read and parse the data sources into an Arrow Dataset and yield batched numpy array in dict."""
49
50
 
50
51
  def __init__(
@@ -71,6 +72,8 @@ class ArrowIngestor(data_ingestor.DataIngestor):
71
72
 
72
73
  @classmethod
73
74
  def from_sources(cls, session: snowpark.Session, sources: Sequence[data_source.DataSource]) -> "ArrowIngestor":
75
+ if session is None:
76
+ raise ValueError("Session is required")
74
77
  return cls(session, sources)
75
78
 
76
79
  @classmethod
@@ -6,10 +6,9 @@ from typing_extensions import deprecated
6
6
 
7
7
  from snowflake import snowpark
8
8
  from snowflake.ml._internal import env, telemetry
9
- from snowflake.ml._internal.utils import mixins
10
9
  from snowflake.ml.data import data_ingestor, data_source
11
10
  from snowflake.ml.data._internal.arrow_ingestor import ArrowIngestor
12
- from snowflake.snowpark import context as sf_context
11
+ from snowflake.snowpark import context as sp_context
13
12
 
14
13
  if TYPE_CHECKING:
15
14
  import pandas as pd
@@ -22,13 +21,11 @@ if TYPE_CHECKING:
22
21
  from snowflake.ml import dataset
23
22
 
24
23
  _PROJECT = "DataConnector"
25
- _INGESTOR_KEY = "_ingestor"
26
- _INGESTOR_SOURCES_KEY = "ingestor$sources"
27
24
 
28
25
  DataConnectorType = TypeVar("DataConnectorType", bound="DataConnector")
29
26
 
30
27
 
31
- class DataConnector(mixins.SerializableSessionMixin):
28
+ class DataConnector:
32
29
  """Snowflake data reader which provides application integration connectors"""
33
30
 
34
31
  DEFAULT_INGESTOR_CLASS: type[data_ingestor.DataIngestor] = ArrowIngestor
@@ -36,11 +33,8 @@ class DataConnector(mixins.SerializableSessionMixin):
36
33
  def __init__(
37
34
  self,
38
35
  ingestor: data_ingestor.DataIngestor,
39
- *,
40
- session: Optional[snowpark.Session] = None,
41
36
  **kwargs: Any,
42
37
  ) -> None:
43
- self._session = session
44
38
  self._ingestor = ingestor
45
39
  self._kwargs = kwargs
46
40
 
@@ -63,7 +57,7 @@ class DataConnector(mixins.SerializableSessionMixin):
63
57
  ingestor_class: Optional[type[data_ingestor.DataIngestor]] = None,
64
58
  **kwargs: Any,
65
59
  ) -> DataConnectorType:
66
- session = session or sf_context.get_active_session()
60
+ session = session or sp_context.get_active_session()
67
61
  source = data_source.DataFrameInfo(query)
68
62
  return cls.from_sources(session, [source], ingestor_class=ingestor_class, **kwargs)
69
63
 
@@ -107,31 +101,7 @@ class DataConnector(mixins.SerializableSessionMixin):
107
101
  ) -> DataConnectorType:
108
102
  ingestor_class = ingestor_class or cls.DEFAULT_INGESTOR_CLASS
109
103
  ingestor = ingestor_class.from_sources(session, sources)
110
- return cls(ingestor, **kwargs, session=session)
111
-
112
- def __getstate__(self) -> dict[str, Any]:
113
- """Customize pickling to exclude non-serializable session and related components."""
114
- if hasattr(super(), "__getstate__"):
115
- state = super().__getstate__()
116
- else:
117
- state = self.__dict__.copy()
118
-
119
- ingestor = state.pop(_INGESTOR_KEY)
120
- state[_INGESTOR_SOURCES_KEY] = ingestor.data_sources
121
-
122
- return state
123
-
124
- def __setstate__(self, state: dict[str, Any]) -> None:
125
- """Restore session from context during unpickling."""
126
- data_sources = state.pop(_INGESTOR_SOURCES_KEY)
127
-
128
- if hasattr(super(), "__setstate__"):
129
- super().__setstate__(state)
130
- else:
131
- self.__dict__.update(state)
132
-
133
- assert self._session is not None
134
- self._ingestor = self.DEFAULT_INGESTOR_CLASS.from_sources(self._session, data_sources)
104
+ return cls(ingestor, **kwargs)
135
105
 
136
106
  @property
137
107
  def data_sources(self) -> list[data_source.DataSource]:
@@ -177,7 +177,7 @@ class Dataset(lineage_node.LineageNode):
177
177
  original_exception=RuntimeError("No Dataset version selected."),
178
178
  )
179
179
  if self._reader is None:
180
- self._reader = dataset_reader.DatasetReader.from_dataset(self)
180
+ self._reader = dataset_reader.DatasetReader.from_dataset(self, snowpark_session=self._session)
181
181
  return self._reader
182
182
 
183
183
  @staticmethod
@@ -1,5 +1,4 @@
1
1
  from typing import Any, Optional
2
- from warnings import warn
3
2
 
4
3
  from snowflake import snowpark
5
4
  from snowflake.ml._internal import telemetry
@@ -21,16 +20,11 @@ class DatasetReader(data_connector.DataConnector, mixins.SerializableSessionMixi
21
20
  self,
22
21
  ingestor: data_ingestor.DataIngestor,
23
22
  *,
24
- session: snowpark.Session,
25
23
  snowpark_session: Optional[snowpark.Session] = None,
26
24
  ) -> None:
27
- if snowpark_session is not None:
28
- warn(
29
- "Argument snowpark_session is deprecated and will be removed in a future release. Use session instead."
30
- )
31
- session = snowpark_session
32
- super().__init__(ingestor, session=session)
25
+ super().__init__(ingestor)
33
26
 
27
+ self._session = snowpark_session
34
28
  self._fs_cached: Optional[snowfs.SnowFileSystem] = None
35
29
  self._files: Optional[list[str]] = None
36
30
 
@@ -0,0 +1,3 @@
1
+ from snowflake.ml.experiment.experiment_tracking import ExperimentTracking
2
+
3
+ __all__ = ["ExperimentTracking"]
@@ -0,0 +1,121 @@
1
+ import json
2
+ from typing import TYPE_CHECKING, Any, Optional, Union
3
+ from warnings import warn
4
+
5
+ import lightgbm as lgb
6
+ import xgboost as xgb
7
+
8
+ from snowflake.ml.model.model_signature import ModelSignature
9
+
10
+ if TYPE_CHECKING:
11
+ from snowflake.ml.experiment.experiment_tracking import ExperimentTracking
12
+
13
+
14
+ class SnowflakeXgboostCallback(xgb.callback.TrainingCallback):
15
+ def __init__(
16
+ self,
17
+ experiment_tracking: "ExperimentTracking",
18
+ log_model: bool = True,
19
+ log_metrics: bool = True,
20
+ log_params: bool = True,
21
+ model_name: Optional[str] = None,
22
+ model_signature: Optional[ModelSignature] = None,
23
+ ) -> None:
24
+ self._experiment_tracking = experiment_tracking
25
+ self.log_model = log_model
26
+ self.log_metrics = log_metrics
27
+ self.log_params = log_params
28
+ self.model_name = model_name
29
+ self.model_signature = model_signature
30
+
31
+ def before_training(self, model: xgb.Booster) -> xgb.Booster:
32
+ def _flatten_nested_params(params: Union[list[Any], dict[str, Any]], prefix: str = "") -> dict[str, Any]:
33
+ flat_params = {}
34
+ items = params.items() if isinstance(params, dict) else enumerate(params)
35
+ for key, value in items:
36
+ new_prefix = f"{prefix}.{key}" if prefix else str(key)
37
+ if isinstance(value, (dict, list)):
38
+ flat_params.update(_flatten_nested_params(value, new_prefix))
39
+ else:
40
+ flat_params[new_prefix] = value
41
+ return flat_params
42
+
43
+ if self.log_params:
44
+ params = json.loads(model.save_config())
45
+ self._experiment_tracking.log_params(_flatten_nested_params(params))
46
+
47
+ return model
48
+
49
+ def after_iteration(self, model: Any, epoch: int, evals_log: dict[str, dict[str, Any]]) -> bool:
50
+ if self.log_metrics:
51
+ for dataset_name, metrics in evals_log.items():
52
+ for metric_name, log in metrics.items():
53
+ metric_key = dataset_name + ":" + metric_name
54
+ self._experiment_tracking.log_metric(key=metric_key, value=log[-1], step=epoch)
55
+
56
+ return False
57
+
58
+ def after_training(self, model: xgb.Booster) -> xgb.Booster:
59
+ if self.log_model:
60
+ if not self.model_signature:
61
+ warn(
62
+ "Model will not be logged because model signature is missing. "
63
+ "To autolog the model, please specify `model_signature` when constructing SnowflakeXgboostCallback."
64
+ )
65
+ return model
66
+
67
+ model_name = self.model_name or self._experiment_tracking._get_or_set_experiment().name + "_model"
68
+ self._experiment_tracking.log_model( # type: ignore[call-arg]
69
+ model=model,
70
+ model_name=model_name,
71
+ signatures={"predict": self.model_signature},
72
+ )
73
+
74
+ return model
75
+
76
+
77
+ class SnowflakeLightgbmCallback(lgb.callback._RecordEvaluationCallback):
78
+ def __init__(
79
+ self,
80
+ experiment_tracking: "ExperimentTracking",
81
+ log_model: bool = True,
82
+ log_metrics: bool = True,
83
+ log_params: bool = True,
84
+ model_name: Optional[str] = None,
85
+ model_signature: Optional[ModelSignature] = None,
86
+ ) -> None:
87
+ self._experiment_tracking = experiment_tracking
88
+ self.log_model = log_model
89
+ self.log_metrics = log_metrics
90
+ self.log_params = log_params
91
+ self.model_name = model_name
92
+ self.model_signature = model_signature
93
+
94
+ super().__init__(eval_result={})
95
+
96
+ def __call__(self, env: lgb.callback.CallbackEnv) -> None:
97
+ if self.log_params:
98
+ if env.iteration == env.begin_iteration: # Log params only at the first iteration
99
+ self._experiment_tracking.log_params(env.params)
100
+
101
+ if self.log_metrics:
102
+ super().__call__(env)
103
+ for dataset_name, metrics in self.eval_result.items():
104
+ for metric_name, log in metrics.items():
105
+ metric_key = dataset_name + ":" + metric_name
106
+ self._experiment_tracking.log_metric(key=metric_key, value=log[-1], step=env.iteration)
107
+
108
+ if self.log_model:
109
+ if env.iteration == env.end_iteration - 1: # Log model only at the last iteration
110
+ if self.model_signature:
111
+ model_name = self.model_name or self._experiment_tracking._get_or_set_experiment().name + "_model"
112
+ self._experiment_tracking.log_model( # type: ignore[call-arg]
113
+ model=env.model,
114
+ model_name=model_name,
115
+ signatures={"predict": self.model_signature},
116
+ )
117
+ else:
118
+ warn(
119
+ "Model will not be logged because model signature is missing. To autolog the model, "
120
+ "please specify `model_signature` when constructing SnowflakeLightgbmCallback."
121
+ )
@@ -6,10 +6,23 @@ DEFAULT_CONTAINER_NAME = "main"
6
6
  PAYLOAD_DIR_ENV_VAR = "MLRS_PAYLOAD_DIR"
7
7
  RESULT_PATH_ENV_VAR = "MLRS_RESULT_PATH"
8
8
  MIN_INSTANCES_ENV_VAR = "MLRS_MIN_INSTANCES"
9
+ TARGET_INSTANCES_ENV_VAR = "SNOWFLAKE_JOBS_COUNT"
9
10
  RUNTIME_IMAGE_TAG_ENV_VAR = "MLRS_CONTAINER_IMAGE_TAG"
10
11
  MEMORY_VOLUME_NAME = "dshm"
11
12
  STAGE_VOLUME_NAME = "stage-volume"
12
- STAGE_VOLUME_MOUNT_PATH = "/mnt/app"
13
+ # Base mount path
14
+ STAGE_VOLUME_MOUNT_PATH = "/mnt/job_stage"
15
+
16
+ # Stage subdirectory paths
17
+ APP_STAGE_SUBPATH = "app"
18
+ SYSTEM_STAGE_SUBPATH = "system"
19
+ OUTPUT_STAGE_SUBPATH = "output"
20
+
21
+ # Complete mount paths (automatically generated from base + subpath)
22
+ APP_MOUNT_PATH = f"{STAGE_VOLUME_MOUNT_PATH}/{APP_STAGE_SUBPATH}"
23
+ SYSTEM_MOUNT_PATH = f"{STAGE_VOLUME_MOUNT_PATH}/{SYSTEM_STAGE_SUBPATH}"
24
+ OUTPUT_MOUNT_PATH = f"{STAGE_VOLUME_MOUNT_PATH}/{OUTPUT_STAGE_SUBPATH}"
25
+
13
26
 
14
27
  # Default container image information
15
28
  DEFAULT_IMAGE_REPO = "/snowflake/images/snowflake_images"
@@ -46,9 +59,7 @@ ENABLE_HEALTH_CHECKS = "false"
46
59
  JOB_POLL_INITIAL_DELAY_SECONDS = 0.1
47
60
  JOB_POLL_MAX_DELAY_SECONDS = 30
48
61
 
49
- # Magic attributes
50
- IS_MLJOB_REMOTE_ATTR = "_is_mljob_remote_callable"
51
- RESULT_PATH_DEFAULT_VALUE = "mljob_result.pkl"
62
+ RESULT_PATH_DEFAULT_VALUE = f"{OUTPUT_MOUNT_PATH}/mljob_result.pkl"
52
63
 
53
64
  # Log start and end messages
54
65
  LOG_START_MSG = "--------------------------------\nML job started\n--------------------------------"