Previous Entry Share Next Entry
ML наступает
ens_a_se
Пока я не могу найти времени на изучение даже основ Machine Learning, уже вышло 4 фреймворка для Deep Learning: TensorFlow( Google ), Torch ( Facebook ), Chainer, Theano, CNTK (Microsoft).
И они работают на GPU - доклады на GTC2016.
Правда не знаю как слайды скачать. Прикольно бы взять какую-нибудь популярную задачу и решить 4мя фреймворками, а потом сравнить перфоманс в плане вычислений и результата.

  • 1
Я и не знал, что вообще Baidu существует.
В связи с этим меня интересует - эти фреймворки достаточно зрелые, чтобы люди могли им пользотваться не зная матана? Скажем вот программируют с использованием баз данных, но не каждый знает про B+Tree.

Baidu в Китае большой. И у них есть в долине офис, там делают исследования. Я про них стал больше знать когда они переманили Andrew Ng, он теперь у них руководит исследованиями по machine learning. Сейчас они делают self-driving cars, и хорошо продвинулись в распознавании речи.

Насчет программирования под фрэймворки - да, можно. Я под Keras программирую. На голом Theano без матана не уедешь, потому что Theano - это фрэймворк для матана, там надо самому писать все эти операции с тензорами. Всё что Theano делает полезного - это предоставляет язык для этих операций, и умеет выичсления оптимизировать и скомпилировать для выполнения на GPU. Keras же содержит в себе разные блоки матана необьходимые для построения нейронных сетей. Код на керасе моет выглядеть например как-то так:

print('Build model...')
model = Sequential()
model.add(Embedding(max_features, 128, input_length=maxlen, dropout=0.2))
model.add(LSTM(128, dropout_W=0.2, dropout_U=0.2)) # try using a GRU instead, for fun
model.add(Dense(1))
model.add(Activation('sigmoid'))

# try using different optimizers and different optimizer configs
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])

print('Train...')
print(X_train.shape)
print(y_train.shape)
model.fit(X_train, y_train, batch_size=batch_size, nb_epoch=15,
validation_data=(X_test, y_test))
score, acc = model.evaluate(X_test, y_test,
batch_size=batch_size)
print('Test score:', score)
print('Test accuracy:', acc)


Он позволяет из готовых блоков построить архитектуру сети, задать гиперпараметры, обучить, протестить.

TensorFlow - что-то похожее на Keras. Чуть попроще интерфейс, похуже с быстродействием. Но оно от гугла, поэтому должно быть больше production-ready, и больше заточено на scalability.

Я думаю - для начала - написать небольшую статьйку такого рода. Сравнение per node 2-3х различных фреймворков на одной и тоже задаче на NVIDIA Tesla K20X, Intel CPU Haswell, Intel Xeon и в декабре могу еще на NVIDIA k80X. Посмотреть насколько эфеективны различные тулы. Потом посмотреть на скалабилити (1-96 GPU, 1-500 CPU).
Единственное что меня беспокоит - какова метрика для сравнивнение результата работы различных фреймворков.
Такую статейку можно заслать на конференцию по Highe Performance Computations - SC16 или SC17

Из того что я видел - метрикой часто выбирают время обучения какой-нибудь популярной нейронной сети, например AlexNet, GoogleNet, LeNet, etc. Или просто сколько времени требуется для обучения сети до какого-то заданного уровня accuracy, или, как вот здесь https://github.com/soumith/convnet-benchmarks - сколько времени требуется на один forward pass и один backward pass.

Спасибо, изучу бенчмарки существующие. Если у тебя появятся какие-то бенчмарк идеи - дай знать. Как только руки дойдут - поиграю на различном железе и дам тебе знать. Может будут какие-то комменты. У меня тут пока что есть доступ к топовому железу и почти не ограниченное количество нодов с супер быстрым интерконнектом. Поэтому интересно поиграть.

  • 1
?

Log in