AWS SageMaker - обработка данных в реальном времени - PullRequest
0 голосов
/ 05 ноября 2018

Моя компания проводит анализ поведения потребителей в Интернете, и мы делаем прогнозы в реальном времени, используя данные, которые мы собрали на различных веб-сайтах (с нашим встроенным сценарием Java).

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

Есть ли у кого-нибудь опыт обработки и прогнозирования данных в режиме реального времени в AWS SageMaker?

Ответы [ 3 ]

0 голосов
/ 30 января 2019

Похоже, вы знакомы только с обучающим компонентом SageMaker. SageMaker имеет несколько различных компонентов:

  1. ноутбуки Jupyter
  2. Маркировка
  3. Обучение
  4. Выведение

Скорее всего, вы имеете дело с № 3 и № 4. Есть несколько способов работы с SageMaker здесь. Вы можете использовать один из встроенных алгоритмов , которые предоставляют как обучающие, так и логические контейнеры, которые можно запускать в SageMaker. Чтобы использовать их, вы можете работать полностью из консоли и просто указывать на свои данные в S3, подобно AWS ML. Если вы не используете встроенные алгоритмы, то вы можете использовать sagemaker-python-sdk для создания как обучающих, так и прогнозных контейнеров, если вы используете общую инфраструктуру, такую ​​как tenorflow, mxnet, pytorch или другие. Наконец, если вы используете супер-настраиваемый алгоритм (который вы не использовали при переносе из AWS ML), вы можете принести свой собственный докер-контейнер для обучения и умозаключений.

Чтобы создать конечную точку вывода, вы можете перейти к консоли в разделе «Вывод» и щелкнуть вокруг, чтобы построить конечную точку. Посмотрите GIF здесь для примера: gif showing building an endpoint

Помимо этого, если вы хотите использовать код для вызова конечной точки в режиме реального времени, вы можете использовать любой из AWS SDK, я продемонстрирую это на python SDK boto3 здесь:

import boto3
sagemaker = boto3.client("runtime.sagemaker")
response = sagemaker.invoke_endpoint(EndpointName="herpderp", Body="some content")

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

0 голосов
/ 28 февраля 2019

Да, это возможно! Вы должны создать конвейер (Preprocess + модель + Postprocess) и развернуть его как конечную точку для вывода в реальном времени. Вы можете дважды проверить пример вывода на сайте Sagemaker GitHub. он использует sagemaker-python-sdk для обучения и развертывания. 1: Это для маленькой модели данных sklearn.

https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-python-sdk/scikit_learn_inference_pipeline

2: он также поддерживает большие данные (сервировочный контейнер Spark ML Pipeline), вы также можете найти пример в его официальном github.

0 голосов
/ 21 ноября 2018

В этом случае вам нужно будет предварительно обработать ваши данные перед подачей их в тело запроса InvokeEndpoint. Если вы используете python, вы можете использовать int ('your_integer_string') или float ('your_float_string'), чтобы преобразовать строку в целое число или число с плавающей точкой. Если вы используете Java, вы можете использовать Integer.parseInt ("yourIntegerString") или Long.parseLong ("yourLongString") или Double.parseDouble ("yourDoubleString") или Float.parseFloat ("yourFloatString").

Надеюсь, это поможет!

-Han

...