Сократите затраты и сложность предварительной обработки машинного обучения с помощью Amazon S3 Object Lambda PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Сокращение затрат и сложности предварительной обработки машинного обучения с помощью Amazon S3 Object Lambda

Простой сервис хранения Amazon (Amazon S3) — это служба хранения объектов, которая предлагает лучшую в отрасли масштабируемость, доступность данных, безопасность и производительность. Часто у клиентов есть объекты в корзинах S3, которые нуждаются в дальнейшей обработке для эффективного использования приложениями-потребителями. Инженеры данных должны поддерживать эти представления данных для конкретных приложений с компромиссами между сохранением производных копий или преобразованием данных на уровне потребителя. Ни одно из этих решений не является идеальным, поскольку оно усложняет работу, вызывает проблемы с согласованностью данных и тратит впустую более дорогие вычислительные ресурсы.

Эти компромиссы широко применяются ко многим конвейерам машинного обучения (ML), которые обучаются на неструктурированных данных, таких как аудио, видео и текст в произвольной форме, среди других источников. В каждом примере задание обучения должно загружать данные из корзин S3, готовить представление для конкретного приложения, а затем использовать алгоритм ИИ. В этом посте демонстрируется шаблон проектирования для снижения затрат, сложности и централизованного управления вторым этапом. Он использует бетон пример обработки изображения, хотя этот подход широко применим к любой рабочей нагрузке. Экономические преимущества также наиболее заметны, когда на этапе преобразования не требуется графический процессор, а требуется алгоритм ИИ.

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

Обзор решения

Когда алгоритмы машинного обучения обрабатывают неструктурированные данные, такие как изображения и видео, им требуются различные задачи нормализации (например, масштабирование по серому и изменение размера). Этот шаг существует для ускорения сходимости модели, предотвращения переобучения и повышения точности прогноза. Вы часто выполняете эти шаги предварительной обработки на экземплярах, которые позже запускают обучение ИИ. Такой подход приводит к неэффективности, поскольку эти ресурсы обычно имеют более дорогие процессоры (например, графические процессоры), чем требуют эти задачи. Вместо этого наше решение выносит эти операции за пределы экономичных, горизонтально масштабируемых Лямбда объекта Amazon S3 функции.

Этот шаблон проектирования имеет три важных преимущества. Во-первых, он централизует этапы преобразования общих данных, такие как нормализация изображения и устранение дублирования кода конвейера машинного обучения. Кроме того, функции S3 Object Lambda позволяют избежать проблем с согласованностью данных в производных данных за счет JIT-преобразований. В-третьих, бессерверная инфраструктура снижает эксплуатационные расходы, увеличивает время доступа и ограничивает затраты до миллисекунды времени выполнения вашего кода.

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

Следующая диаграмма иллюстрирует архитектуру решения.

Нормализация наборов данных, используемых для обучения модели машинного обучения

В этом решении у вас есть корзина S3, содержащая необработанные изображения для обработки. Далее вы создаете Точка доступа S3 для этих изображений. Если вы создаете несколько моделей машинного обучения, вы можете создать отдельные точки доступа S3 для каждой модели. Альтернативно, Управление идентификацией и доступом AWS (Я) политики для точек доступа поддерживать совместное использование многократно используемых функций в конвейерах машинного обучения. Затем вы прикрепляете лямбда-функцию с вашей бизнес-логикой предварительной обработки к точке доступа S3. После извлечения данных вы вызываете точку доступа S3 для выполнения JIT-преобразования данных. Наконец, вы обновляете свою модель машинного обучения, чтобы использовать новую Объектная лямбда-точка доступа S3 для получения данных из Amazon S3.

Создайте точку доступа нормализации

В этом разделе описываются шаги по созданию точки доступа S3 Object Lambda.

Необработанные данные хранятся в корзине S3. Чтобы предоставить пользователю правильный набор разрешений для доступа к этим данным, избегая при этом сложных политик корзины, которые могут неожиданно повлиять на другое приложение, вам необходимо создать точки доступа S3. Точки доступа S3 — это уникальные имена хостов, которые можно использовать для доступа к корзинам S3. С помощью S3 Access Points вы можете создавать отдельные политики контроля доступа для каждой точки доступа, чтобы легко и безопасно контролировать доступ к общим наборам данных.

  1. Создайте свою точку доступа.
  2. Создайте функцию Lambda, которая выполняет изменение размера и преобразование изображения. См. следующий код Python:
import boto3
import cv2
import numpy as np
import requests
import io def lambda_handler(event, context): print(event) object_get_context = event["getObjectContext"] request_route = object_get_context["outputRoute"] request_token = object_get_context["outputToken"] s3_url = object_get_context["inputS3Url"] # Get object from S3 response = requests.get(s3_url) nparr = np.fromstring(response.content, np.uint8) img = cv2.imdecode(nparr, flags=1) # Transform object new_shape=(256,256) resized = cv2.resize(img, new_shape, interpolation= cv2.INTER_AREA) gray_scaled = cv2.cvtColor(resized,cv2.COLOR_BGR2GRAY) # Transform object is_success, buffer = cv2.imencode(".jpg", gray_scaled) if not is_success: raise ValueError('Unable to imencode()') transformed_object = io.BytesIO(buffer).getvalue() # Write object back to S3 Object Lambda s3 = boto3.client('s3') s3.write_get_object_response( Body=transformed_object, RequestRoute=request_route, RequestToken=request_token) return {'status_code': 200}
  1. Создать Объектная точка доступа Lambda с помощью поддерживающей точки доступа из шага 1.

Функция Lambda использует вспомогательную точку доступа для загрузки исходных объектов.

  1. Обновление ПО Создатель мудреца Амазонки использовать новую точку доступа S3 Object Lambda для извлечения данных из Amazon S3. См. следующий код bash:
aws s3api get-object --bucket arn:aws:s3-object-lambda:us-west-2:12345678901:accesspoint/image-normalizer --key images/test.png

Анализ экономии затрат

Традиционно конвейеры машинного обучения копируют изображения и другие файлы из Amazon S3 в экземпляры SageMaker, а затем выполняют нормализацию. Однако преобразование этих действий в обучающие экземпляры неэффективно. Во-первых, лямбда-функции масштабируются по горизонтали, чтобы справиться с всплеском, а затем эластично сжимаются, только зарядка за миллисекунду когда код работает. Многие этапы предварительной обработки не требуют графических процессоров и даже могут использовать ARM64. Это создает стимул для переноса этой обработки на более экономичные вычисления, такие как Функции Lambda на базе процессоров AWS Graviton2.

На примере из Калькулятор цен на лямбда, вы можете настроить функцию с 256 МБ памяти и сравнить затраты как для x86, так и для Graviton (ARM64). Мы выбрали этот размер, потому что его достаточно для многих задач подготовки данных с одним изображением. Далее используйте Калькулятор стоимости SageMaker для расчета затрат на экземпляр ml.p2.xlarge. Это самый маленький из поддерживаемых обучающих экземпляров SageMaker с поддержкой графического процессора. Эти результаты показывают экономию вычислительных ресурсов до 90 % для операций, которые не используют графические процессоры и могут перейти на Lambda. В следующей таблице обобщены эти выводы.

 

Лямбда с x86 Лямбда с Graviton2 (ARM) SageMaker мл.p2.xlarge
Память (ГБ) 0.25 0.25 61
ЦП  -  - 4
GPU / ГРАФИЧЕСКИЙ ПРОЦЕССОР  -  - 1
Стоимость/час $0.061 $0.049 $0.90

Заключение

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

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

Дополнительные идеи по использованию бессерверных технологий и машинного обучения см. Логический вывод машинного обучения в масштабе с использованием бессерверной AWS и Развертывание моделей машинного обучения с помощью бессерверных шаблонов.


Об авторах

Сократите затраты и сложность предварительной обработки машинного обучения с помощью Amazon S3 Object Lambda PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Нейт Бахмайер — старший архитектор решений AWS, кочует по Нью-Йорку, интегрируя по одному облаку за раз. Он специализируется на переносе и модернизации рабочих нагрузок клиентов. Кроме того, Нейт учится на дневном отделении и имеет двоих детей.

Сократите затраты и сложность предварительной обработки машинного обучения с помощью Amazon S3 Object Lambda PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Марвин Фернандес работает архитектором решений в компании AWS, расположенной в районе Нью-Йорка. Он имеет более чем 20-летний опыт создания и запуска приложений для финансовых услуг. В настоящее время он работает с крупными корпоративными клиентами над решением сложных бизнес-задач путем создания масштабируемых, гибких и отказоустойчивых облачных архитектур.

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

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