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.

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_dataset et to_torch_datapipe cré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)
    
    Copy
    • 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 None dans to_torch_dataset pour compresser les dimensions de 1 pour une meilleure interopérabilité avec le DataLoader PyTorch. ::code::None est 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étrique log_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 ModelContext pour 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})
    
    Copy
  • Prise en charge de CategoricalDtype pandas pour les colonnes catégorielles.

  • La méthode log_model accepte désormais les deux paramètres signature et sample_input_data pour capturer les données d’arrière-plan à partir de l’explicabilité 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_dataset et to_torch_datapipe renvoient 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ù ExampleHelper utilisait 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.run avec 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_model lorsque 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_model via le paramètre task.

Nouvelles fonctionnalités du Feature Store :

  • FeatureView prend désormais en charge les modes d’initialisation ON_CREATE et ON_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_view accepte désormais un objet FeatureView comme 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 run des 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_params est 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 Entity

    desc

    Initialiseur FeatureView

    timestamp_col, refresh_freq, desc

    Initialiseur FeatureStore

    creation_mode

    FeatureStore.update_entity

    desc

    FeatureStore.register_feature_view

    block, overwrite

    FeatureStore.list_feature_views

    entity_name, feature_view_name

    FeatureStore.get_refresh_history

    verbose

    Feature:Store.retrieve_feature_values

    spine_timestamp_col, exclude_columns, include_feature_view_timestamp_col

    FeatureStore.generate_training_set

    save_as, spine_timestamp_col, spine_label_cols, exclude_columns, include_feature_view_timestamp_col

    FeatureStore.generate_dataset

    version, spine_timestamp_col, spine_label_cols, exclude_columns, include_feature_view_timestamp_col, desc, output_type

  • Ajout d’une nouvelle colonne warehouse à la sortie de list_feature_views.

Corrections de bogues

Correction de bogues de modélisation :

  • Correction d’un problème dans lequel SimpleImputer n’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 FeatureView et les chaînes de nom/version. Les APIs affectées incluent read_feature_view, refresh_feature_view, get_refresh_history, resume_feature_view, suspend_feature_view, et delete_feature_view.

  • Ajout d’exemples de docstring en ligne pour toutes les APIs publics.

  • Ajout d’une classe utilitaire ExampleHelper pour aider au chargement des données sources afin de simplifier les Notebooks publics.

  • Ajout de la méthode update_entity.

  • Ajout de l’argument warehouse au constructeur FeatureView pour 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
    
    Copy

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, et warehouse dans les vues de fonctionnalités « brouillon ».

Correction de bogues de modélisation :

  • Problèmes résolus avec les appels de OneHotEncoder et OrdinalEncoder avec un dictionnaire comme paramètre categories et les données dans un DataFrame pandas.

Nouvelles fonctionnalités

Les fonctions du nouveau modèle de registre :

  • Autorisation du remplacement de device_map et device lors du chargement des modèles de pipeline Hugging Face.

  • Ajout des méthodes set_alias et unset_alias pour les instances ModelVersion pour gérer les alias de version de modèle.

  • Ajout du décorateur partitioned_inference_api pour 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, et scheduling_state ont été ajoutées à la sortie de la méthode list_feature_views.

  • La méthode update_feature_view prend désormais en charge la mise à jour de la description d’une vue de fonctionnalité.

  • Nouvelles méthodes refresh_feature_view et get_refresh_history pour gérer les mises à jour des vues de fonctionnalités.

  • La nouvelle méthode generate_training_set gé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 un DeprecationWarning.

Nouvelles fonctions Modeling :

  • OneHotEncoder et OrdinalEncoder acceptent maintenant une liste de valeurs de type tableau pour l’argument categories.

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.run dans les procédures stockées.

Correction de bogues de modélisation :

  • Correction d’un problème lié au passage de catégories à OneHotEncoder et OrdinalEncoder sous 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 :

  • OneHotEncoder et OrdinalEncoder prennent désormais en charge une liste de valeurs de type tableau pour l’argument categories.

Nouvelles fonctionnalités du jeu de données :

  • Les instances DatasetVersion ont maintenant les propriétés label_cols et exclude_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_model dans une procédure stockée.

Correction de bogues de modélisation :

  • Correction rapide pour import snowflake.ml.modeling.parameters.enable_anonymous_sproc qui 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, et delete_model prennent 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_sproc pour 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_transform peut 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_version de fonctionner.

Version 1.4.0 (2024-04-08)

Changements de comportement

Modifications du comportement du registre de modèles :

  • La méthode apply n’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’option target-methods :

    log_model(..., options={"target_methods": ["apply", ...]})
    
    Copy

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_name n’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 predict et predict_log_probe où, lorsque n_jobs n’é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.SFFileSystem peut 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’argument options de log_model) est désormais True, 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=True lorsque vous appelez la méthode run du modèle.

Modifications de comportements en matière de développement de modèles :

  • La méthode fit_predict renvoie 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.SFFileSystem peuvent maintenant être sérialisées avec pickle.

Corrections de bogues

Correction des bogues du registre des modèles :

  • Correction d’un problème d’importation de log_model dans 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_samples pour 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-requirements non 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_support a renvoyé des résultats incorrects avec average="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’argument options de log_model) assouplit les dépendances des versions déclarées pour autoriser les versions mineures plus récentes lorsqu’elle est définie sur True.

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_predict dans les classes AgglomerativeClustering, DBSCAN et OPTICS.

  • Ajout de la prise en charge de la méthode fit_transform dans les classes MDS, SpectralEmbedding et TSNE.