snowflake-ml-python 1.7.0__tar.gz → 1.7.1__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.7.0 → snowflake_ml_python-1.7.1}/CHANGELOG.md +26 -1
- {snowflake_ml_python-1.7.0/snowflake_ml_python.egg-info → snowflake_ml_python-1.7.1}/PKG-INFO +31 -5
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/pyproject.toml +3 -3
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/cortex/__init__.py +4 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/cortex/_complete.py +107 -64
- snowflake_ml_python-1.7.1/snowflake/cortex/_finetune.py +273 -0
- snowflake_ml_python-1.7.1/snowflake/cortex/_sse_client.py +144 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/cortex/_util.py +30 -1
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/type_utils.py +3 -3
- snowflake_ml_python-1.7.1/snowflake/ml/data/__init__.py +5 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_client/model/model_version_impl.py +7 -7
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_client/ops/model_ops.py +51 -30
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_client/ops/service_ops.py +13 -2
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_client/sql/model.py +0 -14
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_client/sql/service.py +25 -1
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +2 -1
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_env/model_env.py +12 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers/_utils.py +1 -1
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers/catboost.py +1 -1
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers/custom.py +3 -1
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +2 -1
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers/sklearn.py +48 -1
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +1 -1
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +23 -6
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers/torchscript.py +14 -14
- snowflake_ml_python-1.7.1/snowflake/ml/model/_packager/model_meta/_packaging_requirements.py +2 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +5 -0
- snowflake_ml_python-1.7.1/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +2 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +4 -9
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_task/model_task_utils.py +1 -1
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_signatures/core.py +63 -16
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_signatures/pandas_handler.py +71 -27
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_signatures/pytorch_handler.py +2 -2
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_signatures/snowpark_handler.py +2 -1
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_signatures/tensorflow_handler.py +2 -2
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_signatures/utils.py +4 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/model_signature.py +38 -9
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/type_hints.py +1 -1
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +2 -4
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +2 -4
- snowflake_ml_python-1.7.1/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +448 -0
- snowflake_ml_python-1.7.1/snowflake/ml/monitoring/_manager/model_monitor_manager.py +238 -0
- snowflake_ml_python-1.7.1/snowflake/ml/monitoring/entities/model_monitor_config.py +28 -0
- snowflake_ml_python-1.7.1/snowflake/ml/monitoring/model_monitor.py +37 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/registry/registry.py +17 -29
- snowflake_ml_python-1.7.1/snowflake/ml/version.py +1 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1/snowflake_ml_python.egg-info}/PKG-INFO +31 -5
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake_ml_python.egg-info/SOURCES.txt +2 -1
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake_ml_python.egg-info/requires.txt +4 -3
- snowflake_ml_python-1.7.0/snowflake/cortex/_sse_client.py +0 -81
- snowflake_ml_python-1.7.0/snowflake/ml/model/_packager/model_meta/_packaging_requirements.py +0 -3
- snowflake_ml_python-1.7.0/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +0 -10
- snowflake_ml_python-1.7.0/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -1335
- snowflake_ml_python-1.7.0/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -362
- snowflake_ml_python-1.7.0/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -28
- snowflake_ml_python-1.7.0/snowflake/ml/monitoring/entities/model_monitor_interval.py +0 -46
- snowflake_ml_python-1.7.0/snowflake/ml/monitoring/model_monitor.py +0 -126
- snowflake_ml_python-1.7.0/snowflake/ml/version.py +0 -1
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/README.md +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/setup.cfg +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/cortex/_embed_text_1024.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/cortex/_embed_text_768.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/env_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/telemetry.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/db_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/identifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/retryable_http.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/service_logger.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/table_manager.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/data/data_connector.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/data/data_ingestor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/data/ingestor_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/data/torch_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/dataset/dataset.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/dataset/dataset_metadata.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/dataset/dataset_reader.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/feature_store.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/feature_store/feature_view.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/fileset/fileset.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/fileset/parquet_parser.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/fileset/sfcfs.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/fileset/tf_dataset.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/fileset/torch_datapipe.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/lineage/lineage_node.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_client/model/model_impl.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_client/service/model_deployment_spec.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_client/sql/model_version.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_client/sql/stage.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_model_composer/model_method/model_method.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_meta/model_meta.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_packager/model_packager.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/constants.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/ml_runtime_implementations/ml_runtime_handlers.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/ml_runtime_implementations/ml_runtime_trainer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/cluster/affinity_propagation.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/cluster/birch.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/cluster/bisecting_k_means.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/cluster/dbscan.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/cluster/feature_agglomeration.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/cluster/k_means.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/cluster/mean_shift.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/cluster/optics.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/cluster/spectral_biclustering.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/cluster/spectral_clustering.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/cluster/spectral_coclustering.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/compose/column_transformer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/compose/transformed_target_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/covariance/elliptic_envelope.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/covariance/empirical_covariance.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/covariance/graphical_lasso.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/covariance/ledoit_wolf.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/covariance/min_cov_det.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/covariance/oas.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/covariance/shrunk_covariance.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/decomposition/dictionary_learning.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/decomposition/factor_analysis.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/decomposition/fast_ica.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/decomposition/incremental_pca.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/decomposition/kernel_pca.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/decomposition/pca.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/decomposition/sparse_pca.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/decomposition/truncated_svd.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/bagging_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/bagging_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/isolation_forest.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/stacking_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/voting_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/ensemble/voting_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/feature_selection/select_fdr.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/feature_selection/select_fpr.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/feature_selection/select_fwe.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/feature_selection/select_k_best.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/feature_selection/select_percentile.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/feature_selection/variance_threshold.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/framework/base.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/impute/iterative_imputer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/impute/knn_imputer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/impute/missing_indicator.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/kernel_approximation/nystroem.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/ard_regression.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/elastic_net.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/gamma_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/huber_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/lars.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/lars_cv.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/lasso.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/lasso_cv.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/lasso_lars.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/linear_regression.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/logistic_regression.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/perceptron.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/poisson_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/ransac_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/ridge.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/ridge_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/ridge_cv.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/sgd_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/sgd_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/manifold/isomap.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/manifold/mds.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/manifold/spectral_embedding.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/manifold/tsne.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/mixture/gaussian_mixture.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/multiclass/output_code_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/naive_bayes/complement_nb.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/neighbors/kernel_density.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/neighbors/nearest_centroid.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/neural_network/mlp_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/neural_network/mlp_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/preprocessing/polynomial_features.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/semi_supervised/label_propagation.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/semi_supervised/label_spreading.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/svm/linear_svc.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/svm/linear_svr.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/svm/nu_svc.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/svm/nu_svr.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/svm/svc.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/svm/svr.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/tree/decision_tree_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/tree/decision_tree_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/tree/extra_tree_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/tree/extra_tree_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/xgboost/xgb_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/xgboost/xgb_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/monitoring/entities/output_score_type.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/monitoring/model_monitor_version.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/registry/_manager/model_manager.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake/ml/utils/sql_client.py +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {snowflake_ml_python-1.7.0 → snowflake_ml_python-1.7.1}/snowflake_ml_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,31 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
-
## 1.7.
|
3
|
+
## 1.7.1
|
4
|
+
|
5
|
+
### Bug Fixes
|
6
|
+
|
7
|
+
- Registry: Null value is now allowed in the dataframe used in model signature inference. Null values will be ignored
|
8
|
+
and others will be used to infer the signature.
|
9
|
+
- Registry: Pandas Extension DTypes (`pandas.StringDType()`, `pandas.BooleanDType()`, etc.) are now supported in model
|
10
|
+
signature inference.
|
11
|
+
- Registry: Null value is now allowed in the dataframe used to predict.
|
12
|
+
- Data: Fix missing `snowflake.ml.data.*` module exports in wheel
|
13
|
+
- Dataset: Fix missing `snowflake.ml.dataset.*` module exports in wheel.
|
14
|
+
- Registry: Fix the issue that `tf_keras.Model` is not recognized as keras model when logging.
|
15
|
+
|
16
|
+
### Behavior Changes
|
17
|
+
|
18
|
+
### New Features
|
19
|
+
|
20
|
+
- Registry: Option to `enable_monitoring` set to False by default. This will gate access to preview features of Model Monitoring.
|
21
|
+
- Model Monitoring: `show_model_monitors` Registry method. This feature is still in Private Preview.
|
22
|
+
- Registry: Support `pd.Series` in input and output data.
|
23
|
+
- Model Monitoring: `add_monitor` Registry method. This feature is still in Private Preview.
|
24
|
+
- Model Monitoring: `resume` and `suspend` ModelMonitor. This feature is still in Private Preview.
|
25
|
+
- Model Monitoring: `get_monitor` Registry method. This feature is still in Private Preview.
|
26
|
+
- Model Monitoring: `delete_monitor` Registry method. This feature is still in Private Preview.
|
27
|
+
|
28
|
+
## 1.7.0 (10-22-2024)
|
4
29
|
|
5
30
|
### Behavior Change
|
6
31
|
|
{snowflake_ml_python-1.7.0/snowflake_ml_python.egg-info → snowflake_ml_python-1.7.1}/PKG-INFO
RENAMED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: snowflake-ml-python
|
3
|
-
Version: 1.7.
|
3
|
+
Version: 1.7.1
|
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:
|
@@ -236,10 +236,11 @@ Requires-Dist: absl-py<2,>=0.15
|
|
236
236
|
Requires-Dist: anyio<4,>=3.5.0
|
237
237
|
Requires-Dist: cachetools<6,>=3.1.1
|
238
238
|
Requires-Dist: cloudpickle>=2.0.0
|
239
|
+
Requires-Dist: cryptography
|
239
240
|
Requires-Dist: fsspec[http]<2024,>=2022.11
|
240
241
|
Requires-Dist: importlib_resources<7,>=6.1.1
|
241
242
|
Requires-Dist: numpy<2,>=1.23
|
242
|
-
Requires-Dist: packaging<
|
243
|
+
Requires-Dist: packaging<25,>=20.9
|
243
244
|
Requires-Dist: pandas<3,>=1.0.0
|
244
245
|
Requires-Dist: pyarrow
|
245
246
|
Requires-Dist: pytimeparse<2,>=1.1.8
|
@@ -255,7 +256,7 @@ Requires-Dist: typing-extensions<5,>=4.1.0
|
|
255
256
|
Requires-Dist: xgboost<3,>=1.7.3
|
256
257
|
Provides-Extra: all
|
257
258
|
Requires-Dist: catboost<2,>=1.2.0; extra == "all"
|
258
|
-
Requires-Dist: lightgbm<5,>=
|
259
|
+
Requires-Dist: lightgbm<5,>=4.1.0; extra == "all"
|
259
260
|
Requires-Dist: mlflow<2.4,>=2.1.0; extra == "all"
|
260
261
|
Requires-Dist: peft<1,>=0.5.0; extra == "all"
|
261
262
|
Requires-Dist: sentence-transformers<3,>=2.2.2; extra == "all"
|
@@ -269,7 +270,7 @@ Requires-Dist: transformers<5,>=4.32.1; extra == "all"
|
|
269
270
|
Provides-Extra: catboost
|
270
271
|
Requires-Dist: catboost<2,>=1.2.0; extra == "catboost"
|
271
272
|
Provides-Extra: lightgbm
|
272
|
-
Requires-Dist: lightgbm<5,>=
|
273
|
+
Requires-Dist: lightgbm<5,>=4.1.0; extra == "lightgbm"
|
273
274
|
Provides-Extra: llm
|
274
275
|
Requires-Dist: peft<1,>=0.5.0; extra == "llm"
|
275
276
|
Provides-Extra: mlflow
|
@@ -372,7 +373,32 @@ be compatibility issues. Server-side functionality that `snowflake-ml-python` de
|
|
372
373
|
|
373
374
|
# Release History
|
374
375
|
|
375
|
-
## 1.7.
|
376
|
+
## 1.7.1
|
377
|
+
|
378
|
+
### Bug Fixes
|
379
|
+
|
380
|
+
- Registry: Null value is now allowed in the dataframe used in model signature inference. Null values will be ignored
|
381
|
+
and others will be used to infer the signature.
|
382
|
+
- Registry: Pandas Extension DTypes (`pandas.StringDType()`, `pandas.BooleanDType()`, etc.) are now supported in model
|
383
|
+
signature inference.
|
384
|
+
- Registry: Null value is now allowed in the dataframe used to predict.
|
385
|
+
- Data: Fix missing `snowflake.ml.data.*` module exports in wheel
|
386
|
+
- Dataset: Fix missing `snowflake.ml.dataset.*` module exports in wheel.
|
387
|
+
- Registry: Fix the issue that `tf_keras.Model` is not recognized as keras model when logging.
|
388
|
+
|
389
|
+
### Behavior Changes
|
390
|
+
|
391
|
+
### New Features
|
392
|
+
|
393
|
+
- Registry: Option to `enable_monitoring` set to False by default. This will gate access to preview features of Model Monitoring.
|
394
|
+
- Model Monitoring: `show_model_monitors` Registry method. This feature is still in Private Preview.
|
395
|
+
- Registry: Support `pd.Series` in input and output data.
|
396
|
+
- Model Monitoring: `add_monitor` Registry method. This feature is still in Private Preview.
|
397
|
+
- Model Monitoring: `resume` and `suspend` ModelMonitor. This feature is still in Private Preview.
|
398
|
+
- Model Monitoring: `get_monitor` Registry method. This feature is still in Private Preview.
|
399
|
+
- Model Monitoring: `delete_monitor` Registry method. This feature is still in Private Preview.
|
400
|
+
|
401
|
+
## 1.7.0 (10-22-2024)
|
376
402
|
|
377
403
|
### Behavior Change
|
378
404
|
|
@@ -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", "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.12"
|
10
10
|
dynamic = [ "version", "readme",]
|
11
|
-
dependencies = [ "absl-py>=0.15,<2", "anyio>=3.5.0,<4", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "fsspec[http]>=2022.11,<2024", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<2", "packaging>=20.9,<
|
11
|
+
dependencies = [ "absl-py>=0.15,<2", "anyio>=3.5.0,<4", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2022.11,<2024", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<2", "packaging>=20.9,<25", "pandas>=1.0.0,<3", "pyarrow", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "s3fs>=2022.11,<2024", "scikit-learn>=1.4,<1.6", "scipy>=1.9,<2", "snowflake-connector-python[pandas]>=3.5.0,<4", "snowflake-snowpark-python>=1.17.0,<2", "sqlparse>=0.4,<1", "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,9 +24,9 @@ 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 = [ "catboost>=1.2.0, <2", "lightgbm>=
|
27
|
+
all = [ "catboost>=1.2.0, <2", "lightgbm>=4.1.0, <5", "mlflow>=2.1.0,<2.4", "peft>=0.5.0,<1", "sentence-transformers>=2.2.2,<3", "sentencepiece>=0.1.95,<1", "shap>=0.46.0,<1", "tensorflow>=2.10,<3", "tokenizers>=0.10,<1", "torch>=2.0.1,<2.3.0", "torchdata>=0.4,<1", "transformers>=4.32.1,<5",]
|
28
28
|
catboost = [ "catboost>=1.2.0, <2",]
|
29
|
-
lightgbm = [ "lightgbm>=
|
29
|
+
lightgbm = [ "lightgbm>=4.1.0, <5",]
|
30
30
|
llm = [ "peft>=0.5.0,<1",]
|
31
31
|
mlflow = [ "mlflow>=2.1.0,<2.4",]
|
32
32
|
shap = [ "shap>=0.46.0,<1",]
|
@@ -3,6 +3,7 @@ from snowflake.cortex._complete import Complete, CompleteOptions
|
|
3
3
|
from snowflake.cortex._embed_text_768 import EmbedText768
|
4
4
|
from snowflake.cortex._embed_text_1024 import EmbedText1024
|
5
5
|
from snowflake.cortex._extract_answer import ExtractAnswer
|
6
|
+
from snowflake.cortex._finetune import Finetune, FinetuneJob, FinetuneStatus
|
6
7
|
from snowflake.cortex._sentiment import Sentiment
|
7
8
|
from snowflake.cortex._summarize import Summarize
|
8
9
|
from snowflake.cortex._translate import Translate
|
@@ -14,6 +15,9 @@ __all__ = [
|
|
14
15
|
"EmbedText768",
|
15
16
|
"EmbedText1024",
|
16
17
|
"ExtractAnswer",
|
18
|
+
"Finetune",
|
19
|
+
"FinetuneJob",
|
20
|
+
"FinetuneStatus",
|
17
21
|
"Sentiment",
|
18
22
|
"Summarize",
|
19
23
|
"Translate",
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import json
|
2
2
|
import logging
|
3
3
|
import time
|
4
|
-
from
|
4
|
+
from io import BytesIO
|
5
|
+
from typing import Any, Callable, Dict, Iterator, List, Optional, TypedDict, Union, cast
|
5
6
|
from urllib.parse import urlunparse
|
6
7
|
|
7
8
|
import requests
|
@@ -16,8 +17,10 @@ from snowflake.cortex._util import (
|
|
16
17
|
)
|
17
18
|
from snowflake.ml._internal import telemetry
|
18
19
|
from snowflake.snowpark import context, functions
|
20
|
+
from snowflake.snowpark._internal.utils import is_in_stored_procedure
|
19
21
|
|
20
22
|
logger = logging.getLogger(__name__)
|
23
|
+
_REST_COMPLETE_URL = "/api/v2/cortex/inference:complete"
|
21
24
|
|
22
25
|
|
23
26
|
class ConversationMessage(TypedDict):
|
@@ -84,6 +87,76 @@ def retry(func: Callable[..., requests.Response]) -> Callable[..., requests.Resp
|
|
84
87
|
return inner
|
85
88
|
|
86
89
|
|
90
|
+
def _make_common_request_headers() -> Dict[str, str]:
|
91
|
+
headers = {
|
92
|
+
"Content-Type": "application/json",
|
93
|
+
"Accept": "application/json, text/event-stream",
|
94
|
+
}
|
95
|
+
return headers
|
96
|
+
|
97
|
+
|
98
|
+
def _make_request_body(
|
99
|
+
model: str,
|
100
|
+
prompt: Union[str, List[ConversationMessage]],
|
101
|
+
options: Optional[CompleteOptions] = None,
|
102
|
+
) -> Dict[str, Any]:
|
103
|
+
data = {
|
104
|
+
"model": model,
|
105
|
+
"stream": True,
|
106
|
+
}
|
107
|
+
if isinstance(prompt, List):
|
108
|
+
data["messages"] = prompt
|
109
|
+
else:
|
110
|
+
data["messages"] = [{"content": prompt}]
|
111
|
+
|
112
|
+
if options:
|
113
|
+
if "max_tokens" in options:
|
114
|
+
data["max_tokens"] = options["max_tokens"]
|
115
|
+
data["max_output_tokens"] = options["max_tokens"]
|
116
|
+
if "temperature" in options:
|
117
|
+
data["temperature"] = options["temperature"]
|
118
|
+
if "top_p" in options:
|
119
|
+
data["top_p"] = options["top_p"]
|
120
|
+
return data
|
121
|
+
|
122
|
+
|
123
|
+
# XP endpoint returns a dict response which needs to be converted to a format which can
|
124
|
+
# be consumed by the SSEClient. This method does that.
|
125
|
+
def _xp_dict_to_response(raw_resp: Dict[str, Any]) -> requests.Response:
|
126
|
+
response = requests.Response()
|
127
|
+
response.status_code = int(raw_resp["status"])
|
128
|
+
response.headers = raw_resp["headers"]
|
129
|
+
|
130
|
+
data = raw_resp["content"]
|
131
|
+
data = json.loads(data)
|
132
|
+
# Convert the dictionary to a string format that resembles the SSE event format
|
133
|
+
# For example, if the dict is {'event': 'message', 'data': 'your data'}, it should be formatted like this:
|
134
|
+
sse_format_data = ""
|
135
|
+
for event in data:
|
136
|
+
event_type = event.get("event", "message")
|
137
|
+
event_data = event.get("data", "")
|
138
|
+
event_data = json.dumps(event_data)
|
139
|
+
sse_format_data += f"event: {event_type}\ndata: {event_data}\n\n" # Add each event with new lines
|
140
|
+
|
141
|
+
response.raw = BytesIO(sse_format_data.encode("utf-8"))
|
142
|
+
return response
|
143
|
+
|
144
|
+
|
145
|
+
@retry
|
146
|
+
def _call_complete_xp(
|
147
|
+
model: str,
|
148
|
+
prompt: Union[str, List[ConversationMessage]],
|
149
|
+
options: Optional[CompleteOptions] = None,
|
150
|
+
deadline: Optional[float] = None,
|
151
|
+
) -> requests.Response:
|
152
|
+
headers = _make_common_request_headers()
|
153
|
+
body = _make_request_body(model, prompt, options)
|
154
|
+
import _snowflake
|
155
|
+
|
156
|
+
raw_resp = _snowflake.send_snow_api_request("POST", _REST_COMPLETE_URL, {}, headers, body, {}, deadline)
|
157
|
+
return _xp_dict_to_response(raw_resp)
|
158
|
+
|
159
|
+
|
87
160
|
@retry
|
88
161
|
def _call_complete_rest(
|
89
162
|
model: str,
|
@@ -110,36 +183,16 @@ def _call_complete_rest(
|
|
110
183
|
scheme = "https"
|
111
184
|
if hasattr(session.connection, "scheme"):
|
112
185
|
scheme = session.connection.scheme
|
113
|
-
url = urlunparse((scheme, session.connection.host,
|
186
|
+
url = urlunparse((scheme, session.connection.host, _REST_COMPLETE_URL, "", "", ""))
|
114
187
|
|
115
|
-
headers =
|
116
|
-
|
117
|
-
"Authorization": f'Snowflake Token="{session.connection.rest.token}"',
|
118
|
-
"Accept": "application/json, text/event-stream",
|
119
|
-
}
|
120
|
-
|
121
|
-
data = {
|
122
|
-
"model": model,
|
123
|
-
"stream": True,
|
124
|
-
}
|
125
|
-
if isinstance(prompt, List):
|
126
|
-
data["messages"] = prompt
|
127
|
-
else:
|
128
|
-
data["messages"] = [{"content": prompt}]
|
129
|
-
|
130
|
-
if options:
|
131
|
-
if "max_tokens" in options:
|
132
|
-
data["max_tokens"] = options["max_tokens"]
|
133
|
-
data["max_output_tokens"] = options["max_tokens"]
|
134
|
-
if "temperature" in options:
|
135
|
-
data["temperature"] = options["temperature"]
|
136
|
-
if "top_p" in options:
|
137
|
-
data["top_p"] = options["top_p"]
|
188
|
+
headers = _make_common_request_headers()
|
189
|
+
headers["Authorization"] = f'Snowflake Token="{session.connection.rest.token}"'
|
138
190
|
|
191
|
+
body = _make_request_body(model, prompt, options)
|
139
192
|
logger.debug(f"making POST request to {url} (model={model})")
|
140
193
|
return requests.post(
|
141
194
|
url,
|
142
|
-
json=
|
195
|
+
json=body,
|
143
196
|
headers=headers,
|
144
197
|
stream=True,
|
145
198
|
)
|
@@ -164,49 +217,24 @@ def _complete_call_sql_function_snowpark(
|
|
164
217
|
return cast(snowpark.Column, functions.builtin(function)(*args))
|
165
218
|
|
166
219
|
|
167
|
-
def
|
168
|
-
function: str,
|
220
|
+
def _complete_non_streaming_immediate(
|
169
221
|
model: str,
|
170
222
|
prompt: Union[str, List[ConversationMessage]],
|
171
223
|
options: Optional[CompleteOptions],
|
172
|
-
session: Optional[snowpark.Session],
|
224
|
+
session: Optional[snowpark.Session] = None,
|
225
|
+
deadline: Optional[float] = None,
|
173
226
|
) -> str:
|
174
|
-
|
175
|
-
|
176
|
-
raise SnowflakeAuthenticationException(
|
177
|
-
"""Session required. Provide the session through a session=... argument or ensure an active session is
|
178
|
-
available in your environment."""
|
179
|
-
)
|
227
|
+
response = _complete_rest(model=model, prompt=prompt, options=options, session=session, deadline=deadline)
|
228
|
+
return "".join(response)
|
180
229
|
|
181
|
-
# https://docs.snowflake.com/en/sql-reference/functions/complete-snowflake-cortex
|
182
|
-
if options is not None or not isinstance(prompt, str):
|
183
|
-
if isinstance(prompt, List):
|
184
|
-
prompt_arg = prompt
|
185
|
-
else:
|
186
|
-
prompt_arg = [{"role": "user", "content": prompt}]
|
187
|
-
options = options or {}
|
188
|
-
lit_args = [
|
189
|
-
functions.lit(model),
|
190
|
-
functions.lit(prompt_arg),
|
191
|
-
functions.lit(options),
|
192
|
-
]
|
193
|
-
else:
|
194
|
-
lit_args = [
|
195
|
-
functions.lit(model),
|
196
|
-
functions.lit(prompt),
|
197
|
-
]
|
198
|
-
|
199
|
-
empty_df = session.create_dataframe([snowpark.Row()])
|
200
|
-
df = empty_df.select(functions.builtin(function)(*lit_args))
|
201
|
-
return cast(str, df.collect()[0][0])
|
202
230
|
|
203
|
-
|
204
|
-
def _complete_sql_impl(
|
231
|
+
def _complete_non_streaming_impl(
|
205
232
|
function: str,
|
206
233
|
model: Union[str, snowpark.Column],
|
207
234
|
prompt: Union[str, List[ConversationMessage], snowpark.Column],
|
208
235
|
options: Optional[Union[CompleteOptions, snowpark.Column]],
|
209
|
-
session: Optional[snowpark.Session],
|
236
|
+
session: Optional[snowpark.Session] = None,
|
237
|
+
deadline: Optional[float] = None,
|
210
238
|
) -> Union[str, snowpark.Column]:
|
211
239
|
if isinstance(prompt, snowpark.Column):
|
212
240
|
if options is not None:
|
@@ -217,7 +245,24 @@ def _complete_sql_impl(
|
|
217
245
|
raise ValueError("'model' cannot be a snowpark.Column when 'prompt' is a string.")
|
218
246
|
if isinstance(options, snowpark.Column):
|
219
247
|
raise ValueError("'options' cannot be a snowpark.Column when 'prompt' is a string.")
|
220
|
-
return
|
248
|
+
return _complete_non_streaming_immediate(
|
249
|
+
model=model, prompt=prompt, options=options, session=session, deadline=deadline
|
250
|
+
)
|
251
|
+
|
252
|
+
|
253
|
+
def _complete_rest(
|
254
|
+
model: str,
|
255
|
+
prompt: Union[str, List[ConversationMessage]],
|
256
|
+
options: Optional[CompleteOptions] = None,
|
257
|
+
session: Optional[snowpark.Session] = None,
|
258
|
+
deadline: Optional[float] = None,
|
259
|
+
) -> Iterator[str]:
|
260
|
+
if is_in_stored_procedure(): # type: ignore[no-untyped-call]
|
261
|
+
response = _call_complete_xp(model=model, prompt=prompt, options=options, deadline=deadline)
|
262
|
+
else:
|
263
|
+
response = _call_complete_rest(model=model, prompt=prompt, options=options, session=session, deadline=deadline)
|
264
|
+
assert response.status_code >= 200 and response.status_code < 300
|
265
|
+
return _return_stream_response(response, deadline)
|
221
266
|
|
222
267
|
|
223
268
|
def _complete_impl(
|
@@ -239,10 +284,8 @@ def _complete_impl(
|
|
239
284
|
raise ValueError("in REST mode, 'model' must be a string")
|
240
285
|
if not isinstance(prompt, str) and not isinstance(prompt, List):
|
241
286
|
raise ValueError("in REST mode, 'prompt' must be a string or a list of ConversationMessage")
|
242
|
-
|
243
|
-
|
244
|
-
return _return_stream_response(response, deadline)
|
245
|
-
return _complete_sql_impl(function, model, prompt, options, session)
|
287
|
+
return _complete_rest(model=model, prompt=prompt, options=options, session=session, deadline=deadline)
|
288
|
+
return _complete_non_streaming_impl(function, model, prompt, options, session, deadline)
|
246
289
|
|
247
290
|
|
248
291
|
@telemetry.send_api_usage_telemetry(
|
@@ -0,0 +1,273 @@
|
|
1
|
+
import json
|
2
|
+
from dataclasses import dataclass
|
3
|
+
from typing import Any, Dict, List, Optional, Union, cast
|
4
|
+
|
5
|
+
from snowflake import snowpark
|
6
|
+
from snowflake.cortex._util import (
|
7
|
+
CORTEX_FUNCTIONS_TELEMETRY_PROJECT,
|
8
|
+
call_sql_function_literals,
|
9
|
+
)
|
10
|
+
from snowflake.ml._internal import telemetry
|
11
|
+
from snowflake.ml._internal.utils import snowpark_dataframe_utils
|
12
|
+
|
13
|
+
_CORTEX_FINETUNE_SYSTEM_FUNCTION_NAME = "SNOWFLAKE.CORTEX.FINETUNE"
|
14
|
+
CORTEX_FINETUNE_TELEMETRY_SUBPROJECT = "FINETUNE"
|
15
|
+
CORTEX_FINETUNE_FIRST_VERSION = "1.7.0"
|
16
|
+
CORTEX_FINETUNE_DOCUMENTATION_URL = "https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-finetuning"
|
17
|
+
|
18
|
+
|
19
|
+
class FinetuneError(Exception):
|
20
|
+
def __init__(self, message: str, original_exception: Optional[Exception] = None) -> None:
|
21
|
+
"""Finetuning Exception Class.
|
22
|
+
|
23
|
+
Args:
|
24
|
+
message: Error message to be reported.
|
25
|
+
original_exception: Original exception. This is the exception raised to users by telemetry.
|
26
|
+
|
27
|
+
Attributes:
|
28
|
+
original_exception: Original exception with an error code in its message.
|
29
|
+
"""
|
30
|
+
self.original_exception = original_exception
|
31
|
+
self._pretty_msg = message + repr(self.original_exception) if self.original_exception is not None else ""
|
32
|
+
|
33
|
+
def __repr__(self) -> str:
|
34
|
+
return f"{self.__class__.__name__}({self._pretty_msg!r})"
|
35
|
+
|
36
|
+
def __str__(self) -> str:
|
37
|
+
return self._pretty_msg
|
38
|
+
|
39
|
+
|
40
|
+
@dataclass
|
41
|
+
class FinetuneStatus:
|
42
|
+
"""Fine-tuning job status."""
|
43
|
+
|
44
|
+
id: Optional[str] = None
|
45
|
+
"""Workflow ID for the fine-tuning run."""
|
46
|
+
|
47
|
+
status: Optional[str] = None
|
48
|
+
"""Status string, e.g. PENDING, RUNNING, SUCCESS, ERROR, CANCELLED."""
|
49
|
+
|
50
|
+
base_model: Optional[str] = None
|
51
|
+
"""Name of the base model that is being fine-tuned."""
|
52
|
+
|
53
|
+
created_on: Optional[int] = None
|
54
|
+
"""Creation timestamp of the Fine-tuning job in milliseconds."""
|
55
|
+
|
56
|
+
error: Optional[Dict[str, Any]] = None
|
57
|
+
"""Error message propagated from the job."""
|
58
|
+
|
59
|
+
finished_on: Optional[int] = None
|
60
|
+
"""Completion timestamp of the Fine-tuning job in milliseconds."""
|
61
|
+
|
62
|
+
progress: Optional[float] = None
|
63
|
+
"""Progress made as a fraction of total [0.0,1.0]."""
|
64
|
+
|
65
|
+
training_result: Optional[List[Dict[str, Any]]] = None
|
66
|
+
"""Detailed metrics report for a completed training."""
|
67
|
+
|
68
|
+
trained_tokens: Optional[int] = None
|
69
|
+
"""Number of tokens trained on. If multiple epochs are run, this can be larger than number of tokens in the
|
70
|
+
training data."""
|
71
|
+
|
72
|
+
training_data: Optional[str] = None
|
73
|
+
"""Training data query."""
|
74
|
+
|
75
|
+
validation_data: Optional[str] = None
|
76
|
+
"""Validation data query."""
|
77
|
+
|
78
|
+
model: Optional[str] = None
|
79
|
+
"""Location of the fine-tuned model."""
|
80
|
+
|
81
|
+
|
82
|
+
class FinetuneJob:
|
83
|
+
def __init__(self, session: Optional[snowpark.Session], status: FinetuneStatus) -> None:
|
84
|
+
"""Fine-tuning Job.
|
85
|
+
|
86
|
+
Args:
|
87
|
+
session: Snowpark session to use to communicate with Snowflake.
|
88
|
+
status: FinetuneStatus for this job.
|
89
|
+
"""
|
90
|
+
self._session = session
|
91
|
+
self.status = status
|
92
|
+
|
93
|
+
def __repr__(self) -> str:
|
94
|
+
return self.status.__repr__()
|
95
|
+
|
96
|
+
def __eq__(self, other: Any) -> bool:
|
97
|
+
if not isinstance(other, FinetuneJob):
|
98
|
+
raise NotImplementedError(
|
99
|
+
f"Equality comparison of FinetuneJob with objects of type {type(other)} is not implemented."
|
100
|
+
)
|
101
|
+
return self.status == other.status
|
102
|
+
|
103
|
+
@snowpark._internal.utils.experimental(version=CORTEX_FINETUNE_FIRST_VERSION)
|
104
|
+
@telemetry.send_api_usage_telemetry(
|
105
|
+
project=CORTEX_FUNCTIONS_TELEMETRY_PROJECT,
|
106
|
+
subproject=CORTEX_FINETUNE_TELEMETRY_SUBPROJECT,
|
107
|
+
)
|
108
|
+
def cancel(self) -> bool:
|
109
|
+
"""Cancel a fine-tuning run.
|
110
|
+
|
111
|
+
No confirmation will be required.
|
112
|
+
|
113
|
+
[Documentation](https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-finetuning)
|
114
|
+
|
115
|
+
Args:
|
116
|
+
|
117
|
+
Returns:
|
118
|
+
True if the cancellation was successful, False otherwise.
|
119
|
+
"""
|
120
|
+
result = _finetune_impl(operation="CANCEL", session=self._session, function_args=[self.status.id])
|
121
|
+
return result is not None and isinstance(result, str) and result.startswith("Canceled Cortex Fine-tuning job: ")
|
122
|
+
|
123
|
+
@snowpark._internal.utils.experimental(version=CORTEX_FINETUNE_FIRST_VERSION)
|
124
|
+
@telemetry.send_api_usage_telemetry(
|
125
|
+
project=CORTEX_FUNCTIONS_TELEMETRY_PROJECT,
|
126
|
+
subproject=CORTEX_FINETUNE_TELEMETRY_SUBPROJECT,
|
127
|
+
)
|
128
|
+
def describe(self) -> FinetuneStatus:
|
129
|
+
"""Describe a fine-tuning run.
|
130
|
+
|
131
|
+
Args:
|
132
|
+
|
133
|
+
Returns:
|
134
|
+
FinetuneStatus containing of attributes of the fine-tuning run.
|
135
|
+
"""
|
136
|
+
result_string = _finetune_impl(operation="DESCRIBE", session=self._session, function_args=[self.status.id])
|
137
|
+
|
138
|
+
result = FinetuneStatus(**cast(Dict[str, Any], _try_load_json(result_string)))
|
139
|
+
return result
|
140
|
+
|
141
|
+
|
142
|
+
class Finetune:
|
143
|
+
@snowpark._internal.utils.experimental(version=CORTEX_FINETUNE_FIRST_VERSION)
|
144
|
+
@telemetry.send_api_usage_telemetry(
|
145
|
+
project=CORTEX_FUNCTIONS_TELEMETRY_PROJECT,
|
146
|
+
subproject=CORTEX_FINETUNE_TELEMETRY_SUBPROJECT,
|
147
|
+
)
|
148
|
+
def __init__(self, session: Optional[snowpark.Session] = None) -> None:
|
149
|
+
"""Cortex Fine-Tuning API.
|
150
|
+
|
151
|
+
[Documentation](https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-finetuning)
|
152
|
+
|
153
|
+
Args:
|
154
|
+
session: Snowpark session to be used. If none is given, we will attempt to
|
155
|
+
use the currently active session.
|
156
|
+
"""
|
157
|
+
self._session = session
|
158
|
+
|
159
|
+
@snowpark._internal.utils.experimental(version=CORTEX_FINETUNE_FIRST_VERSION)
|
160
|
+
@telemetry.send_api_usage_telemetry(
|
161
|
+
project=CORTEX_FUNCTIONS_TELEMETRY_PROJECT,
|
162
|
+
subproject=CORTEX_FINETUNE_TELEMETRY_SUBPROJECT,
|
163
|
+
)
|
164
|
+
def create(
|
165
|
+
self,
|
166
|
+
name: str,
|
167
|
+
base_model: str,
|
168
|
+
training_data: Union[str, snowpark.DataFrame],
|
169
|
+
validation_data: Optional[Union[str, snowpark.DataFrame]] = None,
|
170
|
+
options: Optional[Dict[str, Any]] = None,
|
171
|
+
) -> FinetuneJob:
|
172
|
+
"""Create a new fine-tuning runs.
|
173
|
+
|
174
|
+
The expected format of training and validation data is two fields or columns:
|
175
|
+
"prompt": the input to the model and
|
176
|
+
"completion": the output that the model is expected to generate.
|
177
|
+
|
178
|
+
Both data parameters "training_data" and "validation_data" expect to be one of
|
179
|
+
(1) stage path to JSONL-formatted data,
|
180
|
+
(2) select-query string resulting in a table,
|
181
|
+
(3) Snowpark DataFrame containing the data
|
182
|
+
|
183
|
+
[Documentation](https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-finetuning)
|
184
|
+
|
185
|
+
Args:
|
186
|
+
name: Name of the resulting fine-tuned model.
|
187
|
+
base_model: The name of the base model to start fine-tuning from.
|
188
|
+
training_data: Data used for fine-tuning the model.
|
189
|
+
validation_data: Data used for validating the fine-tuned model (not used in training)
|
190
|
+
options: Dictionary of additional options to be passed to the training procedure.
|
191
|
+
Please refer to the official documentation for a list of available options.
|
192
|
+
|
193
|
+
Returns:
|
194
|
+
The identifier of the fine-tuning run.
|
195
|
+
|
196
|
+
Raises:
|
197
|
+
ValueError: If the Snowpark DataFrame used is incompatible with this API.
|
198
|
+
This can happen if the DataFrame contains multiple queries.
|
199
|
+
"""
|
200
|
+
|
201
|
+
# Handle data provided as snowpark dataframes
|
202
|
+
if isinstance(training_data, snowpark.DataFrame):
|
203
|
+
if snowpark_dataframe_utils.is_single_query_snowpark_dataframe(training_data):
|
204
|
+
training_string = str(training_data.queries["queries"][0])
|
205
|
+
else:
|
206
|
+
raise ValueError(
|
207
|
+
"Snowpark DataFrame given in 'training_data' contains "
|
208
|
+
+ f'{training_data.queries["queries"]} queries and '
|
209
|
+
+ f'{training_data.queries["post_actions"]} post_actions. It needs '
|
210
|
+
"to contain exactly one query and no post_actions."
|
211
|
+
)
|
212
|
+
else:
|
213
|
+
training_string = training_data
|
214
|
+
|
215
|
+
validation_string: Optional[str] = None
|
216
|
+
if isinstance(validation_data, snowpark.DataFrame):
|
217
|
+
if snowpark_dataframe_utils.is_single_query_snowpark_dataframe(validation_data):
|
218
|
+
validation_string = str(validation_data.queries["queries"][0])
|
219
|
+
else:
|
220
|
+
raise ValueError(
|
221
|
+
"Snowpark DataFrame given in 'validation_data' contains "
|
222
|
+
+ f'{validation_data.queries["queries"]} queries and '
|
223
|
+
+ f'{validation_data.queries["post_actions"]} post_actions. It needs '
|
224
|
+
"to contain exactly one query and no post_actions."
|
225
|
+
)
|
226
|
+
else:
|
227
|
+
validation_string = validation_data
|
228
|
+
|
229
|
+
result = _finetune_impl(
|
230
|
+
operation="CREATE",
|
231
|
+
session=self._session,
|
232
|
+
function_args=[name, base_model, training_string, validation_string, options],
|
233
|
+
)
|
234
|
+
finetune_status = FinetuneStatus(id=result)
|
235
|
+
finetune_run = FinetuneJob(self._session, finetune_status)
|
236
|
+
return finetune_run
|
237
|
+
|
238
|
+
@snowpark._internal.utils.experimental(version=CORTEX_FINETUNE_FIRST_VERSION)
|
239
|
+
@telemetry.send_api_usage_telemetry(
|
240
|
+
project=CORTEX_FUNCTIONS_TELEMETRY_PROJECT,
|
241
|
+
subproject=CORTEX_FINETUNE_TELEMETRY_SUBPROJECT,
|
242
|
+
)
|
243
|
+
def list_jobs(self) -> List["FinetuneJob"]:
|
244
|
+
"""Show current and past fine-tuning runs.
|
245
|
+
|
246
|
+
Returns:
|
247
|
+
List of dictionaries of attributes of the fine-tuning runs. Please refer to the official documentation for a
|
248
|
+
list of expected fields.
|
249
|
+
"""
|
250
|
+
result_string = _finetune_impl(operation="SHOW", session=self._session, function_args=[])
|
251
|
+
result = _try_load_json(result_string)
|
252
|
+
|
253
|
+
return [FinetuneJob(session=self._session, status=FinetuneStatus(**run_status)) for run_status in result]
|
254
|
+
|
255
|
+
|
256
|
+
def _try_load_json(json_string: str) -> Union[Dict[Any, Any], List[Any]]:
|
257
|
+
try:
|
258
|
+
result = json.loads(str(json_string))
|
259
|
+
except json.JSONDecodeError as e:
|
260
|
+
message = f"""Unable to parse JSON from: "{json_string}". """
|
261
|
+
raise FinetuneError(message=message, original_exception=e)
|
262
|
+
except Exception as e:
|
263
|
+
message = f"""Unable to parse JSON from: "{json_string}". """
|
264
|
+
raise FinetuneError(message=message, original_exception=e)
|
265
|
+
else:
|
266
|
+
if not isinstance(result, dict) and not isinstance(result, list):
|
267
|
+
message = f"""Unable to parse JSON from: "{json_string}". Result was not a dictionary."""
|
268
|
+
raise FinetuneError(message=message)
|
269
|
+
return result
|
270
|
+
|
271
|
+
|
272
|
+
def _finetune_impl(operation: str, session: Optional[snowpark.Session], function_args: List[Any]) -> str:
|
273
|
+
return call_sql_function_literals(_CORTEX_FINETUNE_SYSTEM_FUNCTION_NAME, session, operation, *function_args)
|