Исключение регулирования конечной точки Sagemaker - PullRequest
0 голосов
/ 25 октября 2019

Я создал конечную точку, используя Sagemaker, и спроектировал свою систему так, чтобы она вызывалась примерно 100 раз одновременно . Кажется, это вызывает 'Ошибка модели' и занимает слишком много времени. Нужно ли создавать конечную точку для каждого события и вместо этого делать один вызов на конечную точку?

1 Ответ

0 голосов
/ 25 октября 2019

вы можете войти в журналы cloudwatch, чтобы диагностировать сбой вашей модели. Масштабирование трафика логического вывода в реальном времени можно решить, работая с тремя независимыми измерениями:

  1. аппаратное обеспечение : выбор более крупных или более машин. Например, вы можете нагрузочно протестировать конечную точку вашей модели на более крупных и больших машинах и посмотреть, когда размер оборудования дает приемлемую задержку. Функция автоматического масштабирования SageMaker поможет вам решить эту проблему автоматически. При развертывании глубокой нейронной сети вы также можете рассмотреть возможность использования соответствующих ускорителей, например, GPU (EC2 P3, EC2 G4) или Amazon Elastic Inference Accelerator , чтобы сделать каждое предсказание намного быстрее.

  2. программное обеспечение : у вас есть 2 рычага для настройки здесь:

    • выбор обслуживающего стека , который является обедненными быстро. Различные серверы будут обрабатывать нагрузку на разных уровнях производительности. Одним из распространенных приемов является пакетная загрузка - например, вместо 100-кратного удара по вашему серверу, можете ли вы поразить его только один раз с помощью 100 записей? Если клиенты не могут пакетировать свои запросы, можете ли вы использовать микро-асинхронность, чтобы выполнять пакетирование самостоятельно после отправки запросов? Обычно вы можете настроить такую ​​микропакетирование на современных серверах глубокого обучения, таких как TF Serving или MXNet Model Server (оба могут использоваться в SageMaker), но в противном случае вы также можете сделать это самостоятельноимея очередь (SQS) перед вашим сервером.
    • компиляция модели - оптимизация графа модели и времени ее выполнения. Это очень умная концепция, которая использует тот факт, что когда вы знаете, где вы собираетесь развернуть (например, NVIDIA, Intel, ARM и т. Д.), У вас есть внутреннее преимущество, и вы можете уточнить артефакт модели и создать заказную среду выполнения. приложение, специально разработанное для этой конкретной целевой платформы. Это может снизить потребление памяти и задержки на двузначный процент, и является активной областью исследований ML. В экосистеме SageMaker такую ​​задачу компиляции можно выполнить с помощью SageMaker Neo, но экосистема с открытым исходным кодом развивается быстро, в частности с треелитом ( paper , doc ) для компиляции дерева решений иTVM ( paper , doc) для произвольной компиляции нейронной сети. Между прочим, обе являются зависимостями Neo.
  3. science : некоторые модели медленнее или тяжелее других. Если скорость и параллелизм являются вашими приоритетами над точностью, и если вы уже использовали все возможные приемы на уровне (1) и (2) выше, рассмотрите возможность использования моделей с высокой пропускной способностью, например линейных моделей и логистической регрессии для структурированных данных, вместо этого MobileNet или SqueezeNetбольших Resnets для классификации ( хороший тест здесь ), Yolov3 вместо FasterRCNN для обнаружения ( хороший тест здесь ) и т. д. Но учтите, что в отличие от уровней (1) и (2)изменение модели науки изменит точность.

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

...