Machine learning – от модели PyTorch до Kubeflow в облаке для BigData. Евгений Сергеевич Штольц

Читать онлайн.



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

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 содержащим Jupiter Notebook. Notebook содержит в себе возможность не просто писать код с комментариями в консольном виде, а оформлять его в виде документа. Испробовать возможности Notebook можно в учебном плейбуке https://colab.research.google.com/notebooks/welcome.ipynb, такие как оформление текста на языке разметки MD с формулами на языке раметки TEX, запуск скриптов на языке Python, вывод результатов их работы в текстовом виде и в виде графиков используя стандартную библиотеку Python: NumPy(НамПай), matplotlib.pyplot. Сам colab предоставляет графическую карту Tesla K80 на 12 часов за раз (на сессию) бесплатно. Она поддерживает различные фреймворки глубокого машинного обучения, в том числе, Keras, TenserFlow и Pytorch.

      Попробуем. Перейдём по ссылке 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

      !wget https://www.python.org/static/img/python-logo.png

      import 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.],

      [