Оценить:
 Рейтинг: 0

Машинное обучение на практике – от модели PyTorch до Kubeflow в облаке для BigData

Год написания книги
2020
Теги
<< 1 2 3
На страницу:
3 из 3
Настройки чтения
Размер шрифта
Высота строк
Поля

[ -5., -6., -7.],

[ -8., -9., -10.]])

a.abs()

tensor([[ 1., 2., 3.],

[ 5., 6., 7.],

[ 8., 9., 10.]])

Также имеются операции свёрки, такие как sum, min, max, которые на входе дают сумму всех элементов, самый маленький или самый большой элемент матрицы:

a.sum()

tensor(51.)

a.min()

tensor(1.)

a.max()

tensor(10.)

Но, нам больше интересны будут постолбцевые операции (операция будет произодиться над каждым столбцом):

a.sum(0)

tensor([14., 17., 20.])

a.min(0)

torch.return_types.min(values=tensor([1., 2., 3.]), indices=tensor([0, 0, 0]))

a.max(0)

torch.return_types.max(values=tensor([ 8., 9., 10.]), indices=tensor([2, 2, 2]))

Как мы помним нейронная сеть состоит зи слоёв, слой из нейронов, а нейрон содержит на входе связи с весами в виде простых чисел. Вес задаётся обычным числом, тогда входящие связи в нейрон можно описать последовательностью чисел – вектором (одномерным массивом или списком), длина которого и есть количество связей. Так как сеть полносвязная, то все нейроны этого слоя связаны со предыдущим, а следовательно демонстрирующие их вектора имеют тоже одинаковую длину, создавая список равных по длине векторов – матрицу. Это удобное и компактное представление слоя, оптимизированное для использования на компьютере. На выходе нейрона имеется функция активации (сигмойда или, 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 (Azure ML), AWS Machine Learning и Google Cloud Datalab в 2015 году. Azure ML предлагает визуальный конструктор для создания из блоков и связей нейронных сетей, и исходя из заявления о стратегии по демократизации входа (понижении порога входа) в сферу будет двигаться в этой направлении. Google представляет подход, предлагая среду для запуска у себя в облаке, так и локально в Docker как NoteBook. Интерфейс максимально близок к Colab и Jupyter, и умеет работать с Jupyter Notebook.

Аmazone представляет набор сервисов на трёх уровнях, начиная от IaaS (сервера с графическими процессорами AWS EC2 P3, выводы Elastic Interface, сервера с центральными процессорами EC2 C5, EC2 F1, EDGE AWS Greengrass), через PaaS уровень (Amazone SageMaker позволяет выбрать фреймворк и тому подобное для того, чтобы сосредоточится на разработке) и SaaS (AWS AI предоствляет заранее подготовленные сети для частых случаев использования по мнению Amazon, таких как Amazon Rekognition – узнавание пользователя по фото, Amazon Textract – извлечение текстовых и табличных данных из сканов документов, Amazon Transcribe – распознавание речи, Amazon Translate – перевод текстов, Amazon Polly – озвучивание текста, Amazon Comprehend – анализ текта и извлечение смысла из него, Lex – поддерживание диалога, Amazon Personalize – создание рекомендаций, Amazon Forecast – прогнозирование).


Вы ознакомились с фрагментом книги.
Приобретайте полный текст книги у нашего партнера:
<< 1 2 3
На страницу:
3 из 3

Другие электронные книги автора Евгений Сергеевич Штольц