Евгений Сергеевич Штольц

Machine learning – от модели PyTorch до Kubeflow в облаке для BigData


Скачать книгу

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

      Ускорение обучения

      Эти операции используются при свёртках, которые берут на себя более 99% времени и поэтому имеются специализированные средства по их оптимизации. Сами вычисления производятся не на Python, а на C – Python лишь вызывает API низкоуровневых математический библиотек. Так как такие вычисление легко распараллеливаются, то вместо процессоров общего назначения (CPU) применяются процессора предназначенные для параллельной обработки изображений (GPU). Так, если у ПК в процессоре от 2 до 8 ядер, а у сервера от 10 до 20 ядер, то в GPU это сотни или тысячи узкоспециализированных под обработку матриц и векторов. Наиболее популярен стандарт группы драйверов, предоставляющих доступ к GPU NVidia имеет название CUDA (Computed Unified Device Architecture). Для большей оптимизации в процессорах для ML используются специальные инструкции, которые задействуется в специальных библиотеках. Например, процессоры Intel Xeon SCalate в восьмибитными числами и специальными конвейерами, которые активируются при использовании OpenVINO, что даёт прирост в скорости до 3,7 раза для PyTorch. Для ускорения классического ML (классификации) XGboost дащий прирост до 15 раз. Пока нам достаточно маломощного CPU.

      Другим типом специализированных процессором является перепрограммируемый процессор. Так в 2018 году Intel представила процессор со встроенным FPGA (field-programmable gate array) модулем, разработанной купленной компанией Altera, в своём Intel Xeon SP-6138P. Другим крупным производителем FPGA является Xilinx, создавшую Altera. Идея программируемых логических блоков (программируемые пользователем вентильные матрицы) не нова и появилась задолго до универсальных процессоров. Смысл заключается не в выполнении программы на универсальном процессоре, который кажды раз выполняет алгоритм для решения поставленной задачи, а в создании логической архитектуры процессора под эту задачу, что существенно быстрее. Для того, чтобы каждый раз не заказывает на производстве разработку и производство индивидуальной микросхемы, используются универсальные платы, в которых программным способом создаётся нужная архитектура. Во время своего создания ана стала заменой микросборок, когда на производстве вручную работники расставляли в чип его элементы. Архатектура достигается разрушением ненужных связей во время "прошивания", которые построены по принципу сетки, в узлах которых располагаются необходимые элементы. Популярным примером является Static RAM, которая используется в BIOS компьютера, прототипирование ASIC перед началом массового их производства или созадния нужного контроллера, например создание в "домашних" условиях контроллера Enthernet. Для программирования архитектру контроллера с нейронной сетью предоставляются FPGA контроллеры теми же Intel и Xilinx по фреймворками Caffe и TensorFlow. Поэкспериментировать можно в облаке Amazon. Перспективным направлением является использование нейронных сетей edge computing, то есть на конечных устройствах, таких как модули беспилотных автомобилей, роботов, датчиков и видеокамерах.

      Другим вариантом вычисления является использование облачных специализированных сервисов (ML as Service). Пример, эти сервисы представила большая тройка облачных провайдеров: Microsoft Azure Machine Learcning