SlideShare ist ein Scribd-Unternehmen logo
1 von 21
CUDA & CAFFE 
Использование CUDA и CAFFE для создания глубоких 
нейронных сетей 
Babii A.S. - apratster@gmail.com
Why we need to learn methods of ‘deep learning’
Deep learning for image recognition tasks 
Image classification 
Object detection and localization 
Object class segmentation
Problems related with dataset size 
What if we have a large dataset?
What about types of parallel computing? 
GPU - specific CPU - specific
Optimization table for matrix multiplication[1] 
1. Saman Amarasinghe, Matrix Multiply, a case study – 2008.
If no parallelization, but we want to make it faster 
1. Use profiler(gprof, valgrind, … ) 
2. Does application using BLAS? 
3. Use vector or matrix form of data representation and include BLAS 
4. SIMD – if no other way… use it for maximum perfomance on 1 core
Бабий А.С. - apratster@gmail.com 
How to make it parallel?. 
1. KML, PBLAS, ATLAS 
2. Когда CPU Multicore эффективнее GPU ? 
3. NVIDIA CUDA. 
4. OpenCL
CUDA
Deep convolutional neural networks, CAFFE implementation 
ConvNet configuration by Krizhevsky [2]
Deep convolutionnetwork example 
Convolution Neural Network Architecture Model[3] 
Feature maps
Convolution & pooling 
http://www.son gho.ca/dsp/convolution/convolution.html
Набор примитивов для сетей Deep Learning 
1. Сверточный слой 
2. Слой фильтрации 
3. Обобщающий слой 
Интеграция с Caffe 
24-core Intel E5-2679v2 CPU @ 2.4GHz vs K40, NVIDIA
Feature maps 
Feature map [4] 
Накладываем друг на друга 
но, с «коэффициентом 
прозрачности»
Библиотеки для работы с deep learning 
http://deeplearning.net/software_links/ 
Caffe – deep convolutional neural network framework 
http://caffe.berkeleyvision.org 
ConvNetJS – JS based deep learning framework 
http://cs.stanford.edu/people/karpathy/convnetjs/ 
DL4J - Java based deep learning framework 
http://deeplearning4j.org/ 
Theano – CPU/GPU symbolic expression compiler in python 
http://deeplearning.net/software/theano 
Cuda-Convnet – A fast C++/CUDA implementation of convolutional 
(or more generally, feed-forward) neural networks 
http://code.google.com/p/cuda-convnet/ 
Torch – provides a Matlab-like environment for state-of-the-art machine 
learning algorithms in lua 
http://www.torch.ch/ 
Accord.NET - C# deep learning 
http://accord-framework.net/, 
tutorial:http://whoopsidaisies.hatenablog.com/entry/2014/08/19/015420
Работа с CAFFE 
Начинать лучше с утилит командной строки: 
build/tools 
Наиболее доступный пример на базе MNIST – распознавания рукописных цифр 
http://caffe.berkeleyvision.org/gathered/examples/mnist.html 
cd $CAFFE_ROOT 
./data/mnist/get_mnist.sh 
./examples/mnist/create_mnist.sh 
cd $CAFFE_ROOT 
./examples/mnist/train_lenet.sh
В каком виде подаются входные и выходные данные? 
- databases (LevelDB or LMDB) 
- directly from memory 
- from files on disk in HDF5 
- common image formats. 
http://symas.com/mdb/ http://leveldb.org/ 
Input data 
Output data 
-snapshot file with mode 
-snapshot file with solver state 
Solver? Yes, we can continue breacked training from snapshot
Виды слоев CAFFE 
Caffe stores and communicates data in 4-dimensional arrays called blobs 
name: "LogReg" 
layers { 
name: "mnist" 
type: DATA 
top: "data" 
top: "label" 
data_param { 
source: "input_leveldb" 
batch_size: 64 
} 
} layers { 
name: "ip" 
type: INNER_PRODUCT 
bottom: "data" 
top: "ip" 
inner_product_param { 
num_output: 2 
} 
} layers { 
name: "loss" 
type: SOFTMAX_LOSS 
bottom: "ip" 
bottom: "label" 
top: "loss" 
}
Виды слоев 
Convolutional layer 
Required field 
num_output (c_o): the number of filters 
kernel_size (or kernel_h and kernel_w): specifies height and width of each filter 
Pooling layer 
Required 
kernel_size (or kernel_h and kernel_w): specifies height and width of each filter 
Loss Layers, Activation / Neuron Layers, Data Layers, Common Layers 
How to configure? 
Ready to use models in folder: examples
Решение своей задачи 
1. Заботимся о корректности, размере и покрытии выборок. 
2. Компилируем Caffe с поддержкой GPU. 
3. Конфигурируем сеть, отталкиваясь от примеров. 
4. Тренируем, смотрим на результат тестовой выборки. 
5. Если результат не устраивает- настраиваем и тренируем до получения 
достаточного результата 
6. Для использования натренированной сети для одиночных 
Изображений необходимо написать конфиг и воспользоваться 
C++, Python или Mathlab.
References 
1. L. Deng and D. Yu, "Deep Learning: Methods and Applications“ 
http://research.microsoft.com/pubs/209355/DeepLearning-NowPublishing-Vol7- 
SIG-039.pdf 
2. ConvNet configuration by Krizhevsky et al 
http://books.nips.cc/papers/files/nips25/NIPS2012_0534.pdf 
3. Efficient mapping of the training of Convolutional Neural Networks to a CUDA-based 
cluster http://parse.ele.tue.nl/education/cluster2 
4. http://www.cs.toronto.edu/~ranzato/research/projects.html 
5. http://www.amolgmahurkar.com/classifySTLusingCNN.html 
Спасибо за внимание !

Weitere ähnliche Inhalte

Ähnlich wie CUDA & CAFFE

Дмитрий Кручинин - Сравнительный анализ библиотек глубинного обучения
Дмитрий Кручинин - Сравнительный анализ библиотек глубинного обученияДмитрий Кручинин - Сравнительный анализ библиотек глубинного обучения
Дмитрий Кручинин - Сравнительный анализ библиотек глубинного обученияAIST
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeIosif Itkin
 
CUDA Course 2010 at MSU
CUDA Course 2010 at MSUCUDA Course 2010 at MSU
CUDA Course 2010 at MSUlarhat
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Mikhail Kurnosov
 
Сервисы Azure для научных исследований
Сервисы Azure для научных исследованийСервисы Azure для научных исследований
Сервисы Azure для научных исследованийMicrosoft
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoFDmitry Buzdin
 
Linkmeup v076(2019-06).3
Linkmeup v076(2019-06).3Linkmeup v076(2019-06).3
Linkmeup v076(2019-06).3eucariot
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data MATLAB
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...Alex V. Petrov
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаMikhail Chinkov
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2Technopark
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к AnsibleIvan Grishaev
 
Пути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияПути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияAndrew Babiy
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Mikhail Kurnosov
 
Кластер БГУИР: расширенные возможности
Кластер БГУИР: расширенные возможностиКластер БГУИР: расширенные возможности
Кластер БГУИР: расширенные возможностиAlexey Demidchuk
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusCisco Russia
 
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)Ontico
 

Ähnlich wie CUDA & CAFFE (20)

Дмитрий Кручинин - Сравнительный анализ библиотек глубинного обучения
Дмитрий Кручинин - Сравнительный анализ библиотек глубинного обученияДмитрий Кручинин - Сравнительный анализ библиотек глубинного обучения
Дмитрий Кручинин - Сравнительный анализ библиотек глубинного обучения
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
CUDA Course 2010 at MSU
CUDA Course 2010 at MSUCUDA Course 2010 at MSU
CUDA Course 2010 at MSU
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
 
Сервисы Azure для научных исследований
Сервисы Azure для научных исследованийСервисы Azure для научных исследований
Сервисы Azure для научных исследований
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
Efficiency vvv
Efficiency vvvEfficiency vvv
Efficiency vvv
 
Linkmeup v076(2019-06).3
Linkmeup v076(2019-06).3Linkmeup v076(2019-06).3
Linkmeup v076(2019-06).3
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
 
IT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
Пути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияПути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обучения
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
 
Кластер БГУИР: расширенные возможности
Кластер БГУИР: расширенные возможностиКластер БГУИР: расширенные возможности
Кластер БГУИР: расширенные возможности
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco Nexus
 
DC/OS more than PAAS
DC/OS more than PAASDC/OS more than PAAS
DC/OS more than PAAS
 
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)DC/OS – больше чем PAAS, Никита Борзых (Express 42)
DC/OS – больше чем PAAS, Никита Борзых (Express 42)
 

CUDA & CAFFE

  • 1. CUDA & CAFFE Использование CUDA и CAFFE для создания глубоких нейронных сетей Babii A.S. - apratster@gmail.com
  • 2. Why we need to learn methods of ‘deep learning’
  • 3. Deep learning for image recognition tasks Image classification Object detection and localization Object class segmentation
  • 4. Problems related with dataset size What if we have a large dataset?
  • 5. What about types of parallel computing? GPU - specific CPU - specific
  • 6. Optimization table for matrix multiplication[1] 1. Saman Amarasinghe, Matrix Multiply, a case study – 2008.
  • 7. If no parallelization, but we want to make it faster 1. Use profiler(gprof, valgrind, … ) 2. Does application using BLAS? 3. Use vector or matrix form of data representation and include BLAS 4. SIMD – if no other way… use it for maximum perfomance on 1 core
  • 8. Бабий А.С. - apratster@gmail.com How to make it parallel?. 1. KML, PBLAS, ATLAS 2. Когда CPU Multicore эффективнее GPU ? 3. NVIDIA CUDA. 4. OpenCL
  • 10. Deep convolutional neural networks, CAFFE implementation ConvNet configuration by Krizhevsky [2]
  • 11. Deep convolutionnetwork example Convolution Neural Network Architecture Model[3] Feature maps
  • 12. Convolution & pooling http://www.son gho.ca/dsp/convolution/convolution.html
  • 13. Набор примитивов для сетей Deep Learning 1. Сверточный слой 2. Слой фильтрации 3. Обобщающий слой Интеграция с Caffe 24-core Intel E5-2679v2 CPU @ 2.4GHz vs K40, NVIDIA
  • 14. Feature maps Feature map [4] Накладываем друг на друга но, с «коэффициентом прозрачности»
  • 15. Библиотеки для работы с deep learning http://deeplearning.net/software_links/ Caffe – deep convolutional neural network framework http://caffe.berkeleyvision.org ConvNetJS – JS based deep learning framework http://cs.stanford.edu/people/karpathy/convnetjs/ DL4J - Java based deep learning framework http://deeplearning4j.org/ Theano – CPU/GPU symbolic expression compiler in python http://deeplearning.net/software/theano Cuda-Convnet – A fast C++/CUDA implementation of convolutional (or more generally, feed-forward) neural networks http://code.google.com/p/cuda-convnet/ Torch – provides a Matlab-like environment for state-of-the-art machine learning algorithms in lua http://www.torch.ch/ Accord.NET - C# deep learning http://accord-framework.net/, tutorial:http://whoopsidaisies.hatenablog.com/entry/2014/08/19/015420
  • 16. Работа с CAFFE Начинать лучше с утилит командной строки: build/tools Наиболее доступный пример на базе MNIST – распознавания рукописных цифр http://caffe.berkeleyvision.org/gathered/examples/mnist.html cd $CAFFE_ROOT ./data/mnist/get_mnist.sh ./examples/mnist/create_mnist.sh cd $CAFFE_ROOT ./examples/mnist/train_lenet.sh
  • 17. В каком виде подаются входные и выходные данные? - databases (LevelDB or LMDB) - directly from memory - from files on disk in HDF5 - common image formats. http://symas.com/mdb/ http://leveldb.org/ Input data Output data -snapshot file with mode -snapshot file with solver state Solver? Yes, we can continue breacked training from snapshot
  • 18. Виды слоев CAFFE Caffe stores and communicates data in 4-dimensional arrays called blobs name: "LogReg" layers { name: "mnist" type: DATA top: "data" top: "label" data_param { source: "input_leveldb" batch_size: 64 } } layers { name: "ip" type: INNER_PRODUCT bottom: "data" top: "ip" inner_product_param { num_output: 2 } } layers { name: "loss" type: SOFTMAX_LOSS bottom: "ip" bottom: "label" top: "loss" }
  • 19. Виды слоев Convolutional layer Required field num_output (c_o): the number of filters kernel_size (or kernel_h and kernel_w): specifies height and width of each filter Pooling layer Required kernel_size (or kernel_h and kernel_w): specifies height and width of each filter Loss Layers, Activation / Neuron Layers, Data Layers, Common Layers How to configure? Ready to use models in folder: examples
  • 20. Решение своей задачи 1. Заботимся о корректности, размере и покрытии выборок. 2. Компилируем Caffe с поддержкой GPU. 3. Конфигурируем сеть, отталкиваясь от примеров. 4. Тренируем, смотрим на результат тестовой выборки. 5. Если результат не устраивает- настраиваем и тренируем до получения достаточного результата 6. Для использования натренированной сети для одиночных Изображений необходимо написать конфиг и воспользоваться C++, Python или Mathlab.
  • 21. References 1. L. Deng and D. Yu, "Deep Learning: Methods and Applications“ http://research.microsoft.com/pubs/209355/DeepLearning-NowPublishing-Vol7- SIG-039.pdf 2. ConvNet configuration by Krizhevsky et al http://books.nips.cc/papers/files/nips25/NIPS2012_0534.pdf 3. Efficient mapping of the training of Convolutional Neural Networks to a CUDA-based cluster http://parse.ele.tue.nl/education/cluster2 4. http://www.cs.toronto.edu/~ranzato/research/projects.html 5. http://www.amolgmahurkar.com/classifySTLusingCNN.html Спасибо за внимание !