snowflake-ml-python 1.10.0__tar.gz → 1.11.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/CHANGELOG.md +22 -3
- {snowflake_ml_python-1.10.0/snowflake_ml_python.egg-info → snowflake_ml_python-1.11.0}/PKG-INFO +23 -4
- snowflake_ml_python-1.11.0/snowflake/ml/experiment/callback/keras.py +63 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/experiment/callback/lightgbm.py +5 -1
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/experiment/callback/xgboost.py +5 -1
- snowflake_ml_python-1.11.0/snowflake/ml/jobs/_utils/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/constants.py +4 -1
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/payload_utils.py +42 -14
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/query_helper.py +5 -1
- snowflake_ml_python-1.11.0/snowflake/ml/jobs/_utils/runtime_env_utils.py +63 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +2 -2
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +3 -3
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/spec_utils.py +41 -8
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/stage_utils.py +22 -9
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/types.py +5 -7
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/job.py +1 -1
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/manager.py +1 -13
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_client/model/model_version_impl.py +166 -10
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_client/ops/service_ops.py +63 -28
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +103 -27
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +11 -5
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_model_composer/model_composer.py +1 -70
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +2 -43
- snowflake_ml_python-1.11.0/snowflake/ml/model/inference_engine.py +5 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/models/huggingface_pipeline.py +4 -3
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/registry/_manager/model_manager.py +7 -35
- snowflake_ml_python-1.11.0/snowflake/ml/registry/_manager/model_parameter_reconciler.py +294 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/version.py +1 -1
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0/snowflake_ml_python.egg-info}/PKG-INFO +23 -4
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake_ml_python.egg-info/SOURCES.txt +4 -0
- snowflake_ml_python-1.10.0/snowflake/ml/registry/_manager/model_parameter_reconciler.py +0 -105
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/README.md +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/pyproject.toml +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/setup.cfg +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/cortex/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/cortex/_complete.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/cortex/_embed_text_1024.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/cortex/_embed_text_768.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/cortex/_finetune.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/cortex/_sse_client.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/cortex/_util.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/env_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/platform_capabilities.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/telemetry.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/type_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/mixins.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/data/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/data/data_connector.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/data/data_ingestor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/data/ingestor_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/data/torch_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/dataset/dataset.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/experiment/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/experiment/_entities/run.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/experiment/experiment_tracking.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/experiment/utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/feature_store.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/feature_store/feature_view.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/fileset/fileset.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/fileset/sfcfs.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/function_payload_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/interop_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/decorators.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/lineage/lineage_node.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_client/ops/model_ops.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_client/sql/model.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_client/sql/model_version.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_client/sql/service.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_client/sql/stage.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_env/model_env.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_packager.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_signatures/core.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/_signatures/utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/event_handler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/model_signature.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/target_platform.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/task.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/model/type_hints.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/cluster/birch.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/cluster/k_means.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/cluster/optics.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/covariance/oas.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/decomposition/pca.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/framework/base.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/lars.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/manifold/isomap.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/manifold/mds.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/manifold/tsne.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/svm/svc.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/svm/svr.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/monitoring/explain_visualize.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/monitoring/model_monitor.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/registry/registry.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/utils/authentication.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/utils/html_utils.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/utils/sql_client.py +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake_ml_python.egg-info/requires.txt +0 -0
- {snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake_ml_python.egg-info/top_level.txt +0 -0
|
@@ -1,11 +1,31 @@
|
|
|
1
1
|
# Release History
|
|
2
2
|
|
|
3
|
-
## 1.
|
|
3
|
+
## 1.11.0
|
|
4
4
|
|
|
5
5
|
### Bug Fixes
|
|
6
6
|
|
|
7
|
+
* ML Job: Fix `Error: Unable to retrieve head IP address` if not all instances start within the timeout.
|
|
8
|
+
* ML Job: Fix `TypeError: SnowflakeCursor.execute() got an unexpected keyword argument '_force_qmark_paramstyle'`
|
|
9
|
+
when running inside Stored Procedures.
|
|
10
|
+
|
|
11
|
+
### Behavior Changes
|
|
12
|
+
|
|
13
|
+
### New Features
|
|
14
|
+
|
|
15
|
+
* `ModelVersion.create_service()`: Made `image_repo` argument optional. By
|
|
16
|
+
default it will use a default image repo, which is
|
|
17
|
+
being rolled out in server version 9.22+.
|
|
18
|
+
* Experiment Tracking (PrPr): Automatically log the model, metrics, and parameters while training Keras models with
|
|
19
|
+
`snowflake.ml.experiment.callback.keras.SnowflakeKerasCallback`.
|
|
20
|
+
|
|
21
|
+
## 1.10.0
|
|
22
|
+
|
|
7
23
|
### Behavior Changes
|
|
8
24
|
|
|
25
|
+
* Experiment Tracking (PrPr): The import paths for the auto-logging callbacks have changed to
|
|
26
|
+
`snowflake.ml.experiment.callback.xgboost.SnowflakeXgboostCallback` and
|
|
27
|
+
`snowflake.ml.experiment.callback.lightgbm.SnowflakeLightgbmCallback`.
|
|
28
|
+
|
|
9
29
|
### New Features
|
|
10
30
|
|
|
11
31
|
* Registry: add progress bars for `ModelVersion.create_service` and `ModelVersion.log_model`.
|
|
@@ -26,13 +46,13 @@
|
|
|
26
46
|
|
|
27
47
|
```python
|
|
28
48
|
from snowflake.ml.experiment import ExperimentTracking
|
|
49
|
+
from snowflake.ml.experiment.callback import SnowflakeXgboostCallback, SnowflakeLightgbmCallback
|
|
29
50
|
|
|
30
51
|
exp = ExperimentTracking(session=sp_session, database_name="ML", schema_name="PUBLIC")
|
|
31
52
|
|
|
32
53
|
exp.set_experiment("MY_EXPERIMENT")
|
|
33
54
|
|
|
34
55
|
# XGBoost
|
|
35
|
-
from snowflake.ml.experiment.callback.xgboost import SnowflakeXgboostCallback
|
|
36
56
|
callback = SnowflakeXgboostCallback(
|
|
37
57
|
exp, log_model=True, log_metrics=True, log_params=True, model_name="model_name", model_signature=sig
|
|
38
58
|
)
|
|
@@ -41,7 +61,6 @@ with exp.start_run():
|
|
|
41
61
|
model.fit(X, y, eval_set=[(X_test, y_test)])
|
|
42
62
|
|
|
43
63
|
# LightGBM
|
|
44
|
-
from snowflake.ml.experiment.callback.lightgbm import SnowflakeLightgbmCallback
|
|
45
64
|
callback = SnowflakeLightgbmCallback(
|
|
46
65
|
exp, log_model=True, log_metrics=True, log_params=True, model_name="model_name", model_signature=sig
|
|
47
66
|
)
|
{snowflake_ml_python-1.10.0/snowflake_ml_python.egg-info → snowflake_ml_python-1.11.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: snowflake-ml-python
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.11.0
|
|
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:
|
|
@@ -410,12 +410,32 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
410
410
|
|
|
411
411
|
# Release History
|
|
412
412
|
|
|
413
|
-
## 1.
|
|
413
|
+
## 1.11.0
|
|
414
414
|
|
|
415
415
|
### Bug Fixes
|
|
416
416
|
|
|
417
|
+
* ML Job: Fix `Error: Unable to retrieve head IP address` if not all instances start within the timeout.
|
|
418
|
+
* ML Job: Fix `TypeError: SnowflakeCursor.execute() got an unexpected keyword argument '_force_qmark_paramstyle'`
|
|
419
|
+
when running inside Stored Procedures.
|
|
420
|
+
|
|
421
|
+
### Behavior Changes
|
|
422
|
+
|
|
423
|
+
### New Features
|
|
424
|
+
|
|
425
|
+
* `ModelVersion.create_service()`: Made `image_repo` argument optional. By
|
|
426
|
+
default it will use a default image repo, which is
|
|
427
|
+
being rolled out in server version 9.22+.
|
|
428
|
+
* Experiment Tracking (PrPr): Automatically log the model, metrics, and parameters while training Keras models with
|
|
429
|
+
`snowflake.ml.experiment.callback.keras.SnowflakeKerasCallback`.
|
|
430
|
+
|
|
431
|
+
## 1.10.0
|
|
432
|
+
|
|
417
433
|
### Behavior Changes
|
|
418
434
|
|
|
435
|
+
* Experiment Tracking (PrPr): The import paths for the auto-logging callbacks have changed to
|
|
436
|
+
`snowflake.ml.experiment.callback.xgboost.SnowflakeXgboostCallback` and
|
|
437
|
+
`snowflake.ml.experiment.callback.lightgbm.SnowflakeLightgbmCallback`.
|
|
438
|
+
|
|
419
439
|
### New Features
|
|
420
440
|
|
|
421
441
|
* Registry: add progress bars for `ModelVersion.create_service` and `ModelVersion.log_model`.
|
|
@@ -436,13 +456,13 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
436
456
|
|
|
437
457
|
```python
|
|
438
458
|
from snowflake.ml.experiment import ExperimentTracking
|
|
459
|
+
from snowflake.ml.experiment.callback import SnowflakeXgboostCallback, SnowflakeLightgbmCallback
|
|
439
460
|
|
|
440
461
|
exp = ExperimentTracking(session=sp_session, database_name="ML", schema_name="PUBLIC")
|
|
441
462
|
|
|
442
463
|
exp.set_experiment("MY_EXPERIMENT")
|
|
443
464
|
|
|
444
465
|
# XGBoost
|
|
445
|
-
from snowflake.ml.experiment.callback.xgboost import SnowflakeXgboostCallback
|
|
446
466
|
callback = SnowflakeXgboostCallback(
|
|
447
467
|
exp, log_model=True, log_metrics=True, log_params=True, model_name="model_name", model_signature=sig
|
|
448
468
|
)
|
|
@@ -451,7 +471,6 @@ with exp.start_run():
|
|
|
451
471
|
model.fit(X, y, eval_set=[(X_test, y_test)])
|
|
452
472
|
|
|
453
473
|
# LightGBM
|
|
454
|
-
from snowflake.ml.experiment.callback.lightgbm import SnowflakeLightgbmCallback
|
|
455
474
|
callback = SnowflakeLightgbmCallback(
|
|
456
475
|
exp, log_model=True, log_metrics=True, log_params=True, model_name="model_name", model_signature=sig
|
|
457
476
|
)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import json
|
|
2
|
+
from typing import TYPE_CHECKING, Any, Optional
|
|
3
|
+
from warnings import warn
|
|
4
|
+
|
|
5
|
+
import keras
|
|
6
|
+
|
|
7
|
+
from snowflake.ml.experiment import utils
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from snowflake.ml.experiment.experiment_tracking import ExperimentTracking
|
|
11
|
+
from snowflake.ml.model.model_signature import ModelSignature
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class SnowflakeKerasCallback(keras.callbacks.Callback):
|
|
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
|
+
log_every_n_epochs: int = 1,
|
|
22
|
+
model_name: Optional[str] = None,
|
|
23
|
+
model_signature: Optional["ModelSignature"] = None,
|
|
24
|
+
) -> None:
|
|
25
|
+
self._experiment_tracking = experiment_tracking
|
|
26
|
+
self.log_model = log_model
|
|
27
|
+
self.log_metrics = log_metrics
|
|
28
|
+
self.log_params = log_params
|
|
29
|
+
if log_every_n_epochs < 1:
|
|
30
|
+
raise ValueError("`log_every_n_epochs` must be positive.")
|
|
31
|
+
self.log_every_n_epochs = log_every_n_epochs
|
|
32
|
+
self.model_name = model_name
|
|
33
|
+
self.model_signature = model_signature
|
|
34
|
+
|
|
35
|
+
def on_train_begin(self, logs: Optional[dict[str, Any]] = None) -> None:
|
|
36
|
+
if self.log_params:
|
|
37
|
+
params = json.loads(self.model.to_json())
|
|
38
|
+
self._experiment_tracking.log_params(utils.flatten_nested_params(params))
|
|
39
|
+
|
|
40
|
+
def on_epoch_end(self, epoch: int, logs: Optional[dict[str, Any]] = None) -> None:
|
|
41
|
+
if self.log_metrics and logs and epoch % self.log_every_n_epochs == 0:
|
|
42
|
+
for key, value in logs.items():
|
|
43
|
+
try:
|
|
44
|
+
value = float(value)
|
|
45
|
+
except Exception:
|
|
46
|
+
pass
|
|
47
|
+
else:
|
|
48
|
+
self._experiment_tracking.log_metric(key=key, value=value, step=epoch)
|
|
49
|
+
|
|
50
|
+
def on_train_end(self, logs: Optional[dict[str, Any]] = None) -> None:
|
|
51
|
+
if self.log_model:
|
|
52
|
+
if not self.model_signature:
|
|
53
|
+
warn(
|
|
54
|
+
"Model will not be logged because model signature is missing. "
|
|
55
|
+
"To autolog the model, please specify `model_signature` when constructing SnowflakeKerasCallback."
|
|
56
|
+
)
|
|
57
|
+
return
|
|
58
|
+
model_name = self.model_name or self._experiment_tracking._get_or_set_experiment().name + "_model"
|
|
59
|
+
self._experiment_tracking.log_model( # type: ignore[call-arg]
|
|
60
|
+
model=self.model,
|
|
61
|
+
model_name=model_name,
|
|
62
|
+
signatures={"predict": self.model_signature},
|
|
63
|
+
)
|
|
@@ -15,6 +15,7 @@ class SnowflakeLightgbmCallback(lgb.callback._RecordEvaluationCallback):
|
|
|
15
15
|
log_model: bool = True,
|
|
16
16
|
log_metrics: bool = True,
|
|
17
17
|
log_params: bool = True,
|
|
18
|
+
log_every_n_epochs: int = 1,
|
|
18
19
|
model_name: Optional[str] = None,
|
|
19
20
|
model_signature: Optional["ModelSignature"] = None,
|
|
20
21
|
) -> None:
|
|
@@ -22,6 +23,9 @@ class SnowflakeLightgbmCallback(lgb.callback._RecordEvaluationCallback):
|
|
|
22
23
|
self.log_model = log_model
|
|
23
24
|
self.log_metrics = log_metrics
|
|
24
25
|
self.log_params = log_params
|
|
26
|
+
if log_every_n_epochs < 1:
|
|
27
|
+
raise ValueError("`log_every_n_epochs` must be positive.")
|
|
28
|
+
self.log_every_n_epochs = log_every_n_epochs
|
|
25
29
|
self.model_name = model_name
|
|
26
30
|
self.model_signature = model_signature
|
|
27
31
|
|
|
@@ -32,7 +36,7 @@ class SnowflakeLightgbmCallback(lgb.callback._RecordEvaluationCallback):
|
|
|
32
36
|
if env.iteration == env.begin_iteration: # Log params only at the first iteration
|
|
33
37
|
self._experiment_tracking.log_params(env.params)
|
|
34
38
|
|
|
35
|
-
if self.log_metrics:
|
|
39
|
+
if self.log_metrics and env.iteration % self.log_every_n_epochs == 0:
|
|
36
40
|
super().__call__(env)
|
|
37
41
|
for dataset_name, metrics in self.eval_result.items():
|
|
38
42
|
for metric_name, log in metrics.items():
|
|
@@ -18,6 +18,7 @@ class SnowflakeXgboostCallback(xgb.callback.TrainingCallback):
|
|
|
18
18
|
log_model: bool = True,
|
|
19
19
|
log_metrics: bool = True,
|
|
20
20
|
log_params: bool = True,
|
|
21
|
+
log_every_n_epochs: int = 1,
|
|
21
22
|
model_name: Optional[str] = None,
|
|
22
23
|
model_signature: Optional["ModelSignature"] = None,
|
|
23
24
|
) -> None:
|
|
@@ -25,6 +26,9 @@ class SnowflakeXgboostCallback(xgb.callback.TrainingCallback):
|
|
|
25
26
|
self.log_model = log_model
|
|
26
27
|
self.log_metrics = log_metrics
|
|
27
28
|
self.log_params = log_params
|
|
29
|
+
if log_every_n_epochs < 1:
|
|
30
|
+
raise ValueError("`log_every_n_epochs` must be positive.")
|
|
31
|
+
self.log_every_n_epochs = log_every_n_epochs
|
|
28
32
|
self.model_name = model_name
|
|
29
33
|
self.model_signature = model_signature
|
|
30
34
|
|
|
@@ -36,7 +40,7 @@ class SnowflakeXgboostCallback(xgb.callback.TrainingCallback):
|
|
|
36
40
|
return model
|
|
37
41
|
|
|
38
42
|
def after_iteration(self, model: Any, epoch: int, evals_log: dict[str, dict[str, Any]]) -> bool:
|
|
39
|
-
if self.log_metrics:
|
|
43
|
+
if self.log_metrics and epoch % self.log_every_n_epochs == 0:
|
|
40
44
|
for dataset_name, metrics in evals_log.items():
|
|
41
45
|
for metric_name, log in metrics.items():
|
|
42
46
|
metric_key = dataset_name + ":" + metric_name
|
|
File without changes
|
{snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/constants.py
RENAMED
|
@@ -28,7 +28,7 @@ OUTPUT_MOUNT_PATH = f"{STAGE_VOLUME_MOUNT_PATH}/{OUTPUT_STAGE_SUBPATH}"
|
|
|
28
28
|
DEFAULT_IMAGE_REPO = "/snowflake/images/snowflake_images"
|
|
29
29
|
DEFAULT_IMAGE_CPU = "st_plat/runtime/x86/runtime_image/snowbooks"
|
|
30
30
|
DEFAULT_IMAGE_GPU = "st_plat/runtime/x86/generic_gpu/runtime_image/snowbooks"
|
|
31
|
-
DEFAULT_IMAGE_TAG = "1.
|
|
31
|
+
DEFAULT_IMAGE_TAG = "1.6.2"
|
|
32
32
|
DEFAULT_ENTRYPOINT_PATH = "func.py"
|
|
33
33
|
|
|
34
34
|
# Percent of container memory to allocate for /dev/shm volume
|
|
@@ -98,3 +98,6 @@ CLOUD_INSTANCE_FAMILIES = {
|
|
|
98
98
|
SnowflakeCloudType.AWS: AWS_INSTANCE_FAMILIES,
|
|
99
99
|
SnowflakeCloudType.AZURE: AZURE_INSTANCE_FAMILIES,
|
|
100
100
|
}
|
|
101
|
+
|
|
102
|
+
# runtime version environment variable
|
|
103
|
+
ENABLE_IMAGE_VERSION_ENV_VAR = "MLRS_ENABLE_RUNTIME_VERSIONS"
|
{snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/payload_utils.py
RENAMED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import functools
|
|
2
|
+
import importlib
|
|
2
3
|
import inspect
|
|
3
4
|
import io
|
|
4
5
|
import itertools
|
|
@@ -7,6 +8,7 @@ import logging
|
|
|
7
8
|
import pickle
|
|
8
9
|
import sys
|
|
9
10
|
import textwrap
|
|
11
|
+
from importlib.abc import Traversable
|
|
10
12
|
from pathlib import Path, PurePath
|
|
11
13
|
from typing import Any, Callable, Optional, Union, cast, get_args, get_origin
|
|
12
14
|
|
|
@@ -262,11 +264,24 @@ def upload_payloads(session: snowpark.Session, stage_path: PurePath, *payload_sp
|
|
|
262
264
|
# Manually traverse the directory and upload each file, since Snowflake PUT
|
|
263
265
|
# can't handle directories. Reduce the number of PUT operations by using
|
|
264
266
|
# wildcard patterns to batch upload files with the same extension.
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
267
|
+
upload_path_patterns = set()
|
|
268
|
+
for p in source_path.resolve().rglob("*"):
|
|
269
|
+
if p.is_dir():
|
|
270
|
+
continue
|
|
271
|
+
if p.name.startswith("."):
|
|
272
|
+
# Hidden files: use .* pattern for batch upload
|
|
273
|
+
if p.suffix:
|
|
274
|
+
upload_path_patterns.add(p.parent.joinpath(f".*{p.suffix}"))
|
|
275
|
+
else:
|
|
276
|
+
upload_path_patterns.add(p.parent.joinpath(".*"))
|
|
277
|
+
else:
|
|
278
|
+
# Regular files: use * pattern for batch upload
|
|
279
|
+
if p.suffix:
|
|
280
|
+
upload_path_patterns.add(p.parent.joinpath(f"*{p.suffix}"))
|
|
281
|
+
else:
|
|
282
|
+
upload_path_patterns.add(p)
|
|
283
|
+
|
|
284
|
+
for path in upload_path_patterns:
|
|
270
285
|
session.file.put(
|
|
271
286
|
str(path),
|
|
272
287
|
payload_stage_path.joinpath(path.parent.relative_to(source_path)).as_posix(),
|
|
@@ -282,6 +297,27 @@ def upload_payloads(session: snowpark.Session, stage_path: PurePath, *payload_sp
|
|
|
282
297
|
)
|
|
283
298
|
|
|
284
299
|
|
|
300
|
+
def upload_system_resources(session: snowpark.Session, stage_path: PurePath) -> None:
|
|
301
|
+
resource_ref = importlib.resources.files(__package__).joinpath("scripts")
|
|
302
|
+
|
|
303
|
+
def upload_dir(ref: Traversable, relative_path: str = "") -> None:
|
|
304
|
+
for item in ref.iterdir():
|
|
305
|
+
current_path = Path(relative_path) / item.name if relative_path else Path(item.name)
|
|
306
|
+
if item.is_dir():
|
|
307
|
+
# Recursively process subdirectories
|
|
308
|
+
upload_dir(item, str(current_path))
|
|
309
|
+
elif item.is_file():
|
|
310
|
+
content = item.read_bytes()
|
|
311
|
+
session.file.put_stream(
|
|
312
|
+
io.BytesIO(content),
|
|
313
|
+
stage_path.joinpath(current_path).as_posix(),
|
|
314
|
+
auto_compress=False,
|
|
315
|
+
overwrite=True,
|
|
316
|
+
)
|
|
317
|
+
|
|
318
|
+
upload_dir(resource_ref)
|
|
319
|
+
|
|
320
|
+
|
|
285
321
|
def resolve_source(
|
|
286
322
|
source: Union[types.PayloadPath, Callable[..., Any]]
|
|
287
323
|
) -> Union[types.PayloadPath, Callable[..., Any]]:
|
|
@@ -497,15 +533,7 @@ class JobPayload:
|
|
|
497
533
|
overwrite=False, # FIXME
|
|
498
534
|
)
|
|
499
535
|
|
|
500
|
-
|
|
501
|
-
for script_file in scripts_dir.glob("*"):
|
|
502
|
-
if script_file.is_file():
|
|
503
|
-
session.file.put(
|
|
504
|
-
script_file.as_posix(),
|
|
505
|
-
system_stage_path.as_posix(),
|
|
506
|
-
overwrite=True,
|
|
507
|
-
auto_compress=False,
|
|
508
|
-
)
|
|
536
|
+
upload_system_resources(session, system_stage_path)
|
|
509
537
|
python_entrypoint: list[Union[str, PurePath]] = [
|
|
510
538
|
PurePath(f"{constants.SYSTEM_MOUNT_PATH}/mljob_launcher.py"),
|
|
511
539
|
PurePath(f"{constants.APP_MOUNT_PATH}/{entrypoint.file_path.relative_to(source).as_posix()}"),
|
{snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/query_helper.py
RENAMED
|
@@ -4,6 +4,7 @@ from snowflake import snowpark
|
|
|
4
4
|
from snowflake.snowpark import Row
|
|
5
5
|
from snowflake.snowpark._internal import utils
|
|
6
6
|
from snowflake.snowpark._internal.analyzer import snowflake_plan
|
|
7
|
+
from snowflake.snowpark._internal.utils import is_in_stored_procedure
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
def result_set_to_rows(session: snowpark.Session, result: dict[str, Any]) -> list[Row]:
|
|
@@ -14,7 +15,10 @@ def result_set_to_rows(session: snowpark.Session, result: dict[str, Any]) -> lis
|
|
|
14
15
|
|
|
15
16
|
@snowflake_plan.SnowflakePlan.Decorator.wrap_exception # type: ignore[misc]
|
|
16
17
|
def run_query(session: snowpark.Session, query_text: str, params: Optional[Sequence[Any]] = None) -> list[Row]:
|
|
17
|
-
|
|
18
|
+
kwargs: dict[str, Any] = {"query": query_text, "params": params}
|
|
19
|
+
if not is_in_stored_procedure(): # type: ignore[no-untyped-call]
|
|
20
|
+
kwargs["_force_qmark_paramstyle"] = True
|
|
21
|
+
result = session._conn.run_query(**kwargs)
|
|
18
22
|
if not isinstance(result, dict) or "data" not in result:
|
|
19
23
|
raise ValueError(f"Unprocessable result: {result}")
|
|
20
24
|
return result_set_to_rows(session, result)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from typing import Any, Optional, Union
|
|
2
|
+
|
|
3
|
+
from packaging.version import Version
|
|
4
|
+
from pydantic import BaseModel, Field, RootModel, field_validator
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class SpcsContainerRuntime(BaseModel):
|
|
8
|
+
python_version: Version = Field(alias="pythonVersion")
|
|
9
|
+
hardware_type: str = Field(alias="hardwareType")
|
|
10
|
+
runtime_container_image: str = Field(alias="runtimeContainerImage")
|
|
11
|
+
|
|
12
|
+
@field_validator("python_version", mode="before")
|
|
13
|
+
@classmethod
|
|
14
|
+
def validate_python_version(cls, v: Union[str, Version]) -> Version:
|
|
15
|
+
if isinstance(v, Version):
|
|
16
|
+
return v
|
|
17
|
+
try:
|
|
18
|
+
return Version(v)
|
|
19
|
+
except Exception:
|
|
20
|
+
raise ValueError(f"Invalid Python version format: {v}")
|
|
21
|
+
|
|
22
|
+
class Config:
|
|
23
|
+
frozen = True
|
|
24
|
+
extra = "allow"
|
|
25
|
+
arbitrary_types_allowed = True
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class RuntimeEnvironmentEntry(BaseModel):
|
|
29
|
+
spcs_container_runtime: Optional[SpcsContainerRuntime] = Field(alias="spcsContainerRuntime", default=None)
|
|
30
|
+
|
|
31
|
+
class Config:
|
|
32
|
+
extra = "allow"
|
|
33
|
+
frozen = True
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class RuntimeEnvironmentsDict(RootModel[dict[str, RuntimeEnvironmentEntry]]):
|
|
37
|
+
@field_validator("root", mode="before")
|
|
38
|
+
@classmethod
|
|
39
|
+
def _filter_to_dict_entries(cls, data: Any) -> dict[str, dict[str, Any]]:
|
|
40
|
+
"""
|
|
41
|
+
Pre-validation hook: keep only those items at the root level
|
|
42
|
+
whose values are dicts. Non-dict values will be dropped.
|
|
43
|
+
|
|
44
|
+
Args:
|
|
45
|
+
data: The input data to filter, expected to be a dictionary.
|
|
46
|
+
|
|
47
|
+
Returns:
|
|
48
|
+
A dictionary containing only the key-value pairs where values are dictionaries.
|
|
49
|
+
|
|
50
|
+
Raises:
|
|
51
|
+
ValueError: If input data is not a dictionary.
|
|
52
|
+
"""
|
|
53
|
+
# If the entire root is not a dict, raise error immediately
|
|
54
|
+
if not isinstance(data, dict):
|
|
55
|
+
raise ValueError(f"Expected dictionary data, but got {type(data).__name__}: {data}")
|
|
56
|
+
|
|
57
|
+
# Filter out any key whose value is not a dict
|
|
58
|
+
return {key: value for key, value in data.items() if isinstance(value, dict)}
|
|
59
|
+
|
|
60
|
+
def get_spcs_container_runtimes(self) -> list[SpcsContainerRuntime]:
|
|
61
|
+
return [
|
|
62
|
+
entry.spcs_container_runtime for entry in self.root.values() if entry.spcs_container_runtime is not None
|
|
63
|
+
]
|
|
@@ -47,8 +47,8 @@ def get_first_instance(service_name: str) -> Optional[tuple[str, str, str]]:
|
|
|
47
47
|
if not result:
|
|
48
48
|
return None
|
|
49
49
|
|
|
50
|
-
# Sort by start_time first, then by instance_id
|
|
51
|
-
sorted_instances = sorted(result, key=lambda x: (x["start_time"], int(x["instance_id"])))
|
|
50
|
+
# Sort by start_time first, then by instance_id. If start_time is null/empty, it will be sorted to the end.
|
|
51
|
+
sorted_instances = sorted(result, key=lambda x: (not bool(x["start_time"]), x["start_time"], int(x["instance_id"])))
|
|
52
52
|
head_instance = sorted_instances[0]
|
|
53
53
|
if not head_instance["instance_id"] or not head_instance["ip_address"]:
|
|
54
54
|
return None
|
|
@@ -173,10 +173,10 @@ def wait_for_instances(
|
|
|
173
173
|
|
|
174
174
|
start_time = time.time()
|
|
175
175
|
current_interval = max(min(1, check_interval), 0.1) # Default 1s, minimum 0.1s
|
|
176
|
-
logger.
|
|
176
|
+
logger.info(
|
|
177
177
|
"Waiting for instances to be ready "
|
|
178
|
-
"(min_instances={}, target_instances={}, timeout={}s, max_check_interval={}s)".format(
|
|
179
|
-
min_instances, target_instances, timeout, check_interval
|
|
178
|
+
"(min_instances={}, target_instances={}, min_wait_time={}s, timeout={}s, max_check_interval={}s)".format(
|
|
179
|
+
min_instances, target_instances, min_wait_time, timeout, check_interval
|
|
180
180
|
)
|
|
181
181
|
)
|
|
182
182
|
|
{snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/spec_utils.py
RENAMED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import os
|
|
3
|
+
import sys
|
|
3
4
|
from math import ceil
|
|
4
5
|
from pathlib import PurePath
|
|
5
|
-
from typing import Any, Optional, Union
|
|
6
|
+
from typing import Any, Literal, Optional, Union
|
|
6
7
|
|
|
7
8
|
from snowflake import snowpark
|
|
8
9
|
from snowflake.ml._internal.utils import snowflake_env
|
|
9
10
|
from snowflake.ml.jobs._utils import constants, query_helper, types
|
|
11
|
+
from snowflake.ml.jobs._utils.runtime_env_utils import RuntimeEnvironmentsDict
|
|
10
12
|
|
|
11
13
|
|
|
12
14
|
def _get_node_resources(session: snowpark.Session, compute_pool: str) -> types.ComputeResources:
|
|
@@ -28,22 +30,53 @@ def _get_node_resources(session: snowpark.Session, compute_pool: str) -> types.C
|
|
|
28
30
|
)
|
|
29
31
|
|
|
30
32
|
|
|
33
|
+
def _get_runtime_image(session: snowpark.Session, target_hardware: Literal["CPU", "GPU"]) -> Optional[str]:
|
|
34
|
+
rows = query_helper.run_query(session, "CALL SYSTEM$NOTEBOOKS_FIND_LABELED_RUNTIMES()")
|
|
35
|
+
if not rows:
|
|
36
|
+
return None
|
|
37
|
+
try:
|
|
38
|
+
runtime_envs = RuntimeEnvironmentsDict.model_validate_json(rows[0][0])
|
|
39
|
+
spcs_container_runtimes = runtime_envs.get_spcs_container_runtimes()
|
|
40
|
+
except Exception as e:
|
|
41
|
+
logging.warning(f"Failed to parse runtime image name from {rows[0][0]}, error: {e}")
|
|
42
|
+
return None
|
|
43
|
+
|
|
44
|
+
selected_runtime = next(
|
|
45
|
+
(
|
|
46
|
+
runtime
|
|
47
|
+
for runtime in spcs_container_runtimes
|
|
48
|
+
if (
|
|
49
|
+
runtime.hardware_type.lower() == target_hardware.lower()
|
|
50
|
+
and runtime.python_version.major == sys.version_info.major
|
|
51
|
+
and runtime.python_version.minor == sys.version_info.minor
|
|
52
|
+
)
|
|
53
|
+
),
|
|
54
|
+
None,
|
|
55
|
+
)
|
|
56
|
+
return selected_runtime.runtime_container_image if selected_runtime else None
|
|
57
|
+
|
|
58
|
+
|
|
31
59
|
def _get_image_spec(session: snowpark.Session, compute_pool: str) -> types.ImageSpec:
|
|
32
60
|
# Retrieve compute pool node resources
|
|
33
61
|
resources = _get_node_resources(session, compute_pool=compute_pool)
|
|
34
62
|
|
|
35
63
|
# Use MLRuntime image
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
64
|
+
hardware = "GPU" if resources.gpu > 0 else "CPU"
|
|
65
|
+
container_image = None
|
|
66
|
+
if os.environ.get(constants.ENABLE_IMAGE_VERSION_ENV_VAR, "").lower() == "true":
|
|
67
|
+
container_image = _get_runtime_image(session, hardware) # type: ignore[arg-type]
|
|
68
|
+
|
|
69
|
+
if not container_image:
|
|
70
|
+
image_repo = constants.DEFAULT_IMAGE_REPO
|
|
71
|
+
image_name = constants.DEFAULT_IMAGE_GPU if resources.gpu > 0 else constants.DEFAULT_IMAGE_CPU
|
|
72
|
+
image_tag = _get_runtime_image_tag()
|
|
73
|
+
container_image = f"{image_repo}/{image_name}:{image_tag}"
|
|
39
74
|
|
|
40
75
|
# TODO: Should each instance consume the entire pod?
|
|
41
76
|
return types.ImageSpec(
|
|
42
|
-
repo=image_repo,
|
|
43
|
-
image_name=image_name,
|
|
44
|
-
image_tag=image_tag,
|
|
45
77
|
resource_requests=resources,
|
|
46
78
|
resource_limits=resources,
|
|
79
|
+
container_image=container_image,
|
|
47
80
|
)
|
|
48
81
|
|
|
49
82
|
|
|
@@ -220,7 +253,7 @@ def generate_service_spec(
|
|
|
220
253
|
"containers": [
|
|
221
254
|
{
|
|
222
255
|
"name": constants.DEFAULT_CONTAINER_NAME,
|
|
223
|
-
"image": image_spec.
|
|
256
|
+
"image": image_spec.container_image,
|
|
224
257
|
"command": ["/usr/local/bin/_entrypoint.sh"],
|
|
225
258
|
"args": [
|
|
226
259
|
(stage_mount.joinpath(v).as_posix() if isinstance(v, PurePath) else v) for v in payload.entrypoint
|
{snowflake_ml_python-1.10.0 → snowflake_ml_python-1.11.0}/snowflake/ml/jobs/_utils/stage_utils.py
RENAMED
|
@@ -121,15 +121,28 @@ class StagePath:
|
|
|
121
121
|
return self._compose_path(self._path)
|
|
122
122
|
|
|
123
123
|
def joinpath(self, *args: Union[str, PathLike[str]]) -> "StagePath":
|
|
124
|
+
"""
|
|
125
|
+
Joins the given path arguments to the current path,
|
|
126
|
+
mimicking the behavior of pathlib.Path.joinpath.
|
|
127
|
+
If the argument is a stage path (i.e., an absolute path),
|
|
128
|
+
it overrides the current path and is returned as the final path.
|
|
129
|
+
If the argument is a normal path, it is joined with the current relative path
|
|
130
|
+
using self._path.joinpath(arg).
|
|
131
|
+
|
|
132
|
+
Args:
|
|
133
|
+
*args: Path components to join.
|
|
134
|
+
|
|
135
|
+
Returns:
|
|
136
|
+
A new StagePath with the joined path.
|
|
137
|
+
|
|
138
|
+
Raises:
|
|
139
|
+
NotImplementedError: the argument is a stage path.
|
|
140
|
+
"""
|
|
124
141
|
path = self
|
|
125
142
|
for arg in args:
|
|
126
|
-
|
|
143
|
+
if isinstance(arg, StagePath):
|
|
144
|
+
raise NotImplementedError
|
|
145
|
+
else:
|
|
146
|
+
# the arg might be an absolute path, so we need to remove the leading '/'
|
|
147
|
+
path = StagePath(f"{path.root}/{path._path.joinpath(arg).as_posix().lstrip('/')}")
|
|
127
148
|
return path
|
|
128
|
-
|
|
129
|
-
def _make_child(self, path: Union[str, PathLike[str]]) -> "StagePath":
|
|
130
|
-
stage_path = path if isinstance(path, StagePath) else StagePath(os.fspath(path))
|
|
131
|
-
if self.root == stage_path.root:
|
|
132
|
-
child_path = self._path.joinpath(stage_path._path)
|
|
133
|
-
return StagePath(self._compose_path(child_path))
|
|
134
|
-
else:
|
|
135
|
-
return stage_path
|
|
@@ -30,6 +30,10 @@ class PayloadPath(Protocol):
|
|
|
30
30
|
def parent(self) -> "PayloadPath":
|
|
31
31
|
...
|
|
32
32
|
|
|
33
|
+
@property
|
|
34
|
+
def root(self) -> str:
|
|
35
|
+
...
|
|
36
|
+
|
|
33
37
|
def exists(self) -> bool:
|
|
34
38
|
...
|
|
35
39
|
|
|
@@ -98,12 +102,6 @@ class ComputeResources:
|
|
|
98
102
|
|
|
99
103
|
@dataclass(frozen=True)
|
|
100
104
|
class ImageSpec:
|
|
101
|
-
repo: str
|
|
102
|
-
image_name: str
|
|
103
|
-
image_tag: str
|
|
104
105
|
resource_requests: ComputeResources
|
|
105
106
|
resource_limits: ComputeResources
|
|
106
|
-
|
|
107
|
-
@property
|
|
108
|
-
def full_name(self) -> str:
|
|
109
|
-
return f"{self.repo}/{self.image_name}:{self.image_tag}"
|
|
107
|
+
container_image: str
|
|
@@ -199,7 +199,7 @@ class MLJob(Generic[T], SerializableSessionMixin):
|
|
|
199
199
|
elapsed = time.monotonic() - start_time
|
|
200
200
|
if elapsed >= timeout >= 0:
|
|
201
201
|
raise TimeoutError(f"Job {self.name} did not complete within {timeout} seconds")
|
|
202
|
-
elif status == "PENDING" and not warning_shown and elapsed >=
|
|
202
|
+
elif status == "PENDING" and not warning_shown and elapsed >= 5: # Only show warning after 5s
|
|
203
203
|
pool_info = _get_compute_pool_info(self._session, self._compute_pool)
|
|
204
204
|
if (pool_info.max_nodes - pool_info.active_nodes) < self.min_instances:
|
|
205
205
|
logger.warning(
|
|
@@ -426,7 +426,6 @@ def _submit_job(
|
|
|
426
426
|
|
|
427
427
|
Raises:
|
|
428
428
|
ValueError: If database or schema value(s) are invalid
|
|
429
|
-
SnowparkSQLException: If there is an error submitting the job.
|
|
430
429
|
"""
|
|
431
430
|
session = session or get_active_session()
|
|
432
431
|
|
|
@@ -504,18 +503,7 @@ def _submit_job(
|
|
|
504
503
|
query_text, params = _generate_submission_query(
|
|
505
504
|
spec, external_access_integrations, query_warehouse, target_instances, session, compute_pool, job_id
|
|
506
505
|
)
|
|
507
|
-
|
|
508
|
-
_ = query_helper.run_query(session, query_text, params=params)
|
|
509
|
-
except SnowparkSQLException as e:
|
|
510
|
-
if "Invalid spec: unknown option 'resourceManagement' for 'spec'." in e.message:
|
|
511
|
-
logger.warning("Dropping 'resourceManagement' from spec because control policy is not enabled.")
|
|
512
|
-
spec["spec"].pop("resourceManagement", None)
|
|
513
|
-
query_text, params = _generate_submission_query(
|
|
514
|
-
spec, external_access_integrations, query_warehouse, target_instances, session, compute_pool, job_id
|
|
515
|
-
)
|
|
516
|
-
_ = query_helper.run_query(session, query_text, params=params)
|
|
517
|
-
else:
|
|
518
|
-
raise
|
|
506
|
+
_ = query_helper.run_query(session, query_text, params=params)
|
|
519
507
|
return get_job(job_id, session=session)
|
|
520
508
|
|
|
521
509
|
|