Обучение глубоких сетей является интенсивным в вычислительном отношении; однако нейронные сети по своей сути являются параллельными алгоритмами. Обычно можно ускорить обучение сверточных нейронных сетей, распределяя обучение параллельно между многоядерными центральными процессорами, высокопроизводительными графическими процессорами и кластерами с несколькими центральными процессорами и графическими процессорами. Для использования графический процессор или параллельных опций требуется Parallel Computing Toolbox™.
Совет
Поддержка графический процессор автоматическая, если у вас есть Parallel Computing Toolbox. По умолчанию, trainNetwork
при наличии функция использует графический процессор.
Если у вас есть доступ к машине с несколькими графическими процессорами, то просто укажите опцию обучения 'ExecutionEnvironment','multi-gpu'
.
Вам не нужно несколько компьютеров, чтобы решить проблемы, используя наборы данных, слишком большие, чтобы помещаться в памяти. Вы можете использовать augmentedImageDatastore
функция для работы с пакетами данных, не нуждаясь в кластере машин. Для получения примера смотрите Train Сеть с дополненными изображениями. Однако, если у вас есть доступный кластер, может быть полезно перенести код в репозиторий данных, а не перемещать большие объемы данных.
Оборудование глубокого обучения и Факторов памяти | Рекомендации | Требуемые продукты |
---|---|---|
Данные слишком большие, чтобы помещаться в памяти | Чтобы импортировать данные из коллекций изображений, которые являются слишком большими, чтобы помещаться в памяти, используйте augmentedImageDatastore функция. Эта функция предназначена для чтения пакетов изображений для более быстрой обработки в приложениях машинного обучения и компьютерного зрения. | MATLAB® Deep Learning Toolbox™ |
ЦЕНТРАЛЬНЫЙ ПРОЦЕССОР | Если у вас нет подходящего графический процессор, то можно обучаться на центральный процессор вместо этого. По умолчанию, trainNetwork функция использует центральный процессор, если нет доступного графического процессора. | MATLAB Deep Learning Toolbox |
ГРАФИЧЕСКИЙ ПРОЦЕССОР | По умолчанию, trainNetwork при наличии функция использует графический процессор. Требуется поддерживаемый графический процессор. Для получения информации о поддерживаемых устройствах смотрите Поддержку GPU by Release (Parallel Computing Toolbox). Проверьте свой графический процессор используя gpuDevice . Задайте окружение выполнения, используя trainingOptions функция. | MATLAB Deep Learning Toolbox Parallel Computing Toolbox |
Параллельно на локальной машине с использованием нескольких графических процессоров или центральных процессоров | Используйте преимущества нескольких рабочих процессов, задавая окружение выполнения с trainingOptions функция. Если у вас на машине более одного графического процессора, задайте 'multi-gpu' . В противном случае задайте 'parallel' . | MATLAB Deep Learning Toolbox Parallel Computing Toolbox |
Параллельно в кластере или в облаке | Масштабируйте, чтобы использовать рабочие места в кластерах или в облаке, чтобы ускорить глубокое обучение расчетов. Использовать trainingOptions и задайте 'parallel' для использования вычислительного кластера. Для получения дополнительной информации смотрите Глубокое Обучение в Облаке. | MATLAB Deep Learning Toolbox Parallel Computing Toolbox MATLAB Parallel Server™ |
Совет
Дополнительные сведения см. в разделе Шкале глубокого обучения параллельно и в облаке.
Когда вы обучаете сеть, используя trainNetwork
function, или когда вы используете функции предсказания или валидации с DAGNetwork
и SeriesNetwork
объекты, программное обеспечение выполняет эти расчеты с помощью арифметики с одной точностью и плавающей точкой. Функции для обучения, предсказания и валидации включают trainNetwork
, predict
, classify
, и activations
. Программа использует арифметику с одной точностью, когда вы обучаете сети, используя как центральные процессоры, так и графические процессоры.
Поскольку одинарная точность и двойная точность эффективности графических процессоров могут существенно различаться, важно знать, в каких точных расчетах выполняются. Если вы используете только графический процессор для глубокого обучения, то одноточная эффективность является одной из важнейших характеристик графический процессор. Если вы также используете графический процессор для других расчетов, использующих Parallel Computing Toolbox, то важна высокая двойная точность эффективности. Это связано с тем, что многие функции в MATLAB по умолчанию используют арифметику двойной точности. Для получения дополнительной информации см. Раздел «Повышение эффективности с помощью вычислений одной точности» (Parallel Computing Toolbox).
MATLAB поддерживает обучение одной сети с использованием нескольких графических процессоров параллельно. Это может быть достигнуто с помощью нескольких графических процессоров на локальном компьютере или в кластере или облаке с работниками с графическими процессорами. Чтобы ускорить обучение с использованием нескольких графических процессоров, попробуйте увеличить размер мини-пакета и скорость обучения.
Включите обучение с мультиграфическим процессором на локальном компьютере путем установки 'ExecutionEnvironment'
опция для 'multi-gpu'
с trainingOptions
функция.
В кластере или облаке установите 'ExecutionEnvironment'
опция для 'parallel'
с trainingOptions
функция.
Сверточные нейронные сети обычно обучаются итеративно, используя пакеты изображений. Это делается, потому что весь набор данных слишком велик, чтобы помещаться в память графический процессор. Для оптимальной эффективности можно экспериментировать с MiniBatchSize
опция, которая задается с помощью trainingOptions
функция.
Оптимальный размер пакета зависит от вашей точной сети, набора данных и оборудования графический процессор. При обучении с использованием нескольких графических процессоров каждый пакет изображений распределяется между графическими процессорами. Это эффективно увеличивает общую доступную память графический процессор, позволяя увеличить размер пакета. Поскольку это улучшает значимость каждого пакета, можно увеличить скорость обучения. Хорошим общим руководством является увеличение скорости обучения пропорционально увеличению размера пакета. В зависимости от вашего приложения, больший размер пакета и темп обучения могут ускорить обучение без снижения точности, до некоторого предела.
Использование нескольких графических процессоров может значительно ускорить обучение. Чтобы решить, ожидаете ли вы, что мультиграфический процессор обучение обеспечит эффективности усиление, примите во внимание следующие факторы:
Сколько времени длится итерация на каждом графическом процессоре? Если каждая итерация графический процессор является короткой, то могут доминировать добавленные накладные расходы на связь между графические процессоры. Попробуйте увеличить расчеты за итерацию при помощи большего размера пакета.
Все ли графические процессоры на одной машине? Связь между графическими процессорами на различных машинах вводит значительную задержку связи. Вы можете уменьшить это, если у вас есть подходящее оборудование. Для получения дополнительной информации см. раздел Расширенная поддержка быстрой мультиузел графическими процессорами.
Дополнительные сведения см. в разделах Шкалах глубокого обучения параллельно и Облако и Выбор конкретных графических процессоров для обучения.
Если у вас нет подходящего графического процессора, доступного для более быстрого обучения сверточной нейронной сети, можно попробовать применения глубокого обучения с несколькими высокопроизводительными графическими процессорами в облаке, например на Amazon® Эластичное Вычислительное Облако (Amazon EC2®). MATLAB Deep Learning Toolbox приводит примеры, которые показывают, как выполнить глубокое обучение в облаке с помощью EC2 Amazon с P2 или P3 образцами машины и данными, хранящимися в облаке.
Можно ускорить обучение, используя несколько графических процессоров на одной машине или в кластере машин с несколькими графическими процессорами. Обучите одну сеть с помощью нескольких графических процессоров или обучите несколько моделей сразу на тех же данных.
Для получения дополнительной информации о полном рабочем процессе облака смотрите Глубокое обучение в параллели и в облаке.
При параллельном обучении сети можно извлекать и предварительно обрабатывать данные в фоновом режиме. Чтобы выполнить отправку данных в фоновом режиме, включите отправку фона в мини-пакетном datastore, используемом trainNetwork
. Можно использовать встроенный мини-пакетный datastore, такой как augmentedImageDatastore
, denoisingImageDatastore
(Image Processing Toolbox), или pixelLabelImageDatastore
(Computer Vision Toolbox). Можно также использовать пользовательский мини-пакет datastore с включенной фоновой диспетчеризацией. Дополнительные сведения о создании пользовательских мини-пакетных хранилищ данных см. в разделе Разработка пользовательского мини-пакетного Datastore.
Чтобы включить отправку фона, установите DispatchInBackground
свойство datastore, для true
.
Можно точно настроить расчеты и диспетчеризации данных между работниками, задав 'WorkerLoad'
Аргумент пары "имя-значение" из trainingOptions
. Для дополнительных опций можно попробовать изменить количество работников параллельного пула. Для получения дополнительной информации смотрите Укажите свои параллельные настройки (Parallel Computing Toolbox)
trainingOptions
| trainNetwork