Deeplearning4j Совместное использование вычислительного графа между потоками в Scala - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь сделать классификацию изображений. Я использую Scala, систему актеров Akka и deeplearning4j. Дело в том, что я должен всегда обнаруживать одни и те же пятна или обрезать изображение. Я думал о создании нового актера для каждого кадрирования изображения, в каждом кадре. Дело в том, что, насколько я понимаю, создание новой модели для каждого создания актера не является жизнеспособным, но наличие экземпляра модели и передача каждому актеру также не годятся. Должен ли я иметь пул экземпляров? Я немного застрял с этой проблемой, так как это первый раз, когда я пробую deeplearning4j. Раньше я бы использовал python REST API, но я думаю, что это решение должно работать лучше.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 12 июля 2018

возможно, вы могли бы взглянуть на библиотеку monix, в ней есть асинхронные задачи, пакетные операции, отказоустойчивые примитивы и т. Д.

0 голосов
/ 13 июля 2018

В будущем, просто обратите внимание: вы можете использовать параллелизм для многопоточного обслуживания из коробки. https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/src/main/java/org/deeplearning4j/examples/inference/ParallelInferenceExample.java

Одна из проблем с приведенными выше ответами заключается в том, что она не учитывает внутреннее состояние моделей при выполнении активаций. ParallelInference также учитывает как пакетный, так и последовательный вывод. Это важно, когда вы используете gpus, например. Здесь мы также разрешаем многопоточный вывод.

0 голосов
/ 29 июня 2018
  1. Нет необходимости создавать новый актер для каждого кадрирования изображения. Просто сохраните пул актеров, которые просят главный узел дать им больше изображений для классификации, как только они закончат с предыдущим изображением. Я также предлагаю проверить, действительно ли он что-то покупает по сравнению с обычными параллельными коллекциями (что-то вроде images.par.map(model.classify) уже может выполнить эту работу; он сам позаботится о пуле потоков).
  2. Нет необходимости создавать новую модель для каждого актера. Классификация не изменяет модель, поэтому вы можете просто поделиться одной и той же моделью между всеми участниками. Это похоже на 8 байтов на каждого субъекта для ссылки на объект модели, поэтому незначительно.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...