snowflake-ml-python 1.7.4__py3-none-any.whl → 1.8.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. snowflake/cortex/_complete.py +58 -3
  2. snowflake/ml/_internal/env_utils.py +64 -21
  3. snowflake/ml/_internal/file_utils.py +18 -4
  4. snowflake/ml/_internal/platform_capabilities.py +3 -0
  5. snowflake/ml/_internal/relax_version_strategy.py +16 -0
  6. snowflake/ml/_internal/telemetry.py +25 -0
  7. snowflake/ml/data/_internal/arrow_ingestor.py +1 -1
  8. snowflake/ml/feature_store/feature_store.py +18 -0
  9. snowflake/ml/feature_store/feature_view.py +46 -1
  10. snowflake/ml/fileset/fileset.py +0 -1
  11. snowflake/ml/jobs/_utils/constants.py +31 -1
  12. snowflake/ml/jobs/_utils/payload_utils.py +232 -72
  13. snowflake/ml/jobs/_utils/spec_utils.py +78 -38
  14. snowflake/ml/jobs/decorators.py +8 -25
  15. snowflake/ml/jobs/job.py +4 -4
  16. snowflake/ml/jobs/manager.py +5 -0
  17. snowflake/ml/model/_client/model/model_version_impl.py +1 -1
  18. snowflake/ml/model/_client/ops/model_ops.py +107 -14
  19. snowflake/ml/model/_client/ops/service_ops.py +1 -1
  20. snowflake/ml/model/_client/service/model_deployment_spec.py +7 -3
  21. snowflake/ml/model/_client/sql/model_version.py +58 -0
  22. snowflake/ml/model/_client/sql/service.py +8 -2
  23. snowflake/ml/model/_model_composer/model_composer.py +50 -3
  24. snowflake/ml/model/_model_composer/model_manifest/model_manifest.py +4 -0
  25. snowflake/ml/model/_model_composer/model_manifest/model_manifest_schema.py +2 -1
  26. snowflake/ml/model/_model_composer/model_method/model_method.py +0 -1
  27. snowflake/ml/model/_packager/model_env/model_env.py +49 -29
  28. snowflake/ml/model/_packager/model_handlers/_utils.py +8 -4
  29. snowflake/ml/model/_packager/model_handlers/huggingface_pipeline.py +44 -24
  30. snowflake/ml/model/_packager/model_handlers/keras.py +226 -0
  31. snowflake/ml/model/_packager/model_handlers/pytorch.py +51 -20
  32. snowflake/ml/model/_packager/model_handlers/sklearn.py +25 -3
  33. snowflake/ml/model/_packager/model_handlers/snowmlmodel.py +73 -21
  34. snowflake/ml/model/_packager/model_handlers/tensorflow.py +70 -72
  35. snowflake/ml/model/_packager/model_handlers/torchscript.py +49 -20
  36. snowflake/ml/model/_packager/model_handlers/xgboost.py +2 -2
  37. snowflake/ml/model/_packager/model_handlers_migrator/pytorch_migrator_2023_12_01.py +20 -0
  38. snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2023_12_01.py +48 -0
  39. snowflake/ml/model/_packager/model_handlers_migrator/tensorflow_migrator_2025_01_01.py +19 -0
  40. snowflake/ml/model/_packager/model_handlers_migrator/torchscript_migrator_2023_12_01.py +20 -0
  41. snowflake/ml/model/_packager/model_meta/_packaging_requirements.py +0 -1
  42. snowflake/ml/model/_packager/model_meta/model_meta.py +6 -2
  43. snowflake/ml/model/_packager/model_meta/model_meta_schema.py +16 -0
  44. snowflake/ml/model/_packager/model_packager.py +3 -5
  45. snowflake/ml/model/_packager/model_runtime/_snowml_inference_alternative_requirements.py +1 -2
  46. snowflake/ml/model/_packager/model_runtime/model_runtime.py +8 -1
  47. snowflake/ml/model/_packager/model_task/model_task_utils.py +5 -1
  48. snowflake/ml/model/_signatures/builtins_handler.py +20 -9
  49. snowflake/ml/model/_signatures/core.py +54 -33
  50. snowflake/ml/model/_signatures/dmatrix_handler.py +98 -0
  51. snowflake/ml/model/_signatures/numpy_handler.py +12 -20
  52. snowflake/ml/model/_signatures/pandas_handler.py +28 -37
  53. snowflake/ml/model/_signatures/pytorch_handler.py +57 -41
  54. snowflake/ml/model/_signatures/snowpark_handler.py +0 -12
  55. snowflake/ml/model/_signatures/tensorflow_handler.py +61 -67
  56. snowflake/ml/model/_signatures/utils.py +120 -8
  57. snowflake/ml/model/custom_model.py +13 -4
  58. snowflake/ml/model/model_signature.py +39 -13
  59. snowflake/ml/model/type_hints.py +28 -2
  60. snowflake/ml/modeling/_internal/snowpark_implementations/snowpark_handlers.py +14 -1
  61. snowflake/ml/modeling/metrics/ranking.py +3 -0
  62. snowflake/ml/modeling/metrics/regression.py +3 -0
  63. snowflake/ml/modeling/pipeline/pipeline.py +18 -1
  64. snowflake/ml/modeling/preprocessing/k_bins_discretizer.py +1 -1
  65. snowflake/ml/modeling/preprocessing/polynomial_features.py +2 -2
  66. snowflake/ml/registry/_manager/model_manager.py +55 -7
  67. snowflake/ml/registry/registry.py +52 -4
  68. snowflake/ml/version.py +1 -1
  69. {snowflake_ml_python-1.7.4.dist-info → snowflake_ml_python-1.8.0.dist-info}/METADATA +336 -27
  70. {snowflake_ml_python-1.7.4.dist-info → snowflake_ml_python-1.8.0.dist-info}/RECORD +73 -66
  71. {snowflake_ml_python-1.7.4.dist-info → snowflake_ml_python-1.8.0.dist-info}/WHEEL +1 -1
  72. {snowflake_ml_python-1.7.4.dist-info → snowflake_ml_python-1.8.0.dist-info/licenses}/LICENSE.txt +0 -0
  73. {snowflake_ml_python-1.7.4.dist-info → snowflake_ml_python-1.8.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: snowflake-ml-python
3
- Version: 1.7.4
3
+ Version: 1.8.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:
@@ -223,13 +223,14 @@ Classifier: Operating System :: OS Independent
223
223
  Classifier: Programming Language :: Python :: 3.9
224
224
  Classifier: Programming Language :: Python :: 3.10
225
225
  Classifier: Programming Language :: Python :: 3.11
226
+ Classifier: Programming Language :: Python :: 3.12
226
227
  Classifier: Topic :: Database
227
228
  Classifier: Topic :: Software Development
228
229
  Classifier: Topic :: Software Development :: Libraries
229
230
  Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
230
231
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
231
232
  Classifier: Topic :: Scientific/Engineering :: Information Analysis
232
- Requires-Python: <3.12,>=3.9
233
+ Requires-Python: <3.13,>=3.9
233
234
  Description-Content-Type: text/markdown
234
235
  License-File: LICENSE.txt
235
236
  Requires-Dist: absl-py<2,>=0.15
@@ -250,46 +251,48 @@ Requires-Dist: retrying<2,>=1.3.3
250
251
  Requires-Dist: s3fs<2026,>=2024.6.1
251
252
  Requires-Dist: scikit-learn<1.6,>=1.4
252
253
  Requires-Dist: scipy<2,>=1.9
253
- Requires-Dist: snowflake-connector-python[pandas]<4,>=3.5.0
254
+ Requires-Dist: snowflake-connector-python[pandas]<4,>=3.12.0
254
255
  Requires-Dist: snowflake-snowpark-python!=1.26.0,<2,>=1.17.0
255
256
  Requires-Dist: sqlparse<1,>=0.4
256
257
  Requires-Dist: typing-extensions<5,>=4.1.0
257
258
  Requires-Dist: xgboost<3,>=1.7.3
258
259
  Provides-Extra: all
259
260
  Requires-Dist: catboost<2,>=1.2.0; extra == "all"
260
- Requires-Dist: huggingface_hub<0.26; extra == "all"
261
+ Requires-Dist: keras<4,>=2.0.0; extra == "all"
261
262
  Requires-Dist: lightgbm<5,>=4.1.0; extra == "all"
262
263
  Requires-Dist: mlflow<3,>=2.16.0; extra == "all"
263
- Requires-Dist: peft<1,>=0.5.0; extra == "all"
264
- Requires-Dist: sentence-transformers<3,>=2.2.2; extra == "all"
265
- Requires-Dist: sentencepiece<1,>=0.1.95; extra == "all"
264
+ Requires-Dist: sentence-transformers<4,>=2.7.0; extra == "all"
265
+ Requires-Dist: sentencepiece<0.2.0,>=0.1.95; extra == "all"
266
266
  Requires-Dist: shap<1,>=0.46.0; extra == "all"
267
- Requires-Dist: tensorflow<3,>=2.12.0; extra == "all"
268
- Requires-Dist: tokenizers<1,>=0.10; extra == "all"
269
- Requires-Dist: torch<2.3.0,>=2.0.1; extra == "all"
267
+ Requires-Dist: tensorflow<3,>=2.17.0; extra == "all"
268
+ Requires-Dist: tokenizers<1,>=0.15.1; extra == "all"
269
+ Requires-Dist: torch<3,>=2.0.1; extra == "all"
270
270
  Requires-Dist: torchdata<1,>=0.4; extra == "all"
271
- Requires-Dist: transformers<5,>=4.32.1; extra == "all"
271
+ Requires-Dist: transformers<5,>=4.39.3; extra == "all"
272
272
  Provides-Extra: catboost
273
273
  Requires-Dist: catboost<2,>=1.2.0; extra == "catboost"
274
+ Provides-Extra: keras
275
+ Requires-Dist: keras<4,>=2.0.0; extra == "keras"
276
+ Requires-Dist: tensorflow<3,>=2.17.0; extra == "keras"
277
+ Requires-Dist: torch<3,>=2.0.1; extra == "keras"
274
278
  Provides-Extra: lightgbm
275
279
  Requires-Dist: lightgbm<5,>=4.1.0; extra == "lightgbm"
276
- Provides-Extra: llm
277
- Requires-Dist: peft<1,>=0.5.0; extra == "llm"
278
280
  Provides-Extra: mlflow
279
281
  Requires-Dist: mlflow<3,>=2.16.0; extra == "mlflow"
280
282
  Provides-Extra: shap
281
283
  Requires-Dist: shap<1,>=0.46.0; extra == "shap"
282
284
  Provides-Extra: tensorflow
283
- Requires-Dist: tensorflow<3,>=2.12.0; extra == "tensorflow"
285
+ Requires-Dist: tensorflow<3,>=2.17.0; extra == "tensorflow"
284
286
  Provides-Extra: torch
285
- Requires-Dist: torch<2.3.0,>=2.0.1; extra == "torch"
287
+ Requires-Dist: torch<3,>=2.0.1; extra == "torch"
286
288
  Requires-Dist: torchdata<1,>=0.4; extra == "torch"
287
289
  Provides-Extra: transformers
288
- Requires-Dist: huggingface_hub<0.26; extra == "transformers"
289
- Requires-Dist: sentence-transformers<3,>=2.2.2; extra == "transformers"
290
- Requires-Dist: sentencepiece<1,>=0.1.95; extra == "transformers"
291
- Requires-Dist: tokenizers<1,>=0.10; extra == "transformers"
292
- Requires-Dist: transformers<5,>=4.32.1; extra == "transformers"
290
+ Requires-Dist: sentence-transformers<4,>=2.7.0; extra == "transformers"
291
+ Requires-Dist: sentencepiece<0.2.0,>=0.1.95; extra == "transformers"
292
+ Requires-Dist: tokenizers<1,>=0.15.1; extra == "transformers"
293
+ Requires-Dist: torch<3,>=2.0.1; extra == "transformers"
294
+ Requires-Dist: transformers<5,>=4.39.3; extra == "transformers"
295
+ Dynamic: license-file
293
296
 
294
297
  # Snowpark ML
295
298
 
@@ -346,7 +349,7 @@ If you don't have a Snowflake account yet, you can [sign up for a 30-day free tr
346
349
  Follow the [installation instructions](https://docs.snowflake.com/en/developer-guide/snowpark-ml/index#installing-snowpark-ml)
347
350
  in the Snowflake documentation.
348
351
 
349
- Python versions 3.9 to 3.11 are supported. You can use [miniconda](https://docs.conda.io/en/latest/miniconda.html) or
352
+ Python versions 3.9 to 3.12 are supported. You can use [miniconda](https://docs.conda.io/en/latest/miniconda.html) or
350
353
  [anaconda](https://www.anaconda.com/) to create a Conda environment (recommended),
351
354
  or [virtualenv](https://docs.python.org/3/tutorial/venv.html) to create a virtual environment.
352
355
 
@@ -399,28 +402,329 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
399
402
 
400
403
  # Release History
401
404
 
402
- ## 1.7.4
405
+ ## 1.8.0
406
+
407
+ ### Bug Fixes
408
+
409
+ - Modeling: Fix a bug in some metrics that allowed an unsupported version of numpy to be installed
410
+ automatically in the stored procedure, resulting in a numpy error on execution
411
+ - Registry: Fix a bug that leads to incorrect `Model is does not have _is_inference_api` error message when assigning
412
+ a supported model as a property of a CustomModel.
413
+ - Registry: Fix a bug that inference is not working when models with more than 500 input features
414
+ are deployed to SPCS.
415
+
416
+ ### Behavior Change
417
+
418
+ - Registry: With FeatureGroupSpec support, auto inferred model signature for `transformers.Pipeline` models have been
419
+ updated, including:
420
+ - Signature for fill-mask task has been changed from
421
+
422
+ ```python
423
+ ModelSignature(
424
+ inputs=[
425
+ FeatureSpec(name="inputs", dtype=DataType.STRING),
426
+ ],
427
+ outputs=[
428
+ FeatureSpec(name="outputs", dtype=DataType.STRING),
429
+ ],
430
+ )
431
+ ```
432
+
433
+ to
434
+
435
+ ```python
436
+ ModelSignature(
437
+ inputs=[
438
+ FeatureSpec(name="inputs", dtype=DataType.STRING),
439
+ ],
440
+ outputs=[
441
+ FeatureGroupSpec(
442
+ name="outputs",
443
+ specs=[
444
+ FeatureSpec(name="sequence", dtype=DataType.STRING),
445
+ FeatureSpec(name="score", dtype=DataType.DOUBLE),
446
+ FeatureSpec(name="token", dtype=DataType.INT64),
447
+ FeatureSpec(name="token_str", dtype=DataType.STRING),
448
+ ],
449
+ shape=(-1,),
450
+ ),
451
+ ],
452
+ )
453
+ ```
454
+
455
+ - Signature for token-classification task has been changed from
456
+
457
+ ```python
458
+ ModelSignature(
459
+ inputs=[
460
+ FeatureSpec(name="inputs", dtype=DataType.STRING),
461
+ ],
462
+ outputs=[
463
+ FeatureSpec(name="outputs", dtype=DataType.STRING),
464
+ ],
465
+ )
466
+ ```
467
+
468
+ to
469
+
470
+ ```python
471
+ ModelSignature(
472
+ inputs=[FeatureSpec(name="inputs", dtype=DataType.STRING)],
473
+ outputs=[
474
+ FeatureGroupSpec(
475
+ name="outputs",
476
+ specs=[
477
+ FeatureSpec(name="word", dtype=DataType.STRING),
478
+ FeatureSpec(name="score", dtype=DataType.DOUBLE),
479
+ FeatureSpec(name="entity", dtype=DataType.STRING),
480
+ FeatureSpec(name="index", dtype=DataType.INT64),
481
+ FeatureSpec(name="start", dtype=DataType.INT64),
482
+ FeatureSpec(name="end", dtype=DataType.INT64),
483
+ ],
484
+ shape=(-1,),
485
+ ),
486
+ ],
487
+ )
488
+ ```
489
+
490
+ - Signature for question-answering task when top_k is larger than 1 has been changed from
491
+
492
+ ```python
493
+ ModelSignature(
494
+ inputs=[
495
+ FeatureSpec(name="question", dtype=DataType.STRING),
496
+ FeatureSpec(name="context", dtype=DataType.STRING),
497
+ ],
498
+ outputs=[
499
+ FeatureSpec(name="outputs", dtype=DataType.STRING),
500
+ ],
501
+ )
502
+ ```
503
+
504
+ to
505
+
506
+ ```python
507
+ ModelSignature(
508
+ inputs=[
509
+ FeatureSpec(name="question", dtype=DataType.STRING),
510
+ FeatureSpec(name="context", dtype=DataType.STRING),
511
+ ],
512
+ outputs=[
513
+ FeatureGroupSpec(
514
+ name="answers",
515
+ specs=[
516
+ FeatureSpec(name="score", dtype=DataType.DOUBLE),
517
+ FeatureSpec(name="start", dtype=DataType.INT64),
518
+ FeatureSpec(name="end", dtype=DataType.INT64),
519
+ FeatureSpec(name="answer", dtype=DataType.STRING),
520
+ ],
521
+ shape=(-1,),
522
+ ),
523
+ ],
524
+ )
525
+ ```
526
+
527
+ - Signature for text-classification task when top_k is `None` has been changed from
528
+
529
+ ```python
530
+ ModelSignature(
531
+ inputs=[
532
+ FeatureSpec(name="text", dtype=DataType.STRING),
533
+ FeatureSpec(name="text_pair", dtype=DataType.STRING),
534
+ ],
535
+ outputs=[
536
+ FeatureSpec(name="label", dtype=DataType.STRING),
537
+ FeatureSpec(name="score", dtype=DataType.DOUBLE),
538
+ ],
539
+ )
540
+ ```
541
+
542
+ to
543
+
544
+ ```python
545
+ ModelSignature(
546
+ inputs=[
547
+ FeatureSpec(name="text", dtype=DataType.STRING),
548
+ ],
549
+ outputs=[
550
+ FeatureSpec(name="label", dtype=DataType.STRING),
551
+ FeatureSpec(name="score", dtype=DataType.DOUBLE),
552
+ ],
553
+ )
554
+ ```
555
+
556
+ - Signature for text-classification task when top_k is not `None` has been changed from
557
+
558
+ ```python
559
+ ModelSignature(
560
+ inputs=[
561
+ FeatureSpec(name="text", dtype=DataType.STRING),
562
+ FeatureSpec(name="text_pair", dtype=DataType.STRING),
563
+ ],
564
+ outputs=[
565
+ FeatureSpec(name="outputs", dtype=DataType.STRING),
566
+ ],
567
+ )
568
+ ```
569
+
570
+ to
571
+
572
+ ```python
573
+ ModelSignature(
574
+ inputs=[
575
+ FeatureSpec(name="text", dtype=DataType.STRING),
576
+ ],
577
+ outputs=[
578
+ FeatureGroupSpec(
579
+ name="labels",
580
+ specs=[
581
+ FeatureSpec(name="label", dtype=DataType.STRING),
582
+ FeatureSpec(name="score", dtype=DataType.DOUBLE),
583
+ ],
584
+ shape=(-1,),
585
+ ),
586
+ ],
587
+ )
588
+ ```
589
+
590
+ - Signature for text-generation task has been changed from
591
+
592
+ ```python
593
+ ModelSignature(
594
+ inputs=[FeatureSpec(name="inputs", dtype=DataType.STRING)],
595
+ outputs=[
596
+ FeatureSpec(name="outputs", dtype=DataType.STRING),
597
+ ],
598
+ )
599
+ ```
600
+
601
+ to
602
+
603
+ ```python
604
+ ModelSignature(
605
+ inputs=[
606
+ FeatureGroupSpec(
607
+ name="inputs",
608
+ specs=[
609
+ FeatureSpec(name="role", dtype=DataType.STRING),
610
+ FeatureSpec(name="content", dtype=DataType.STRING),
611
+ ],
612
+ shape=(-1,),
613
+ ),
614
+ ],
615
+ outputs=[
616
+ FeatureGroupSpec(
617
+ name="outputs",
618
+ specs=[
619
+ FeatureSpec(name="generated_text", dtype=DataType.STRING),
620
+ ],
621
+ shape=(-1,),
622
+ )
623
+ ],
624
+ )
625
+ ```
626
+
627
+ - Registry: PyTorch and TensorFlow models now expect a single tensor input/output by default when logging to Model
628
+ Registry. To use multiple tensors (previous behavior), set `options={"multiple_inputs": True}`.
629
+
630
+ Example with single tensor input:
631
+
632
+ ```python
633
+ import torch
634
+
635
+ class TorchModel(torch.nn.Module):
636
+ def __init__(self, n_input: int, n_hidden: int, n_out: int, dtype: torch.dtype = torch.float32) -> None:
637
+ super().__init__()
638
+ self.model = torch.nn.Sequential(
639
+ torch.nn.Linear(n_input, n_hidden, dtype=dtype),
640
+ torch.nn.ReLU(),
641
+ torch.nn.Linear(n_hidden, n_out, dtype=dtype),
642
+ torch.nn.Sigmoid(),
643
+ )
644
+
645
+ def forward(self, tensor: torch.Tensor) -> torch.Tensor:
646
+ return cast(torch.Tensor, self.model(tensor))
647
+
648
+ # Sample usage:
649
+ data_x = torch.rand(size=(batch_size, n_input))
650
+
651
+ # Log model with single tensor
652
+ reg.log_model(
653
+ model=model,
654
+ ...,
655
+ sample_input_data=data_x
656
+ )
657
+
658
+ # Run inference with single tensor
659
+ mv.run(data_x)
660
+ ```
661
+
662
+ For multiple tensor inputs/outputs, use:
663
+
664
+ ```python
665
+ reg.log_model(
666
+ model=model,
667
+ ...,
668
+ sample_input_data=[data_x_1, data_x_2],
669
+ options={"multiple_inputs": True}
670
+ )
671
+ ```
672
+
673
+ - Registry: Default `enable_explainability` to False when the model can be deployed to Snowpark Container Services.
674
+
675
+ ### New Features
676
+
677
+ - Registry: Added support to single `torch.Tensor`, `tensorflow.Tensor` and `tensorflow.Variable` as input or output
678
+ data.
679
+ - Registry: Support [`xgboost.DMatrix`](https://xgboost.readthedocs.io/en/stable/python/python_api.html#xgboost.DMatrix)
680
+ datatype for XGBoost models.
681
+
682
+ ## 1.7.5 (03-06-2025)
683
+
684
+ - Support Python 3.12.
685
+ - Explainability: Support native and snowflake.ml.modeling sklearn pipeline
686
+
687
+ ### Bug Fixes
688
+
689
+ - Registry: Fixed a compatibility issue when using `snowflake-ml-python` 1.7.0 or greater to save a `tensorflow.keras`
690
+ model with `keras` 2.x, if `relax_version` is set or default to True, and newer version of `snowflake-ml-python`
691
+ is available in Snowflake Anaconda Channel, model could not be run in Snowflake. If you have such model, you could
692
+ use the latest version of `snowflake-ml-python` and call `ModelVersion.load` to load it back, and re-log it.
693
+ Alternatively, you can prevent this issue by setting `relax_version=False` when saving the model.
694
+ - Registry: Removed the validation that disallows data that does not have non-null values being passed to
695
+ `ModelVersion.run`.
696
+ - ML Job (PrPr): No longer require CREATE STAGE privilege if `stage_name` points to an existing stage
697
+ - ML Job (PrPr): Fixed a bug causing some payload source and entrypoint path
698
+ combinations to be erroneously rejected with
699
+ `ValueError(f"{self.entrypoint} must be a subpath of {self.source}")`
700
+ - ML Job (PrPr): Fixed a bug in Ray cluster startup config which caused certain Runtime APIs to fail
701
+
702
+ ### New Features
703
+
704
+ - Registry: Added support for handling Hugging Face model configurations with auto-mapping functionality.
705
+ - Registry: Added support for `keras` 3.x model with `tensorflow` and `pytorch` backend
706
+ - ML Job (PrPr): Support any serializable (pickleable) argument for `@remote` decorated functions
707
+
708
+ ## 1.7.4 (01-28-2025)
403
709
 
404
710
  - FileSet: The `snowflake.ml.fileset.FileSet` has been deprecated and will be removed in a future version.
405
711
  Use [snowflake.ml.dataset.Dataset](https://docs.snowflake.com/en/developer-guide/snowflake-ml/dataset) and
406
712
  [snowflake.ml.data.DataConnector](https://docs.snowflake.com/en/developer-guide/snowpark-ml/reference/latest/api/data/snowflake.ml.data.data_connector.DataConnector)
407
713
  instead.
714
+ - Registry: `ModelVersion.run` on a service would require redeploying the service once account opts into nested function.
408
715
 
409
716
  ### Bug Fixes
410
717
 
411
718
  - Registry: Fixed an issue that the hugging face pipeline is loaded using incorrect dtype.
412
719
  - Registry: Fixed an issue that only 1 row is used when infer the model signature in the modeling model.
413
720
 
414
- ### Behavior Changes
415
-
416
- - Registry: `ModelVersion.run` on a service would require redeploying the service once account opts into nested function.
417
-
418
721
  ### New Features
419
722
 
420
723
  - Add new `snowflake.ml.jobs` preview API for running headless workloads on SPCS using
421
724
  [Container Runtime for ML](https://docs.snowflake.com/en/developer-guide/snowflake-ml/container-runtime-ml)
422
725
  - Added `guardrails` option to Cortex `complete` function, enabling
423
726
  [Cortex Guard](https://docs.snowflake.com/en/user-guide/snowflake-cortex/llm-functions#cortex-guard) support
727
+ - Model Monitoring: Expose Model Monitoring Python API by default.
424
728
 
425
729
  ## 1.7.3 (2025-01-08)
426
730
 
@@ -428,6 +732,7 @@ NOTE: Version 1.7.0 is used as example here. Please choose the the latest versio
428
732
  - Bumped the requirements of `fsspec` and `s3fs` to `>=2024.6.1,<2026`
429
733
  - Bumped the requirement of `mlflow` to `>=2.16.0, <3`
430
734
  - Registry: Support 500+ features for model registry
735
+ - Feature Store: Add support for `cluster_by` for feature views.
431
736
 
432
737
  ### Bug Fixes
433
738
 
@@ -545,6 +850,10 @@ class ExamplePipelineModel(custom_model.CustomModel):
545
850
  - Data Connector: Add the option of passing a `None` sized batch to `to_torch_dataset` for better
546
851
  interoperability with PyTorch DataLoader.
547
852
  - Model Registry: Support [pandas.CategoricalDtype](https://pandas.pydata.org/docs/reference/api/pandas.CategoricalDtype.html#pandas-categoricaldtype)
853
+ - Limitations:
854
+ - The native categorical data handling handling by XGBoost using `enable_categorical=True` is not supported.
855
+ Instead please use [`sklearn.pipeline`](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html)
856
+ to preprocess the categorical datatype and log the pipeline with the XGBoost model.
548
857
  - Registry: It is now possible to pass `signatures` and `sample_input_data` at the same time to capture background
549
858
  data from explainablity and data lineage.
550
859