Система обучения нейронных сетей на FPGA (Field-Programmable Gate Array) работает на основе матрицы программируемых логических элементов, соединённых между собой через конфигурируемые маршруты. dzen.ru Каждый элемент может выполнять простые логические операции, а их совокупность формирует сложные вычислительные цепочки. dzen.ru
Процесс обучения включает несколько этапов: habr.com
- Загрузка данных. habr.com Данные для обучения загружаются, например, по Ethernet 10G и поступают в обработку по одному пикселю за такт. habr.com
- Прямое распространение. habr.com Входной поток подаётся в блок прямого распространения и параллельно записывается в FIFO (DDR3/BRAM) для вычислений при обратном распространении. habr.com
- Пулинг и функция активации. habr.com После пулинга и функции активации поток, если возможно, уплотняется и передаётся в следующий слой. habr.com
- Обратное распространение. habr.com Происходит синхронизация с вычислениями прямого прохода для совместного использования весовых коэффициентов. habr.com
- Обновление весов. habr.com После подачи всех данных одного «батча» прямой поток останавливается до завершения обратного распространения и обновления весов. habr.com
FPGA позволяют настраивать вычислительные пути прямо на кристалле, что делает их привлекательными для работы с рекуррентными нейронными сетями. dzen.ru Например, чипы могут быть настроены так, чтобы каждое состояние сети соответствовало определённой части аппаратной реализации. dzen.ru