Пользовательские алгоритмы AWS Sagemaker: как использовать дополнительные инстансы

Это фундаментальный вопрос AWS Sagemaker. Когда я запускаю обучение с помощью одного из встроенных алгоритмов Sagemaker, я могу воспользоваться преимуществом огромного ускорения от распределения задания по множеству экземпляров за счет увеличения аргумента instance_count алгоритма обучения. Однако, когда я упаковываю свой собственный алгоритм, увеличение количества экземпляров, кажется, просто дублирует обучение для каждого экземпляра, что не приводит к ускорению.

Я подозреваю, что когда я упаковываю свой собственный алгоритм, мне нужно сделать что-то особенное, чтобы контролировать, как он обрабатывает обучение по-разному для конкретного экземпляра внутри моей настраиваемой функции train () (в противном случае, как он узнает, как должно выполняться задание распространяться?), но мне не удалось найти в Интернете обсуждение того, как это сделать.

Кто-нибудь знает, как с этим справиться? Заранее большое спасибо.

Конкретные примеры: => Он хорошо работает в стандартном алгоритме: я проверил, что увеличение train_instance_count в первом задокументированном примере sagemaker ускоряет работу здесь: https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-train-model-create-training-job.html

=> Это не работает в моем пользовательском алгоритме. Я попытался взять стандартный пример sklearn build-your-own-model и добавить несколько дополнительных вариантов sklearn внутри обучения, а затем распечатать результаты для сравнения. Когда я увеличиваю значение train_instance_count, которое передается объекту оценщика, он запускает одно и то же обучение для каждого экземпляра, поэтому выходные данные дублируются для каждого экземпляра (дублируются распечатки результатов) и нет ускорения. Это база примеров sklearn: . Третий аргумент объекта оценщика, который находится частично в этой записной книжке, - это то, что позволяет вам контролировать количество обучающих экземпляров.


person user2365779    schedule 29.01.2018    source источник
comment
Последующее действие с решением, скопированное из ответа Гаю ниже: Я только что разговаривал с кем-то из службы технической поддержки Amazon, и есть простой способ сделать это. Sagemaker не позволяет вам отслеживать имя узла, на котором вы находитесь, но вы можете определить его номер, как описано здесь: docs.aws.amazon.com/sagemaker/latest/dg/ ... Затем вы можете выбрать другой алгоритмы или гиперпараметры в вашей функции train () в зависимости от того, на каком из хостов algo-X вы находитесь. -   -  person user2365779    schedule 06.02.2018


Ответы (1)


Распределенное обучение требует наличия способа синхронизации результатов обучения между обучающими работниками. Большинство традиционных библиотек, таких как scikit-learn, предназначены для работы с одним работником и не могут использоваться просто в распределенной среде. Amazon SageMaker распределяет данные между рабочими, но вы должны убедиться, что алгоритм может получить выгоду от нескольких рабочих. Некоторые алгоритмы, такие как случайный лес, легче использовать при распределении, поскольку каждый рабочий может построить свою часть леса, но другим алгоритмам требуется дополнительная помощь.

Spark MLLib имеет распределенные реализации популярных алгоритмов, таких как k-среднее, логистическая регрессия или PCA, но эти реализации недостаточно хороши для некоторых случаев. Большинство из них были слишком медленными, а некоторые даже выходили из строя, когда для обучения использовалось много данных. Команда Amazon SageMaker повторно реализовала многие из этих алгоритмов с нуля, чтобы получить выгоду от масштаба и экономики облака (20 часов работы одного инстанса стоят столько же, сколько 1 час 20 инстансов, всего в 20 раз быстрее). Многие из этих алгоритмов теперь более стабильны и намного быстрее, чем линейная масштабируемость. Подробнее см. Здесь: https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html

Для фреймворков глубокого обучения (TensorFlow и MXNet) SageMaker использует встроенный сервер параметров, который использует каждый из них, но он берет на себя тяжелую работу по созданию кластера и настройке экземпляров для связи с ним.

person Guy    schedule 04.02.2018
comment
Большое спасибо за Ваш ответ. Мои алгоритмы sklearn могли бы выиграть от нескольких рабочих, если бы фреймворк был достаточно гибким. Если, например, у sagemaker был API, который позволял мне спрашивать, на каком узле я нахожусь, я мог бы выбрать разные сценарии на основе этого (например, выполнить один алгоритм или один набор гиперпараметров на одном узле, а другой - на другой узел) внутри функции поезда. Официальный пример, на который я ссылался, похоже, подразумевает, что нечто подобное возможно. Иначе зачем было бы указывать на то, что я могу выбрать предпочтительное количество обучающих экземпляров? - person user2365779; 05.02.2018
comment
Последующие действия с решением: я только что поговорил с кем-то из службы технической поддержки Amazon, и есть простой способ сделать это. Sagemaker не позволяет отслеживать имя узла, на котором вы находитесь, но вы можете определить его номер следующим образом: docs.aws.amazon.com/sagemaker/latest/dg/ Затем вы можете выбрать различные алгоритмы или гиперпараметры в своей функции train () в зависимости от того, на каком из хостов algo-X вы находитесь. - person user2365779; 06.02.2018
comment
Более простой вариант - отправить несколько заданий параллельно, каждое с различным набором гиперпараметров. Почему вы хотите делать это изнутри учебной работы, а не извне? Служба HPO (настройка), являющаяся частью SageMaker, делает именно это и использует результаты обучения для проведения следующих тестов HPO. - person Guy; 06.02.2018
comment
Пытался найти вариант HPO. Я бы с удовольствием им воспользовался. Я видел, как много людей говорили об этом в общих чертах, но не было документации о том, как это сделать, и сообщение от инженера AWS, написанное пару месяцев назад, в котором говорилось, что это еще не доступно: hn.svelte.technology/item/15808868. Если он действительно доступен, знаете ли вы, где я могу найти на него ссылку? - person user2365779; 07.02.2018
comment
Услуга настройки (HPO) все еще находится в стадии предварительного просмотра. Вы можете зарегистрироваться здесь: pages.awscloud.com/amazon-sagemaker- hpo-preview.html - person Guy; 12.02.2018