Ускорьте разработку машинного обучения с помощью SageMaker Feature Store и Apache Iceberg для сжатия данных в автономном магазине PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Ускорьте разработку машинного обучения с помощью SageMaker Feature Store и сжатия офлайн-магазина Apache Iceberg.

Сегодня компании создают хранилища функций, чтобы обеспечить центральный репозиторий для масштабирования разработки машинного обучения между бизнес-подразделениями и группами специалистов по обработке и анализу данных. По мере роста размера и сложности данных функций специалистам по данным необходимо иметь возможность эффективно запрашивать эти хранилища функций, чтобы извлекать наборы данных для экспериментов, обучения моделей и пакетной оценки.

Магазин функций Amazon SageMaker — это специально созданное решение для управления функциями, которое помогает специалистам по обработке и анализу данных и инженерам по машинному обучению безопасно хранить, обнаруживать и обмениваться специально отобранными данными, используемыми в рабочих процессах обучения и прогнозирования. SageMaker Feature Store теперь поддерживает Апач Айсберг как формат таблицы для хранения признаков. Это ускоряет разработку моделей, обеспечивая более высокую производительность запросов при извлечении наборов обучающих данных ML, используя преимущества сжатия таблиц Iceberg. В зависимости от структуры ваших групп функций и их масштаба вы можете получить повышение производительности обучающих запросов от 10 до 100 раз, используя эту новую возможность.

К концу этого поста вы будете знать, как создавать группы функций, используя формат Iceberg, выполнять процедуры управления таблицами Iceberg, используя Амазонка Афина, и запланируйте выполнение этих задач в автономном режиме. Если вы являетесь пользователем Spark, вы также узнаете, как выполнять те же процедуры с помощью Spark и включать их в свою собственную среду Spark и средства автоматизации.

SageMaker Feature Store и Apache Iceberg

Магазин функций Amazon SageMaker — это централизованное хранилище функций и связанных с ними метаданных, позволяющее командам специалистов по данным, работающим над различными проектами или моделями машинного обучения, легко обнаруживать и повторно использовать функции.

SageMaker Feature Store состоит из онлайн- и оффлайн-режима для управления функциями. Интернет-магазин используется для логического вывода в реальном времени с малой задержкой. Автономный магазин в основном используется для пакетных прогнозов и обучения моделей. Автономное хранилище является хранилищем только для добавления и может использоваться для хранения и доступа к историческим данным объектов. С помощью автономного хранилища пользователи могут хранить и обслуживать функции для исследования и пакетной оценки, а также извлекать правильные наборы данных на определенный момент времени для обучения модели.

Данные офлайн-магазина хранятся в корзине Amazon Simple Storage Service (Amazon S3) в вашей учетной записи AWS. SageMaker Feature Store автоматически создает каталог данных AWS Glue во время создания группы функций. Клиенты также могут получить доступ к данным офлайн-магазина с помощью среды выполнения Spark и выполнять обработку больших данных для анализа функций машинного обучения и вариантов использования для разработки функций.

Табличные форматы позволяют абстрагировать файлы данных в виде таблицы. За прошедшие годы появилось много форматов таблиц для поддержки транзакций ACID, управления и сценариев использования каталогов. Апач Айсберг представляет собой формат открытой таблицы для очень больших наборов аналитических данных. Он управляет большими коллекциями файлов в виде таблиц и поддерживает современные аналитические операции с озером данных, такие как вставка, обновление, удаление на уровне записей и запросы путешествий во времени. Iceberg отслеживает отдельные файлы данных в таблице, а не в каталогах. Это позволяет авторам создавать файлы данных на месте (файлы не перемещаются и не изменяются) и добавлять файлы в таблицу только при явной фиксации. Состояние таблицы сохраняется в файлах метаданных. Все изменения в состоянии таблицы создают новую версию файла метаданных, которая атомарно заменяет старые метаданные. Файл метаданных таблицы отслеживает схему таблицы, конфигурацию секционирования и другие свойства.

Iceberg имеет интеграцию с сервисами AWS. Например, вы можете использовать Клей AWS Каталог данных как хранилище метаданных для таблиц Iceberg и Афина поддерживает чтение, перемещение во времени, запись и запросы DDL для таблиц Apache Iceberg, которые используют формат Apache Parquet для данных и каталог AWS Glue для своего хранилища метаданных.

С SageMaker Feature Store теперь вы можете создавать группы функций в формате таблицы Iceberg в качестве альтернативы стандартному формату Glue по умолчанию. Благодаря этому клиенты могут использовать новый формат таблиц для использования функций сжатия файлов и сокращения данных Iceberg в соответствии со своими вариантами использования и требованиями оптимизации. Iceberg также позволяет клиентам выполнять удаление, запросы с перемещением во времени, транзакции с высокой степенью параллелизма и высокопроизводительные запросы.

Комбинируя Iceberg в качестве формата таблицы и операции обслуживания таблиц, такие как сжатие, клиенты получают более высокую производительность запросов при работе с автономными группами функций в масштабе, что позволяет им быстрее создавать наборы данных для обучения машинному обучению.

На следующей диаграмме показана структура офлайн-магазина с использованием Iceberg в качестве формата таблицы.

В следующих разделах вы узнаете, как создавать группы функций с использованием формата Iceberg, выполнять процедуры управления таблицами Iceberg с помощью AWS Athena и использовать сервисы AWS для планирования выполнения этих задач по требованию или по расписанию. Если вы являетесь пользователем Spark, вы также узнаете, как выполнять те же процедуры с помощью Spark.

Для пошаговых инструкций мы также предоставляем образец тетради, который можно найти на GitHub. В этом посте мы выделим самые важные части.

Создание групп объектов с использованием формата таблицы Iceberg

Сначала вам нужно выбрать Iceberg в качестве формата таблицы при создании новых групп объектов. Новый необязательный параметр TableFormat можно задать либо в интерактивном режиме с помощью Amazon SageMaker Studio, либо с помощью кода с помощью API или SDK. Этот параметр принимает значения ICEBERG or GLUE (для текущего формата AWS Glue). В следующем фрагменте кода показано, как создать группу объектов с использованием формата Iceberg и FeatureGroup.create API SageMaker SDK.

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
)

Таблица будет создана и зарегистрирована автоматически в каталоге данных AWS Glue.

Теперь, когда orders_feature_group_iceberg создан, вы можете принимать функции, используя выбранный вами конвейер приема. В этом примере мы загружаем записи, используя метод FeatureGroup.ingest() API, который принимает записи из Pandas DataFrame. Вы также можете использовать FeatureGroup().put_record API для приема отдельных записей или обработки источников потоковой передачи. Пользователи Spark также могут получать кадры данных Spark с помощью нашего Соединитель искры.

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

Вы можете убедиться, что записи были успешно загружены, выполнив запрос к автономному хранилищу объектов. Вы также можете перейти к местоположению S3 и увидеть новую структуру папок.

Ускорьте разработку машинного обучения с помощью SageMaker Feature Store и Apache Iceberg для сжатия данных в автономном магазине PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Выполнение процедур управления таблицами Iceberg

Амазонка Афина — это бессерверный механизм запросов SQL, изначально поддерживающий процедуры управления Iceberg. В этом разделе вы будете использовать Athena для ручного сжатия созданной вами автономной группы объектов. Обратите внимание, что вам потребуется использовать ядро ​​​​Athena версии 3. Для этого вы можете создать новую рабочую группу или настроить существующую рабочую группу и выбрать рекомендуемую версию ядра Athena 3. Дополнительные сведения и инструкции по изменению версии ядра Athena см. Изменение версий движка Athena.

По мере накопления данных в таблице Iceberg запросы могут постепенно становиться менее эффективными из-за увеличения времени обработки, необходимого для открытия дополнительных файлов. Сжатие оптимизирует структурную компоновку таблицы без изменения содержимого таблицы.

Для уплотнения используется OPTIMIZE table REWRITE DATA команда обслуживания стола уплотнения в Athena. Следующий синтаксис показывает, как оптимизировать макет данных группы объектов, хранящихся с использованием формата таблицы Iceberg. sagemaker_featurestore представляет имя базы данных SageMaker Feature Store, и orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334 — это имя таблицы нашей группы функций.

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

После запуска команды оптимизации вы используете VACUUM Процедура, выполняющая истечение срока действия моментальных снимков и удаляющая файлы-сироты. Эти действия уменьшают размер метаданных и удаляют файлы, которые не находятся в текущем состоянии таблицы, а также старше срока хранения, указанного для таблицы.

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

Обратите внимание, что свойства таблицы настраиваются с помощью Athena. ALTER TABLE. Пример того, как это сделать, см. Документация Афины. Для ВАКУУМА, vacuum_min_snapshots_to_keep и vacuum_max_snapshot_age_seconds можно использовать для настройки параметров обрезки моментальных снимков.

Давайте посмотрим, как сжатие влияет на производительность примера таблицы групп объектов. В целях тестирования мы включили одни и те же записи функций заказов в две группы функций: orders-feature-group-iceberg-pre-comp-02-11-03-06-1669979003 и orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334, используя параллельное задание обработки SageMaker со Scikit-Learn, в результате чего в Amazon S49,908,135 хранится 3 106.5 XNUMX объектов, а их общий размер составляет XNUMX ГиБ.

Мы запускаем запрос, чтобы выбрать последний снимок без дубликатов и без удаленных записей в группе функций. orders-feature-group-iceberg-pre-comp-02-11-03-06-1669979003. До уплотнения запрос занимал 1 час 27 минут.

Ускорьте разработку машинного обучения с помощью SageMaker Feature Store и Apache Iceberg для сжатия данных в автономном магазине PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Затем мы запускаем уплотнение orders-feature-group-iceberg-post-comp-03-14-05-17-1670076334 с помощью запроса Athena OPTIMIZE, который сжал таблицу групп функций до 109,851 3 объекта в Amazon S2.5 и до 1 ГиБ общего размера. Если мы затем запустим тот же запрос после сжатия, время его выполнения уменьшится до 13 минуты XNUMX секунд.

Ускорьте разработку машинного обучения с помощью SageMaker Feature Store и Apache Iceberg для сжатия данных в автономном магазине PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Благодаря сжатию файлов Iceberg время выполнения запросов значительно сократилось. Для того же запроса время выполнения уменьшилось с 1 часа 27 минут до 1 минуты 13 секунд, что в 71 раз быстрее.

Планирование уплотнения айсбергов с помощью сервисов AWS

В этом разделе вы узнаете, как автоматизировать процедуры управления таблицами, чтобы сжать ваше автономное хранилище функций. На следующей диаграмме показана архитектура для создания групп функций в формате таблицы Iceberg и полностью автоматизированное решение для управления таблицами, которое включает операции сжатия и очистки файлов.

Ускорьте разработку машинного обучения с помощью SageMaker Feature Store и Apache Iceberg для сжатия данных в автономном магазине PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

На высоком уровне вы создаете группу функций, используя формат таблицы Iceberg, и загружаете записи в онлайн-хранилище функций. Значения функций автоматически реплицируются из интернет-магазина в исторический автономный магазин. Athena используется для запуска процедур управления айсбергами. Чтобы запланировать процедуры, вы настраиваете Клей AWS с помощью сценария оболочки Python и создайте расписание заданий AWS Glue.

Настройка задания AWS Glue

Вы используете задание AWS Glue для выполнения операций обслуживания таблицы Iceberg по расписанию. Во-первых, вам нужно создать роль IAM для AWS Glue, чтобы иметь разрешения на доступ к Amazon Athena, Amazon S3 и CloudWatch.

Далее вам нужно создать скрипт Python для запуска процедур Iceberg. Вы можете найти образец сценария в Гитхабе. Скрипт выполнит запрос OPTIMIZE, используя boto3.

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

Скрипт был параметризован с помощью AWS Glue. getResolvedOptions(args, options) служебная функция, которая дает вам доступ к аргументам, которые передаются вашему сценарию при запуске задания. В этом примере регион AWS, база данных и таблица Iceberg для вашей функциональной группы, рабочая группа Athena и папка результатов выходного местоположения Athena могут быть переданы в качестве параметров задания, что позволяет повторно использовать этот скрипт в вашей среде.

Наконец, вы создаете фактическое задание AWS Glue для запуска скрипта в качестве оболочки в AWS Glue.

  • Перейдите к консоли AWS Glue.
  • Выберите Джобс на вкладке AWS Glue Studio.
  • Выберите Редактор скриптов Python Shell.
  • Выберите Загрузите и отредактируйте существующий скрипт. Нажмите Создавай.
  • Ассоциация Детали работы Кнопка позволяет настроить задание AWS Glue. Вам нужно выбрать роль IAM, которую вы создали ранее. Выбирать Python 3.9 или последняя доступная версия Python.
  • На той же вкладке вы также можете определить ряд других параметров конфигурации, таких как Количество попыток or Время ожидания задания. В Дополнительные свойства, вы можете добавить параметры задания для выполнения скрипта, как показано на примере снимка экрана ниже.
  • Нажмите Сохранить.

Ускорьте разработку машинного обучения с помощью SageMaker Feature Store и Apache Iceberg для сжатия данных в автономном магазине PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

В Расписание на вкладке вы можете определить расписание запуска процедур обслуживания хранилища функций. Например, на следующем снимке экрана показано, как запускать задание по расписанию каждые 6 часов.

Ускорьте разработку машинного обучения с помощью SageMaker Feature Store и Apache Iceberg для сжатия данных в автономном магазине PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Вы можете отслеживать выполнение заданий, чтобы понимать такие показатели времени выполнения, как состояние завершения, продолжительность и время начала. Вы также можете проверить журналы CloudWatch для задания AWS Glue, чтобы убедиться, что процедуры выполняются успешно.

Ускорьте разработку машинного обучения с помощью SageMaker Feature Store и Apache Iceberg для сжатия данных в автономном магазине PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Выполнение задач управления таблицами Iceberg с помощью Spark

Клиенты также могут использовать Spark для управления заданиями по уплотнению и методами обслуживания. Дополнительные сведения о процедурах Spark см. Документация Spark.

Сначала необходимо настроить некоторые общие свойства.

%%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"
  }
}

Следующий код можно использовать для оптимизации групп функций через Spark.

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

Затем вы можете выполнить следующие две процедуры обслуживания таблиц, чтобы удалить старые моментальные снимки и потерянные файлы, которые больше не нужны.

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}`')""")

Затем вы можете включить приведенные выше команды Spark в свою среду Spark. Например, вы можете создать задание, которое выполняет указанную выше оптимизацию по заданному расписанию или в конвейере после загрузки.

Чтобы изучить полный пример кода и попробовать его в своей учетной записи, см. Репо GitHub.

Заключение

SageMaker Feature Store — это специально созданное решение для управления функциями, которое помогает организациям масштабировать разработку машинного обучения между группами специалистов по обработке и анализу данных. В этом посте мы объяснили, как вы можете использовать Apache Iceberg в качестве формата таблицы и операций обслуживания таблиц, таких как уплотнение, чтобы получить выгоду от значительно более быстрых запросов при работе с автономными группами функций в масштабе и, как следствие, быстрее создавать наборы обучающих данных. Попробуйте и дайте нам знать, что вы думаете в комментариях.


Об авторах

Ускорьте разработку машинного обучения с помощью SageMaker Feature Store и Apache Iceberg для сжатия данных в автономном магазине PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Арно Лауэр является старшим архитектором партнерских решений в команде государственного сектора в AWS. Он помогает партнерам и клиентам понять, как лучше всего использовать технологии AWS для преобразования потребностей бизнеса в решения. Он обладает более чем 17-летним опытом реализации и разработки проектов цифровой трансформации в различных отраслях, включая государственный сектор, энергетику и потребительские товары. Арно имеет 12 сертификатов AWS, включая сертификат ML Specialty Certification.

Ускорьте разработку машинного обучения с помощью SageMaker Feature Store и Apache Iceberg для сжатия данных в автономном магазине PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Иоан Катана является специалистом по искусственному интеллекту и машинному обучению, архитектором решений в AWS. Он помогает клиентам разрабатывать и масштабировать решения машинного обучения в облаке AWS. Йоан имеет более чем 20-летний опыт работы в основном в области проектирования архитектуры программного обеспечения и облачной инженерии.

Ускорьте разработку машинного обучения с помощью SageMaker Feature Store и Apache Iceberg для сжатия данных в автономном магазине PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Марк Рой является главным архитектором машинного обучения для AWS, помогая клиентам разрабатывать и создавать решения AI / ML. Работа Марка охватывает широкий спектр сценариев использования машинного обучения, в первую очередь интересующихся компьютерным зрением, глубоким обучением и масштабированием машинного обучения на предприятии. Он помог компаниям во многих отраслях, включая страхование, финансовые услуги, средства массовой информации и развлечения, здравоохранение, коммунальные услуги и производство. Марк имеет шесть сертификатов AWS, включая сертификат ML Specialty Certification. До прихода в AWS Марк более 25 лет был архитектором, разработчиком и лидером в области технологий, в том числе 19 лет в сфере финансовых услуг.

Ускорьте разработку машинного обучения с помощью SageMaker Feature Store и Apache Iceberg для сжатия данных в автономном магазине PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Брэндон Чатем — инженер-программист в команде SageMaker Feature Store. Он глубоко увлечен созданием элегантных систем, которые делают большие данные и машинное обучение доступными для людей.

Отметка времени:

Больше от Машинное обучение AWS