Accélérez le développement du ML à l’aide de SageMaker Feature Store et du compactage du magasin hors ligne Apache Iceberg PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Accélérez le développement ML à l'aide du magasin de fonctionnalités SageMaker et du compactage du magasin hors ligne Apache Iceberg

Aujourd'hui, les entreprises établissent des magasins de fonctionnalités pour fournir un référentiel central permettant de faire évoluer le développement de ML dans les unités commerciales et les équipes de science des données. À mesure que les données d'entités augmentent en taille et en complexité, les scientifiques des données doivent être en mesure d'interroger efficacement ces magasins d'entités pour extraire des ensembles de données à des fins d'expérimentation, de formation de modèles et de notation par lots.

Magasin de fonctionnalités Amazon SageMaker est une solution de gestion des fonctionnalités spécialement conçue qui aide les data scientists et les ingénieurs ML à stocker, découvrir et partager en toute sécurité les données conservées utilisées dans les flux de travail de formation et de prédiction. SageMaker Feature Store prend désormais en charge Iceberg Apache comme format de table pour stocker les caractéristiques. Cela accélère le développement du modèle en permettant des performances de requête plus rapides lors de l'extraction des ensembles de données de formation ML, en tirant parti du compactage des tables Iceberg. En fonction de la conception de vos groupes de fonctionnalités et de leur échelle, vous pouvez bénéficier d'améliorations des performances des requêtes d'entraînement de 10 à 100 fois en utilisant cette nouvelle fonctionnalité.

À la fin de cet article, vous saurez comment créer des groupes de fonctionnalités à l'aide du format Iceberg, exécuter les procédures de gestion des tables d'Iceberg à l'aide de Amazone Athéna, et planifiez ces tâches pour qu'elles s'exécutent de manière autonome. Si vous êtes un utilisateur de Spark, vous apprendrez également à exécuter les mêmes procédures à l'aide de Spark et à les incorporer dans votre propre environnement et automatisation Spark.

Magasin de fonctionnalités SageMaker et Apache Iceberg

Magasin de fonctionnalités Amazon SageMaker est un magasin centralisé pour les fonctionnalités et les métadonnées associées, permettant aux fonctionnalités d'être facilement découvertes et réutilisées par les équipes de data scientists travaillant sur différents projets ou modèles ML.

SageMaker Feature Store se compose d'un mode en ligne et d'un mode hors ligne pour la gestion des fonctionnalités. La boutique en ligne est utilisée pour les cas d'utilisation d'inférence en temps réel à faible latence. Le magasin hors ligne est principalement utilisé pour les prédictions par lots et la formation de modèles. Le magasin hors ligne est un magasin d'ajout uniquement et peut être utilisé pour stocker et accéder aux données de fonctionnalités historiques. Avec le magasin hors ligne, les utilisateurs peuvent stocker et servir des fonctionnalités pour l'exploration et la notation par lots et extraire des ensembles de données corrects à un moment donné pour la formation de modèles.

Les données du magasin hors ligne sont stockées dans un compartiment Amazon Simple Storage Service (Amazon S3) de votre compte AWS. SageMaker Feature Store crée automatiquement un catalogue de données AWS Glue lors de la création du groupe de fonctionnalités. Les clients peuvent également accéder aux données de magasin hors ligne à l'aide d'un environnement d'exécution Spark et effectuer un traitement de données volumineuses pour l'analyse des fonctionnalités ML et les cas d'utilisation de l'ingénierie des fonctionnalités.

Les formats de tableau permettent d'abstraire les fichiers de données sous forme de tableau. Au fil des ans, de nombreux formats de table ont émergé pour prendre en charge les cas d'utilisation de transaction, de gouvernance et de catalogue ACID. Iceberg Apache est un format de tableau ouvert pour les très grands ensembles de données analytiques. Il gère de grandes collections de fichiers sous forme de tables et prend en charge les opérations de lac de données analytiques modernes telles que les requêtes d'insertion, de mise à jour, de suppression et de voyage dans le temps au niveau de l'enregistrement. Iceberg suit les fichiers de données individuels dans une table plutôt que dans des répertoires. Cela permet aux rédacteurs de créer des fichiers de données sur place (les fichiers ne sont ni déplacés ni modifiés) et d'ajouter uniquement des fichiers à la table dans une validation explicite. L'état de la table est conservé dans les fichiers de métadonnées. Toutes les modifications apportées à l'état de la table créent une nouvelle version du fichier de métadonnées qui remplace de manière atomique les anciennes métadonnées. Le fichier de métadonnées de table suit le schéma de table, la configuration de partitionnement et d'autres propriétés.

Iceberg a des intégrations avec les services AWS. Par exemple, vous pouvez utiliser le Colle AWS Data Catalog en tant que metastore pour les tables Iceberg, et Athena prend en charge les requêtes de lecture, de voyage dans le temps, d'écriture et DDL pour les tables Apache Iceberg qui utilisent le format Apache Parquet pour les données et le catalogue AWS Glue pour leur metastore.

Avec SageMaker Feature Store, vous pouvez désormais créer des groupes de fonctionnalités avec le format de table Iceberg comme alternative au format Glue standard par défaut. Ainsi, les clients peuvent tirer parti du nouveau format de tableau pour utiliser les fonctionnalités de compactage de fichiers et d'élagage des données d'Iceberg afin de répondre à leurs besoins d'utilisation et d'optimisation. Iceberg permet également aux clients d'effectuer des suppressions, des requêtes de voyage dans le temps, des transactions à forte simultanéité et des requêtes plus performantes.

En combinant Iceberg en tant que format de table et des opérations de maintenance de table telles que le compactage, les clients obtiennent des performances de requête plus rapides lorsqu'ils travaillent avec des groupes de fonctionnalités hors ligne à grande échelle, ce qui leur permet de créer plus rapidement des ensembles de données de formation ML.

Le diagramme suivant montre la structure du magasin hors ligne en utilisant Iceberg comme format de tableau.

Dans les sections suivantes, vous apprendrez à créer des groupes de fonctionnalités à l'aide du format Iceberg, à exécuter les procédures de gestion de table d'Iceberg à l'aide d'AWS Athena et à utiliser les services AWS pour planifier l'exécution de ces tâches à la demande ou selon un calendrier. Si vous êtes un utilisateur de Spark, vous apprendrez également à exécuter les mêmes procédures à l'aide de Spark.

Pour obtenir des instructions étape par étape, nous fournissons également un exemple de cahier, qui peut être trouvé dans GitHub. Dans cet article, nous soulignerons les parties les plus importantes.

Création de groupes de fonctionnalités à l'aide du format de table Iceberg

Vous devez d'abord sélectionner Iceberg comme format de tableau lors de la création de nouveaux groupes de fonctionnalités. Un nouveau paramètre facultatif TableFormat peut être défini de manière interactive à l'aide d'Amazon SageMaker Studio ou via du code à l'aide de l'API ou du SDK. Ce paramètre accepte les valeurs ICEBERG or GLUE (pour le format AWS Glue actuel). L'extrait de code suivant vous montre comment créer un groupe de fonctionnalités à l'aide du format Iceberg et FeatureGroup.create API du SDK SageMaker.

orders_feature_group_iceberg.create(
s3_uri=f"s3://{s3_bucket_name}/{prefix}",
record_identifier_name=record_identifier_feature_name,
event_time_feature_name=event_time_feature_name,
role_arn=role,
enable_online_store=True,
table_format=TableFormatEnum.ICEBERG
)

La table sera créée et enregistrée automatiquement dans le catalogue de données AWS Glue.

Maintenant que la orders_feature_group_iceberg est créé, vous pouvez ingérer des fonctionnalités à l'aide du pipeline d'ingestion de votre choix. Dans cet exemple, nous ingérons des enregistrements à l'aide de FeatureGroup.ingest() API, qui ingère des enregistrements à partir d'un Pandas DataFrame. Vous pouvez également utiliser le FeatureGroup().put_record API pour ingérer des enregistrements individuels ou pour gérer des sources de streaming. Les utilisateurs de Spark peuvent également ingérer des dataframes Spark à l'aide de notre Connecteur d'allumage.

orders_fg = FeatureGroup(name=orders_feature_group_iceberg_name,
sagemaker_session=feature_store_session)
orders_fg.ingest(data_frame=order_data, wait=True)

Vous pouvez vérifier que les enregistrements ont été ingérés avec succès en exécutant une requête sur le magasin de fonctionnalités hors ligne. Vous pouvez également accéder à l'emplacement S3 et voir la nouvelle structure de dossiers.

Accélérez le développement du ML à l’aide de SageMaker Feature Store et du compactage du magasin hors ligne Apache Iceberg PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Exécution des procédures de gestion des tables Iceberg

Amazone Athéna est un moteur de requête SQL sans serveur qui prend en charge nativement les procédures de gestion Iceberg. Dans cette section, vous utiliserez Athena pour compacter manuellement le groupe de fonctionnalités hors ligne que vous avez créé. Notez que vous devrez utiliser la version 3 du moteur Athena. Pour cela, vous pouvez créer un nouveau groupe de travail ou configurer un groupe de travail existant et sélectionner la version 3 du moteur Athena recommandée. Pour plus d'informations et des instructions sur la modification de la version de votre moteur Athena, reportez-vous à Modification des versions du moteur Athena.

Au fur et à mesure que les données s'accumulent dans une table Iceberg, les requêtes peuvent progressivement devenir moins efficaces en raison du temps de traitement accru requis pour ouvrir des fichiers supplémentaires. Le compactage optimise la disposition structurelle de la table sans modifier le contenu de la table.

Pour effectuer le compactage, vous utilisez le OPTIMIZE table REWRITE DATA commande de maintenance de la table de compactage à Athena. La syntaxe suivante montre comment optimiser la mise en page des données d'un groupe d'entités stockées à l'aide du format de table Iceberg. Le sagemaker_featurestore représente le nom de la base de données SageMaker Feature Store, et orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334 est le nom de notre table de groupe de fonctionnalités.

OPTIMIZE sagemaker_featurestore.orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334 REWRITE DATA USING BIN_PACK

Après avoir exécuté la commande d'optimisation, vous utilisez le VACUUM procédure, qui effectue l'expiration de l'instantané et supprime les fichiers orphelins. Ces actions réduisent la taille des métadonnées et suppriment les fichiers qui ne sont pas dans l'état actuel de la table et qui sont également antérieurs à la période de conservation spécifiée pour la table.

VACUUM sagemaker_featurestore.orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334

Notez que les propriétés de la table sont configurables à l'aide d'Athena ALTER TABLE. Pour un exemple de la façon de procéder, consultez le Documentation Athéna. Pour le VIDE, vacuum_min_snapshots_to_keep et les vacuum_max_snapshot_age_seconds peut être utilisé pour configurer les paramètres d'élagage des instantanés.

Examinons l'impact sur les performances de l'exécution du compactage sur un exemple de table de groupe de fonctionnalités. À des fins de test, nous avons intégré les mêmes enregistrements de fonctionnalités de commandes dans deux groupes de fonctionnalités, orders-feature-group-iceberg-pre-comp-02-11-03-06-1669979003 et les orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334, à l'aide d'une tâche de traitement SageMaker parallélisée avec Scikit-Learn, qui génère 49,908,135 3 106.5 objets stockés dans Amazon SXNUMX et une taille totale de XNUMX Gio.

Nous exécutons une requête pour sélectionner le dernier instantané sans doublons et sans enregistrements supprimés sur le groupe de fonctionnalités orders-feature-group-iceberg-pre-comp-02-11-03-06-1669979003. Avant le compactage, la requête prenait 1h27.

Accélérez le développement du ML à l’aide de SageMaker Feature Store et du compactage du magasin hors ligne Apache Iceberg PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Nous exécutons ensuite le compactage sur orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334 à l'aide de la requête Athena OPTIMIZE, qui a compacté la table des groupes de fonctionnalités à 109,851 3 objets dans Amazon S2.5 et une taille totale de 1 Gio. Si nous exécutons ensuite la même requête après compactage, son temps d'exécution a diminué à 13min XNUMXsec.

Accélérez le développement du ML à l’aide de SageMaker Feature Store et du compactage du magasin hors ligne Apache Iceberg PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Avec le compactage des fichiers Iceberg, le temps d'exécution des requêtes s'est considérablement amélioré. Pour la même requête, le temps d'exécution est passé de 1h 27min à 1min 13sec, soit 71 fois plus rapide.

Planification du compactage des icebergs avec les services AWS

Dans cette section, vous apprendrez à automatiser les procédures de gestion des tables pour compacter votre magasin de fonctionnalités hors ligne. Le schéma suivant illustre l'architecture de création de groupes de fonctionnalités au format de table Iceberg et une solution de gestion de table entièrement automatisée, qui inclut des opérations de compactage et de nettoyage de fichiers.

Accélérez le développement du ML à l’aide de SageMaker Feature Store et du compactage du magasin hors ligne Apache Iceberg PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

À un niveau élevé, vous créez un groupe de fonctionnalités à l'aide du format de table Iceberg et ingérez des enregistrements dans le magasin de fonctionnalités en ligne. Les valeurs des fonctionnalités sont automatiquement répliquées du magasin en ligne vers le magasin hors ligne historique. Athena est utilisé pour exécuter les procédures de gestion Iceberg. Pour planifier les procédures, vous configurez un Colle AWS tâche à l'aide d'un script shell Python et créez une planification de tâche AWS Glue.

Configuration de la tâche AWS Glue

Vous utilisez une tâche AWS Glue pour exécuter les opérations de maintenance de la table Iceberg selon un calendrier. Tout d'abord, vous devez créer un rôle IAM pour qu'AWS Glue dispose des autorisations d'accès à Amazon Athena, Amazon S3 et CloudWatch.

Ensuite, vous devez créer un script Python pour exécuter les procédures Iceberg. Vous pouvez trouver le exemple de script dans GitHub. Le script exécutera la requête OPTIMIZE en utilisant boto3.

optimize_sql = f"optimize {database}.{table} rewrite data using bin_pack"

Le script a été paramétré à l'aide d'AWS Glue getResolvedOptions(args, options) fonction utilitaire qui vous donne accès aux arguments transmis à votre script lorsque vous exécutez une tâche. Dans cet exemple, la région AWS, la base de données et la table Iceberg pour votre groupe de fonctionnalités, le groupe de travail Athena et le dossier de résultats de l'emplacement de sortie Athena peuvent être transmis en tant que paramètres à la tâche, ce qui rend ce script réutilisable dans votre environnement.

Enfin, vous créez la tâche AWS Glue réelle pour exécuter le script en tant que shell dans AWS Glue.

  • Accédez à la console AWS Glue.
  • Choisissez le Emplois sous AWS Glue Studio.
  • Sélectionnez Éditeur de scripts Python Shell.
  • Selectionnez Télécharger et modifier un script existantCliquez sur Création.
  • La Détails du poste Le bouton vous permet de configurer la tâche AWS Glue. Vous devez sélectionner le rôle IAM que vous avez créé précédemment. Sélectionner Python 3.9 ou la dernière version Python disponible.
  • Dans le même onglet, vous pouvez également définir un certain nombre d'autres options de configuration, telles que Nombre de tentatives or Délai d'expiration de la tâche. En Propriétés avancées, vous pouvez ajouter des paramètres de travail pour exécuter le script, comme illustré dans l'exemple de capture d'écran ci-dessous.
  • Cliquez Épargnez.

Accélérez le développement du ML à l’aide de SageMaker Feature Store et du compactage du magasin hors ligne Apache Iceberg PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Dans le Horaires , vous pouvez définir le calendrier d'exécution des procédures de maintenance du magasin de fonctionnalités. Par exemple, la capture d'écran suivante vous montre comment exécuter la tâche toutes les 6 heures.

Accélérez le développement du ML à l’aide de SageMaker Feature Store et du compactage du magasin hors ligne Apache Iceberg PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Vous pouvez surveiller les exécutions de travaux pour comprendre les métriques d'exécution telles que l'état d'achèvement, la durée et l'heure de début. Vous pouvez également consulter les journaux CloudWatch pour la tâche AWS Glue afin de vérifier que les procédures s'exécutent correctement.

Accélérez le développement du ML à l’aide de SageMaker Feature Store et du compactage du magasin hors ligne Apache Iceberg PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Exécuter des tâches de gestion de table Iceberg avec Spark

Les clients peuvent également utiliser Spark pour gérer les travaux de compactage et les méthodes de maintenance. Pour plus de détails sur les procédures Spark, consultez le Documentation Spark.

Vous devez d'abord configurer certaines des propriétés communes.

%%configure -f
{
  "conf": {
    "spark.sql.catalog.smfs": "org.apache.iceberg.spark.SparkCatalog",
    "spark.sql.catalog.smfs.catalog-impl": "org.apache.iceberg.aws.glue.GlueCatalog",
    "spark.sql.catalog.smfs.warehouse": "",
    "spark.sql.extensions":"org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
    "spark.sql.catalog.smfs.glue.skip-name-validation": "true"
  }
}

Le code suivant peut être utilisé pour optimiser les groupes de fonctionnalités via Spark.

spark.sql(f"""CALL smfs.system.rewrite_data_files(table => '{DATABASE}.`{ICEBERG_TABLE}`')""")

Vous pouvez ensuite exécuter les deux procédures de maintenance de table suivantes pour supprimer les anciens instantanés et les fichiers orphelins qui ne sont plus nécessaires.

spark.sql(f"""CALL smfs.system.expire_snapshots(table => '{DATABASE}.`{ICEBERG_TABLE}`', older_than => TIMESTAMP '{one_day_ago}', retain_last => 1)""")
spark.sql(f"""CALL smfs.system.remove_orphan_files(table => '{DATABASE}.`{ICEBERG_TABLE}`')""")

Vous pouvez ensuite incorporer les commandes Spark ci-dessus dans votre environnement Spark. Par exemple, vous pouvez créer une tâche qui effectue l'optimisation ci-dessus selon une planification souhaitée ou dans un pipeline après ingestion.

Pour explorer l'exemple de code complet et l'essayer dans votre propre compte, consultez le GitHub repo.

Conclusion

SageMaker Feature Store fournit une solution de gestion des fonctionnalités spécialement conçue pour aider les organisations à faire évoluer le développement ML entre les équipes de science des données. Dans cet article, nous avons expliqué comment vous pouvez tirer parti d'Apache Iceberg en tant que format de table et des opérations de maintenance de table telles que le compactage pour bénéficier de requêtes beaucoup plus rapides lorsque vous travaillez avec des groupes de fonctionnalités hors ligne à grande échelle et, par conséquent, créer des ensembles de données de formation plus rapidement. Essayez-le et dites-nous ce que vous en pensez dans les commentaires.


À propos des auteurs

Accélérez le développement du ML à l’aide de SageMaker Feature Store et du compactage du magasin hors ligne Apache Iceberg PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Arnaud Lauer est Senior Partner Solutions Architect dans l'équipe du secteur public chez AWS. Il permet aux partenaires et aux clients de comprendre comment utiliser au mieux les technologies AWS pour traduire les besoins de l'entreprise en solutions. Il apporte plus de 17 ans d'expérience dans la réalisation et l'architecture de projets de transformation numérique dans divers secteurs, notamment le secteur public, l'énergie et les biens de consommation. Arnaud détient 12 certifications AWS, dont la certification de spécialité ML.

Accélérez le développement du ML à l’aide de SageMaker Feature Store et du compactage du magasin hors ligne Apache Iceberg PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Ioan Catane est architecte de solutions spécialisées en intelligence artificielle et en apprentissage automatique chez AWS. Il aide les clients à développer et à faire évoluer leurs solutions ML dans le cloud AWS. Ioan a plus de 20 ans d'expérience, principalement dans la conception d'architecture logicielle et l'ingénierie cloud.

Accélérez le développement du ML à l’aide de SageMaker Feature Store et du compactage du magasin hors ligne Apache Iceberg PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Marc Roy est un architecte principal d'apprentissage automatique pour AWS, aidant les clients à concevoir et à créer des solutions AI / ML. Le travail de Mark couvre un large éventail de cas d'utilisation du ML, avec un intérêt principal pour la vision par ordinateur, l'apprentissage en profondeur et la mise à l'échelle du ML dans l'entreprise. Il a aidé des entreprises dans de nombreux secteurs, notamment l'assurance, les services financiers, les médias et le divertissement, la santé, les services publics et la fabrication. Mark détient six certifications AWS, dont la certification ML Specialty. Avant de rejoindre AWS, Mark a été architecte, développeur et leader technologique pendant plus de 25 ans, dont 19 ans dans les services financiers.

Accélérez le développement du ML à l’aide de SageMaker Feature Store et du compactage du magasin hors ligne Apache Iceberg PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Brandon Chatham est ingénieur logiciel au sein de l'équipe SageMaker Feature Store. Il est profondément passionné par la construction de systèmes élégants qui mettent les mégadonnées et l'apprentissage automatique à la portée des gens.

Horodatage:

Plus de Apprentissage automatique AWS