IGOS Nusantara dan Deep Learning

Dari IGNwiki
Langsung ke: navigasi, cari

Petunjuk berikut berisi tahapan-tahapan untuk memasang tools untuk Deep Learning, yaitu:

  • Theano
  • TensorFlow
  • Keras

Syarat sudah memasang driver NVIDIA dan CUDA:

Tiga perangkat di atas dipakai untuk Deep Learning.

Theano

#
dnf install python-devel python-nose python-setuptools 
dnf install gcc gcc-gfortran gcc-c++ blas-devel lapack-devel atlas-devel
dnf install python-wheel python-devel swig zlib-devel
easy_install pip
pip install numpy==1.6.1
pip install scipy==0.10.1
pip install Theano

.theanorc

Theano perlu dikonfigurasi agar memakai GPU. Pada home direktori buat berkas .theanorc

$
nano ~/.theanorc

Isinya:

[global]
device = gpu
floatX = float32

[nvcc]
fastmath = True

Theano coba1

Gunakan fungsi di Theano untuk menampilkan properti yang dipakai. Di awalnya harus set agar memakai gcc 4.9.2

$
scl enable devtoolset-3 bash

Terkait berkas ~/.theanorc yang sudah dibuat, maka dapat langsung dijalankan dengan:

$
optirun python3 -c "import theano; print(theano.sandbox.cuda.device_properties(0))"

Atau:

$
export THEANO_FLAGS='cuda.root=/usr/local/cuda,device=gpu,floatX=float32'
optirun python3 -c "import theano; print(theano.sandbox.cuda.device_properties(0))"

Theano coba2

Pada bagian ini dilakukan iterasi sebanyak 1000 kali, kemudian iterasi dijalankan memakai CPU dan GPU. Nama skrip: theano-gpu.py

$
nano theano-gpu.py

Isinya:

import os
import shutil

# destfile = "/home/igos/.theanorc"
# open(destfile, 'a').close()	
# shutil.copyfile(".theanorc", destfile)

from theano import function, config, shared, sandbox
import theano.tensor as T
import numpy
import time

vlen = 10 * 30 * 768  # 10 x #cores x # threads per core
iters = 1000

rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], T.exp(x))
print f.maker.fgraph.toposort()
t0 = time.time()
for i in xrange(iters):
    r = f()
t1 = time.time()
print 'Looping %d times took' % iters, t1 - t0, 'seconds'
print 'Result is', r
if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
   print 'Used the cpu'
else:
   print 'Used the gpu'

Jalankan:

$
echo "Pakai CPU"
python theano-gpu.py

Hasilnya:

Looping 1000 times took 33.8045990467 seconds
Result is [ 1.23178029  1.61879337  1.52278066 ...,  2.20771813  2.29967761  1.62323284]
Used the cpu
$
echo "Pakai GPU"
optirun python theano-gpu.py

Hasilnya:

Using gpu device 0: GeForce 820M (CNMeM is disabled, cuDNN not available)
[GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]
Looping 1000 times took 1.13621020317 seconds

Catatan:

  • Dijalankan memakai CPU iterasi 1000 kali akan selesai sekitar 33 detik
  • Memakai GPU iterasi 1000 kali akan selesai 1.1 detik

TensorFlow

# 
pip install tensorflow

Keras

pip install keras

Update

Setelah beberapa lama, lalu memerlukan update untuk komponen yang ada, lakukan:

#
pip install --upgrade pip
pip install --upgrade numpy
pip install --upgrade virtualenv
pip install --upgrade theano