Ограничение скорости вывода, которое можно сделать для конечной точки SageMaker - PullRequest
1 голос
/ 22 января 2020

Существует ли ограничение на число выводов, которое можно сделать для конечной точки SageMaker?

Это определяется каким-либо образом типом экземпляра за конечной точкой или числом экземпляров?

I попытался найти эту информацию как AWS Сервисные квоты для SageMaker , но не смог ее найти.

Я вызываю конечную точку из задания Spark, и мне стало интересно, если число одновременных задач равно фактор, который я должен учитывать при выполнении логического вывода (при условии, что каждая задача выполняется по одному логическому выводу за раз)

Вот ошибка регулирования, которую я получил:

com.amazonaws.services.sagemakerruntime.model.AmazonSageMakerRuntimeException: null (Service: AmazonSageMakerRuntime; Status Code: 400; Error Code: ThrottlingException; Request ID: b515121b-f3d5-4057-a8a4-6716f0708980)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1712)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1367)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1113)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:770)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:744)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:726)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:686)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:668)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:532)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:512)
    at com.amazonaws.services.sagemakerruntime.AmazonSageMakerRuntimeClient.doInvoke(AmazonSageMakerRuntimeClient.java:236)
    at com.amazonaws.services.sagemakerruntime.AmazonSageMakerRuntimeClient.invoke(AmazonSageMakerRuntimeClient.java:212)
    at com.amazonaws.services.sagemakerruntime.AmazonSageMakerRuntimeClient.executeInvokeEndpoint(AmazonSageMakerRuntimeClient.java:176)
    at com.amazonaws.services.sagemakerruntime.AmazonSageMakerRuntimeClient.invokeEndpoint(AmazonSageMakerRuntimeClient.java:151)
    at lineefd06a2d143b4016906a6138a6ffec15194.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$$$a5cddfc4633c5dd8aa603ddc4f9aad5$$$$w$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$Predictor.predict(command-2334973:41)
    at lineefd06a2d143b4016906a6138a6ffec15200.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$$$50a9225beeac265557e61f69d69d7d$$$$w$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$2.apply(command-2307906:11)
    at lineefd06a2d143b4016906a6138a6ffec15200.$read$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$$$50a9225beeac265557e61f69d69d7d$$$$w$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$iw$$anonfun$2.apply(command-2307906:11)
    at scala.collection.Iterator$$anon$11.next(Iterator.scala:410)
    at org.apache.spark.util.Utils$.getIteratorSize(Utils.scala:2000)
    at org.apache.spark.rdd.RDD$$anonfun$count$1.apply(RDD.scala:1220)
    at org.apache.spark.rdd.RDD$$anonfun$count$1.apply(RDD.scala:1220)
    at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2321)
    at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2321)
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)
    at org.apache.spark.scheduler.Task.doRunTask(Task.scala:140)
    at org.apache.spark.scheduler.Task.run(Task.scala:113)
    at org.apache.spark.executor.Executor$TaskRunner$$anonfun$13.apply(Executor.scala:533)
    at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1541)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:539)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

1 Ответ

2 голосов
/ 25 января 2020

Amazon SageMaker предлагает услугу модельного хостинга (https://docs.aws.amazon.com/sagemaker/latest/dg/how-it-works-hosting.html), которая дает вам большую гибкость в зависимости от ваших требований вывода.

Как вы заметили, сначала вы можете выбрать тип экземпляра, который будет использоваться для вашей модели хостинга. Большой набор опций важен для настройки ваших моделей. Вы можете разместить модель на компьютерах с графическим процессором (P2 / P3 / P4) или на процессоре. Вы можете иметь экземпляры с более быстрым ЦП (например, C4) или большим объемом ОЗУ (например, R4). Вы также можете выбрать экземпляры с большим количеством ядер (например, 16xl) или меньше (например, среднее). Вот список полного диапазона экземпляров, которые вы можете выбрать: https://aws.amazon.com/sagemaker/pricing/instance-types/. Важно сбалансировать производительность и затраты. Выбор типа экземпляра, а также типа и размера вашей модели будет определять количество вызовов в секунду, которые вы можете ожидать от вашей модели в этой конфигурации с одним узлом. Важно измерить это число, чтобы избежать ошибок дроссельной заслонки, которые вы видели.

Второй важной особенностью хостинга SageMaker, которую вы используете, является возможность автоматического масштабирования вашей модели до нескольких экземпляров. Вы можете настроить конечную точку хоста вашей модели для автоматического добавления и удаления экземпляров в зависимости от нагрузки на конечную точку. AWS добавляет балансировщик нагрузки перед несколькими экземплярами, на которых размещаются ваши модели, и распределяет запросы между ними. Использование функции автоматического масштабирования позволяет вам сохранять меньший экземпляр для трафика с низким трафиком c часов и иметь возможность масштабирования во время пикового трафика c часов, сохраняя при этом свои расходы на низком уровне и ошибки управления газом до минимума. См. Здесь документацию по параметрам автоматического масштабирования SageMaker: https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html

...