Notes de version de Snowflake ML¶
Cet article contient les notes de version Snowflake ML, y compris les éléments suivants, le cas échéant :
Changements de comportement
Nouvelles fonctionnalités
Corrections de bogues pour les clients
Note
Ces notes n’incluent pas les modifications des fonctions qui n’ont pas fait l’objet d’une annonce publique. Ces fonctions peuvent apparaître dans le code source de Snowflake ML mais pas dans la documentation publique.
Voir Snowflake ML : machine learning de bout en bout pour la documentation.
Vérification du paquet snowflake-ml-python¶
Tous les paquets Snowflake sont signés, ce qui vous permet de vérifier leur origine. Pour vérifier le paquet snowflake.ml.python, procédez comme suit :
Installez
cosign. Cet exemple utilise l’installation Go : Installation de cosign avec Go.Téléchargez le fichier à partir d’un référentiel tel que PyPi.
Téléchargez un fichier
.sigpour cette version à partir de la page GitHub releases.Vérifiez la signature à l’aide de
cosign. Par exemple :
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
Note
Cet exemple utilise la bibliothèque et la signature de la version 1.7.0 du paquet. Utilisez les noms de fichier de la version que vous vérifiez.
Version 1.7.2 (2024-11-21)¶
Nouvelles fonctionnalités¶
Les fonctions du nouveau modèle de registre :
Le registre de modèles prend désormais en charge la création de services d’inférence de modèles asynchrone avec l’option
blockdans la méthodeModelversion.create_service. Définissez cette option surFalsepour créer le service de manière asynchrone. La valeur par défaut estTrue.
Corrections de bogues¶
Corrections de bogues d’explicabilité du modèle :
Correction d’un problème à cause duquel
explainest activé pour les pipelines scikit-learn dont la tâche est UNKNOWN, pour ensuite échouer lors de l’invocation.
Version 1.7.1 (2024-11-05)¶
Nouvelles fonctionnalités¶
Les fonctions du nouveau modèle de registre :
Les valeurs nulles sont désormais ignorées dans le dataframe utilisé pour l’inférence de la signature du modèle. Seules les valeurs non nulles sont utilisées pour inférer les signatures.
Les valeurs nulles sont désormais autorisées dans les dataframes utilisés pour la prédiction.
les types de données d’extension pandas sont désormais pris en charge dans l’inférence de la signature du modèle.
pandas
Seriespeut être utilisé dans les données d’entrée et de sortie.
Nouvelles fonctions de surveillance de modèle :
L’option
enable_monitoringest désormais disponible lorsque de la connexion d’un modèle dans le registre. Cette option permet d’accéder aux fonctions en avant-première privée de la surveillance de modèle.
Corrections de bogues¶
Correctifs de bogues dans les données :
Les exportations
snowflake.ml.datamanquantes dans la roue ont été ajoutées.
Correctifs de bogues dans les jeux de données :
Les exportations
snowflake.ml.datasetmanquantes dans la roue ont été ajoutées.
Correction des bogues du registre des modèles :
Correction d’un problème à cause duquel
tf_keras.Modeln’était pas reconnu comme un modèle keras lors de la connexion.
Version 1.7.0 (2024-10-22)¶
Changements de comportement¶
Changements de comportement généraux
Python 3.9 est désormais la version minimale requise.
Changements de comportement du connecteur de données :
to_torch_datasetetto_torch_datapipecréent maintenant une dimension de 1 pour les données scalaires. Cela permet une intégration plus transparente avec le PyTorch DataLoader, qui crée des lots en empilant les entrées. L’exemple suivant illustre la différence :ds = connector.to_torch_dataset(shuffle=False, batch_size=3)
Données d’entrée :
"col1": [10, 11, 12]Résultat précédent :
array([10., 11., 12.])avec la forme(3,)Nouveau résultat :
array([[10.], [11.], [12.]])avec la forme(3, 1)
Données d’entrée :
[[0, 100], [1, 110], [2, 200]]Résultat précédent :
array([[ 0, 100], [ 1, 110], [ 2, 200]])avec la forme(3,2)Nouveau résultat : aucun changement
Vous pouvez désormais spécifier une taille de lot de
Nonedansto_torch_datasetpour compresser les dimensions de 1 pour une meilleure interopérabilité avec le DataLoader PyTorch. ::code::Noneest la nouvelle taille de lot par défaut.
Modifications de comportements en matière de développement de modèles :
L’argument
eps(epsilon) n’est plus utilisé avec la métriquelog_loss. L’argument est toujours accepté pour des raisons de compatibilité descendante, mais sa valeur est ignorée et l’epsilon est désormais calculé par l’implémentation scikit-lean sous-jacente.
Modifications du comportement du registre de modèles :
Les intégrations d’accès externes ne sont plus nécessaires lors de la création d’un service d’inférence dans Snowflake 8.40 ou version ultérieure.
Nouvelles fonctionnalités¶
Les fonctions du nouveau modèle de registre :
Vous pouvez désormais transmettre des arguments de mots clés lors de l’instanciation de
ModelContextpour fournir un nombre variable de valeurs de contexte. Par exemple :mc = custom_model.ModelContext( config = 'local_model_dir/config.json', m1 = model1 ) class ExamplePipelineModel(custom_model.CustomModel): def __init__(self, context: custom_model.ModelContext) -> None: super().__init__(context) v = open(self.context['config']).read() self.bias = json.loads(v)['bias'] @custom_model.inference_api def predict(self, input: pd.DataFrame) -> pd.DataFrame: model_output = self.context['m1'].predict(input) return pd.DataFrame({'output': model_output + self.bias})
Prise en charge de
CategoricalDtypepandas pour les colonnes catégorielles.log_modelaccepte désormais les paramètressignatureetsample_input_datapour capturer les données d’arrière-plan de justification et de la lignée des données.
Corrections de bogues¶
Corrections de bogues du connecteur de données :
Pour les données multidimensionnelles,
to_torch_datasetetto_torch_datapiperenvoient maintenant un tableau numpy avec un type de données approprié au lieu d’une liste.
Corrections de bogues du Feature Store :
Correction d’un problème où
ExampleHelperutilisait un nom de table incomplet.Le temps d’agrégation des fonctionnalités météorologiques est passé à une heure au lieu d’un jour.
Corrections de bogues d’explicabilité du modèle :
Correction d’un problème d’explicabilité pour les modèles XGBoost en utilisant une nouvelle version de bibliothèque SHAP.
Version 1.6.4 (2024-10-17)¶
Corrections de bogues¶
Correction des bogues du registre des modèles :
Résolution d’un problème lors de l’utilisation de
ModelVersion.runavec Model Serving (inférence sur SPCS).
Version 1.6.3 (2024-10-07)¶
Changements de comportement¶
Modifications du comportement du registre de modèles :
Cette version ne contient plus l’API Registre de modèles en avant-première. Utilisez l’API dans
snowflake.ml.model_registryà la place.
Corrections de bogues¶
Correction des bogues du registre des modèles :
Correction des normalisations inattendues de noms de paquets pour ceux qui ne suivent pas les conventions PEP-508 lors de la journalisation d’un modèle.
Correction d’une erreur « URI distante non valide » lors de la connexion de modèles MLflow.
Correction d’appels imbriqués à
ModelVersion.run.Correction de l’échec de
log_modellorsque le numéro de version d’un paquet local contient des éléments autres que la version de base.
Nouvelles fonctionnalités¶
Les fonctions du nouveau modèle de registre :
Vous pouvez maintenant définir un type de tâche pour le modèle dans
log_modelvia le paramètretask.
Nouvelles fonctionnalités du Feature Store :
FeatureViewprend désormais en charge les modes d’initialisationON_CREATEetON_SCHEDULE.
Version 1.6.2 (2024-09-04)¶
Corrections de bogues¶
Correction d’un bogue impliquant des noms non valides transmis alors que des noms complets étaient requis. Ceux-ci génèrent désormais correctement une exception.
Correction de bogues de modélisation :
Journalisation correcte des modèles créés avec XGBoost version 2 et supérieure.
Corrections de bogues d’explicabilité du modèle :
Solutions de contournement et meilleure gestion des erreurs pour XGBoost version 2.1.0 et supérieure.
Gestion correcte des modèles de classification XGBoost multiclasse
Nouvelles fonctionnalités¶
Nouvelles fonctionnalités du Feature Store :
La méthode
update_feature_viewaccepte désormais un objetFeatureViewcomme alternative au nom et à la version.
Version 1.6.1 (2024-08-13)¶
Corrections de bogues¶
Corrections de bogues du Feature Store :
La taille des métadonnées n’est plus limitée lors de la génération d’un ensemble de données.
Correction des bogues du registre des modèles :
Correction d’un message d’erreur dans la méthode
rundes versions de modèle lorsqu’un nom de fonction n’est pas donné et que le modèle a plusieurs méthodes cibles.
Nouvelles fonctionnalités¶
Nouvelles fonctions Modeling :
La méthode
set_paramsest désormais disponible pour définir les paramètres de l’estimateur scikit-learn sous-jacent, si le modèle ML Snowpark a été monté.
Les fonctions du nouveau modèle de registre :
Prise en charge de l’explicabilité du modèle dans les modèles scikit-learn XGBoost, LightGBM, CatBoost pris en charge par la bibliothèque
shap.
Version 1.6.0 (2024-07-29)¶
Changements de comportement¶
Changements du comportement du magasin de fonctionnalités :
De nombreux arguments positionnels sont désormais des arguments de mots-clés. La table suivante répertorie les arguments affectés pour chaque méthode.
Méthode
Arguments
Initialiseur
EntitydescInitialiseur
FeatureViewtimestamp_col,refresh_freq,descInitialiseur
FeatureStorecreation_modeFeatureStore.update_entitydescFeatureStore.register_feature_viewblock,overwriteFeatureStore.list_feature_viewsentity_name,feature_view_nameFeatureStore.get_refresh_historyverboseFeature:Store.retrieve_feature_valuesspine_timestamp_col,exclude_columns,include_feature_view_timestamp_colFeatureStore.generate_training_setsave_as,spine_timestamp_col,spine_label_cols,exclude_columns,include_feature_view_timestamp_colFeatureStore.generate_datasetversion,spine_timestamp_col,spine_label_cols,exclude_columns,include_feature_view_timestamp_col,desc,output_typeAjout d’une nouvelle colonne
warehouseà la sortie delist_feature_views.
Corrections de bogues¶
Correction de bogues de modélisation :
Correction d’un problème dans lequel
SimpleImputern’a pas pu imputer de colonnes entières avec des valeurs entières.
Correction des bogues du registre des modèles :
Correction d’un problème lors de la fourniture d’un Dataframe pandas basé sur un index non nul
ModelVersion.run.
Nouvelles fonctionnalités¶
Nouvelles fonctionnalités du Feature Store :
Ajout de surcharges à certaines méthodes pour accepter à la fois une
FeatureViewet les chaînes de nom/version. Les APIs affectées incluentread_feature_view,refresh_feature_view,get_refresh_history,resume_feature_view,suspend_feature_view, etdelete_feature_view.Ajout d’exemples de docstring en ligne pour toutes les APIs publics.
Ajout d’une classe utilitaire
ExampleHelperpour aider au chargement des données sources afin de simplifier les Notebooks publics.Ajout de la méthode
update_entity.Ajout de l’argument
warehouseau constructeurFeatureViewpour remplacer l’entrepôt par défaut.
Les fonctions du nouveau modèle de registre :
Ajout d’une option permettant l’explicabilité lors de l’inscription de modèles XGBoost, LightGBM et les Catboost.
Ajout de la prise en charge de la journalisation d’un modèle à partir d’un objet
ModelVersion.
Nouvelles fonctions de modélisation :
Vous pouvez désactiver la limite 10GB de taille des données d’entraînement dans l’optimisation des hyperparamètres distribués en exécutant :
from snowflake.ml.modeling._internal.snowpark_implementations import ( distributed_hpo_trainer, ) distributed_hpo_trainer.ENABLE_EFFICIENT_MEMORY_USAGE = False
Version 1.5.4 (2024-07-11)¶
Corrections de bogues¶
Correction des bogues du registre des modèles :
Correction du problème « 401 non autorisé » lors du déploiement d’un modèle sur Snowpark Container Services.
Corrections de bogues du Feature Store :
Certaines exceptions dans les paramètres de propriété ont été rétrogradées au rang d’avertissements, vous permettant de modifier
desc,refresh_freq, etwarehousedans les vues de fonctionnalités « brouillon ».
Correction de bogues de modélisation :
Problèmes résolus avec les appels de
OneHotEncoderetOrdinalEncoderavec un dictionnaire comme paramètrecategorieset les données dans un DataFrame pandas.
Nouvelles fonctionnalités¶
Les fonctions du nouveau modèle de registre :
Autorisation du remplacement de
device_mapetdevicelors du chargement des modèles de pipeline Hugging Face.Ajout des méthodes
set_aliasetunset_aliaspour les instancesModelVersionpour gérer les alias de version de modèle.Ajout du décorateur
partitioned_inference_apipour créer des méthodes d’inférence partitionnées dans les modèles.
Nouvelles fonctionnalités du Feature Store :
Les colonnes
refresh_freq,refresh_mode, etscheduling_stateont été ajoutées à la sortie de la méthodelist_feature_views.La méthode
update_feature_viewprend désormais en charge la mise à jour de la description d’une vue de fonctionnalité.Nouvelles méthodes
refresh_feature_viewetget_refresh_historypour gérer les mises à jour des vues de fonctionnalités.La nouvelle méthode
generate_training_setgénère des instantanés de fonctionnalités basés sur des tables.generate_dataset(..., output_type="table")est obsolète et génère unDeprecationWarning.
Nouvelles fonctions Modeling :
OneHotEncoderetOrdinalEncoderacceptent maintenant une liste de valeurs de type tableau pour l’argumentcategories.
Version 1.5.3 (2024-06-17)¶
Corrections de bogues¶
Correction des bogues du registre des modèles :
Correction d’un problème entraînant des résultats incorrects lors de l’utilisation d’une DataFrame pandas contenant plus de 100 000 lignes comme entrée de la méthode
ModelVersion.rundans les procédures stockées.
Correction de bogues de modélisation :
Correction d’un problème lié au passage de catégories à
OneHotEncoderetOrdinalEncodersous forme de dictionnaire ou de DataFrame pandas.
Nouvelles fonctionnalités¶
Les fonctions du nouveau modèle de registre :
Le registre des modèles prend désormais en charge les colonnes d’horodatage (TIMESTAMP_NTZ) dans les données d’entrée et de sortie.
Nouvelles fonctions de modélisation :
OneHotEncoderetOrdinalEncoderprennent désormais en charge une liste de valeurs de type tableau pour l’argumentcategories.
Nouvelles fonctionnalités du jeu de données :
Les instances
DatasetVersionont maintenant les propriétéslabel_colsetexclude_cols.
Version 1.5.2 (2024-06-10)¶
Corrections de bogues¶
Correction des bogues du registre des modèles :
Correction d’un problème qui empêchait les appels à
log_modeldans une procédure stockée.
Correction de bogues de modélisation :
Correction rapide pour
import snowflake.ml.modeling.parameters.enable_anonymous_sprocqui ne fonctionnait pas en raison d’une erreur de dépendance de paquet.
Version 1.5.1 (2024-05-22)¶
Nouvelles fonctionnalités¶
Les fonctions du nouveau modèle de registre :
log_model,get_model, etdelete_modelprennent désormais en charge les noms pleinement qualifiés.
Nouvelles fonctions de modélisation :
Vous pouvez désormais utiliser une procédure stockée anonyme pendant l’ajustement, de sorte que la modélisation ne nécessite pas de privilèges pour opérer sur le schéma du registre. Appelez
import snowflake.ml.modeling.parameters.enable_anonymous_sprocpour activer cette fonction.
Corrections de bogues¶
Correction des bogues du registre des modèles :
Correction d’un problème de chargement des anciens modèles.
Version 1.5.0 (2024-05-01)¶
Changements de comportement¶
Modifications du comportement du registre de modèles :
La méthode
fit_transformpeut désormais renvoyer soit un DataFrame Snowpark, soit un DataFrame pandas, correspondant au type de DataFrame transmis à la méthode.
Nouvelles fonctionnalités¶
Les fonctions du nouveau modèle de registre :
Ajout de la prise en charge de l’exportation de modèles à partir du registre (
ModelVersion.export).Ajout de la prise en charge du chargement de l’objet de modèle sous-jacent (
ModelVersion.load).Ajout de la prise en charge pour renommer les modèles (
Model.rename).
Corrections de bogues¶
Correction des bogues du registre des modèles :
Correction de l’erreur « paramètre non valide
SHOW_MODEL_DETAILS_IN_SHOW_VERSIONS_IN_MODEL».
Version 1.4.1 (2024-04-18)¶
Nouvelles fonctionnalités¶
Les fonctions du nouveau modèle de registre :
Ajout de la prise en charge des modèles catboost (
catboost.CatBoostClassifier,catboost.CatBoostRegressor).Ajout de la prise en charge des modèles lightgbm (
lightgbm.Booster,lightgbm.LightGBMClassifier,lightgbm.LightGBMRegressor).
Corrections de bogues¶
Correction des bogues du registre des modèles :
Correction d’un bogue qui empêchait l’option
relax_versionde fonctionner.
Version 1.4.0 (2024-04-08)¶
Changements de comportement¶
Modifications du comportement du registre de modèles :
La méthode
applyn’est plus incluse par défaut comme méthode cible lors de l’enregistrement d’un modèle XGBoost. Si vous souhaitez que cette méthode soit disponible dans les modèles enregistrés, incluez-la manuellement dans l’optiontarget-methods:log_model(..., options={"target_methods": ["apply", ...]})
Nouvelles fonctionnalités¶
Les fonctions du nouveau modèle de registre :
Le registre prend désormais en charge l’enregistrement des modèles de transformateurs de phrases (
sentence_transformers.SentenceTransformer).L’argument
version_namen’est plus requis lors de l’enregistrement d’un modèle. Un ID aléatoire lisible par l’homme est généré si aucun n’est fourni.
Corrections de bogues¶
Correction des bogues du registre des modèles :
Correction d’un problème où, lorsque plusieurs modèles sont appelés dans la même requête, les modèles situés après le premier renvoyaient des résultats incorrects. Cette correction est appliquée lors de l’enregistrement des modèles et ne bénéficie pas aux modèles existants ; vous devez enregistrer à nouveau vos modèles pour corriger ce comportement.
Correction de bogues de modélisation :
Correction d’un bogue dans l’enregistrement d’un modèle où seules les méthodes mentionnées dans
save_modelétaient ajoutées à la signature du modèle pour les modèles Snowpark ML.Correction d’un bogue dans les méthodes d’inférence par lots telles que
predictetpredict_log_probeoù, lorsquen_jobsn’était pas 1, les méthodes n’étaient pas exécutées.Correction d’un bogue dans les méthodes d’inférence par lots qui ne pouvaient pas inférer les types de données lorsque la première ligne de données contenait NULL.
Les noms des colonnes de sortie de l’optimisation des hyperparamètres distribués correspondent désormais correctement à l’identificateur Snowflake.
Assouplissement des versions des dépendances des méthodes d’optimisation des hyperparamètres distribués ; celles-ci étaient trop strictes et provoquaient l’échec de ces méthodes.
scikit-learn est désormais listé comme une dépendance du paquet LightGBM.
Version 1.3.1 (2024-03-21)¶
Nouvelles fonctionnalités¶
Mises à jour FileSet/FileSystem :
snowflake.ml.fileset.sfcfs.SFFileSystempeut désormais être utilisé dans des UDFs et dans des procédures stockées.
Version 1.3.0 (2024-03-12)¶
Changements de comportement¶
Modifications du comportement du registre de modèles :
Comme annoncé précédemment, la valeur par défaut de l’option
relax_version(dans l’argumentoptionsdelog_model) est désormaisTrue, ce qui permet un déploiement plus fiable dans la plupart des cas en autorisant les versions de dépendances disponibles dans Snowflake.Lors de l’exécution des méthodes de modélisation, la validation des entrées basée sur la plage de valeurs (qui empêche les entrées de déborder) est désormais facultative. Cela devrait améliorer les performances et ne devrait pas poser de problèmes pour la plupart des types de modèles. Pour activer la validation, transmettez l’argument nommé
strict_input_validation=Truelorsque vous appelez la méthoderundu modèle.
Modifications de comportements en matière de développement de modèles :
La méthode
fit_predictrenvoie désormais un DataFrame pandas ou Snowpark, selon le type des données d’entrée, et est disponible dans toutes les classes où elle est disponible dans la classe scikit-learn, xgboost ou lightgbm sous-jacente.
Nouvelles fonctions et mises à jour¶
Mises à jour FileSet/FileSystem :
Les instances de
snowflake.ml.fileset.sfcfs.SFFileSystempeuvent maintenant être sérialisées avecpickle.
Corrections de bogues¶
Correction des bogues du registre des modèles :
Correction d’un problème d’importation de
log_modeldans certaines circonstances.Correction d’un message d’erreur incorrect lors de la validation de l’entrée DataFrame Snowpark avec une fonction de tableau.
Correction des bogues liés au développement du modèle :
Relaxez les versions des paquets pour toutes les méthodes d’inférence lorsque la version installée d’une dépendance n’est pas disponible dans le canal conda de Snowflake.
Version 1.2.3 (2024-02-26)¶
Nouvelles fonctions et mises à jour¶
Mises à jour pour le développement de modèles :
Toutes les classes de modélisation comprennent désormais une méthode
score_samplespour calculer la log-vraisemblance des échantillons donnés.
Mises à jour du registre des modèles :
Les fonctions de type décimal sont automatiquement converties (avec un avertissement) en DOUBLE ou FLOAT au lieu de produire une erreur.
Amélioration du message d’erreur pour l’option
pip-requirementsnon prise en charge actuellement.Vous pouvez désormais supprimer une version d’un modèle.
Corrections de bogues¶
Correctifs pour le développement de modèles :
precision_recall_fscore_supporta renvoyé des résultats incorrects avecaverage="samples".
Correction du registre des modèles :
Les descriptions, les modèles et les balises n’ont pas été récupérés correctement dans les registres nouvellement créés sous l’API de registre de modèle d’avant-première privée en raison d’un récent changement de comportement Snowflake.
Version 1.2.2 (2024-02-13)¶
Nouvelles fonctions et mises à jour¶
Mises à jour du registre des modèles :
Vous pouvez maintenant spécifier des intégrations d’accès externes lors du déploiement d’un modèle vers Snowpark Container Services en utilisant l’API de registre d’avant-première privée, ce qui permet aux modèles d’accéder à Internet pour récupérer des dépendances pendant le déploiement. Les points de terminaison suivants sont nécessaires pour tous les déploiements :
docker.com:80
docker.com:443
anaconda.com:80
anaconda.com:443
anaconda.org:80
anaconda.org:443
pypi.org:80
pypi.org:443
Pour les modèles dérivés de
HuggingFacePipeLineModel, les points de terminaison suivants sont requis.huggingface.com:80
huggingface.com:443
huggingface.co:80
huggingface.co:443
Version 1.2.1 (2024-01-25)¶
Nouvelles fonctions et mises à jour¶
Mises à jour pour le développement de modèles :
Déduire le type de données de colonne pour les transformateurs lorsque cela est possible.
Mises à jour du registre des modèles :
L’option
relax_version(dans l’argumentoptionsdelog_model) assouplit les dépendances des versions déclarées pour autoriser les versions mineures plus récentes lorsqu’elle est définie surTrue.
Version 1.2.0 (2024-01-12)¶
Nouvelles fonctions et mises à jour¶
Publication en avant-première publique du registre des modèles. Voir Registre des modèles de Snowflake. La version précédente de l’avant-première privée du registre des modèles a été dépréciée, mais continuera d’être prise en charge, car elle inclut des fonctionnalités qui ne sont pas encore disponibles dans la version de l’avant-première publique.
Mises à jour pour le développement de modèles :
Ajout de la prise en charge de la méthode
fit_predictdans les classes AgglomerativeClustering, DBSCAN et OPTICS.Ajout de la prise en charge de la méthode
fit_transformdans les classes MDS, SpectralEmbedding et TSNE.