AWS SageMaker - обработка данных в реальном времени
Моя компания проводит анализ поведения потребителей в Интернете, и мы делаем прогнозы в реальном времени, используя данные, которые мы собрали на различных веб-сайтах (с нашим встроенным сценарием Java).
Мы использовали AWS ML для прогнозирования в реальном времени, но теперь мы экспериментируем с AWS SageMaker, и нам пришло в голову, что обработка данных в реальном времени является проблемой по сравнению с AWS ML. Например, у нас есть некоторые строковые переменные, которые AWS ML может преобразовать в числовые значения и автоматически использовать их для прогнозирования в реальном времени в AWS ML. Но, похоже, SageMaker не может это сделать.
У кого-нибудь есть опыт обработки и прогнозирования данных в реальном времени в AWS SageMaker?
4 ответа
Похоже, вы знакомы только с обучающим компонентом SageMaker. SageMaker имеет несколько различных компонентов:
- Ноутбуки Jupyter
- этикетирование
- Повышение квалификации
- вывод
Скорее всего, вы имеете дело с № 3 и № 4. Есть несколько способов работы с SageMaker здесь. Вы можете использовать один из встроенных алгоритмов, которые предоставляют как обучающие, так и логические контейнеры, которые могут быть запущены в SageMaker. Чтобы использовать их, вы можете работать полностью из консоли и просто указывать на свои данные в S3, подобно AWS ML. Если вы не используете встроенные алгоритмы, то вы можете использовать https://github.com/aws/sagemaker-python-sdk для создания контейнеров обучения и прогнозирования, если вы используете общую среду, такую как тензорный поток, mxnet, pytorch или другие. Наконец, если вы используете супер настраиваемый алгоритм (который вы не использовали при переносе из AWS ML), вы можете принести свой собственный докер-контейнер для обучения и вывода.
Чтобы создать конечную точку вывода, вы можете перейти к консоли в разделе "Вывод" и щелкнуть вокруг, чтобы построить свою конечную точку. Посмотрите GIF здесь для примера:
Помимо этого, если вы хотите использовать код для вызова конечной точки в режиме реального времени, вы можете использовать любой из AWS SDK, я продемонстрирую здесь на python SDK boto3:
import boto3
sagemaker = boto3.client("runtime.sagemaker")
response = sagemaker.invoke_endpoint(EndpointName="herpderp", Body="some content")
В этом коде, если вам нужно преобразовать входящие строковые значения в числовые значения, вы можете легко сделать это с помощью кода.
Да, оно может! Вы должны создать конвейер (Preprocess + модель + Postprocess) и развернуть его как конечную точку для вывода в реальном времени. Вы можете дважды проверить пример вывода на сайте Sagemaker GitHub. он использует sagemaker-python-sdk для обучения и развертывания. 1: Это для маленькой модели данных sklearn.
2: он также поддерживает большие данные (Spark ML Pipeline, обслуживающий контейнер), вы также можете найти пример в его официальном github.
AWS SageMaker - это надежный сервис машинного обучения в AWS, который управляет всеми основными аспектами внедрения машинного обучения, включая подготовку данных, построение модели, обучение и точную настройку, а также развертывание.
Подготовка
SageMaker использует ряд ресурсов, чтобы упростить подготовку данных для моделей машинного обучения, даже если они поступают из многих источников или представлены в различных форматах.
С помощью SageMaker Ground Truth легко помечать данные, включая видео, изображения и текст, которые автоматически преобразуются в пригодные для использования данные. GroundWork обработает и объединит эти данные с помощью автоматической сегментации и набора инструментов для создания единой метки данных, которую можно использовать в моделях машинного обучения. AWS в сочетании с SageMaker Data Wrangler и SageMaker Processing сокращает этап подготовки данных, который может занять недели или месяцы, до нескольких дней, если не часов.
Строить
Блокноты SageMaker Studio централизованно объединяют все, что имеет отношение к вашим моделям машинного обучения, позволяя удобно делиться ими вместе с соответствующими данными. Вы можете выбрать один из множества встроенных алгоритмов с открытым исходным кодом, чтобы начать обработку данных с помощью SageMaker JumpStart, или вы можете создать собственные параметры для своей модели машинного обучения.
После того, как вы выбрали модель, SageMaker автоматически начинает обработку данных и предлагает простой и понятный интерфейс для отслеживания прогресса и производительности вашей модели.
Обучение
SageMaker предоставляет ряд инструментов для обучения вашей модели на основе подготовленных вами данных, включая встроенный отладчик для обнаружения возможных ошибок.
Машинное обучение Результаты учебного задания сохраняются в корзине Amazon S3, где их можно просматривать с помощью других сервисов AWS, включая AWS Quicksight.
Развертывание
Бессмысленно иметь сильные модели машинного обучения, если их невозможно легко развернуть в вашей инфраструктуре хостинга. К счастью, SageMaker позволяет развертывать модели машинного обучения в ваших текущих сервисах и приложениях всего одним щелчком мыши.
SageMaker позволяет обрабатывать данные и делать прогнозы в реальном времени после установки. Это имеет далеко идущие последствия во множестве областей, включая финансы и здравоохранение. Например, компании, работающие на фондовом рынке, могут в режиме реального времени принимать финансовые решения в отношении акций и совершать более привлекательные приобретения, определяя лучшее время для покупки.
Включение в Amazon Comprehend позволяет обрабатывать естественный язык, преобразовывать человеческую речь в полезные данные для обучения более совершенных моделей или предоставлять клиентам чат-бота через Amazon Lex.
В заключении…
Машинное обучение больше не является нишевым технологическим курьезом; теперь он играет решающую роль в процессах принятия решений тысячами компаний по всему миру. Никогда еще не было лучшего времени для начала пути к машинному обучению, чем сейчас, с практически неограниченными фреймворками и простой интеграцией в систему AWS.
В этом случае вам нужно будет предварительно обработать ваши данные перед подачей их в тело запроса InvokeEndpoint. Если вы используете python, вы можете использовать int('your_integer_string') или float('your_float_string'), чтобы преобразовать строку в целое число или число с плавающей точкой. Если вы используете Java, вы можете использовать Integer.parseInt("yourIntegerString") или Long.parseLong("yourLongString") или Double.parseDouble("yourDoubleString") или Float.parseFloat("yourFloatString").
Надеюсь это поможет!
-Han