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

* Keras является высокоуровневой настройкой, обеспечивающей больший уровень абстракции для TensorFlow, Theano или CNTK. Хороший вариант для обучения. К примеру, он позволяет не указывать размерность слоёв, вычисляя её сам, позволяя разработчику сосредоточиться на слоях архитектуры. Обычно используется поверх TenserFlow. Код на нём поддерживается Microsoft CNTK.

Так же имеются более специализированные фреймворки:

* Apache MXNet (Amazon) и высокоуровневая надстройка для него Gluon. MXNet – фреймворк с акцентом на масштабирование, поддерживает интеграцию с Hadoop и Cassandra. Поддерживается C++, Python, R, Julia, JavaScript, Scala, Go и Perl.

* Microsoft CNTK имеет интеграции с Python, R, C#, благодаря тому что большая часть кода написана на С++. То, что вся основа написана на С++, не говорит о том, что CNTK будет обучать модель на C++, а TenserFlow на Python (который медленный), так как TenserFlow строит графы и уже его выполнение осуществляется на C++. Отличается CNTK от Google TenserFlow и тем, что он изначально был разработан для работы в кластерах Azure с множеством графических процессоров, но сейчас ситуация выравнивается и TenserFlow поддерживает кластера.

* Caffe2 – фреймворк для мобильных сред.

* Sonnet – надстройка DeepMind поверх TensorFlow для обучения сверх глубоких нейронных сетей.

* DL4J (Deep Learning for Java) – фреймворк с акцентом на Java Enterprise Edition. Высока поддержка BigData на Java: Hadoop и Spark.

Со скоростью доступности новых предобученных моделей ситуация разнится и пока лидирует PyTorch. По поддержке сред, в частности публичных облаков, лучше у Фреймворках, продвигаемых вендерами этих облаков, так лучше поддержка TensorFlow лучше в Google Cloud, MXNet – в AWS, CNTK – в Microsoft Azure, D4LJ – в Android, Core ML – в iOS. По языкам общая поддержка в Python практически у всех, в частности TensorFlow поддерживает JavaScript, C++, Java, Go, C# и Julia.

Многие фреймворки поддерживают визуализацию TeserBodrd. Он представляет собой комплексный Web интерфейс многоуровневой визуализации состояния и процесса обучения и его отладки. Для подключения нужно указать путь к модели "tenserboard –logdir=$PATH_MODEL" и открыть localhost:6006. Управление интерфейсом основано на навигации по графу логических блоков и открытию интересующих блоков, для последующего повторения процесса.

Для экспериментов нам понадобится язык программирования и библиотека. Часто в качестве языка берут простой язык с низким порогом входа, такой как Python. Могут быть также и другие языки общего назначения, такие как JavaScript или специализированные, такие как язык R. Мы возьмём Python. Для того чтобы не ставить язык и библиотеки, воспользуемся бесплатным сервисом colab.research.google.com/notebooks/intro.ipynb, содержащим Jupyter Notebook. Notebook содержит в себе возможность не просто писать код с комментариями в консольном виде, а оформлять его в виде документа. Испробовать возможности Notebook можно в учебном плейбукетакие как оформление текста на языке разметки MD, с формулами на языке разметки TEX, запуск скриптов на языке Python, вывод результатов их работы в текстовом виде и в виде графиков, используя стандартную библиотеку Python: NumPy(НамПай), matplotlib.pyplot. Сам Сolab представляет графическую карту Tesla K80 на 12 часов за раз (на сессию) бесплатно. Она поддерживает различные фреймворки глубокого машинного обучения, в том числе, Keras, TenserFlow и PyTorch. Цена же составляет GPU в Google Cloud:

Tesla T4: 1GPU 16GB GDDR6 0.35$/час Tesla P4: 1GPU 8GB GDDR5 0.60$/час Tesla V100: 1GPU 16GB HBM2 2.48$/час Tesla P100: 1GPU 16GB HBM2 1.46$/час

Попробуем. Перейдём по ссылке colab.research.google.com и нажмём кнопку "создать блокнот". У нас появится пустой Notebook. Можно ввести выражение:

10**3 / 2 + 3

и нажав на воспроизведение – получим результат 503.0. Можно вывести график параболы, нажав кнопку "+Код" в введя в новую ячейку код:

def F(x): return x*x import numpy as np import matplotlib.pyplot as plt x = np.linspace(–5, 5, 100) y = list(map(F, x)) plt.plot(x, y) plt.ylabel("Y") plt.xlabel("X")

Или выведя ещё и изображение:

import os !wgetimport PIL img = PIL.Image.open("python–logo.png") img

Популярные фреймворки:

* Caffe, Caffe2, CNTK, Kaldi, DL4J, Keras – набор модулей для конструирования;

* TensorFlow, Theano, MXNet – программирование графа;

* Torch и PyTorch – прописать основные параметры, а граф будет построен автоматически.

Рассмотрим работу библиотеки PyTorch (NumPy+CUDA+Autograd) из–за её простоты. Посмотрим на операции с тензорами – многомерными массивами. Подключим библиотеку и объявим два тензора: нажмём +Code, введём код в ячейку и нажмём выполнить:

import torch a = torch.FloatTensor([ [1, 2, 3], [5, 6, 7], [8, 9, 10] ]) b = torch.FloatTensor([ [–1, –2, –3], [–10, –20, –30], [–100, –200, –300] ])

Поэлементные операции, такие как "+", "–", "*", "/" над двумя матрицами одинаковых габаритов производят операции с соответствующими их элементами:

a + b tensor([ [ 0., 0., 0.], [ –5., –14., –23.], [ –92., –191., –290.] ])

Перейти на страницу:

Похожие книги

Искусство программирования для Unix
Искусство программирования для Unix

Книги, подобные этой, редко появляются на прилавках магазинов, поскольку за ними стоит многолетний опыт работы их авторов. Здесь описывается хороший стиль Unix- программирования, многообразие доступных языков программирования, их преимущества и недостатки, различные IPC-методики и инструменты разработки. Автор анализирует философию Unix, культуру и основные традиции сформированного вокруг нее сообщества. В книге объясняются наилучшие практические приемы проектирования и разработки программ в Unix. Вместе с тем описанные в книге модели и принципы будут во многом полезны и Windows-разработчикам. Особо рассматриваются стили пользовательских интерфейсов Unix-программ и инструменты для их разработки. Отдельная глава посвящена описанию принципов и инструментов для создания хорошей документации.Книга будет полезной для широкой категории пользователей ПК и программистов.

Эрик Стивен Реймонд

ОС и Сети / Программирование / Прочая компьютерная литература / Книги по IT