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.
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/CHANGELOG.md +38 -1
- {snowflake_ml_python-1.9.1/snowflake_ml_python.egg-info → snowflake_ml_python-1.9.2}/PKG-INFO +42 -4
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/pyproject.toml +3 -3
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/mixins.py +6 -4
- snowflake_ml_python-1.9.2/snowflake/ml/_internal/utils/service_logger.py +165 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/data/_internal/arrow_ingestor.py +4 -1
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/data/data_connector.py +4 -34
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/dataset/dataset.py +1 -1
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/dataset/dataset_reader.py +2 -8
- snowflake_ml_python-1.9.2/snowflake/ml/experiment/__init__.py +3 -0
- snowflake_ml_python-1.9.2/snowflake/ml/experiment/callback.py +121 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/constants.py +15 -4
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/payload_utils.py +150 -49
- snowflake_ml_python-1.9.2/snowflake/ml/jobs/_utils/scripts/constants.py +4 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +125 -22
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/spec_utils.py +1 -1
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/stage_utils.py +30 -14
- snowflake_ml_python-1.9.2/snowflake/ml/jobs/_utils/types.py +109 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/job.py +22 -6
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/manager.py +5 -3
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/ops/service_ops.py +17 -2
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/sql/service.py +1 -38
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/sklearn.py +9 -5
- {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
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/pandas_handler.py +3 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/utils.py +4 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/model_signature.py +2 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/version.py +1 -1
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2/snowflake_ml_python.egg-info}/PKG-INFO +42 -4
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake_ml_python.egg-info/SOURCES.txt +2 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake_ml_python.egg-info/requires.txt +3 -2
- snowflake_ml_python-1.9.1/snowflake/ml/_internal/utils/service_logger.py +0 -65
- snowflake_ml_python-1.9.1/snowflake/ml/jobs/_utils/scripts/constants.py +0 -26
- snowflake_ml_python-1.9.1/snowflake/ml/jobs/_utils/types.py +0 -49
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/README.md +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/setup.cfg +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_complete.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_embed_text_1024.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_embed_text_768.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_finetune.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_sse_client.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/cortex/_util.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/env_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/platform_capabilities.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/telemetry.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/type_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/db_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/identifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/table_manager.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/data/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/data/data_ingestor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/data/ingestor_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/data/torch_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/dataset/dataset_metadata.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/experiment/_entities/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/experiment/_entities/experiment.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/experiment/_entities/run.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/experiment/_experiment_info.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/experiment/experiment_tracking.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
- {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
- {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
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {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
- {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
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
- {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
- {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
- {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
- {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
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {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
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
- {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
- {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
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/feature_store.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/feature_store/feature_view.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/fileset/fileset.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/fileset/sfcfs.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/function_payload_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/interop_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/query_helper.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/decorators.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/lineage/lineage_node.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/model/model_impl.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/model/model_version_impl.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/ops/model_ops.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/sql/model.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/sql/model_version.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/sql/stage.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
- {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
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
- {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
- {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
- {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
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
- {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
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_env/model_env.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {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
- {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
- {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
- {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
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_meta/model_meta.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_packager.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/core.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/event_handler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/target_platform.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/task.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/model/type_hints.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
- {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
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
- {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
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/birch.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/k_means.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/optics.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/oas.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/pca.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/framework/base.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/lars.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
- {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
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/manifold/isomap.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/manifold/mds.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/manifold/tsne.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/svm/svc.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/svm/svr.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/explain_visualize.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/model_monitor.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/registry/_manager/model_manager.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/registry/registry.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/utils/authentication.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/utils/html_utils.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/utils/sql_client.py +0 -0
- {snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {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.
|
|
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
|
|
{snowflake_ml_python-1.9.1/snowflake_ml_python.egg-info → snowflake_ml_python-1.9.2}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-ml-python
|
|
3
|
-
Version: 1.9.
|
|
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
|
|
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
|
|
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.
|
|
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
|
"*" = [ "*",]
|
{snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/_internal/utils/mixins.py
RENAMED
|
@@ -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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
{snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/dataset/dataset_reader.py
RENAMED
|
@@ -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
|
-
|
|
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,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
|
+
)
|
{snowflake_ml_python-1.9.1 → snowflake_ml_python-1.9.2}/snowflake/ml/jobs/_utils/constants.py
RENAMED
|
@@ -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
|
-
|
|
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
|
-
|
|
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--------------------------------"
|