MXNet написан на C ++ и при необходимости использует параллелизм. Вам редко нужно явно обрабатывать его вручную вручную. Вы можете использовать параллелизм для операций передачи данных под управлением процессора (num_workers
в глюоне DataLoaders
) или при отправке полезных нагрузок логического вывода в массив контекстов, таких как здесь , но при обращении к одному контексту (например,ваш единственный графический процессор), я не думаю, что все будет хорошо, так как кажется, что CUDA борется с многопроцессорностью (см. здесь или здесь )
Что я рекомендуювместо этого - максимально использовать собственный параллелизм MXNet и CUDA, используя:
- ЦП: используя мультипроцессор
DataLoader
(через num_workers
) в режиме обучения - GPU: отправка пакетов в GPU. В режиме обучения это вполне нормально, в режиме логического вывода это означает асинхронную обработку запросов в очереди и отправку пакетов в графический процессор. Современные серверы DL, такие как MMS , позволяют это.