SageMaker Processing
SageMaker Processing — это полностью управляемый сервис в составе платформы Amazon Web Services (AWS) Amazon SageMaker, предназначенный для выполнения этапов предобработки данных, постобработки и проверки качества (валидации) в конвейерах машинного обучения. Сервис предоставляет временную инфраструктуру для запуска пользовательских скриптов на выделенных вычислительных ресурсах (экземплярах Amazon EC2) без необходимости управления кластером или сервером.
История и контекст появления
SageMaker Processing был анонсирован в декабре 2019 года на конференции AWS re:Invent. Его появление было обусловлено необходимостью решить проблему «склеивания» этапов обработки данных в конвейерах машинного обучения. До этого разработчики часто использовали для предобработки либо отдельные кластеры Amazon EMR (Elastic MapReduce), либо запускали скрипты непосредственно внутри ноутбуков SageMaker Notebook, что было неэффективно для больших объёмов данных и не обеспечивало воспроизводимости результатов.
SageMaker Processing стал частью более широкой экосистемы SageMaker, которая включает в себя SageMaker Training (обучение моделей), SageMaker Inference (развёртывание моделей) и SageMaker Pipelines (оркестрация конвейеров). Сервис позволил выполнять обработку данных в том же управляемом окружении, что и обучение моделей, упрощая интеграцию и управление ресурсами.
Архитектура и принцип работы
Основные компоненты
- Обработчик (Processor): Объект, который определяет тип и количество вычислительных ресурсов, а также образ контейнера (Docker image) для выполнения скрипта. SageMaker предоставляет встроенные образы для популярных фреймворков, таких как Scikit-learn, PySpark, TensorFlow и PyTorch. Пользователь также может использовать собственный кастомный образ.
- Скрипт обработки: Пользовательский код (на Python, R или Scala), который содержит логику обработки данных. Скрипт принимает аргументы командной строки, указывающие пути к входным и выходным данным.
- Входные и выходные данные: Данные для обработки хранятся в Amazon S3 (Simple Storage Service). SageMaker Processing автоматически загружает входные данные из S3 на вычислительные экземпляры и после завершения работы скрипта выгружает результаты обратно в S3.
- Вычислительный кластер: Временный кластер из одного или нескольких экземпляров Amazon EC2, который создаётся на время выполнения задания. После завершения задания кластер автоматически уничтожается.
Процесс выполнения
- Пользователь создаёт объект
Processorв коде (например,SKLearnProcessor,PySparkProcessorилиScriptProcessor), указывая образ контейнера, тип экземпляра и количество экземпляров. - Пользователь запускает задание (
processor.run()), передавая путь к скрипту, аргументы, а также пути к входным данным в S3 и выходному S3-бакету. - SageMaker Processing автоматически:
- Создаёт вычислительный кластер на основе указанных параметров.
- Загружает входные данные из S3 на все узлы кластера.
- Запускает пользовательский скрипт на каждом узле (или распределённо, в зависимости от реализации).
- После завершения скрипта выгружает выходные данные в S3.
- Уничтожает кластер.
Классификация и виды процессоров
SageMaker Processing поддерживает несколько типов процессоров, которые различаются по используемому контейнеру и возможностям распределённой обработки.
1. Встроенные процессоры
SKLearnProcessor: Предназначен для выполнения скриптов на Python с использованием библиотеки Scikit-learn. Использует встроенный образ, содержащий Scikit-learn, Pandas, NumPy и другие популярные библиотеки. Подходит для задач, не требующих распределённой обработки на нескольких узлах.PySparkProcessor: Предназначен для выполнения скриптов на PySpark (Python API для Apache Spark). Использует встроенный образ с установленным Spark. Позволяет обрабатывать данные на нескольких узлах кластера, используя распределённые вычисления Spark. Подходит для больших объёмов данных (терабайты и петабайты).FrameworkProcessor: Предназначен для выполнения скриптов с использованием других фреймворков машинного обучения, таких как TensorFlow, PyTorch, MXNet. Позволяет использовать предустановленные образы этих фреймворков.ScriptProcessor: Наиболее гибкий тип. Позволяет использовать любой кастомный Docker-образ, который пользователь создал и загрузил в Amazon ECR (Elastic Container Registry). Это даёт возможность использовать специфические библиотеки, версии ПО или собственные инструменты.
2. Кастомные процессоры
Пользователь может создать собственный процессор, унаследовавшись от базового класса Processor и определив свой образ. Это необходимо, когда встроенные образы не удовлетворяют требованиям по версиям библиотек или операционной системе.
Применение
SageMaker Processing используется на различных этапах жизненного цикла модели машинного обучения.
Предобработка данных
- Очистка данных: Удаление дубликатов, обработка пропущенных значений, фильтрация выбросов.
- Преобразование признаков: Нормализация, стандартизация, кодирование категориальных переменных (One-Hot Encoding, Label Encoding), создание новых признаков (feature engineering).
- Разделение данных: Разбиение на обучающую, валидационную и тестовую выборки.
- Агрегация и объединение: Соединение нескольких датасетов, вычисление агрегированных статистик.
Постобработка данных
- Преобразование результатов модели: Перевод вероятностей в метки классов, обратное кодирование категорий.
- Форматирование вывода: Подготовка данных для отчётов, визуализации или загрузки в базы данных.
Валидация и проверка качества
- Проверка схемы данных: Убедиться, что входные данные соответствуют ожидаемой структуре (типы колонок, диапазоны значений).
- Статистический анализ: Вычисление базовых статистик (среднее, медиана, стандартное отклонение) для обнаружения аномалий.
- Проверка на дрейф данных: Сравнение распределений признаков в новых данных с эталонными распределениями.
Интеграция с SageMaker Pipelines
SageMaker Processing является ключевым компонентом SageMaker Pipelines — сервиса для построения автоматизированных конвейеров машинного обучения (MLOps). Этапы Processing могут быть объединены с этапами Training, Evaluation и Inference в единый конвейер, что позволяет автоматизировать весь процесс от сырых данных до развёрнутой модели.
Преимущества и недостатки
Преимущества
- Управляемость: Не требуется управлять кластером или сервером; инфраструктура создаётся и уничтожается автоматически.
- Масштабируемость: Легко масштабируется от одного экземпляра до сотен узлов для обработки больших данных.
- Воспроизводимость: Каждое задание выполняется в изолированном окружении с фиксированными версиями библиотек, что гарантирует воспроизводимость результатов.
- Интеграция с экосистемой AWS: Тесная интеграция с Amazon S3, SageMaker Pipelines, Amazon CloudWatch (мониторинг) и AWS IAM (управление доступом).
- Безопасность: Данные шифруются при передаче и в покое; доступ контролируется через IAM-роли.
- Экономическая эффективность: Оплата только за фактически использованные вычислительные ресурсы (по секундам).
Недостатки
- Зависимость от AWS: Сервис является проприетарным и доступен только в облаке AWS.
- Сложность отладки: Отладка распределённых заданий на кластере может быть затруднительной по сравнению с локальной разработкой.
- Ограничения по времени: Существуют ограничения на максимальное время выполнения одного задания (до 28 дней).
- Стоимость при простое: Если задание выполняется долго или использует дорогие типы экземпляров, стоимость может быть высокой.
Сравнение с альтернативами
| Характеристика | SageMaker Processing | Amazon EMR | AWS Glue | Локальный сервер |
|---|---|---|---|---|
| Управление инфраструктурой | Полностью управляемый | Управляемый (требуется настройка) | Полностью управляемый | Требуется администрирование |
| Сложность настройки | Низкая | Средняя | Низкая | Высокая |
| Масштабируемость | Высокая | Очень высокая | Высокая | Низкая |
| Интеграция с SageMaker | Прямая | Через SageMaker Studio | Через SageMaker Studio | Отсутствует |
| Тип задач | Предобработка ML | ETL, аналитика | ETL, каталогизация | Любые |
| Стоимость для малых объёмов | Низкая | Средняя | Низкая | Низкая (при наличии оборудования) |
Пример использования
Типичный сценарий использования SageMaker Processing — это предобработка данных для обучения модели классификации текстов. Пользователь загружает сырой датасет в Amazon S3. Затем он создаёт SKLearnProcessor и запускает скрипт preprocess.py, который:
- Загружает данные из S3.
- Удаляет HTML-теги и стоп-слова.
- Преобразует тексты в числовые векторы с помощью
TfidfVectorizer. - Разделяет данные на обучающую и тестовую выборки.
- Сохраняет обработанные данные и векторизатор обратно в S3.
После завершения задания SageMaker Processing автоматически уничтожает кластер. Обработанные данные затем могут быть использованы в следующем этапе конвейера — обучении модели.
Источники
- Документация Amazon Web Services: «Amazon SageMaker Processing» (AWS Documentation).
- Блог Amazon Web Services: «Introducing Amazon SageMaker Processing – Fully Managed Data Processing for Machine Learning» (AWS News Blog, декабрь 2019).
- Книга: «Data Science on AWS» by Chris Fregly, Antje Barth (O'Reilly Media, 2021).
- Документация Amazon Web Services: «Amazon SageMaker Pipelines» (AWS Documentation).
- Репозиторий AWS Samples на GitHub: «amazon-sagemaker-examples» (раздел Processing).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →