snowflake-ml-python 1.15.0__tar.gz → 1.16.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.15.0 → snowflake_ml_python-1.16.0}/CHANGELOG.md +39 -1
- {snowflake_ml_python-1.15.0/snowflake_ml_python.egg-info → snowflake_ml_python-1.16.0}/PKG-INFO +41 -3
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/pyproject.toml +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/platform_capabilities.py +4 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/mixins.py +24 -9
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/experiment/experiment_tracking.py +63 -19
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/spec_utils.py +49 -11
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/manager.py +20 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/__init__.py +16 -2
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/model/batch_inference_specs.py +18 -2
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/model/model_version_impl.py +5 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/ops/service_ops.py +50 -5
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/service/model_deployment_spec.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/sql/stage.py +8 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +1 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_model_composer/model_method/model_method.py +25 -2
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_env/model_env.py +26 -16
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/type_hints.py +13 -0
- snowflake_ml_python-1.16.0/snowflake/ml/model/volatility.py +34 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/calibration/calibrated_classifier_cv.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/cluster/affinity_propagation.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/cluster/agglomerative_clustering.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/cluster/birch.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/cluster/bisecting_k_means.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/cluster/dbscan.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/cluster/feature_agglomeration.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/cluster/k_means.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/cluster/mean_shift.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/cluster/mini_batch_k_means.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/cluster/optics.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/cluster/spectral_biclustering.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/cluster/spectral_clustering.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/cluster/spectral_coclustering.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/compose/column_transformer.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/compose/transformed_target_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/covariance/elliptic_envelope.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/covariance/empirical_covariance.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/covariance/graphical_lasso.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/covariance/graphical_lasso_cv.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/covariance/ledoit_wolf.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/covariance/min_cov_det.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/covariance/oas.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/covariance/shrunk_covariance.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/decomposition/dictionary_learning.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/decomposition/factor_analysis.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/decomposition/fast_ica.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/decomposition/incremental_pca.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/decomposition/kernel_pca.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/decomposition/mini_batch_dictionary_learning.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/decomposition/mini_batch_sparse_pca.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/decomposition/pca.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/decomposition/sparse_pca.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/decomposition/truncated_svd.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/discriminant_analysis/linear_discriminant_analysis.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/discriminant_analysis/quadratic_discriminant_analysis.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/ada_boost_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/ada_boost_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/bagging_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/bagging_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/extra_trees_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/extra_trees_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/gradient_boosting_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/gradient_boosting_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/hist_gradient_boosting_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/isolation_forest.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/random_forest_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/random_forest_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/stacking_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/voting_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/voting_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/feature_selection/generic_univariate_select.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/feature_selection/select_fdr.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/feature_selection/select_fpr.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/feature_selection/select_fwe.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/feature_selection/select_k_best.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/feature_selection/select_percentile.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/feature_selection/sequential_feature_selector.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/feature_selection/variance_threshold.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/gaussian_process/gaussian_process_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/impute/iterative_imputer.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/impute/knn_imputer.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/impute/missing_indicator.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/kernel_approximation/additive_chi2_sampler.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/kernel_approximation/nystroem.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/kernel_approximation/polynomial_count_sketch.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/kernel_approximation/rbf_sampler.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/kernel_approximation/skewed_chi2_sampler.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/kernel_ridge/kernel_ridge.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/lightgbm/lgbm_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/lightgbm/lgbm_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/ard_regression.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/bayesian_ridge.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/elastic_net.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/elastic_net_cv.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/gamma_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/huber_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/lars.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/lars_cv.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/lasso.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/lasso_cv.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/lasso_lars.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/lasso_lars_cv.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/lasso_lars_ic.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/linear_regression.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/logistic_regression.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/logistic_regression_cv.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/multi_task_elastic_net_cv.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/multi_task_lasso.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/multi_task_lasso_cv.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/orthogonal_matching_pursuit.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/passive_aggressive_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/passive_aggressive_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/perceptron.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/poisson_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/ransac_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/ridge.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/ridge_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/ridge_classifier_cv.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/ridge_cv.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/sgd_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/sgd_one_class_svm.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/sgd_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/theil_sen_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/tweedie_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/manifold/isomap.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/manifold/mds.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/manifold/spectral_embedding.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/manifold/tsne.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/mixture/bayesian_gaussian_mixture.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/mixture/gaussian_mixture.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/multiclass/one_vs_one_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/multiclass/one_vs_rest_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/multiclass/output_code_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/naive_bayes/bernoulli_nb.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/naive_bayes/categorical_nb.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/naive_bayes/complement_nb.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/naive_bayes/gaussian_nb.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/naive_bayes/multinomial_nb.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/neighbors/k_neighbors_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/neighbors/k_neighbors_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/neighbors/kernel_density.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/neighbors/local_outlier_factor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/neighbors/nearest_centroid.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/neighbors/nearest_neighbors.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/neighbors/neighborhood_components_analysis.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/neighbors/radius_neighbors_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/neighbors/radius_neighbors_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/neural_network/bernoulli_rbm.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/neural_network/mlp_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/neural_network/mlp_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/preprocessing/polynomial_features.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/semi_supervised/label_propagation.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/semi_supervised/label_spreading.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/svm/linear_svc.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/svm/linear_svr.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/svm/nu_svc.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/svm/nu_svr.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/svm/svc.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/svm/svr.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/tree/decision_tree_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/tree/decision_tree_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/tree/extra_tree_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/tree/extra_tree_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/xgboost/xgb_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/xgboost/xgb_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/xgboost/xgbrf_classifier.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/xgboost/xgbrf_regressor.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/registry/_manager/model_manager.py +1 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/registry/_manager/model_parameter_reconciler.py +27 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/registry/registry.py +15 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/utils/authentication.py +16 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/version.py +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0/snowflake_ml_python.egg-info}/PKG-INFO +41 -3
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake_ml_python.egg-info/SOURCES.txt +1 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake_ml_python.egg-info/requires.txt +1 -1
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/LICENSE.txt +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/README.md +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/setup.cfg +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/cortex/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/cortex/_classify_text.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/cortex/_complete.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/cortex/_embed_text_1024.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/cortex/_embed_text_768.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/cortex/_extract_answer.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/cortex/_finetune.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/cortex/_sentiment.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/cortex/_sse_client.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/cortex/_summarize.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/cortex/_translate.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/cortex/_util.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/env.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/env_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/exceptions/dataset_error_messages.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/exceptions/dataset_errors.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/exceptions/error_codes.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/exceptions/error_messages.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/exceptions/exceptions.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/exceptions/fileset_error_messages.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/exceptions/fileset_errors.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/exceptions/modeling_error_messages.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/exceptions/sql_error_codes.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/file_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/human_readable_id/adjectives.txt +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/human_readable_id/animals.txt +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/human_readable_id/hrid_generator.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/human_readable_id/hrid_generator_base.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/init_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/lineage/lineage_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/migrator_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/relax_version_strategy.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/telemetry.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/type_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/db_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/formatting.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/identifier.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/import_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/jwt_generator.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/parallelize.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/pkg_version_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/query_result_checker.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/result.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/service_logger.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/snowflake_env.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/snowpark_dataframe_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/sql_identifier.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/table_manager.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/temp_file_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/data/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/data/_internal/arrow_ingestor.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/data/data_connector.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/data/data_ingestor.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/data/data_source.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/data/ingestor_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/data/torch_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/dataset/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/dataset/dataset.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/dataset/dataset_factory.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/dataset/dataset_metadata.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/dataset/dataset_reader.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/experiment/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/experiment/_client/artifact.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/experiment/_client/experiment_tracking_sql_client.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/experiment/_entities/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/experiment/_entities/experiment.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/experiment/_entities/run.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/experiment/_entities/run_metadata.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/experiment/_experiment_info.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/experiment/callback/keras.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/experiment/callback/lightgbm.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/experiment/callback/xgboost.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/experiment/utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/access_manager.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/entity.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/airline_features/entities.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/airline_features/features/plane_features.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/airline_features/features/weather_features.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/airline_features/source.yaml +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/citibike_trip_features/entities.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/station_feature.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/citibike_trip_features/features/trip_feature.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/citibike_trip_features/source.yaml +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/example_helper.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/entities.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/location_features.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/features/trip_features.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/new_york_taxi_features/source.yaml +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/source_data/airline.yaml +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/source_data/citibike_trips.yaml +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/source_data/fraud_transactions.yaml +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/source_data/nyc_yellow_trips.yaml +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/source_data/winequality_red.yaml +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/wine_quality_features/entities.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/managed_wine_features.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/wine_quality_features/features/static_wine_features.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/examples/wine_quality_features/source.yaml +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/feature_store.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/feature_store/feature_view.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/fileset/embedded_stage_fs.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/fileset/fileset.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/fileset/sfcfs.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/fileset/snowfs.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/fileset/stage_fs.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/constants.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/feature_flags.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/function_payload_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/interop_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/payload_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/query_helper.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/runtime_env_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/scripts/constants.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/scripts/get_instance_ip.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/scripts/mljob_launcher.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/scripts/signal_workers.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/scripts/worker_shutdown_listener.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/stage_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/types.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/decorators.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/job.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/lineage/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/lineage/lineage_node.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/model/inference_engine_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/model/model_impl.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/ops/metadata_ops.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/ops/model_ops.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/service/model_deployment_spec_schema.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/sql/_base.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/sql/model.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/sql/model_version.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/sql/service.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_client/sql/tag.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_model_composer/model_composer.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_model_composer/model_method/constants.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_model_composer/model_method/function_generator.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_model_composer/model_method/infer_function.py_template +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_model_composer/model_method/infer_partitioned.py_template +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_model_composer/model_method/infer_table_function.py_template +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_model_composer/model_user_file/model_user_file.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handler.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/_base.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/catboost.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/custom.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/keras.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/lightgbm.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/mlflow.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/pytorch.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/sentence_transformers.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/sklearn.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/tensorflow.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/torchscript.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers/xgboost.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_meta/model_blob_meta.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_meta/model_meta.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_meta/model_meta_schema.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_meta_migrator/base_migrator.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_plans.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_meta_migrator/migrator_v1.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_packager.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_runtime/model_runtime.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_packager/model_task/model_task_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_signatures/base_handler.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_signatures/builtins_handler.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_signatures/core.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_signatures/dmatrix_handler.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_signatures/numpy_handler.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_signatures/pandas_handler.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_signatures/pytorch_handler.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_signatures/snowpark_handler.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_signatures/tensorflow_handler.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/_signatures/utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/custom_model.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/event_handler.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/inference_engine.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/model_signature.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/models/huggingface_pipeline.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/openai_signatures.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/target_platform.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/model/task.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/_internal/estimator_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_handlers.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/_internal/local_implementations/pandas_trainer.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/_internal/model_specifications.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/_internal/model_trainer.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/_internal/model_trainer_builder.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/_internal/model_transformer_builder.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_hpo_trainer.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/_internal/snowpark_implementations/distributed_search_udf_file.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_trainer.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/_internal/snowpark_implementations/xgboost_external_memory_trainer.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/_internal/transformer_protocols.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/calibration/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/cluster/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/compose/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/covariance/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/decomposition/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/discriminant_analysis/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/ensemble/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/feature_selection/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/framework/_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/framework/base.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/gaussian_process/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/impute/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/impute/simple_imputer.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/kernel_approximation/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/kernel_ridge/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/lightgbm/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/linear_model/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/manifold/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/metrics/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/metrics/classification.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/metrics/correlation.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/metrics/covariance.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/metrics/metrics_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/metrics/ranking.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/metrics/regression.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/mixture/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/model_selection/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/model_selection/grid_search_cv.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/model_selection/randomized_search_cv.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/multiclass/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/naive_bayes/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/neighbors/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/neural_network/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/parameters/disable_distributed_hpo.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/parameters/disable_model_tracer.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/parameters/enable_anonymous_sproc.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/pipeline/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/pipeline/pipeline.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/preprocessing/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/preprocessing/binarizer.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/preprocessing/label_encoder.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/preprocessing/max_abs_scaler.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/preprocessing/min_max_scaler.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/preprocessing/normalizer.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/preprocessing/one_hot_encoder.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/preprocessing/ordinal_encoder.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/preprocessing/robust_scaler.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/preprocessing/standard_scaler.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/semi_supervised/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/svm/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/tree/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/modeling/xgboost/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/monitoring/_client/model_monitor_sql_client.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/monitoring/_client/queries/record_count.ssql +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/monitoring/_client/queries/rmse.ssql +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/monitoring/_manager/model_monitor_manager.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/monitoring/entities/model_monitor_config.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/monitoring/explain_visualize.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/monitoring/model_monitor.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/monitoring/shap.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/registry/__init__.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/utils/connection_params.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/utils/html_utils.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/utils/sparse.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/utils/sql_client.py +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake_ml_python.egg-info/dependency_links.txt +0 -0
- {snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake_ml_python.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,44 @@
|
|
|
1
1
|
# Release History
|
|
2
2
|
|
|
3
|
-
## 1.
|
|
3
|
+
## 1.16.0
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* Registry: Remove redundant pip dependency warnings when `artifact_repository_map` is provided for warehouse model deployments.
|
|
8
|
+
|
|
9
|
+
### Behavior Changes
|
|
10
|
+
|
|
11
|
+
### New Features
|
|
12
|
+
|
|
13
|
+
* Support scikit-learn < 1.8.
|
|
14
|
+
* ML Job: Added support for configuring the runtime image via `runtime_environment`
|
|
15
|
+
(image tag or full image URL) at submission time.
|
|
16
|
+
Examples:
|
|
17
|
+
* @remote(compute_pool, stage_name = 'payload_stage', runtime_environment = '1.8.0')
|
|
18
|
+
* submit_file('/path/to/repo/test.py', compute_pool, stage_name = 'payload_stage', runtime_environment = '/mydb/myschema/myrepo/myimage:latest')
|
|
19
|
+
* Registry: Ability to mark model methods as `Volatility.VOLATILE` or `Volatility.IMMUTABLE`.
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
from snowflake.ml.model.volatility import Volatility
|
|
23
|
+
|
|
24
|
+
options = {
|
|
25
|
+
"embed_local_ml_library": True,
|
|
26
|
+
"relax_version": True,
|
|
27
|
+
"save_location": "/path/to/my/directory",
|
|
28
|
+
"function_type": "TABLE_FUNCTION",
|
|
29
|
+
"volatility": Volatility.IMMUTABLE,
|
|
30
|
+
"method_options": {
|
|
31
|
+
"predict": {
|
|
32
|
+
"case_sensitive": False,
|
|
33
|
+
"max_batch_size": 100,
|
|
34
|
+
"function_type": "TABLE_FUNCTION",
|
|
35
|
+
"volatility": Volatility.VOLATILE,
|
|
36
|
+
},
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
````
|
|
40
|
+
|
|
41
|
+
## 1.15.0 (09-29-2025)
|
|
4
42
|
|
|
5
43
|
### Bug Fixes
|
|
6
44
|
|
{snowflake_ml_python-1.15.0/snowflake_ml_python.egg-info → snowflake_ml_python-1.16.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.16.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:
|
|
@@ -250,7 +250,7 @@ Requires-Dist: pytimeparse<2,>=1.1.8
|
|
|
250
250
|
Requires-Dist: pyyaml<7,>=6.0
|
|
251
251
|
Requires-Dist: retrying<2,>=1.3.3
|
|
252
252
|
Requires-Dist: s3fs<2026,>=2024.6.1
|
|
253
|
-
Requires-Dist: scikit-learn<1.
|
|
253
|
+
Requires-Dist: scikit-learn<1.8
|
|
254
254
|
Requires-Dist: scipy<2,>=1.9
|
|
255
255
|
Requires-Dist: shap<1,>=0.46.0
|
|
256
256
|
Requires-Dist: snowflake-connector-python[pandas]<4,>=3.16.0
|
|
@@ -406,7 +406,45 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
|
|
|
406
406
|
|
|
407
407
|
# Release History
|
|
408
408
|
|
|
409
|
-
## 1.
|
|
409
|
+
## 1.16.0
|
|
410
|
+
|
|
411
|
+
### Bug Fixes
|
|
412
|
+
|
|
413
|
+
* Registry: Remove redundant pip dependency warnings when `artifact_repository_map` is provided for warehouse model deployments.
|
|
414
|
+
|
|
415
|
+
### Behavior Changes
|
|
416
|
+
|
|
417
|
+
### New Features
|
|
418
|
+
|
|
419
|
+
* Support scikit-learn < 1.8.
|
|
420
|
+
* ML Job: Added support for configuring the runtime image via `runtime_environment`
|
|
421
|
+
(image tag or full image URL) at submission time.
|
|
422
|
+
Examples:
|
|
423
|
+
* @remote(compute_pool, stage_name = 'payload_stage', runtime_environment = '1.8.0')
|
|
424
|
+
* submit_file('/path/to/repo/test.py', compute_pool, stage_name = 'payload_stage', runtime_environment = '/mydb/myschema/myrepo/myimage:latest')
|
|
425
|
+
* Registry: Ability to mark model methods as `Volatility.VOLATILE` or `Volatility.IMMUTABLE`.
|
|
426
|
+
|
|
427
|
+
```python
|
|
428
|
+
from snowflake.ml.model.volatility import Volatility
|
|
429
|
+
|
|
430
|
+
options = {
|
|
431
|
+
"embed_local_ml_library": True,
|
|
432
|
+
"relax_version": True,
|
|
433
|
+
"save_location": "/path/to/my/directory",
|
|
434
|
+
"function_type": "TABLE_FUNCTION",
|
|
435
|
+
"volatility": Volatility.IMMUTABLE,
|
|
436
|
+
"method_options": {
|
|
437
|
+
"predict": {
|
|
438
|
+
"case_sensitive": False,
|
|
439
|
+
"max_batch_size": 100,
|
|
440
|
+
"function_type": "TABLE_FUNCTION",
|
|
441
|
+
"volatility": Volatility.VOLATILE,
|
|
442
|
+
},
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
````
|
|
446
|
+
|
|
447
|
+
## 1.15.0 (09-29-2025)
|
|
410
448
|
|
|
411
449
|
### Bug Fixes
|
|
412
450
|
|
|
@@ -8,7 +8,7 @@ description = "The machine learning client library that is used for interacting
|
|
|
8
8
|
classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Environment :: Other Environment", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Database", "Topic :: Software Development", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Scientific/Engineering :: Information Analysis",]
|
|
9
9
|
requires-python = ">=3.9, <3.13"
|
|
10
10
|
dynamic = [ "version", "readme",]
|
|
11
|
-
dependencies = [ "anyio>=3.5.0,<5", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<3", "packaging>=20.9,<25", "pandas>=2.1.4,<3", "platformdirs<5", "pyarrow<19.0.0", "pydantic>=2.8.2, <3", "pyjwt>=2.0.0, <3", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "s3fs>=2024.6.1,<2026", "scikit-learn<1.
|
|
11
|
+
dependencies = [ "anyio>=3.5.0,<5", "cachetools>=3.1.1,<6", "cloudpickle>=2.0.0", "cryptography", "fsspec[http]>=2024.6.1,<2026", "importlib_resources>=6.1.1, <7", "numpy>=1.23,<3", "packaging>=20.9,<25", "pandas>=2.1.4,<3", "platformdirs<5", "pyarrow<19.0.0", "pydantic>=2.8.2, <3", "pyjwt>=2.0.0, <3", "pytimeparse>=1.1.8,<2", "pyyaml>=6.0,<7", "retrying>=1.3.3,<2", "s3fs>=2024.6.1,<2026", "scikit-learn<1.8", "scipy>=1.9,<2", "shap>=0.46.0,<1", "snowflake-connector-python[pandas]>=3.16.0,<4", "snowflake-snowpark-python>=1.17.0,<2,!=1.26.0", "snowflake.core>=1.0.2,<2", "sqlparse>=0.4,<1", "tqdm<5", "typing-extensions>=4.1.0,<5", "xgboost>=1.7.3,<3",]
|
|
12
12
|
[[project.authors]]
|
|
13
13
|
name = "Snowflake, Inc"
|
|
14
14
|
email = "support@snowflake.com"
|
|
@@ -17,6 +17,7 @@ logger = logging.getLogger(__name__)
|
|
|
17
17
|
|
|
18
18
|
LIVE_COMMIT_PARAMETER = "ENABLE_LIVE_VERSION_IN_SDK"
|
|
19
19
|
INLINE_DEPLOYMENT_SPEC_PARAMETER = "ENABLE_INLINE_DEPLOYMENT_SPEC_FROM_CLIENT_VERSION"
|
|
20
|
+
SET_MODULE_FUNCTIONS_VOLATILITY_FROM_MANIFEST = "SET_MODULE_FUNCTIONS_VOLATILITY_FROM_MANIFEST"
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
class PlatformCapabilities:
|
|
@@ -73,6 +74,9 @@ class PlatformCapabilities:
|
|
|
73
74
|
def is_inlined_deployment_spec_enabled(self) -> bool:
|
|
74
75
|
return self._is_version_feature_enabled(INLINE_DEPLOYMENT_SPEC_PARAMETER)
|
|
75
76
|
|
|
77
|
+
def is_set_module_functions_volatility_from_manifest(self) -> bool:
|
|
78
|
+
return self._get_bool_feature(SET_MODULE_FUNCTIONS_VOLATILITY_FROM_MANIFEST, False)
|
|
79
|
+
|
|
76
80
|
def is_live_commit_enabled(self) -> bool:
|
|
77
81
|
return self._get_bool_feature(LIVE_COMMIT_PARAMETER, False)
|
|
78
82
|
|
{snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/_internal/utils/mixins.py
RENAMED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
1
2
|
from typing import Any, Optional
|
|
2
3
|
|
|
3
4
|
from snowflake.ml._internal.utils import identifier
|
|
@@ -16,6 +17,14 @@ def _identifiers_match(saved: Optional[str], current: Optional[str]) -> bool:
|
|
|
16
17
|
return saved_resolved == current_resolved
|
|
17
18
|
|
|
18
19
|
|
|
20
|
+
@dataclass(frozen=True)
|
|
21
|
+
class _SessionState:
|
|
22
|
+
account: Optional[str]
|
|
23
|
+
role: Optional[str]
|
|
24
|
+
database: Optional[str]
|
|
25
|
+
schema: Optional[str]
|
|
26
|
+
|
|
27
|
+
|
|
19
28
|
class SerializableSessionMixin:
|
|
20
29
|
"""Mixin that provides pickling capabilities for objects with Snowpark sessions."""
|
|
21
30
|
|
|
@@ -40,17 +49,23 @@ class SerializableSessionMixin:
|
|
|
40
49
|
|
|
41
50
|
def __setstate__(self, state: dict[str, Any]) -> None:
|
|
42
51
|
"""Restore session from context during unpickling."""
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
52
|
+
session_state = _SessionState(
|
|
53
|
+
account=state.pop(_SESSION_ACCOUNT_KEY, None),
|
|
54
|
+
role=state.pop(_SESSION_ROLE_KEY, None),
|
|
55
|
+
database=state.pop(_SESSION_DATABASE_KEY, None),
|
|
56
|
+
schema=state.pop(_SESSION_SCHEMA_KEY, None),
|
|
57
|
+
)
|
|
47
58
|
|
|
48
59
|
if hasattr(super(), "__setstate__"):
|
|
49
60
|
super().__setstate__(state) # type: ignore[misc]
|
|
50
61
|
else:
|
|
51
62
|
self.__dict__.update(state)
|
|
52
63
|
|
|
53
|
-
|
|
64
|
+
self._set_session(session_state)
|
|
65
|
+
|
|
66
|
+
def _set_session(self, session_state: _SessionState) -> None:
|
|
67
|
+
|
|
68
|
+
if session_state.account is not None:
|
|
54
69
|
active_sessions = snowpark_session._get_active_sessions()
|
|
55
70
|
if len(active_sessions) == 0:
|
|
56
71
|
raise RuntimeError("No active Snowpark session available. Please create a session.")
|
|
@@ -63,10 +78,10 @@ class SerializableSessionMixin:
|
|
|
63
78
|
active_sessions,
|
|
64
79
|
key=lambda s: sum(
|
|
65
80
|
(
|
|
66
|
-
_identifiers_match(
|
|
67
|
-
_identifiers_match(
|
|
68
|
-
_identifiers_match(
|
|
69
|
-
_identifiers_match(
|
|
81
|
+
_identifiers_match(session_state.account, s.get_current_account()),
|
|
82
|
+
_identifiers_match(session_state.role, s.get_current_role()),
|
|
83
|
+
_identifiers_match(session_state.database, s.get_current_database()),
|
|
84
|
+
_identifiers_match(session_state.schema, s.get_current_schema()),
|
|
70
85
|
)
|
|
71
86
|
),
|
|
72
87
|
),
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import functools
|
|
2
2
|
import json
|
|
3
3
|
import sys
|
|
4
|
-
from typing import Any, Optional, Union
|
|
4
|
+
from typing import Any, Callable, Concatenate, Optional, ParamSpec, TypeVar, Union
|
|
5
5
|
from urllib.parse import quote
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
from snowflake import snowpark
|
|
8
8
|
from snowflake.ml import model as ml_model, registry
|
|
9
9
|
from snowflake.ml._internal.human_readable_id import hrid_generator
|
|
10
10
|
from snowflake.ml._internal.utils import mixins, sql_identifier
|
|
@@ -18,20 +18,40 @@ from snowflake.ml.experiment._client import (
|
|
|
18
18
|
)
|
|
19
19
|
from snowflake.ml.model import type_hints
|
|
20
20
|
from snowflake.ml.utils import sql_client as sql_client_utils
|
|
21
|
-
from snowflake.snowpark import session
|
|
22
21
|
|
|
23
22
|
DEFAULT_EXPERIMENT_NAME = sql_identifier.SqlIdentifier("DEFAULT")
|
|
24
23
|
|
|
24
|
+
P = ParamSpec("P")
|
|
25
|
+
T = TypeVar("T")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _restore_session(
|
|
29
|
+
func: Callable[Concatenate["ExperimentTracking", P], T],
|
|
30
|
+
) -> Callable[Concatenate["ExperimentTracking", P], T]:
|
|
31
|
+
@functools.wraps(func)
|
|
32
|
+
def wrapper(self: "ExperimentTracking", /, *args: P.args, **kwargs: P.kwargs) -> T:
|
|
33
|
+
if self._session is None:
|
|
34
|
+
if self._session_state is None:
|
|
35
|
+
raise RuntimeError(
|
|
36
|
+
f"Session is not set before calling {func.__name__}, and there is no session state to restore from"
|
|
37
|
+
)
|
|
38
|
+
self._set_session(self._session_state)
|
|
39
|
+
if self._session is None:
|
|
40
|
+
raise RuntimeError(f"Failed to restore session before calling {func.__name__}")
|
|
41
|
+
return func(self, *args, **kwargs)
|
|
42
|
+
|
|
43
|
+
return wrapper
|
|
44
|
+
|
|
25
45
|
|
|
26
46
|
class ExperimentTracking(mixins.SerializableSessionMixin):
|
|
27
47
|
"""
|
|
28
48
|
Class to manage experiments in Snowflake.
|
|
29
49
|
"""
|
|
30
50
|
|
|
31
|
-
@
|
|
51
|
+
@snowpark._internal.utils.private_preview(version="1.9.1")
|
|
32
52
|
def __init__(
|
|
33
53
|
self,
|
|
34
|
-
session:
|
|
54
|
+
session: snowpark.Session,
|
|
35
55
|
*,
|
|
36
56
|
database_name: Optional[str] = None,
|
|
37
57
|
schema_name: Optional[str] = None,
|
|
@@ -73,7 +93,10 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
|
|
|
73
93
|
database_name=self._database_name,
|
|
74
94
|
schema_name=self._schema_name,
|
|
75
95
|
)
|
|
76
|
-
self._session = session
|
|
96
|
+
self._session: Optional[snowpark.Session] = session
|
|
97
|
+
# Used to store information about the session if the session could not be restored during unpickling
|
|
98
|
+
# _session_state is None if and only if _session is not None
|
|
99
|
+
self._session_state: Optional[mixins._SessionState] = None
|
|
77
100
|
|
|
78
101
|
# The experiment in context
|
|
79
102
|
self._experiment: Optional[entities.Experiment] = None
|
|
@@ -87,20 +110,29 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
|
|
|
87
110
|
state["_registry"] = None
|
|
88
111
|
return state
|
|
89
112
|
|
|
90
|
-
def
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
session
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
113
|
+
def _set_session(self, session_state: mixins._SessionState) -> None:
|
|
114
|
+
try:
|
|
115
|
+
super()._set_session(session_state)
|
|
116
|
+
assert self._session is not None
|
|
117
|
+
except (snowpark.exceptions.SnowparkSessionException, AssertionError):
|
|
118
|
+
# If session was not set, store the session state
|
|
119
|
+
self._session = None
|
|
120
|
+
self._session_state = session_state
|
|
121
|
+
else:
|
|
122
|
+
# If session was set, clear the session state, and reinitialize the SQL client and registry
|
|
123
|
+
self._session_state = None
|
|
124
|
+
self._sql_client = sql_client.ExperimentTrackingSQLClient(
|
|
125
|
+
session=self._session,
|
|
126
|
+
database_name=self._database_name,
|
|
127
|
+
schema_name=self._schema_name,
|
|
128
|
+
)
|
|
129
|
+
self._registry = registry.Registry(
|
|
130
|
+
session=self._session,
|
|
131
|
+
database_name=self._database_name,
|
|
132
|
+
schema_name=self._schema_name,
|
|
133
|
+
)
|
|
103
134
|
|
|
135
|
+
@_restore_session
|
|
104
136
|
def set_experiment(
|
|
105
137
|
self,
|
|
106
138
|
experiment_name: str,
|
|
@@ -125,6 +157,7 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
|
|
|
125
157
|
self._run = None
|
|
126
158
|
return self._experiment
|
|
127
159
|
|
|
160
|
+
@_restore_session
|
|
128
161
|
def delete_experiment(
|
|
129
162
|
self,
|
|
130
163
|
experiment_name: str,
|
|
@@ -141,8 +174,10 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
|
|
|
141
174
|
self._run = None
|
|
142
175
|
|
|
143
176
|
@functools.wraps(registry.Registry.log_model)
|
|
177
|
+
@_restore_session
|
|
144
178
|
def log_model(
|
|
145
179
|
self,
|
|
180
|
+
/, # self needs to be a positional argument to stop mypy from complaining
|
|
146
181
|
model: Union[type_hints.SupportedModelType, ml_model.ModelVersion],
|
|
147
182
|
*,
|
|
148
183
|
model_name: str,
|
|
@@ -152,6 +187,7 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
|
|
|
152
187
|
with experiment_info.ExperimentInfoPatcher(experiment_info=run._get_experiment_info()):
|
|
153
188
|
return self._registry.log_model(model, model_name=model_name, **kwargs)
|
|
154
189
|
|
|
190
|
+
@_restore_session
|
|
155
191
|
def start_run(
|
|
156
192
|
self,
|
|
157
193
|
run_name: Optional[str] = None,
|
|
@@ -181,6 +217,7 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
|
|
|
181
217
|
self._run = entities.Run(experiment_tracking=self, experiment_name=experiment.name, run_name=run_name)
|
|
182
218
|
return self._run
|
|
183
219
|
|
|
220
|
+
@_restore_session
|
|
184
221
|
def end_run(self, run_name: Optional[str] = None) -> None:
|
|
185
222
|
"""
|
|
186
223
|
End the current run if no run name is provided. Otherwise, the specified run is ended.
|
|
@@ -210,6 +247,7 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
|
|
|
210
247
|
self._run = None
|
|
211
248
|
self._print_urls(experiment_name=experiment_name, run_name=run_name)
|
|
212
249
|
|
|
250
|
+
@_restore_session
|
|
213
251
|
def delete_run(
|
|
214
252
|
self,
|
|
215
253
|
run_name: str,
|
|
@@ -248,6 +286,7 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
|
|
|
248
286
|
"""
|
|
249
287
|
self.log_metrics(metrics={key: value}, step=step)
|
|
250
288
|
|
|
289
|
+
@_restore_session
|
|
251
290
|
def log_metrics(
|
|
252
291
|
self,
|
|
253
292
|
metrics: dict[str, float],
|
|
@@ -284,6 +323,7 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
|
|
|
284
323
|
"""
|
|
285
324
|
self.log_params({key: value})
|
|
286
325
|
|
|
326
|
+
@_restore_session
|
|
287
327
|
def log_params(
|
|
288
328
|
self,
|
|
289
329
|
params: dict[str, Any],
|
|
@@ -305,6 +345,7 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
|
|
|
305
345
|
params=json.dumps([param.to_dict() for param in params_list]),
|
|
306
346
|
)
|
|
307
347
|
|
|
348
|
+
@_restore_session
|
|
308
349
|
def log_artifact(
|
|
309
350
|
self,
|
|
310
351
|
local_path: str,
|
|
@@ -328,6 +369,7 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
|
|
|
328
369
|
file_path=file_path,
|
|
329
370
|
)
|
|
330
371
|
|
|
372
|
+
@_restore_session
|
|
331
373
|
def list_artifacts(
|
|
332
374
|
self,
|
|
333
375
|
run_name: str,
|
|
@@ -356,6 +398,7 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
|
|
|
356
398
|
artifact_path=artifact_path or "",
|
|
357
399
|
)
|
|
358
400
|
|
|
401
|
+
@_restore_session
|
|
359
402
|
def download_artifacts(
|
|
360
403
|
self,
|
|
361
404
|
run_name: str,
|
|
@@ -397,6 +440,7 @@ class ExperimentTracking(mixins.SerializableSessionMixin):
|
|
|
397
440
|
return self._run
|
|
398
441
|
return self.start_run()
|
|
399
442
|
|
|
443
|
+
@_restore_session
|
|
400
444
|
def _generate_run_name(self, experiment: entities.Experiment) -> sql_identifier.SqlIdentifier:
|
|
401
445
|
generator = hrid_generator.HRID16()
|
|
402
446
|
existing_runs = self._sql_client.show_runs_in_experiment(experiment_name=experiment.name)
|
{snowflake_ml_python-1.15.0 → snowflake_ml_python-1.16.0}/snowflake/ml/jobs/_utils/spec_utils.py
RENAMED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import os
|
|
3
|
+
import re
|
|
3
4
|
import sys
|
|
4
5
|
from math import ceil
|
|
5
6
|
from pathlib import PurePath
|
|
@@ -10,6 +11,8 @@ from snowflake.ml._internal.utils import snowflake_env
|
|
|
10
11
|
from snowflake.ml.jobs._utils import constants, feature_flags, query_helper, types
|
|
11
12
|
from snowflake.ml.jobs._utils.runtime_env_utils import RuntimeEnvironmentsDict
|
|
12
13
|
|
|
14
|
+
_OCI_TAG_REGEX = re.compile("^[a-zA-Z0-9._-]{1,128}$")
|
|
15
|
+
|
|
13
16
|
|
|
14
17
|
def _get_node_resources(session: snowpark.Session, compute_pool: str) -> types.ComputeResources:
|
|
15
18
|
"""Extract resource information for the specified compute pool"""
|
|
@@ -56,22 +59,55 @@ def _get_runtime_image(session: snowpark.Session, target_hardware: Literal["CPU"
|
|
|
56
59
|
return selected_runtime.runtime_container_image if selected_runtime else None
|
|
57
60
|
|
|
58
61
|
|
|
59
|
-
def
|
|
62
|
+
def _check_image_tag_valid(tag: Optional[str]) -> bool:
|
|
63
|
+
if tag is None:
|
|
64
|
+
return False
|
|
65
|
+
|
|
66
|
+
return _OCI_TAG_REGEX.fullmatch(tag) is not None
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def _get_image_spec(
|
|
70
|
+
session: snowpark.Session, compute_pool: str, runtime_environment: Optional[str] = None
|
|
71
|
+
) -> types.ImageSpec:
|
|
72
|
+
"""
|
|
73
|
+
Resolve image specification (container image and resources) for the job.
|
|
74
|
+
|
|
75
|
+
Behavior:
|
|
76
|
+
- If `runtime_environment` is empty or the feature flag is disabled, use the
|
|
77
|
+
default image tag and image name.
|
|
78
|
+
- If `runtime_environment` is a valid image tag, use that tag with the default
|
|
79
|
+
repository/name.
|
|
80
|
+
- If `runtime_environment` is a full image URL, use it directly.
|
|
81
|
+
- If the feature flag is enabled and `runtime_environment` is not provided,
|
|
82
|
+
select an ML Runtime image matching the local Python major.minor
|
|
83
|
+
- When multiple inputs are provided, `runtime_environment` takes priority.
|
|
84
|
+
|
|
85
|
+
Args:
|
|
86
|
+
session: Snowflake session.
|
|
87
|
+
compute_pool: Compute pool used to infer CPU/GPU resources.
|
|
88
|
+
runtime_environment: Optional image tag or full image URL to override.
|
|
89
|
+
|
|
90
|
+
Returns:
|
|
91
|
+
Image spec including container image and resource requests/limits.
|
|
92
|
+
"""
|
|
60
93
|
# Retrieve compute pool node resources
|
|
61
94
|
resources = _get_node_resources(session, compute_pool=compute_pool)
|
|
95
|
+
hardware = "GPU" if resources.gpu > 0 else "CPU"
|
|
96
|
+
image_tag = _get_runtime_image_tag()
|
|
97
|
+
image_repo = constants.DEFAULT_IMAGE_REPO
|
|
98
|
+
image_name = constants.DEFAULT_IMAGE_GPU if resources.gpu > 0 else constants.DEFAULT_IMAGE_CPU
|
|
62
99
|
|
|
63
100
|
# Use MLRuntime image
|
|
64
|
-
hardware = "GPU" if resources.gpu > 0 else "CPU"
|
|
65
101
|
container_image = None
|
|
66
|
-
if
|
|
102
|
+
if runtime_environment:
|
|
103
|
+
if _check_image_tag_valid(runtime_environment):
|
|
104
|
+
image_tag = runtime_environment
|
|
105
|
+
else:
|
|
106
|
+
container_image = runtime_environment
|
|
107
|
+
elif feature_flags.FeatureFlags.ENABLE_IMAGE_VERSION_ENV_VAR.is_enabled():
|
|
67
108
|
container_image = _get_runtime_image(session, hardware) # type: ignore[arg-type]
|
|
68
109
|
|
|
69
|
-
|
|
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}"
|
|
74
|
-
|
|
110
|
+
container_image = container_image or f"{image_repo}/{image_name}:{image_tag}"
|
|
75
111
|
# TODO: Should each instance consume the entire pod?
|
|
76
112
|
return types.ImageSpec(
|
|
77
113
|
resource_requests=resources,
|
|
@@ -127,6 +163,7 @@ def generate_service_spec(
|
|
|
127
163
|
target_instances: int = 1,
|
|
128
164
|
min_instances: int = 1,
|
|
129
165
|
enable_metrics: bool = False,
|
|
166
|
+
runtime_environment: Optional[str] = None,
|
|
130
167
|
) -> dict[str, Any]:
|
|
131
168
|
"""
|
|
132
169
|
Generate a service specification for a job.
|
|
@@ -139,11 +176,12 @@ def generate_service_spec(
|
|
|
139
176
|
target_instances: Number of instances for multi-node job
|
|
140
177
|
enable_metrics: Enable platform metrics for the job
|
|
141
178
|
min_instances: Minimum number of instances required to start the job
|
|
179
|
+
runtime_environment: The runtime image to use. Only support image tag or full image URL.
|
|
142
180
|
|
|
143
181
|
Returns:
|
|
144
182
|
Job service specification
|
|
145
183
|
"""
|
|
146
|
-
image_spec = _get_image_spec(session, compute_pool)
|
|
184
|
+
image_spec = _get_image_spec(session, compute_pool, runtime_environment)
|
|
147
185
|
|
|
148
186
|
# Set resource requests/limits, including nvidia.com/gpu quantity if applicable
|
|
149
187
|
resource_requests: dict[str, Union[str, int]] = {
|
|
@@ -317,7 +355,7 @@ def merge_patch(base: Any, patch: Any, display_name: str = "") -> Any:
|
|
|
317
355
|
Returns:
|
|
318
356
|
The patched object.
|
|
319
357
|
"""
|
|
320
|
-
if
|
|
358
|
+
if type(base) is not type(patch):
|
|
321
359
|
if base is not None:
|
|
322
360
|
logging.warning(f"Type mismatch while merging {display_name} (base={type(base)}, patch={type(patch)})")
|
|
323
361
|
return patch
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import logging
|
|
3
3
|
import pathlib
|
|
4
|
+
import sys
|
|
4
5
|
import textwrap
|
|
5
6
|
from pathlib import PurePath
|
|
6
7
|
from typing import Any, Callable, Optional, TypeVar, Union, cast, overload
|
|
@@ -344,6 +345,9 @@ def submit_from_stage(
|
|
|
344
345
|
query_warehouse (str): The query warehouse to use. Defaults to session warehouse.
|
|
345
346
|
spec_overrides (dict): A dictionary of overrides for the service spec.
|
|
346
347
|
imports (list[Union[tuple[str, str], tuple[str]]]): A list of additional payloads used in the job.
|
|
348
|
+
runtime_environment (str): The runtime image to use. Only support image tag or full image URL,
|
|
349
|
+
e.g. "1.7.1" or "image_repo/image_name:image_tag". When it refers to a full image URL,
|
|
350
|
+
it should contain image repository, image name and image tag.
|
|
347
351
|
|
|
348
352
|
Returns:
|
|
349
353
|
An object representing the submitted job.
|
|
@@ -409,6 +413,7 @@ def _submit_job(
|
|
|
409
413
|
"min_instances",
|
|
410
414
|
"enable_metrics",
|
|
411
415
|
"query_warehouse",
|
|
416
|
+
"runtime_environment",
|
|
412
417
|
],
|
|
413
418
|
)
|
|
414
419
|
def _submit_job(
|
|
@@ -459,6 +464,9 @@ def _submit_job(
|
|
|
459
464
|
)
|
|
460
465
|
imports = kwargs.pop("additional_payloads")
|
|
461
466
|
|
|
467
|
+
if "runtime_environment" in kwargs:
|
|
468
|
+
logger.warning("'runtime_environment' is in private preview since 1.15.0, do not use it in production.")
|
|
469
|
+
|
|
462
470
|
# Use kwargs for less common optional parameters
|
|
463
471
|
database = kwargs.pop("database", None)
|
|
464
472
|
schema = kwargs.pop("schema", None)
|
|
@@ -470,6 +478,7 @@ def _submit_job(
|
|
|
470
478
|
enable_metrics = kwargs.pop("enable_metrics", True)
|
|
471
479
|
query_warehouse = kwargs.pop("query_warehouse", session.get_current_warehouse())
|
|
472
480
|
imports = kwargs.pop("imports", None) or imports
|
|
481
|
+
runtime_environment = kwargs.pop("runtime_environment", None)
|
|
473
482
|
|
|
474
483
|
# Warn if there are unknown kwargs
|
|
475
484
|
if kwargs:
|
|
@@ -544,6 +553,7 @@ def _submit_job(
|
|
|
544
553
|
min_instances=min_instances,
|
|
545
554
|
enable_metrics=enable_metrics,
|
|
546
555
|
use_async=True,
|
|
556
|
+
runtime_environment=runtime_environment,
|
|
547
557
|
)
|
|
548
558
|
|
|
549
559
|
# Fall back to v1
|
|
@@ -556,6 +566,7 @@ def _submit_job(
|
|
|
556
566
|
target_instances=target_instances,
|
|
557
567
|
min_instances=min_instances,
|
|
558
568
|
enable_metrics=enable_metrics,
|
|
569
|
+
runtime_environment=runtime_environment,
|
|
559
570
|
)
|
|
560
571
|
|
|
561
572
|
# Generate spec overrides
|
|
@@ -639,6 +650,7 @@ def _do_submit_job_v2(
|
|
|
639
650
|
min_instances: int = 1,
|
|
640
651
|
enable_metrics: bool = True,
|
|
641
652
|
use_async: bool = True,
|
|
653
|
+
runtime_environment: Optional[str] = None,
|
|
642
654
|
) -> jb.MLJob[Any]:
|
|
643
655
|
"""
|
|
644
656
|
Generate the SQL query for job submission.
|
|
@@ -657,6 +669,7 @@ def _do_submit_job_v2(
|
|
|
657
669
|
min_instances: Minimum number of instances required to start the job.
|
|
658
670
|
enable_metrics: Whether to enable platform metrics for the job.
|
|
659
671
|
use_async: Whether to run the job asynchronously.
|
|
672
|
+
runtime_environment: image tag or full image URL to use for the job.
|
|
660
673
|
|
|
661
674
|
Returns:
|
|
662
675
|
The job object.
|
|
@@ -672,6 +685,13 @@ def _do_submit_job_v2(
|
|
|
672
685
|
"ENABLE_METRICS": enable_metrics,
|
|
673
686
|
"SPEC_OVERRIDES": spec_overrides,
|
|
674
687
|
}
|
|
688
|
+
# for the image tag or full image URL, we use that directly
|
|
689
|
+
if runtime_environment:
|
|
690
|
+
spec_options["RUNTIME"] = runtime_environment
|
|
691
|
+
elif feature_flags.FeatureFlags.ENABLE_IMAGE_VERSION_ENV_VAR.is_enabled():
|
|
692
|
+
# when feature flag is enabled, we get the local python version and wrap it in a dict
|
|
693
|
+
# in system function, we can know whether it is python version or image tag or full image URL through the format
|
|
694
|
+
spec_options["RUNTIME"] = json.dumps({"pythonVersion": f"{sys.version_info.major}.{sys.version_info.minor}"})
|
|
675
695
|
job_options = {
|
|
676
696
|
"EXTERNAL_ACCESS_INTEGRATIONS": external_access_integrations,
|
|
677
697
|
"QUERY_WAREHOUSE": query_warehouse,
|
|
@@ -1,6 +1,20 @@
|
|
|
1
|
-
from snowflake.ml.model._client.model.batch_inference_specs import
|
|
1
|
+
from snowflake.ml.model._client.model.batch_inference_specs import (
|
|
2
|
+
JobSpec,
|
|
3
|
+
OutputSpec,
|
|
4
|
+
SaveMode,
|
|
5
|
+
)
|
|
2
6
|
from snowflake.ml.model._client.model.model_impl import Model
|
|
3
7
|
from snowflake.ml.model._client.model.model_version_impl import ExportMode, ModelVersion
|
|
4
8
|
from snowflake.ml.model.models.huggingface_pipeline import HuggingFacePipelineModel
|
|
9
|
+
from snowflake.ml.model.volatility import Volatility
|
|
5
10
|
|
|
6
|
-
__all__ = [
|
|
11
|
+
__all__ = [
|
|
12
|
+
"Model",
|
|
13
|
+
"ModelVersion",
|
|
14
|
+
"ExportMode",
|
|
15
|
+
"HuggingFacePipelineModel",
|
|
16
|
+
"JobSpec",
|
|
17
|
+
"OutputSpec",
|
|
18
|
+
"SaveMode",
|
|
19
|
+
"Volatility",
|
|
20
|
+
]
|
|
@@ -1,10 +1,26 @@
|
|
|
1
|
-
from
|
|
1
|
+
from enum import Enum
|
|
2
|
+
from typing import Optional
|
|
2
3
|
|
|
3
4
|
from pydantic import BaseModel
|
|
4
5
|
|
|
5
6
|
|
|
7
|
+
class SaveMode(str, Enum):
|
|
8
|
+
"""Save mode options for batch inference output.
|
|
9
|
+
|
|
10
|
+
Determines the behavior when files already exist in the output location.
|
|
11
|
+
|
|
12
|
+
OVERWRITE: Remove existing files and write new results.
|
|
13
|
+
|
|
14
|
+
ERROR: Raise an error if files already exist in the output location.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
OVERWRITE = "overwrite"
|
|
18
|
+
ERROR = "error"
|
|
19
|
+
|
|
20
|
+
|
|
6
21
|
class OutputSpec(BaseModel):
|
|
7
22
|
stage_location: str
|
|
23
|
+
mode: SaveMode = SaveMode.ERROR
|
|
8
24
|
|
|
9
25
|
|
|
10
26
|
class JobSpec(BaseModel):
|
|
@@ -12,10 +28,10 @@ class JobSpec(BaseModel):
|
|
|
12
28
|
job_name: Optional[str] = None
|
|
13
29
|
num_workers: Optional[int] = None
|
|
14
30
|
function_name: Optional[str] = None
|
|
15
|
-
gpu: Optional[Union[str, int]] = None
|
|
16
31
|
force_rebuild: bool = False
|
|
17
32
|
max_batch_rows: int = 1024
|
|
18
33
|
warehouse: Optional[str] = None
|
|
19
34
|
cpu_requests: Optional[str] = None
|
|
20
35
|
memory_requests: Optional[str] = None
|
|
36
|
+
gpu_requests: Optional[str] = None
|
|
21
37
|
replicas: Optional[int] = None
|