Snowflake ML-Versionshinweise¶
Dieser Artikel enthält die Versionshinweise für Snowflake ML, einschließlich der folgenden, sofern zutreffend:
Verhaltensänderungen
Neue Features
Fehlerkorrekturen für Kunden
Bemerkung
Diese Hinweise enthalten keine Änderungen an Features, die noch nicht angekündigt wurden. Solche Features können im Quellcode von Snowflake ML erscheinen, aber nicht in der öffentlichen Dokumentation.
Siehe Snowflake ML: Umfassendes maschinelles Lernen für die Dokumentation.
Überprüfen Sie das snowflake-ml-python
-Paket¶
Alle Snowflake-Pakete sind signiert, sodass Sie ihre Herkunft überprüfen können. Um das Paket snowflake.ml.python
zu überprüfen, führen Sie die folgenden Schritte aus:
Installieren Sie
cosign
. Dieses Beispiel verwendet die Go-Installation: Installation von cosign mit Go.Laden Sie die Datei von einem Repository wie PyPi herunter.
Laden Sie eine
.sig
-Datei für dieses Release von der GitHub Releases-Seite herunter.Überprüfen Sie die Signatur mit
cosign
. Beispiel:
cosign verify-blob snowflake_ml_python-1.7.0.tar.gz --key snowflake-ml-python-1.7.0.pub --signature resources.linux.snowflake_ml_python-1.7.0.tar.gz.sig
cosign verify-blob snowflake_ml_python-1.7.0.tar.gz --key snowflake-ml-python-1.7.0.pub --signature resources.linux.snowflake_ml_python-1.7.0
Bemerkung
Dieses Beispiel verwendet die Bibliothek und die Signatur für Version 1.7.0 des Pakets. Verwenden Sie die Dateinamen der Version, die Sie überprüfen.
Hinweise zum Veralten¶
snowflake.ml.fileset.FileSet
ist veraltet und wird in einer zukünftigen Version entfernt werden. Verwenden Sie stattdessen snowflake.ml.dataset.Dataset und snowflake.ml.data.DataConnector.Die „CamelCase“-Funktionsnamen in
snowflake.ml.cortex
sind veraltet und werden in einer zukünftigen Version entfernt. Verwenden Sie stattdessen die „snake_case“-Namen für diese Funktionen. Verwenden Sie zum Beispielclassify_text
anstelle vonClassifyText
.Der
partitioned_inefrerence_api
-Decorator ist veraltet und wird in einer zukünftigen Version entfernt werden. Verwenden Sie stattdessencustom_model.partitioned_api
.
Version 1.8.5 (2025-05-27)¶
Verhaltensänderungen¶
Das Verhalten der ML-Jobs ändert sich:
Das Argument
num_instances
wurde intarget_instances
in Auftragsübermittlungs-APIs umbenannt und ist nun erforderlich.
Fehlerkorrekturen¶
Fehlerkorrekturen an der Modell-Registry:
Ein Fehler beim Auflisten und Löschen von Container-Diensten wurde behoben.
Es wurde ein Fehler bei der Protokollierung von scikit-learn-Pipelines behoben, bei dem die Funktion
explain
nicht erstellt wurde.Bei der Protokollierung eines reinen Container-Modells wird nicht mehr geprüft, ob die erforderliche Version von
snowflake-ml-python
im Snowflake-Conda-Kanal verfügbar ist.
Fehlerbehebungen zur Erklärbarkeit:
Die Mindestversion von
streamlit
wurde auf 1.30 gesenkt, um die Kompatibilität zu verbessern.
Fehlerkorrekturen bei der Modellierung:
xgboost
ist jetzt wieder eine erforderliche Abhängigkeit (in v1.8.4 war sie optional).
Neue Features¶
Neue Features von ML-Jobs:
Der Job Decorator verfügt jetzt über das Argument
min_instances
, das einen Job warten lässt, bis die angegebene Anzahl von Workern bereit ist, bevor er gestartet wird.
Version 1.8.4 (2025-05-12)¶
Verhaltensänderungen¶
Das Verhalten der ML-Jobs ändert sich:
Die Eigenschaft
id
ist jetzt der vollqualifizierte Name des Jobs. Eine neue Eigenschaft,name
, wurde eingeführt, um den ML-Jobnamen darzustellen.Die Methode
list_jobs
gibt jetzt den ML-Jobnamen statt der Job-ID zurück.
Verhaltensänderungen an der Modell-Registry:
Unter
log_model
führt die Aktivierung von Erklärbarkeit, wenn das Modell nur für Snowpark Container Services bereitgestellt wird, jetzt zu einem Fehler statt zu einer Warnung und verhindert die Fertigstellung des Protokollvorgangs.
Fehlerkorrekturen¶
Fehlerkorrekturen an der Modell-Registry:
Es wurde ein Fehler bei der Protokollierung von PyTorch- und TensorFlow-Modellen behoben, der zu
UnboundLocalError: local variable 'multiple_inputs' referenced before assignment.
Neue Features¶
Neue Features der Modell-Registry:
Aktivieren Sie automatisch die Erklärbarkeit für Modelle, die in einem Warehouse eingesetzt werden können.
Neue Erklärbarkeits-Features:
Neue Visualisierungsfunktionen in
snowflake.ml.monitoring
Plot-Erklärungen in Notebooks.Unterstützung für kategorische Transformationen in Scikit-Learn-Pipelines.
Neue Modeling-Funktionen:
Unterstützung kategorischer Typen für
xgboost.DMatrix
-Eingaben in XGBoost-Modellen.
Version 1.8.3 (2025-04-28)¶
Neue Features¶
Neue Features der Modell-Registry:
Standardmäßig wird ein CUDA-Container-Image verwendet, falls verfügbar, wenn ein GPU-fähiges Modell für die Bereitstellung auf Container Runtime for ML protokolliert wird.
Die Modellversionen verfügen über eine
run_job
-Methode, die Inferenzmethoden als Snowpark Container Services-Job mit einem Knoten ausführt. Diese Methode steht für alle Modelle zur Verfügung, auch für diejenigen, die nicht in der Container Runtime für ML bereitgestellt werden.Die Zielplattform ist standardmäßig auf ein Snowflake Warehouse eingestellt, wenn Sie ein partitioniertes Modell protokollieren.
Version 1.8.2 (2025-04-15)¶
Neue Features¶
Die ML Jobs-API, mit der Sie Code auf Container Runtime für ML von Ihrem lokalen Arbeitsplatz aus ausführen können, ist in der Vorschau verfügbar. Dementsprechend ist die Dokumentation für diese API in der Snowflake ML-API-Referenz verfügbar, und Änderungen an der API werden in diesen Versionshinweisen aufgeführt. Neue Features in de rML Jobs-API erscheinen hier vielleicht erst, wenn sie öffentlich angekündigt werden, aber sie erscheinen in der API-Referenz.
Neue Features der Modell-Registry:
Sie können den Pfad zum Schreiben der Modellversionsdateien, die im Stagingbereich des Modells gespeichert sind, mit der Option
save_location
in der Methodelog_model
angeben.Bei der Protokollierung von Modellen in Container Runtime für ML werden Modellabhängigkeiten jetzt standardmäßig in
pip_requirements
aufgenommen.
Version 1.8.1 (2025-03-20)¶
Fehlerkorrekturen¶
Fehlerkorrekturen an der Modell-Registry:
Behebung des Fehlers
unsupported model type
beim Protokollieren eines scikit-learn-Modells mit einerscore_samples
-Inferenzmethode.Behebung eines Fehlers bei der Erstellung eines Inferenzdienstes für einen bestehenden angehaltenen Dienst.
Neue Features¶
Neue Features der Modell-Registry:
Das Erstellen einer Kopie einer Modellversion mit
log_model
mit nicht unterstützten Argumenten löst jetzt eine Ausnahme aus.
Version 1.8.0 (2025-03-20)¶
Verhaltensänderungen¶
Verhaltensänderungen an der Modell-Registry:
Automatisch abgeleitete Signaturen in
transformers.Pipeline
wurden geändert, um die AufgabenklasseFeatureGroupSpec
zu verwenden, einschließlich:Unterschrift für „fill-mask“-Aufgaben:
ModelSignature( inputs=[ FeatureSpec(name="inputs", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureSpec(name="inputs", dtype=DataType.STRING), ], outputs=[ FeatureGroupSpec( name="outputs", specs=[ FeatureSpec(name="sequence", dtype=DataType.STRING), FeatureSpec(name="score", dtype=DataType.DOUBLE), FeatureSpec(name="token", dtype=DataType.INT64), FeatureSpec(name="token_str", dtype=DataType.STRING), ], shape=(-1,), ), ], )
Signatur für Token-Klassifizierungsaufgaben:
ModelSignature( inputs=[ FeatureSpec(name="inputs", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[FeatureSpec(name="inputs", dtype=DataType.STRING)], outputs=[ FeatureGroupSpec( name="outputs", specs=[ FeatureSpec(name="word", dtype=DataType.STRING), FeatureSpec(name="score", dtype=DataType.DOUBLE), FeatureSpec(name="entity", dtype=DataType.STRING), FeatureSpec(name="index", dtype=DataType.INT64), FeatureSpec(name="start", dtype=DataType.INT64), FeatureSpec(name="end", dtype=DataType.INT64), ], shape=(-1,), ), ], )
Unterschrift für Aufgaben zur Beantwortung von Fragen:
ModelSignature( inputs=[ FeatureSpec(name="question", dtype=DataType.STRING), FeatureSpec(name="context", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureSpec(name="question", dtype=DataType.STRING), FeatureSpec(name="context", dtype=DataType.STRING), ], outputs=[ FeatureGroupSpec( name="answers", specs=[ FeatureSpec(name="score", dtype=DataType.DOUBLE), FeatureSpec(name="start", dtype=DataType.INT64), FeatureSpec(name="end", dtype=DataType.INT64), FeatureSpec(name="answer", dtype=DataType.STRING), ], shape=(-1,), ), ], )
Unterschrift für Aufgaben zur Beantwortung von Fragen, wenn
top_k
größer als 1 ist:ModelSignature( inputs=[ FeatureSpec(name="question", dtype=DataType.STRING), FeatureSpec(name="context", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureSpec(name="question", dtype=DataType.STRING), FeatureSpec(name="context", dtype=DataType.STRING), ], outputs=[ FeatureGroupSpec( name="answers", specs=[ FeatureSpec(name="score", dtype=DataType.DOUBLE), FeatureSpec(name="start", dtype=DataType.INT64), FeatureSpec(name="end", dtype=DataType.INT64), FeatureSpec(name="answer", dtype=DataType.STRING), ], shape=(-1,), ), ], )
Signatur für Textklassifizierungsaufgaben, wenn
top_k
None
ist:ModelSignature( inputs=[ FeatureSpec(name="text", dtype=DataType.STRING), FeatureSpec(name="text_pair", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="label", dtype=DataType.STRING), FeatureSpec(name="score", dtype=DataType.DOUBLE), ], )
ModelSignature( inputs=[ FeatureSpec(name="text", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="label", dtype=DataType.STRING), FeatureSpec(name="score", dtype=DataType.DOUBLE), ], )
Signatur für Textklassifizierungsaufgaben, wenn
top_k
nichtNone
ist:ModelSignature( inputs=[ FeatureSpec(name="text", dtype=DataType.STRING), FeatureSpec(name="text_pair", dtype=DataType.STRING), ], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureSpec(name="text", dtype=DataType.STRING), ], outputs=[ FeatureGroupSpec( name="labels", specs=[ FeatureSpec(name="label", dtype=DataType.STRING), FeatureSpec(name="score", dtype=DataType.DOUBLE), ], shape=(-1,), ), ], )
Signatur für Aufgaben zur Texterstellung:
ModelSignature( inputs=[FeatureSpec(name="inputs", dtype=DataType.STRING)], outputs=[ FeatureSpec(name="outputs", dtype=DataType.STRING), ], )
ModelSignature( inputs=[ FeatureGroupSpec( name="inputs", specs=[ FeatureSpec(name="role", dtype=DataType.STRING), FeatureSpec(name="content", dtype=DataType.STRING), ], shape=(-1,), ), ], outputs=[ FeatureGroupSpec( name="outputs", specs=[ FeatureSpec(name="generated_text", dtype=DataType.STRING), ], shape=(-1,), ) ], )
PyTorch- und TensorFlow-Modelle erwarten nun standardmäßig eine einzelne Tensor-Eingabe und -Ausgabe, wenn sie in der Modellregistrierung angemeldet werden. Um mehrere Tensoren zu verwenden (bisheriges Verhalten), setzen Sie
options={"multiple_inputs": True}
.Beispiel mit einem einzigen Tensor-Eingang:
import torch class TorchModel(torch.nn.Module): def __init__(self, n_input: int, n_hidden: int, n_out: int, dtype: torch.dtype = torch.float32) -> None: super().__init__() self.model = torch.nn.Sequential( torch.nn.Linear(n_input, n_hidden, dtype=dtype), torch.nn.ReLU(), torch.nn.Linear(n_hidden, n_out, dtype=dtype), torch.nn.Sigmoid(), ) def forward(self, tensor: torch.Tensor) -> torch.Tensor: return cast(torch.Tensor, self.model(tensor)) # Sample usage: data_x = torch.rand(size=(batch_size, n_input)) # Log model with single tensor reg.log_model( model=model, ..., sample_input_data=data_x ) # Run inference with single tensor mv.run(data_x)
Für mehrere Tensor-Eingänge oder -Ausgänge verwenden Sie:
reg.log_model( model=model, ..., sample_input_data=[data_x_1, data_x_2], options={"multiple_inputs": True} )
enable_explainability
ist jetzt standardmäßig aufFalse
eingestellt, wenn das Modell in Snowpark Container Services bereitgestellt werden kann.
Fehlerkorrekturen¶
Fehlerkorrekturen bei der Modellierung:
Behebung eines Fehlers in einigen Metriken, durch den eine nicht unterstützte Version von numpy automatisch in der gespeicherten Prozedur installiert werden konnte, was bei der Ausführung zu einem numpy-Fehler führte.
Fehlerkorrekturen an der Modell-Registry:
Behebung eines Fehlers, der zu einer falschen
Model does not have _is_inference_api
-Fehlermeldung führt, wenn ein unterstütztes Modell als Eigenschaft einesCustomModel
zugewiesen wird.Behebung eines Fehlers, bei dem die Inferenz nicht funktioniert, wenn Modelle mit mehr als 500 Eingabe-Features auf SPCS bereitgestellt werden.
Neue Features¶
Neue Features der Modell-Registry:
Unterstützung für die Verwendung eines einzelnen
torch.Tensor
,tensorflow.Tensor
undtensorflow.Variable
als Eingabe- oder Ausgabedaten.Unterstützung für
xgboost.DMatrix datatype
für XGBoost-Modelle.
Version 1.7.5 (2025-03-06)¶
snowflake-ml-python
1.7.5 bietet Unterstützung für Python 3.12.
Fehlerkorrekturen¶
Fehlerkorrekturen an der Modell-Registry:
Es wurde ein Kompatibilitätsproblem behoben, bei dem bei Verwendung von
snowflake-ml-python
1.7.0 oder höher zum Speichern einestensorflow.keras
-Modells mit keras 2.x das Modell nicht in Snowflake ausgeführt werden konnte. Dieses Problem trat auf, wennrelax_version
aufTrue
(oder Standard) eingestellt ist und eine neue Version vonsnowflake-ml-python
verfügbar ist. Wenn Sie ein betroffenes Modell protokolliert haben, können Sie es wiederherstellen, indem Sie es mitModelVerison.load
laden und es mit der neuesten Version vonsnowflake-ml-python
erneut protokollieren.Die Validierung, die verhindert, dass Daten, die keine Nicht-Null-Werte haben, an
ModelVersion.run
übergeben werden, wurde entfernt.
Neue Features¶
Neue Features der Modell-Registry:
Unterstützung für Hugging Face-Modellkonfigurationen mit automatischer Zuordnung.
Unterstützung für keras 3.x-Modelle mit Tensorflow- und Pytorch-Backends.
Neue Features zur Erklärbarkeit von Modellen:
Unterstützung für native und
snowflake-ml-python
-sklearn-Pipelines.
Version 1.7.4 (2025-01-28)¶
Wichtig
snowflake.ml.fileset.FileSet
ist veraltet und wird in einer zukünftigen Version entfernt werden. Verwenden Sie stattdessen snowflake.ml.dataset.Dataset und snowflake.ml.data.DataConnector.
Fehlerkorrekturen¶
Fehlerkorrekturen in der Registry:
Es wurde ein Problem behoben, bei dem die Pipelines von Hugging Face mit einem falschen Datentyp geladen wurden.
Es wurde ein Problem behoben, bei dem beim Ableiten einer Modellsignatur nur eine Zeile tatsächlich verwendet wurde.
Neue Features¶
Neue Cortex-Features:
Neue Option
guardrails
in der FunktionComplete
.
Version 1.7.3 (2025-01-09)¶
Abhängigkeits-Upgrades¶
fsspec
unds3fs
müssen 2024.6.1 oder höher und geringer als 2026 sein.mlflow
muss 2.16.0 oder höher und geringer als 3 sein.
Neue Features¶
Neue Cortex-Features:
Cortex-Funktionen haben jetzt „snake_case“-Namen. Zum Beispiel ist
ClassifyText
jetztclassify_text
. Die alten „CamelCase“-Namen funktionieren noch, werden aber in einem zukünftigen Release entfernt.
Neue Features der Modell-Registry:
Registry unterstützt jetzt mehr als 500.000 Features.
Das Argument
user_files
wurde zuRegistry.log_model
hinzugefügt, um Bilder oder andere Dateien mit dem Modell zu verbinden.Unterstützung für die Handhabung von Konfigurationen des Modells Hugging Face mit automatischer Zuordnung wurde hinzugefügt.
Neue Features für Daten:
Der
DataConnector.from_sql
-Konstruktor wurde hinzugefügt.
Fehlerkorrekturen¶
Fehlerkorrekturen in der Registry:
Es wurde ein Fehler behoben, der auftrat, wenn ein Nicht-Bereichsindex pandas DataFrame als Eingabe an
ModelVersion.run
übergeben wurde.Die Generierung zufälliger Modellregistrierungsnamen wurde verbessert, um Kollisionen zu vermeiden.
Es wurde ein Problem behoben, das beim Ableiten einer Signatur oder beim Ausführen einer Inferenz mit Snowpark DataFrame auftrat, wenn eine Spalte vom Typ ARRAY ist und einen Wert NULL enthält.
ModelVersion.run
akzeptiert jetzt einen vollqualifizierten Dienstnamen.Ein Fehler in
log_model
für alle scikit-learn-Modelle, die nur Daten vorverarbeiten, einschließlich der Pipeline-Modelle, die nur Daten vorverarbeiten, wurde behoben.
Fehlerbehebungen bei der Überwachung:
Ein Problem bei der Erstellung von Monitoren mit vollqualifizierten Namen wurde behoben.