Créer et proposer des fonctionnalités en ligne¶
Créez et proposez des fonctionnalités en ligne pour les workflows d’inférence de machine learning sensibles à la latence. Activez des fonctionnalités en ligne sur une vue des fonctionnalités que vous créez, ou mettez à jour une vue des fonctionnalités existante pour activer la diffusion en ligne.
Important
Vous devez disposer de la version 9.26 ou ultérieure de Snowflake et de la version 1.18.0 de snowflake-ml-python pour utiliser la mise à disposition de fonctionnalités en ligne.
La mise en disposition de fonctionnalités en ligne offre les avantages suivants :
Recherches de points à faible latence pour l’inférence en temps réel
Synchronisation automatique des données à partir de sources hors ligne
Infrastructure et maintenance entièrement gérées
Mise à l’échelle flexible pour les charges de travail exigeantes
La mise à disposition de fonctionnalités en ligne est prise en charge par les tables de fonctionnalités en ligne.
Niveau d’actualisation des données¶
Une vue des fonctionnalités avec mise à disposition de fonctionnalités en ligne synchronise automatiquement les données du magasin hors ligne.
Utilisez le paramètre target_lag pour configurer la fréquence de synchronisation des données vers votre table des fonctionnalités en ligne. Vous pouvez définir cette valeur entre 10 secondes minimum et 8 jours maximum.
Les tables de fonctionnalités en ligne sont actualisées en arrière-plan à l’aide de la valeur que vous avez spécifiée. La table des fonctionnalités en ligne est suspendue s’il y a cinq échecs d’actualisation consécutifs. Pour obtenir des informations sur le dépannage de l’échec de l’actualisation, consultez votre historique d’actualisation.
Modes d’actualisation¶
Snowflake utilise les modes d’actualisation suivants pour mettre à jour les données :
Actualisation incrémentielle : Il s’agit du mode privilégié et le plus efficace. Snowflake suit les modifications apportées aux sources et fusionne uniquement les lignes nouvelles ou mises à jour dans le magasin en ligne. Cela réduit les coûts de calcul et d’E/S.
Actualisation complète : Ce mode détruit toutes les données existantes dans la table et recharge tout à partir de la source. Il consomme plus de ressources et est utilisé lorsqu’une actualisation incrémentielle n’est pas possible.
Vous pouvez explicitement définir le mode d’actualisation sur INCREMENTAL ou FULL, ou bien le définir sur AUTO pour permettre à Snowflake de déterminer le mode d’actualisation disponible le plus efficace.
Traitement des données de séries chronologiques¶
Pour assurer la cohérence des données, vous pouvez spécifier une timestamp_col. Lorsque plusieurs lignes avec la même clé primaire sont trouvées dans la source, Snowflake n’ingère que la version avec l’horodatage le plus récent. Si vous ne spécifiez pas de colonne d’horodatage, la ligne la plus récemment traitée est prioritaire.
Fournir un accès pour créer et proposer des fonctionnalités en ligne¶
Avant de commencer à utiliser le magasin de fonctionnalités en ligne, vous devez fournir les autorisations nécessaires aux rôles concernés.
Pour fournir des autorisations, utilisez le script de contrôle d’accès décrit dans Configurer le contrôle d’accès en SQL. Après avoir exécuté le script, accordez les privilèges suivants :
Gérer et proposer des fonctionnalités en ligne à l’aide de l’API Python¶
L’exemple suivant montre comment configurer la mise à disposition de fonctionnalités en ligne lors de la création d’une nouvelle vue des fonctionnalités. Vous pouvez utiliser l’objet OnlineConfig pour spécifier les paramètres de la mise à disposition en ligne, tels que le décalage d’actualisation des données cibles.
Voici les paramètres de OnlineConfig :
Paramètre |
Type |
Description |
Par défaut |
|---|---|---|---|
enable |
Booléen, facultatif |
Spécifie si la mise à disposition de fonctionnalités en ligne doit être activée pour la vue des fonctionnalités. |
Par défaut : Faux |
target_lag |
Chaîne, facultatif |
Chaîne au format « <num> (seconds|minutes| hours|days| s|m| h|d) » spécifiant le décalage d’actualisation des données cibles. |
Par défaut : 10 secondes |
Note
refresh_freq et OnlineConfig.target_lag agissent indépendamment. Dans l’exemple ci-dessus, le décalage effectif de propagation des données cibles à partir des données sources représentées par my_df vers le magasin de données en ligne sera refresh_freq + online_config.target_lag.
Mettre à jour une vue des fonctionnalités pour activer/désactiver la mise à disposition de fonctionnalités en ligne¶
Pour les vues de fonctionnalités existantes, vous pouvez mettre à jour la configuration de la mise à disposition de fonctionnalités en ligne à l’aide de la méthode update_feature_view. Vous pouvez utiliser cette méthode pour activer la mise à disposition de fonctionnalités en ligne pour les vues de fonctionnalités existantes.
Utilisez le code suivant pour activer la mise à disposition de fonctionnalités en ligne.
Utilisez le code suivant pour désactiver la mise à disposition de fonctionnalités en ligne.
Récupérer des fonctionnalités à partir d’un stockage en ligne¶
Pour récupérer les valeurs de fonctionnalités à partir d’un stockage en ligne pour un échantillon donné, utilisez la méthode read_feature_view et transmettez la liste des noms des fonctionnalités ainsi que les clés de jointure de l’échantillon :
Suspendre/reprendre l’actualisation des données en ligne¶
Utilisez le code suivant pour suspendre temporairement l’actualisation des données.
Utilisez le code suivant pour reprendre l’actualisation des données.
Ces opérations suspendent/reprennent à la fois la vue des fonctionnalités hors ligne (table dynamique et tâche associée) et la table des fonctionnalités en ligne (si elle existe), afin de garantir un état cohérent entre tous les types de stockage.
Actualiser manuellement la vue des fonctionnalités¶
L’argument store_type spécifie s’il faut actualiser les données des fonctionnalités hors ligne (StoreType.OFFLINE) ou en ligne (StoreType.ONLINE).
Afficher l’historique d’actualisation¶
L’argument store_type spécifie s’il faut renvoyer l’historique d’actualisation du magasin hors ligne (StoreType.OFFLINE) ou en ligne (StoreType.ONLINE).
Comprendre les coûts¶
Les tables des fonctionnalités en ligne entraînent des coûts selon les modes de consommation suivants :
Calcul de l’entrepôt virtuel : Les opérations de recherche de clés et d’ingestion des données consomment des crédits d’entrepôt virtuel à des taux standard. Pour plus d’informations, voir Utilisation du crédit d’entrepôt virtuel.
Calcul des services Cloud : Nécessaire pour identifier les modifications apportées aux objets de base sous-jacents et déterminer quand des opérations d’actualisation sont nécessaires. Pour plus d’informations, voir Utilisation du crédit des services Cloud.
Stockage de tables hybrides : Coûts de stockage basés sur un tarif forfaitaire mensuel par GB. Cela coûte plus cher que le stockage Snowflake traditionnel, mais équivaut au coût de stockage des tables hybrides. Pour plus d’informations, consultez le tableau 3(b) dans la section Tableau de consommation des crédits.
Requêtes de tables hybrides : À compter du 1er mars 2026, les requêtes de tables hybrides ne sont plus facturées et le comptage a été désactivé peu après que cette modification de la tarification a pris effet.
Astuce
L’actualisation incrémentielle peut aider à réduire les coûts. Les mises à jour incrémentielles sont généralement plus rentables que l’actualisation complète, ce qui permet de réduire les coûts de calcul et d’ingestion des données.
Surveiller les coûts¶
Pour surveiller les coûts, utilisez ces vues :