SAT probléma kielégíthetőségének vizsgálata. masszív parallel. mesterséges neurális hálózat alkalmazásával



Hasonló dokumentumok
OpenCL - The open standard for parallel programming of heterogeneous systems

Look-ahead alapú SAT solver-ek párhuzamosíthatóságának vizsgálata

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Nemlineáris optimalizálási problémák párhuzamos megoldása grafikus processzorok felhasználásával

Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs rendszerek Tanszék. Neurális hálók. Pataki Béla

Flynn féle osztályozás Single Isntruction Multiple Instruction Single Data SISD SIMD Multiple Data MISD MIMD

Készítette: Trosztel Mátyás Konzulens: Hajós Gergely

Intelligens Rendszerek Gyakorlata. Neurális hálózatok I.

Szimuláció RICHARD M. KARP és AVI WIGDERSON. (Készítette: Domoszlai László)

ALGORITMUSOK ÉS BONYOLULTSÁGELMÉLET Matematika MSc hallgatók számára

Videókártya - CUDA kompatibilitás: CUDA weboldal: Példaterületek:

Egyszerű programozási tételek

Párhuzamos és Grid rendszerek

Google Summer of Code OpenCL image support for the r600g driver

Neurális hálózatok bemutató

Keresés képi jellemzők alapján. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

Mit látnak a robotok? Bányai Mihály Matemorfózis, 2017.

Deníciók és tételek a beugró vizsgára

Számítógépek felépítése

I. LABOR -Mesterséges neuron

Bevezetés a programozásba

Programozás II. előadás

definiálunk. Legyen egy konfiguráció, ahol és. A következő három esetet különböztetjük meg. 1. Ha, akkor 2. Ha, akkor, ahol, ha, és egyébként.

Gépi tanulás a gyakorlatban SVM

Készítette: Nagy Tibor István

GPU-k a gravitációs hullám kutatásban

egy szisztolikus példa

Számítógépes képelemzés 7. előadás. Dr. Balázs Péter SZTE, Képfeldolgozás és Számítógépes Grafika Tanszék

ELEMI PROGRAMOZÁSI TÉTELEK

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Magas szintű optimalizálás

Függvények növekedési korlátainak jellemzése

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

Matematikai alapok. Dr. Iványi Péter

Programozás alapjai (ANSI C)

Intelligens Rendszerek Elmélete

ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA)

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Dr. habil. Maróti György

Az MTA Cloud a tudományos alkalmazások támogatására. Kacsuk Péter MTA SZTAKI

Algoritmusok bonyolultsága

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Számítógép és programozás 2

Tanulás az idegrendszerben. Structure Dynamics Implementation Algorithm Computation - Function

Tanulás tanuló gépek tanuló algoritmusok mesterséges neurális hálózatok

Bevezetés. Többszálú, többmagos architektúrák és programozásuk Óbudai Egyetem, Neumann János Informatikai Kar

Előadó: Dr. Oniga István DIGITÁLIS TECHNIKA 3

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Tartalomjegyzék. Tartalomjegyzék... 3 Előszó... 9

Rőczei Gábor Szeged, Networkshop

Regresszió. Csorba János. Nagyméretű adathalmazok kezelése március 31.

Statisztikai eljárások a mintafelismerésben és a gépi tanulásban

Számítógép architektúra

Modern irányzatok a bonyolultságelméletben: éles korlátok és dichotómia tételek

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 12.

Ítéletkalkulus. 1. Bevezet. 2. Ítéletkalkulus

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

TARTALOMJEGYZÉK. TARTALOMJEGYZÉK...vii ELŐSZÓ... xiii BEVEZETÉS A lágy számításról A könyv célkitűzése és felépítése...

CARE. Biztonságos. otthonok idős embereknek CARE. Biztonságos otthonok idős embereknek Dr. Vajda Ferenc Egyetemi docens

"A tízezer mérföldes utazás is egyetlen lépéssel kezdődik."

III.6. MAP REDUCE ELVŰ ELOSZTOTT FELDOLGOZÁSI ALGORITMUSOK ÉS TESZTKÖRNYEZET KIDOLGOZÁSA ADATBÁNYÁSZATI FELADATOK VÉGREHAJTÁSÁHOZ

OpenCL alapú eszközök verifikációja és validációja a gyakorlatban

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Logika es sz am ıt aselm elet I. r esz Logika Hatodik el oad as 1/33

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Mesterséges neurális hálózatok II. - A felügyelt tanítás paraméterei, gyorsító megoldásai - Versengéses tanulás

Tanulás az idegrendszerben. Structure Dynamics Implementation Algorithm Computation - Function

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Intelligens Rendszerek Elmélete. Versengéses és önszervező tanulás neurális hálózatokban

Teljesítmény Mérés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Teljesítmény Mérés / 20

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Osztott jáva programok automatikus tesztelése. Matkó Imre BBTE, Kolozsvár Informatika szak, IV. Év 2007 január

Véges állapotú gépek (FSM) tervezése

SAT reprezentációk vezeték nélküli szenzorhálózatokhoz

C++ programozási nyelv

Aradi Bernadett. 2017/18 ősz. TensorFlow konvolúciós hálózatokhoz 2017/18 ősz 1 / 11

Hibadetektáló rendszer légtechnikai berendezések számára

Bonyolultságelmélet. Monday 26 th September, 2016, 18:28

Algoritmizálás és adatmodellezés tanítása 6. előadás

Bonyolultságelmélet. Monday 26 th September, 2016, 18:27. Bonyolultságelmélet

Az NIIF új szuperszámítógép infrastruktúrája Új lehetőségek a kutatói hálózatban

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Dr. Schuster György február / 32

Rendszermodernizációs lehetőségek a HANA-val Poszeidon. Groma István PhD SDA DMS Zrt.

Bánhelyi Balázs, Csendes Tibor, Palatinus Endre és Lévai. Szeptember 28-30, 2011, Balatonöszöd, Hungary

Relációs algebra lekérdezések optimalizációja. Adatbázisok használata

A logikai következmény

Eichhardt Iván GPGPU óra anyagai

Feladat. Bemenő adatok. Bemenő adatfájlok elvárt formája. Berezvai Dániel 1. beadandó/4. feladat április 13. Például (bemenet/pelda.

Csima Judit április 9.

Vezérlési szerkezetek

12. előadás. Egyenletrendszerek, mátrixok. Dr. Szörényi Miklós, Dr. Kallós Gábor

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

MATLAB alapismeretek I.

Objektumorientált paradigma és programfejlesztés Bevezető

GROVER-algoritmus. Sinkovicz Péter. ELTE, MSc II dec.15.

OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1

Kereső algoritmusok a diszkrét optimalizálás problémájához

Átírás:

SAT probléma kielégíthetőségének vizsgálata masszív parallel mesterséges neurális hálózat alkalmazásával Tajti Tibor, Bíró Csaba, Kusper Gábor {gkusper, birocs, tajti}@aries.ektf.hu Eszterházy Károly Főiskola Matematikai és Informatikai Intézet Absztrakt A mesterséges neurális hálózatok számos esetben bizonyítják alkalmazhatóságukat osztályozási problémák megoldására. Kutatásunk célja, hogy a SAT problémák vizsgálatára való alkalmasságukat vizsgáljuk, ezzel a SAT problémák területén és a mesterséges neurális hálózatok területén is tapasztalatokat szerezve. Mivel a nehezebb SAT problémák megoldásához nyilvánvalóan nagyobb intelligencia szükséges, és ennek teljesítményigénye is nagy, ezért a kutatás során futtatandó algoritmusok párhuzamosítása célszerű. Folyamatban levő kutatásunk tehát a párhuzamosítás adta lehetőségek tesztelése is egyben. A párhuzamosítás lehetősége különböző architektúrákon és szinteken is adódik, az SMP gépektől a GPU-k alkalmazásán keresztül a HPC ig, beleértve a masszív parallel architektúrákat is.

SAT probléma A logikai kifejezések kielégíthetőségének vizsgálata, kielégíthetőség esetén pedig egy megoldás vagy az összes megoldás megtalálása fontos és nehéz feladat. A 0. rendű logikai kifejezések egy könnyen vizsgálható formája a konjunktív normálforma (KNF, angolul CNF). A KNF forma azt jelenti, hogy logikai változók pozitív vagy negált alakjainak logikai VAGY művelettel összekapcsolt klózait logikai ÉS művelettel kötjük össze. Példa: ( a c ) ( b c ) ( a b c ) A SAT probléma NP-teljes, azaz nem ismert polinomiális idejű algoritmus, amely megoldaná. Mivel a SAT probléma fontos többek között a logika, a mesterséges intelligencia és az áramkör tervezés területén, ezért nagy erőkkel keresik, hogyan lehet ezt a problémát kezelni. Két megközelítés létezik: olyan SAT megoldó algoritmusok fejlesztése, amelyek valószínűleg polinomiális időben lefutnak, olyan speciális SAT részosztályok keresése, amelyek polinomiális időben megoldhatók. Segítséget adhat még a megoldás sejtése. SAT ill. UNSAT sejtés esetén más solver-ekkel próbálkozhatunk. Neurális hálózat alkalmazása Mivel osztályozási feladattal állunk szemben, ezért felmerülhet a mesterséges neurális hálózatok alkalmazása a becslésre. Amellett, hogy ez a mesterséges intelligencia technika alkalmazható lehet a SAT problémamegoldásban, a vizsgálatok tapasztalatot jelentenek mind a SAT, mind pedig a neurális hálózat területeken. Számos neurális hálózat technika ismert. Például: Perceptron Error Backpropagation Support Vector Machine Kohonen Self Organizing Map A neurális hálózatok fő tulajdonságai közé tartozik, hogy képes mintaadatokból tanulni. Ez nagyon hasznos olyankor, amikor nem tudjuk vagy nem akarjuk algoritmizálni egy feladat megoldását.

A neurális hálózatok egyik fő alkalmazási területe az osztályozás, azaz neurális hálózatot betaníthatunk annak eldöntésére, hogy egy adott bemenet beletartozik-e egy osztályba, vagy sem. Jelen esetben a kielégíthetőséget vizsgáljuk, másként azt, hogy egy probléma SAT vagy UNSAT. Működhet-e a neurális hálózat által az osztályozás egy olyan problémakörre, amely NP-teljes? Elvileg igen, sok minta input adatunk van, osztályozzuk őket, minden probléma vizsgálandó, hogy SAT -e. Példa feladatok, CNF fájl minták: Példa 1 változós SAT: p cnf 1 2-1 0-1 0 Példa 1 változós UNSAT: p cnf 1 2 1 0-1 0 Példa kicsit nagyobb CNF-re: p cnf 50 218-37 -17-44 0-35 19-2 0-10 -34-11 0 30 28-40 0 15 28-12 0-36 -8-48 0 13-28 14 0-14 17 25 0 218 klózig

Teljesítmény igény A különböző nehézségű, méretű SAT problémák vizsgálatához készítettünk egy SAT probléma generátort. Ez azért szükséges, mert a SAT problémák nehézsége változó, emiatt a neurális hálózat performanciaigénye is. Nézzünk egy példát: 3SAT probléma 50 literállal 218 klózzal Input: 50 x 218 = 10900 Esetleg 3 x 218 = 654 A sok bemenethez még több minta kell. Sok-sok minta... Tapasztalat: Nagy feladathoz nagyon sok minta kell, egyébként csak a mintát tanulja meg jól, a további adatokra pedig nem lesz hatékony. Párhuzamosítás Egy-egy tanulási kísérlet másodpercektől vagy percektől órákig terjed, ezért a feladat elvégzéséhez: nagy kapacitásra és párhuzamosításra van szükség. Architektúrák : HPC SMP MPP Vektorprocesszor Fürt vastag, vékony GPU FPGA A technikai fejlődés szolgáltatja a technikai lehetőségeket a párhuzamos futtatáshoz. Kérdés, hogy milyen párhuzamosítási lehetőségeket találunk a neurális hálózat algoritmusok esetén. Szerencsére több szinten is vannak lehetőségeink: A neurális hálózat algoritmus összetett algoritmus, sok adatot dolgoz fel, és vannak független részfeladatok, amelyek párhuzamosan végrehajthatók (külön szálon számolni az egyes neuronokra eső részt, hiba visszaterjesztésnél független ciklusok). Mivel sok műveletet vektorokon végez, ezért nagymértékű gyorsítás érhető el a vektorműveletek

párhuzamos végrehajtásával vektor processzoron vagy GPU-n. A fentieken túl nem elvetendő a sok kutatási programfuttatás olyan szervezése, hogy egymástól teljesen vagy nagy mértékben független különálló programokat futtatunk párhuzamosan. A lehetőségek közti döntést komoly megfontolásnak kell megelőznie. A párhuzamosan végrehajtandó feladatok csak akkor járnak jó eredménnyel, ha a szinkronizáció nem okoz több veszteséget, mint amennyit a párhuzamosításon nyerünk. Sokszor tapasztaltuk, hogy klaszteren futtatott párhuzamos program futási ideje több volt, mint ugyanannak a programnak a nem párhuzamos változatáé egy gépen. Nézzünk példát a vektorműveletek párhuzamosítására és a szinkronizáció költségére. Tesztünket GPU-n futtatjuk, az eredményt összevetjük a CPU-n való nem párhuzamos futás időeredményével. A szinkronizáció ára GPU kernel vektorok összeadására (python opencl használatával): kernel = """ kernel void vector_add( global float* A, global float* B, global float* C) { // each kernel instance has a different global id int i = get_global_id(0); C[i] = A[i] + B[i]; } """ Mérhető időtartamhoz 1 millió elemű vektorokat adunk össze, és ezt 1000-szer futtatjuk. Itt nincs számottevő szinkronizáció. Ennek köszönhetően a GPU-n nagy hatékonysággal fut a program. Futási idők: GPU -n 0.0254 s CPU -n 16.2 s Most nézzünk példát olyan műveletre, ahol már jelentősebb szinkronizáció szükséges. A vektorok belső szorzata esetén a páronkénti szorzat gyors elkészítése után még szükség van egy időigényes szinkronizációra, mégpedig a szorzatok összegzésére. A python opencl-nek az ilyen szinkronizációhoz kész kernel függvénye van: dot = ReductionKernel( ctx, dtype_out=numpy.float32, neutral="0", reduce_expr="a+b", map_expr="x[i]*y[i]",

*y" A mért eredmények: GPU -n 3.48 s CPU -n 18.0 s ); arguments=" global const float *x, global const float Összegzés Mint az előző példából láthattuk, még egy számítógépen, sőt egy GPU-n belül is jelentős mértékű a párhuzamosítás költsége, megközelítheti, sőt túl is lépheti a párhuzamosítás adta nyereséget. MPP és klaszter architektúra esetén ez fokozottan így van. Ilyen esetekben cél tehát a párhuzamosítás hatékonyságának növelése, minél kisebb szinkronizációs költség elérése. Kutatásaink során a leghatékonyabb párhuzamosítást a legegyszerűbb technikával értük el, mégpedig a független feladatok párhuzamos futtatásával. Források Kusper Gábor, Kovásznai Gergely, Bíró Csaba: A SAT probléma különböző reprezentációinak vizsgálata oktatási szempontból, AgriaMédia 2008 konferencia, 2008. Andreas Klöckner: GPU Programming in Python with PyOpenCL and PyCUDA, 2012