- PVSM.RU - https://www.pvsm.ru -
Большие данные и их анализ играют важнейшую роль в современном мире, где повсеместно используются сети и электронные устройства. Идет непрерывное объединение возможностей больших данных, аналитики и машинного/глубинного обучения. В декабре 2016 года мы создали BigDL [1] — распределенную библиотеку глубинного обучения с открытым исходным кодом для Apache Spark [2]. Цель создания этой библиотеки — объединение сообщества глубинного обучения и сообщества больших данных. Далее в этой статье приводится описание недавних усовершенствований в выпуске BigDL 0.1.0 [3] (а также в предстоящем выпуске 0.1.1).
Python является одним из наиболее широко используемых языков в сообществе больших данных и интеллектуального анализа данных. В BigDL реализована полная поддержка API-интерфейсов Python [4] (используется Python 2.7) на основе PySpark [5] с выпуска 0.1.0. Благодаря этому пользователи могут использовать модели глубинного обучения в BigDL вместе с существующими библиотеками Python (например, NumPy [6] и Pandas [7]), которые автоматически запускаются в распределенной архитектуре для обработки больших объектов данных в кластерах Hadoop*/Spark. Например, можно создать модель LeNet-5 [8], классическую сверточную нейросеть, с помощью API-интерфейсов Python BigDL следующим образом [9].
def build_model(class_num):
model = Sequential()
model.add(Reshape([1, 28, 28]))
model.add(SpatialConvolution(1, 6, 5, 5).set_name('conv1'))
model.add(Tanh())
model.add(SpatialMaxPooling(2, 2, 2, 2).set_name('pool1'))
model.add(Tanh())
model.add(SpatialConvolution(6, 12, 5, 5).set_name('conv2'))
model.add(SpatialMaxPooling(2, 2, 2, 2).set_name('pool2'))
model.add(Reshape([12 * 4 * 4]))
model.add(Linear(12 * 4 * 4, 100).set_name('fc1'))
model.add(Tanh())
model.add(Linear(100, class_num).set_name('score'))
model.add(LogSoftMax())
return model
Кроме того, мы продолжаем развивать поддержку Python в BigDL; в предстоящем выпуске BigDL 0.1.1 будет добавлена поддержка Python 3.5 [10], а пользователи получат возможность автоматически развертывать индивидуальные зависимые компоненты Python в кластерах YARN [11].
Благодаря полной поддержке API-интерфейсов Python в BigDL специалисты по исследованиям и анализу данных могут работать с данными, применяя мощные «записные книжки» (например, Jupyter Notebook [12]) с распределенной архитектурой ко всему кластеру, сочетая библиотеки Python, Spark SQL [13]/DataFrames [14] и MLlib [15], модели глубинного обучения в BigDL, а также интерактивные средства визуализации. Например, учебное руководство по Jupyter Notebook [16], входящее в состав BigDL 0.1.0, демонстрирует возможность оценки результата предсказания для модели классификации текста (используя точность и матрицу ошибок [17]) следующим образом.
predictions = trained_model.predict(val_rdd).collect()
def map_predict_label(l):
return np.array(l).argmax()
def map_groundtruth_label(l):
return l[0] - 1
y_pred = np.array([ map_predict_label(s) for s in predictions])
y_true = np.array([map_groundtruth_label(s.label) for s in val_rdd.collect()])
acc = accuracy_score(y_true, y_pred)
print "The prediction accuracy is %.2f%%"%(acc*100)
cm = confusion_matrix(y_true, y_pred)
cm.shape
df_cm = pd.DataFrame(cm)
plt.figure(figsize = (10,8))
sn.heatmap(df_cm, annot=True,fmt='d');
TensorBoard [18] — это пакет веб-приложений для анализа и понимания структуры работы и графов программы глубинного обучения. В BigDL 0.1.0 реализована поддержка визуализации [19] с помощью TensorBoard (а также встроенных в «записные книжки» библиотек построения графиков, таких как Matplotlib [20]). Можно настроить программу BigDL так, чтобы она формировала сводную информацию для обучения и/или проверки, как показано ниже (с помощью API-интерфейсов Python).
optimizer = Optimizer(...)
...
log_dir = 'mylogdir'
app_name = 'myapp'
train_summary = TrainSummary(log_dir=log_dir, app_name=app_name)
val_summary = ValidationSummary(log_dir=log_dir, app_name=app_name)
optimizer.set_train_summary(train_summary)
optimizer.set_val_summary(val_summary)
...
trainedModel = optimizer.optimize()
После запуска программы BigDL сохраняются данные о ходе ее работы и результаты ее проверки. После этого можно использовать TensorBoard для визуализации поведения программы BigDL, включая кривые Потери и Пропускная способность на вкладке СКАЛЯРНЫЕ ВЕЛИЧИНЫ (как показано ниже).
Также можно использовать TensorBoard для отображения значений весов, смещения, gradientWeights и gradientBias на вкладках РАСПРЕДЕЛЕНИЕ и ГИСТОГРАММЫ (как показано ниже).
Рекуррентные нейросети, то есть нейронные сети с обратными связями (RNN) представляют собой мощные модели для анализа речи, текста, временных последовательностей, данных датчиков и т. п. В выпуске BigDL 0.1.0 реализована всесторонняя поддержка RNN, в том числе различные варианты долгой краткосрочной памяти [21] (LSTM), например управляемые рекуррентные единицы (GRU), LSTM с соединениями передачи состояния и вывод в рекуррентных нейросетях [22]. Например, можно создать простую модель LSTM (с помощью API Python) следующим образом [23].
model = Sequential()
model.add(Recurrent()
.add(LSTM(embedding_dim, 128)))
model.add(Select(2, -1))
model.add(Linear(128, 100))
model.add(Linear(100, class_num))
За последние годы мы стали свидетелями крупных достижений в области глубинного обучения. Сообщество глубинного обучения постоянно совершенствует доступные технологии, а благодаря BigDL они становятся более доступными и удобными в использовании для исследователей и инженеров в области интеллектуального анализа данных (эти специалисты не обязаны быть также и экспертами в области глубинного обучения). Мы продолжаем работать над дальнейшим усовершенствованием BigDL после выпуска 0.1 (например, будут добавлены поддержка чтения и записи моделей TensorFlow [24], реализация сверточных нейронных сетей (CNN) для трехмерных изображений [25], рекурсивных сетей и пр.), поэтому пользователи больших данных смогут пользоваться привычными инструментами и инфраструктурой, создавая аналитические приложения на основе алгоритмов глубинного обучения.
Автор: saul
Источник [26]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/263302
Ссылки в тексте:
[1] BigDL: https://github.com/intel-analytics/BigDL
[2] Apache Spark: http://spark.apache.org/
[3] BigDL 0.1.0: https://github.com/intel-analytics/BigDL/tree/v0.1.0
[4] полная поддержка API-интерфейсов Python: https://github.com/intel-analytics/BigDL/wiki/Python-Support
[5] PySpark: http://spark.apache.org/docs/latest/api/python/pyspark.html
[6] NumPy: http://www.numpy.org/
[7] Pandas: http://pandas.pydata.org/
[8] LeNet-5: http://yann.lecun.com/exdb/lenet/
[9] следующим образом: https://raw.githubusercontent.com/intel-analytics/BigDL/v0.1.0/pyspark/dl/models/lenet/lenet5.py
[10] Python 3.5: https://github.com/intel-analytics/BigDL/pull/832
[11] развертывать индивидуальные зависимые компоненты Python в кластерах YARN: https://github.com/intel-analytics/BigDL/pull/706
[12] Jupyter Notebook: http://jupyter.org/
[13] Spark SQL: http://spark.apache.org/sql/
[14] DataFrames: http://spark.apache.org/docs/latest/sql-programming-guide.html
[15] MLlib: http://spark.apache.org/mllib/
[16] учебное руководство по Jupyter Notebook: https://github.com/intel-analytics/BigDL/tree/branch-0.1/pyspark/dl/example/tutorial/simple_text_classification
[17] матрицу ошибок: https://en.wikipedia.org/wiki/Confusion_matrix
[18] TensorBoard: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tensorboard/README.md
[19] поддержка визуализации: https://github.com/intel-analytics/BigDL/wiki/Visualization-with-TensorBoard
[20] Matplotlib: https://matplotlib.org/
[21] долгой краткосрочной памяти: https://en.wikipedia.org/wiki/Long_short-term_memory
[22] вывод в рекуррентных нейросетях: https://arxiv.org/abs/1512.05287
[23] следующим образом: https://github.com/intel-analytics/BigDL/blob/v0.1.0/pyspark/dl/models/textclassifier/textclassifier.py
[24] чтения и записи моделей TensorFlow: https://github.com/intel-analytics/BigDL/pull/800
[25] реализация сверточных нейронных сетей (CNN) для трехмерных изображений: https://github.com/intel-analytics/BigDL/pull/773
[26] Источник: https://habrahabr.ru/post/337056/
Нажмите здесь для печати.