VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV MIKROELEKTRONIKY Ing. Marek Bohrn PERSPEKTIVNÍ OBVODOVÉ STRUKTURY PRO MODULÁRNÍ NEURONOVÉ SÍTĚ PROMISING CIRCUIT STRUCTURES FOR MODULAR NEURAL NETWORKS ZKRÁCENÁ VERZE DIZERTAČNÍ PRÁCE Obor Mikroelektronika a technologie Školitel doc. Ing. Lkáš Fjcik, Ph.D. Rok obhajoby 2014
Klíčová slova Umělé neronové sítě, dopředné neronové sítě, modlární neronové sítě, FPGA, ASIC. Keywords Artificial neral networks, feedforward neral networks, modlar neral networks, FPGA, ASIC. Místo ložení práce Vysoké čení technické v Brně Faklta elektrotechniky a komnikačních technologií Ústav mikroelektroniky Technická 3058/10, 616 00 Brno
OBSAH 1. ÚVOD...1 2. SOUČASNÝ STAV ŘEŠENÉ PROBLEMATIKY...2 2.1 ANALOGOVÁ ŘEŠENÍ...2 2.2 DIGITÁLNÍ ŘEŠENÍ...2 2.2.1 OBVODY FPGA...2 2.2.2 NEURO-PROCESORY...3 2.2.3 PROCESORY CUDA...3 2.2.4 DALŠÍ ARCHITEKTURY...4 2.2.5 SHRNUTÍ...4 3. CÍLE DIZERTACE...5 4. VLASTNÍ ŘEŠENÍ...6 4.1 ÚVODNÍ EXPERIMENT...6 4.2 UNIVERZÁLNÍ OBVODOVÁ ARCHITEKTURA...7 4.2.1 KONCEPCE NAVRŽENÉ OBVODOVÉ STRUKTURY...7 4.2.2 VLASTNOSTI A MOŽNOSTI NAVRŽENÉ STRUKTURY...11 4.2.3 MAPOVÁNÍ NEURONOVÉ SÍTĚ DO OBVODU...12 4.3 OBVODOVÁ IMPLEMENTACE NAVRŽENÉ ARCHITEKTURY...14 4.3.1 NÁVRH OBVODOVÉHO CELKU...14 4.3.2 PŘEPÍNAČ SBĚRNIC...15 4.3.3 VÝPOČETNÍ BLOK...17 4.3.4 BLOK AKTIVAČNÍ FUNKCE...18 4.3.5 DALŠÍ DÍLČÍ BLOKY...20 4.3.6 SHRNUTÍ...21 4.4 EXPERIMENTÁLNÍ ČÁST...22 4.4.1 OVĚŘENÍ FUNKČNOSTI NAVRŽENÉHO OBVODU...22 4.4.2 APLIKACE S VYUŽITÍM NAVRŽENÉ STRUKTURY...23 5. SHRNUTÍ DOSAŽENÝCH VÝSLEDKŮ...24 6. ZÁVĚR...25 LITERATURA...26 CURRICULIM VITAE...27 ABSTRAKT...29
1. ÚVOD Umělé neronové sítě jso systémy pro zpracování informací a signálů, jejichž fnkce a strktra je inspirována biologickými neronovými sítěmi. Vyžívají podobné principy čení a fnkce, mají velmi dobro schopnost generalizace a díky tom nacházejí platnění v širokém spektr technických aplikací. Obecně se jedná především o modelování neznámých systémů, zpracovaní nerčitých signálů, atomatizace a řízení procesů. V obor mělých neronových sítí probíhal kromě výzkm fndamentální teorie jejich fnkce a čení i výzkm a vývoj způsobů možností efektivních implementací s vyžitím nejrůznějších hardwarových i softwarových platforem. V devadesátých letech minlého století vzniklo velké množství specializovaných obvodů rčených pro jejich čení i vybavování a orientovaných na průmyslové i vědecké aplikace. V tomto období existovaly dva hlavní směry a přístpy k implementaci mělých neronových sítí, a to analogový a digitální, zaměřený zejména na realizaci nero-procesorů. Analogový přístp v té době možňoval dosahovat vysoké pracovní frekvence a z toho vyplývající velký výpočetní výkon. Zásadní nedostatky analogových implementací se projevovaly ve velmi omezené přesnosti výpočtů, nízké rekonfigrovatelnosti výsledných obvodů a obtížném čení mělých neronových sítí. Digitální obvody v tomto období nemožňovaly pracovat s vysokými frekvencemi a obvodová realizace potřebných výpočetních bloků byla velmi náročná na ploch. Z tohoto důvod většina nero-procesorů dokázala pracovat jen s velmi malými sítěmi a velmi omezeným výpočetním výkonem, což snižovalo možnosti jejich platnění v praktických aplikacích. Žádný z těchto přístpů k realizaci mělých neronových sítí nenašel široké platnění. Proto se v další dekádě začaly vyžívat nové metody obvodových implementací mělých neronových sítí. Vzhledem k velkém technologickém pokrok v oblasti digitálních obvodů se jako základ pro hardwarové implementace mělých neronových sítí prosadily zejména procesory, digitální signálové procesory a hradlová pole. Tato práce se zaměřje na návrh koncepcí nových obvodových strktra jejich následno realizaci s vyžitím programovatelné logiky hradlových polí. Jedním z cílů předkládané práce je navrhnot novo koncepci neronové sítě tak, aby byla přenositelná a požitelná v technologiích rčených pro návrh zákaznických obvodů. V odborné literatře, jak zahraniční (např. [1], [2]), tak i domácí (např. [3], [4]), se označení mělá neronová síť často zkracje na termín neronová síť. V pblikacích zaměřených na mělé neronové sítě není zkrácené označení matocí a v text není ntné vždy explicitně rozlišovat mezi biologickými a mělými neronovými sítěmi. Proto je i v této práci v dalších kapitolách požíván pro jejich označení pojem neronová síť. 1
2. SOUČASNÝ STAV ŘEŠENÉ PROBLEMATIKY Oblast výzkm a vývoje hardwarových implementací neronových sítí je poměrně rozmanitá a v sočasnosti existje velké množství technických řešení. Tato řešení lze rozdělit na analogová a digitální. Předkládaná práce je zaměřená na digitální realizace, a proto je prezentovaný přehled sočasného stav bádání orientován především na tto oblast. Sočasné analogové implementace jso vedeny pro celení přehled sočasného stav. 2.1 ANALOGOVÁ ŘEŠENÍ Vyžití analogových implementací neronových sítí se vyskytje převážně v oblasti zpracování rychlých a vysokofrekvenčních analogových signálů v reálném čase. K jejich výhodám patří zejména velmi malá plocha, nízká energetická náročnost, vysoká pracovní frekvence a nízká doba odezvy, mezi největší nevýhody analogových implementací se naopak řadí obtížná realizace čení přímo v obvod, náročné kládání váhových koeficientů a nízká přesnost výpočtů. Výzkm v oblasti analogových obvodů pro neronové sítě, které mají váhové koeficienty loženy v tranzistorech s plovocími hradly, probíhá od konce osmdesátých let dvacátého století. Maximální velikost těchto neronových sítí byla v řádech desítek neronů a tisíců synapsí spořádaných do jedné vrstvy. Učicí algoritms byl často implementován externě, např. [5]. Sočasný výzkm v oblasti analogových implementací neronových sítí je zaměřen na zdokonalování přesnosti výpočtů.[6] Perspektivním směrem v oblasti analogových implementací neronových sítí se jeví požití nového obvodového prvk - memristor.[7] [8] 2.2 DIGITÁLNÍ ŘEŠENÍ S rozvojem digitálních technologií se rozdíl dynamických parametrů v porovnání s analogovými technologiemi postpně zmenšil. Zatímco přesnost výpočtů realizovaných v analogových obvodech je závislá na požité technologii a strktře, v případě digitálních obvodů tento problém nenastává. Digitální obvody v sočasnosti dosahjí výrazně vyšší přesnosti výpočtů. Díky tom nachází v oblasti obvodových implementací neronových sítí široké platnění. Oblast digitálních implementací neronových sítí lze rozdělit na řešení vyžívající běžně dostpné platformy (např. FPGA, DSP, CUDA) a proprietární (např. ASIC), které výrobce volně neposkytje. 2.2.1 OBVODY FPGA V sočasné době prodkované obvody FPGA obsahjí dedikované bloky pro digitální zpracování signálů, které možňjí efektivně realizovat aritmetické operace násobení a sčítání. Díky těmto blokům dosahjí obvody FPGA vysokého 2
výpočetního výkon, a proto jso dominantně vyžívány pro obvodové implementace neronových sítí. Nejlepší parametry mezi sočasnými FPGA dosahjí obvody od společnosti Xilinx. V oblasti implementací neronových sítí do obvodů FPGA se vyskytje velké množství realizovaných architektr.[9] [10] [11] [12] [13] I když v sočasnosti existjí niverzální koncepce pro realizace neronových sítí v obvodech FPGA, většina realizací je tvořena pro dano aplikaci proprietárním způsobem. Jako příklad takové niverzální architektry lze vést koncept FPNA (Field Programmable Neral Array).[14] [15] 2.2.2 NEURO-PROCESORY V devadesátých letech minlého století byly pro obvodové implementace neronových sítí často vyžívány specializované typy procesorů označované jako nero-procesory. V sočasnosti se vzhledem k dostpnosti výkonného hardware (např. FPGA, DSP, CUDA) od požívání specializovaných nero-procesorů stpje. Přesto výzkmné týmy sokromých společností v této oblasti průběžně vyvíjí nová řešení. Nicméně výstpy tohoto výzkm obvykle nejso komplexně pblikovány, zveřejňovány jso poze tiskové zprávy. Vhodným příkladem takového výzkm je realizace procesor Zeroth od společnosti Qalcomm a SyNAPSE od společnosti IBM. 2.2.3 PROCESORY CUDA Speciálním případem signálových procesorů je výpočetní architektra CUDA (Compte Unified Device Architectre) od společnosti NVIDIA Corporation, která je primárně rčena pro zpracování počítačové grafiky. Vzhledem k velkém rozšíření těchto obvodů je důležité je zmínit a nastínit jejich požití pro implementace neronových sítí. Na implementace neronových sítí do obvodů CUDA lze nahlížet jako na implementace na rozhraní software a hardware. Vyžívají hardware podobným způsobem jako výhradně obvodová řešení a dosahjí podobného výpočetního výkon [16]. Vlastní realizace, resp. popis neronové sítě, je prováděn pomocí vyšších programovacích jazyků, např. C, C++ a specializovaných jazyků možňjících popis paralelních výpočtů. Výrobce poskytje k těmto procesorům vývojové nástroje a jeden z nich (knihovna cdnn) je rčen k popis neronových sítí. V sočasnosti nejvýkonnější architektr zmiňovaných procesorů CUDA reprezentje procesor Kepler GK110 [17]. Procesor je rozdělen do dvo základních bloků, a to na řadič tok dat a distribci výpočtů a dále na 2880 výpočetních jader. Tento procesor na rozdíl od předchozích verzí procesorů CUDA implementje technologii dynamického paralelizm, která značně snižje množství přesnů dat přes vstpně-výstpní sběrnici. 3
Procesory CUDA nejso obvykle distribovány samostatně, ale poze osazené na akceleračních kartách. Dokmentace a katalogové listy k samotným procesorům nejso výrobcem zveřejněny, a proto jso možnosti jejich požití v mikroelektronických aplikacích a průmyslových systémech velmi omezené. 2.2.4 DALŠÍ ARCHITEKTURY Zajímavým příkladem architektry systém pro implementace neronových sítí je krhové procesorové pole.[18] [19] Tato realizace možňje paralelizovat výpočty způsobem distribce dat mezi dílčími procesory, které jso spojeny krhovo sběrnicí. Mezi další perspektivní architektry pro implementace neronových sítí patří obvodové realizace systolických polí. Tyto architektry jso obvykle implementovány do FPGA a zákaznických obvodů.[20] [21] [22] Obvody realizjící systolická pole možňjí s vyžitím komplexních propojovacích sběrnic velmi efektivně distribovat zpracovávaná data. 2.2.5 SHRNUTÍ V sočasné době je v oblasti digitálních obvodových implementací neronových sítí kladen důraz zejména na zlepšování následjících parametrů: Zvyšování počt výpočetních bloků. Zvyšování rychlosti obvod resp. samotných výpočtů. Snižování spotřeby energie. Značné zvýšení výpočetního výkon je možné obecně dosáhnot zvyšováním počt výpočetních bloků. Při obvodových implementacích neronových sítí to ale neplatí ve všech případech. V praktických aplikacích neronových sítí jso často vyžívány i topologie obsahjící poze několik jednotek až desítek neronů. V případech, kdy počet výpočetních bloků obvod převyšje počet neronů realizované neronové sítě, nevede zpravidla další navyšování jejich počt ke zvýšení rychlosti výpočt neronové sítě. Optimální výpočetní výkon a nejvyšší datovo propstnost je možné při obvodové implementaci neronových sítí dosáhnot přímým propojením výpočetních bloků. Takový způsob propojení je náročný na ploch obvod. Proto jso v praxi často realizována kompromisní řešení propojení výpočetních bloků vyžívající různé propojovací sběrnice (koncept FPNA, technologie dynamického paralelizm - CUDA, komplexní propojovací sběrnice systolických polí). 4
3. CÍLE DIZERTACE Pro pochopení problematiky hardwarových implementací neronových sítí bylo nezbytné prostdovat relevantní základní literatr, aktální vědecké i firemní pblikace a seznámit se s parametry vhodných hardwarových prostředků. V předkládané dizertační práci bdo výše vedené informace vyžity ke zlepšení parametrů a vyžitelnosti již existjících řešení při návrh nové obvodové strktry pro hardwarové implementace neronových sítí. Práce je cílena na vyžití obvodů FPGA a zákaznických obvodů. Hlavním cílem dizertační práce je navrhnot novo obvodovo strktr vyžitelno pro implementace neronových sítí, která bde vyžívat vylepšené dílčí bloky. Návrh obvodové strktry je založen na znalostech získaných stdiem sočasných řešení, aktálního stav bádání v obor obvodových implementací neronových sítí i doporčení a závěrů vědeckých pblikací. K dalším cílům předkládané práce patří ověření vlastností již existjících řešení, a to nejen celých systémů pro zpracování informací s vyžitím neronových sítí,ale také jejich dílčích částí. Právě v optimalizaci a novém přístp k řešení individálních bloků je velký potenciál pro zlepšení hardwarových platforem pro neronové sítě. Přínos navržené strktry bde spočívat zejména v optimalizaci vytížitelnosti výpočetních bloků. Další přínos bde ve zvýšení efektivity datových propojů, což by mělo vést k následném zlepšení výpočetního výkon v poměr k ploše potřebné pro implementaci obvod a ke spotřebované energii. Pro ověření a srovnání parametrů navržených dílčích bloků a obvodové strktry jako celk bdo vyžívány simlační nástroje a vhodný hardware, zejména obvody FPGA. Obvody FPGA jso díky své rekonfigrovatelnosti a vysokém výpočetním výkon vhodno platformo pro ověření vlastností navržených strktr. Předkládaná práce je zaměřena na optimalizaci hardware pro nasazení i v oblastech, které klado důraz především na jednodchost, účelnost a kvalit řešení [23] [24] [25] [26]. V průmyslové praxi při hromadném nasazení je výhodné vyžívat již existjící řešení, která jso optimalizována pro konkrétní aplikace, a implementovat je jako vestavěné (embedded) bloky. Řešení navržené v rámci předkládané práce se zaměří především na realizace strktr rčených pro režim provoz, resp. vybavování neronových sítí. Samotný proces čení není pro tto práci klíčový, a to hned z několika důvodů. Nevhodný průběh dočování neronových sítí může vést ke snížení celkové spolehlivosti výsledného systém. Z tohoto důvod není implementace možnosti čení neronových sítí v průmyslových aplikacích vhodná. Dalším problémem je obtížnost verifikace kvality načení neronové sítě v průběh provoz.[23] [26] Pro účely vývoje a čení neronových sítí je vhodné vyžít dedikované softwarové nástroje a následně implementovat již načeno a verifikovano neronovo síť na obvodové úrovni. 5
4. VLASTNÍ ŘEŠENÍ V rámci této práce vznikl sobor podkladů rčených k řešení některých problémů a vytvoření základních bloků potřebných pro obvodové implementace neronových sítí. [27] [28] Dále byly provedeny implementace základních architektr vycházejících z klasického přístp k obvodovým řešením neronových sítí. [29] [30] [31] Další částí práce je rozbor sočasných řešení, který složí k ověření vlastností a zjištění jejich nedostatků ve specifických případech (viz kapitola 2). Na základě rozbor sočasného stav byl dále proveden návrh a ověření vlastností základních obvodových architektr pro implementace neronových sítí [31] [32] a následně navrženo vlastní řešení odstraňjící některé nedostatky požívaných architektr [33]. 4.1 ÚVODNÍ EXPERIMENT Pro ověření vlastností klasické a často požívané architektry ([14] [34] [35]) pro implementaci neronových sítí do FPGA a ASIC byl sktečněn experiment. V rámci tohoto experiment byla provedena simlace a implementace obvod možňjícího paralelizovat provoz neronové sítě na úrovni neronů. Výsledky byly pblikovány v [31] [32]. Pro hardwarovo implementaci navržené strktry byl požit obvod FPGA řady Spartan-3 od společnosti Xilinx, konkrétně XC3S200 [36], který byl osazen na vývojové desce Spartan-3 Starter Board [37] [38]. Obvod byl navržen parametricky a do cílového FPGA byl implementován v následjící konfigraci: 10 výpočetních bloků vyžívajících vestavěné násobičky 10 paměťových bloků pro váhové koeficienty (10 240 vah) 1 blok aktivační fnkce (nipolární sigmoida λ = 1) 1 blok vyrovnávací paměti (1 024 výsledků) 1 blok řídící tok dat (stavový atomat) 18 bitová datová sběrnice Maximální pracovní frekvence obvodů FPGA řady Spartan-3 je 375 MHz. Výsledný návrh po optimalizaci pracoval s maximální frekvencí 133 Mhz. Toto snížení pracovní frekvence bylo způsobeno absencí vestavěných sčítaček v obvodech FPGA řady Spartan-3, které byly vytvořeny pomocí náhledových tablek. Maximální dosažitelný výpočetní výkon navrženého obvod byl 1,33 Giga CPS. Experimentální obvod možňje paralelizovat výpočty na úrovni neronů, resp. výpočetních bloků. Odezva testovací neronové sítě implementované do obvod je 396 hodinových cyklů (výpočty skrytých vrstev a aktivační fnkce), což při pracovní frekvenci 133 MHz možňje rozpoznat přibližně 336 000 znaků. 6
Tento experiment složil k ověření základních technik pro obvodové implementace neronových sítí a v jeho rámci byl vyřešen jeden případ implementace obvod možňjícího paralelizovat výpočty neronové sítě v režim provoz. Navržené dílčí bloky byly dále vyžity při návrh nových obvodových strktr a optimalizaci jejich obvodových implementací. 4.2 UNIVERZÁLNÍ OBVODOVÁ ARCHITEKTURA Při navrhování vlastní obvodové strktry pro implementace neronových sítí byly vyžívány informace, které jso shrnty v předchozích kapitolách. V úvod dizertační práce byl proveden teoretický rozbor problematiky obvodových implementací neronových sítí. Následně byla prozkomána sočasná obvodová řešení a sktečněn experiment s obvodovo architektro možňjící efektivní paralelizaci výpočtů neronových sítí na úrovni jednotlivých neronů. Na základě rozbor těchto poznatků byly doporčeny úpravy a optimalizace stávajících řešení a navržena obvodová architektra, která řeší některé nedostatky ostatních obvodových implementací. Koncept, vlastnosti, fnkce, možnosti a požití architektry jso popsány v kapitolách 4.2.1 až 4.2.3. 4.2.1 KONCEPCE NAVRŽENÉ OBVODOVÉ STRUKTURY Faktorem, který v mnoha případech výrazně limitje výpočetní výkon a rychlost odezvy obvodů implementjících neronové sítě, je spořádaní propojů, a to zejména v obvodech obsahjících větší množství výpočetních jader. Propojení výpočetních bloků je často řešeno jedno nebo více sběrnicemi, případně propojovacím polem. V případě propojení výpočetních bloků pomocí jedné sběrnice je možné mezi nimi přenášet jeden blok dat sočasně. Toto řešení možňje realizovat poze jedn úroveň paralelizace výpočtů na úrovni jednotlivých neronů, a to v případě, kdy je výsledek z neron v dané vrstvě přenášen do vstpů několika neronů vrstvy následjící. Během tohoto přenos je sběrnice blokována pro případné další přenosy dat mezi ostatními vrstvami, případně pro vstp dat do neronové sítě a výstp dat z neronové sítě. U řešení vyžívajících více propojovacích sběrnic je výše vedený problém spojený s blokováním přenosů dat částečně potlačen, avšak za cen vyšší náročnosti na implementaci propojů a řízení tok dat v systém. Problém s datovo propstností sběrnic je možné zcela odstranit implementací propojovacího pole. Nicméně takové řešení by přeneslo tento problém na propojovací pole, jehož náročnost na spotřebovano ploch by se zvýšila a vyžadovalo by poměrně složito řídicí logik. Předkládaná koncepce řešení je cílena na optimalizaci propojů mezi výpočetními bloky a navržená strktra implementje nové nekonvenční sběrnicové spořádání. 7
Tato strktra obsahje dvě propojovací sběrnice. První z nich složí k přenos dat do vstpů výpočetních bloků, zatímco drhá sběrnice je primárně výstpní. Maximální míry flexibility je dosaženo implementací přepínačů mezi sběrnicemi. x Vstp Vstpní sběrnice Neron Neron Neron Neron Výstp y a) Výstpní sběrnice x Vstp Neron Neron Neron Neron b) Obr. 4.1: Koncepční schéma signálových toků navržené strktry Výstp y Přepínače možňjí každo z těchto výchozích sběrnic rozdělit na více dílčích úseků a tyto rozdělené úseky propojovat mezi sebo. Takto vzniklé propoje možňjí směrovat data, avšak vždy poze z výstpní sběrnice na vstpní. Koncepční schéma tohoto nového sběrnicového spořádání ve dvo z několika možných konfigrací je na obrázk 4.1. Výpočetní bloky, které jso těmito sběrnicemi propojeny, jso na obrázk označeny jako neron. Změno nastavení přepínačů lze konfigrovat topologii výpočetních bloků. Tím je možné je řadit do různých sério-paralelních spořádání ve směr tok dat od vstp k výstp. Na obrázk 4.1 jso vedeny dva případy konfigrace výpočetních bloků. Za předpoklad, že jeden výpočetní blok realizje fnkci právě jednoho neron, je zřejmé, že identická obvodová strktra možňje implementovat různé topologie neronových sítí. Případ na obrázk 4.1a možňje v obvod realizovat topologii neronové sítě s spořádáním n:2:2, kdy n představje nerony vstpní vrstvy, které není ntné realizovat. Na obrázk 4.1b je s vyžitím identických bloků, ale v odlišné konfigraci přepínačů zobrazena možnost realizovat neronovo síť s spořádáním n:3:1. V obecné rovině možňje výše popsaná koncepce implementovat do identického obvod libovolně spořádané dopředné neronové sítě, a to za předpoklad, že počet neronů v síti je menší nebo rovný počt výpočetních bloků. Sočasně toto spořádání možňje dosáhnot vysoký stpeň paralelizace výpočtů a maximalizje 8
vytížení výpočetních bloků. Paralelizace na úrovni neronů je realizována paralelním propojením výpočetních bloků. Další stpeň paralelizace je tvořen propojením dílčích úseků výstpní sběrnice s úseky sběrnice vstpní, čímž dochází k obvodovém zřetězení jednotlivých vrstev. V důsledk toho je možné provádět výpočty několika vrstev neronové sítě sočasně. Přepínače sběrnic jso navržené strktry rozmístěny mezi sosedícími výpočetními bloky. V případě obvodové realizace rozsáhlejší varianty této strktry by velké množství přepínačů zabíralo rozsáhlo ploch. U dopředných neronových sítí je obvykle v každé vrstvě místěno několik neronů. Proto byla z koncepce navržené strktry odvozena úprava, která je vhodná právě pro obvodové realizace. V této úpravě jso výpočetní bloky sdržovány do skpin. Tím je částečně snížena možnost rekonfigrace obvod, která je kompromisní a v aplikacích takového obvod by neměla být příliš limitjící. Jako kompromisní řešení bylo zvoleno sdržování čtyř výpočetních bloků. Toto pravené spořádání, vhodné pro obvodové implementace, je vedeno na obrázk 4.2. x Vstp Neron Neron Neron Neron Neron Neron Neron Neron Neron Neron Neron Neron Neron Neron Neron Neron Obr. 4.2: Sdržování bloků navržené strktry Výstp y V rámci dílčích úseků sběrnic může probíhat přenos vždy jen z jednoho výstp výpočetních bloků na vstpy bloků následjících. Proto byla navržena další úprava architektry snižjící ploch potřebno pro implementaci obvod, která je vedena na obrázk 4.3. () () () () Výstp y Obr. 4.3: Úprava architektry pro oddělený výpočet výstpního potenciál 9
Tato úprava spočívá v rozdělení výpočetního blok na dvě dílčí části. První část, na obrázk označená, provádí výpočet vnitřního potenciál neron. Drhá část, na obrázk označená Φ(), provádí výpočet výstpního potenciál pomocí aktivační fnkce. Obě tyto části moho být implementovány jako samostatné obvodové bloky. Výpočet vnitřního potenciál probíhá paralelně ve všech k tom rčených blocích v dané skpině. Následné vystavení výstpního potenciál na výstpní sběrnici v případě spořádání na obrázk 4.2 probíhá sekvenčně. V praveném spořádání na obrázk 4.3 je hodnota vnitřního potenciál vedena ze všech bloků dané skpiny do jediného blok aktivační fnkce. Tam je rčena hodnota výstpního potenciál sekvenčně a následně vystavována na výstpní sběrnici. Uspořádání navržené strktry s výše vedenými modifikacemi, tj. sdržování bloků a rozdělení výpočt vnitřního a výstpního potenciál, zabezpečje značno úspor plochy obvod. Počet bloků přepínajících sběrnice i počet bloků realizjících výpočet výstpního potenciál je nižší než původního koncepčního návrh na obrázk 4.1. Pokd lze při aplikaci navržené strktry vyžít sdržování výpočetních bloků do větších skpin, je možné dosáhnot i výrazně vyšší úspory plochy obvod při zachování původní fnkce. Na obrázk 4.3 je naznačeno nastavení režim modifikovaného obvod. V tomto nastavení obvod možňje implementovat neronovo síť v konfigraci n:8:8, přičemž 8 je maximální počet neronů v dané vrstvě. Jejich počet ve vrstvě může být i nižší, ale některé bloky pro výpočet vnitřního potenciál zůstano nevyžity. Další přípstné konfigrace neronových sítí implementovatelných do navržené strktry, spořádané dle obrázk 4.3 a vyžívající pro výpočet vnitřního potenciál sdržování bloků do skpin po čtyřech, jso vedeny v tablce Chyba: zdroj odkaz nenalezen. Navržená obvodová architektra, jež byla popsána ve výše zmíněných případech a modifikacích, možňje implementovat poze takové neronové sítě, ve kterých je počet neronů menší nebo rovný počt výpočetních bloků. Při realizaci rozsáhlých neronových sítí pomocí navržené obvodové architektry by byla plocha výsledného obvod příliš velká. Pro realizaci rozsáhlých neronových sítí byla navržena modifikace architektry, která je vedena na obrázk 4.4. Za cen snížení úrovně paralelizm je v tomto případě možné pomocí zpětné vazby provádět výpočty částečně sekvenčně. Naznačená zpětná vazba přivádí data z koncového úsek výstpní sběrnice do počátečního úsek vstpní sběrnice. Mltiplexor na vstp obvod možňje vybrat režim vstp dat do sítě nebo požití zpětné vazby. Díky tomto princip lze provádět sekvenční zpracování dat. 10
FIFO x Vstp () () () () y Výstp Obr. 4.4: Koncepční schéma strktry pravené pro implementaci rozsáhlých neronových sítí V některých případech je možné data pomocí zpětné vazby převádět přímo z výstpní sběrnice na vstpní. V případech, kdy to možné není, lze vyžít vyrovnávací paměť (jak je naznačeno na obrázk). Ntnost požití vyrovnávací paměti sovisí se způsobem mapování neronových sítí do navržené obvodové architektry. Problematice mapování je věnována kapitola 4.2.3. 4.2.2 VLASTNOSTI A MOŽNOSTI NAVRŽENÉ STRUKTURY Návrh obvodové koncepce popsané v kapitole 4.2.1 probíhal s ohledem na efektivní realizaci obvodové strktry, do které lze implementovat různé topologie zejména dopředných neronových sítí. Byl kladen důraz na jednodchost výsledného obvod, jeho vysoko variabilit a možnosti implementace různých fnkcí vyžívaných v neronových sítích. Do navržené strktry lze implementovat následjící typy neronových sítí: dopředné, malé (počet neronů je menší nebo rovný počt výpočetních bloků), rozsáhlé, rekrentní, Hopfieldovy, modlární. Navržená architektra zároveň možňje velmi intenzivně vyžívat výpočetní bloky. Vnitřní přesny dat by měly být vysoce efektivní, přičemž strktra propojovacích sběrnic je poměrně jednodchá a měla by mít nízké nároky na potřebno ploch. Klíčovým prvkem strktry je systém propojení výpočetních bloků pomocí dvo konfigrovatelných sběrnic. Díky vysoké flexibilitě propojovacího systém lze realizovat v navržené architektře i některé rozšiřjící prvky požívané v dopředných neronových sítích, např. zkratky mezi vrstvami, a to dynamickým přepínáním spořádání sběrnic v průběh výpočt. Požité sběrnice sice možňjí přenášet sočasně vždy maximálně jeden blok dat, ale děje se tak mezi všemi vytvořenými datovými propoji dle aktální konfigrace obvod. Tímto způsobem je možné vytvořit systém obsahjící velké množství nezávisle pracjících úseků sběrnic a tím zřetězit výpočetní bloky. Dochází tak k paralelizaci výpočtů na úrovni vrstev. Efektivita paralelizace na úrovni vrstev může 11
být snížena, např. v případě, kdy realizovaná neronová síť obsahje vrstv, která obsahje výrazně větší počet neronů než vrstvy ostatní. Tento problém je blíže popsán v kapitole 4.2.3 věnjící se mapování neronové sítě do navržené strktry. Paralelizace na úrovni neronů je zabezpečena samotným rozdělením systém sběrnic na vstpní a výstpní. Díky systém propojení lze v jednom obvod realizovat několik nezávisle fngjících neronových sítí. V takovém případě lze pomocí přepínačů dynamicky nastavit topologii aktálně zvolené sítě a výběrem váhových koeficientů provádět její výpočet. Naopak v případě realizace jediné neronové sítě v obvod lze fnkci přepínačů nastavit pevně. Navržená architektra je vhodná pro realizace systémů s neronovými sítěmi, a to nejen rekonfigrovatelných, ale i s pevně nastaveno fnkcí. Pokd má neronová síť realizovaná pomocí této architektry pevno fnkci, je možné pravit počty výpočetních bloků sdržených do skpin, např. odstranit nadbytečné. Odstraněním nadbytečných výpočetních bloků lze zmenšit velikost plochy i spotřeb výsledného obvod. Implementaci navržené architektry je možné realizovat v obvodech FPGA i ASIC. Vlastní obvodovo realizací navržené strktry v obvodech FPGA se podrobně zabývá kapitola 4.3. 4.2.3 MAPOVÁNÍ NEURONOVÉ SÍTĚ DO OBVODU Důležito sočástí proces praktické realizace navržené architektry je mapování neronové sítě do obvod. Během mapování je rčeno, který výpočetní blok bde zpracovávat data daného neron. Mapování identické neronové sítě může být realizováno různými způsoby. S požitím jednotlivých způsobů se mění i potřebná plocha a časová odezva výsledného obvod. Prvním typickým případem je mapování neronové sítě, ve které se počty neronů ve vrstvách ve směr od vstp k výstp snižjí. Příklad takového spořádání s neronovo sítí s topologií 8:8:4:1 mapované do obvod obsahjícího 16 výpočetních bloků je na obrázk 4.5. Zpracovaní a tok dat jso v tomto případě rozděleny do tří fází, kdy každá trvá 8 hodinových cyklů. Během první fáze jso data přesována ze vstp do první skryté vrstvy a zároveň zpracovávána výpočetními bloky realizjícími tto vrstv. Ve drhé fázi výpočt probíhá přenos dat z první skryté vrstvy do drhé sočasně s jejich zpracováním. Protože drhá skrytá vrstva obsahje poze čtyři nerony (do výstpní vrstvy se přesovají poze čtyři výstpy), lze třetí fázi výpočt dokončit dříve, než v osmi hodinových cyklech. K vystavení dat zpracovaných neronovo sítí dochází již po čtvrtém hodinovém cykl. Vzhledem k tom, že všechny výpočetní fáze jso zřetězeny, ve zbylých čtyřech hodinových cyklech výstpní vrstva neprovádí žádné operace. 12
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 a) b) c) d) Obr. 4.5: Mapování neronové sítě 8:8:4:1 Za předpoklad, že obvod, ve kterém je realizovaná výše vedená neronová síť, obsahje 16 výpočetních bloků (i nevyžité bloky - neoznačené číslicí),jak je naznačeno na obrázk 4.5, je vytíženost výpočetních bloků přibližně 78%. Vytíženost byla rčena poměrem aktivních pracovních cyklů výpočetních blokůve vztah k celkovém počt pracovních cyklů výpočetních bloků. Latence datje 20 hodinových cyklů, zatímco celková doba zpracování dat je 24 hodinových cyklů. Jak bylo vedeno v kapitole 4.2.2, je možné v případě fixního spořádání obvod pravit počty výpočetních bloků ve skpinách. V tomto případě se jedná o odstranění nevyžitých výpočetních bloků. Celková vytíženost výpočetních bloků by vzrostlana přibližně 96%. Dalším važovaným případem mapování neronové sítě do navržené architektry je realizace rozsáhlých neronových sítí, v nichž počet neronů v libovolné skryté nebo ve výstpní vrstvě nepřevyšje celkový počet výpočetních bloků. Tím je částečně omezena možnost paralelizace výpočt na úrovni vrstev. Při obvodové realizaci navržené strktry můžo nastat i další případy mapování, při jejich realizaci bdo platňovány podobné postpy řešení. 13
4.3 OBVODOVÁ IMPLEMENTACE NAVRŽENÉ ARCHITEKTURY Další částí řešení dizertační práce bylo provedení obvodové implementace navržené architektry. Dílčí bloky byly popsány pomocí jazyka VHDL. Díky tom je možné je snadno implementovat do různých cílových technologií, zejména FPGA a ASIC. Obvody FPGA je výhodné vyžívat nejen pro ověření vlastností obvod, ale také pro cílové aplikace. Proto je výsledný popis v jazyce VHDL optimalizován zejména pro obvody FPGA. Tato optimalizace spočívá v přizpůsobení šířek sběrnic a velikostí pamětí tak, aby optimálně vyžívaly hardwarové prostředky těchto obvodů, především dedikované bloky. Parametrizací popis všech bloků je zabezpečena možnost poze jednodché úpravy při implementaci do jiné cílové technologie, např. jiných FPGA, případně ASIC. 4.3.1 NÁVRH OBVODOVÉHO CELKU Pro samotno obvodovo implementaci byl vybrán obvod FPGA Spartan-6 od společnosti Xilinx, konkrétně XC6SLX45-3CSG324[39]. Jedním z důvodů pro výběr tohoto FPGA byla dostpnost vývojové desky Atlys [40] od společnosti Digilent, na které je tento obvod osazen. Dalším důvodem pro požití tohoto obvod byly jeho parametry, zejména velké množství základních logických prostředků a dedikovaných bloků pro digitální zpracovaní signálů a paměťových bloků. Blokové schéma navržené architektry převedené do obvodového spořádání je na obrázk 4.6. Obvodové spořádaní, narozdíl od koncepčního návrh, obsahje větší množství dílčích bloků. Tyto konkrétní bloky nebyly z důvod vysoké úrovně abstrakce v koncepčním schémat váděny. Pro zabezpečení správné fnkce obvod je ale není možné vynechat. Nejdůležitějším z bloků, které byly v koncepčním schémat zanedbány, je blok řídicí logiky. Tento blok zabezpečje konfigraci přepínačů sběrnice, řízení toků dat a výběr vahových koeficientů. Dalším blokem, který nebyl veden v koncepčním schémat, je blok paměti, který složí k kládání váhových koeficientů. Obvodová implementace všech dílčích obvodových bloků je popsána v kapitolách 4.3.2 až 4.3.5. V obvod je požita šířka vstpní a výstpní propojovací sběrnice 18 bitů. Data přenášena sběrnicemi jso ve formát dvojkového doplňk s pevno řádovo čárko a rozsah jejich hodnot je reprezentován jako interval 1; 1). Tato šířka byla zvolena s ohledem na parametry dedikovaných bloků pro digitální zpracovaní signálů (18-bitové operandy) a paměťových bloků (možnost nastavení 18-bitových vstpů a výstpů). 14
vstp Výpočetní blok Výpočetní blok Výpočetní blok Výpočetní blok Váhy Aktivace Přep. Výpočetní blok Výpočetní blok Výpočetní blok Výpočetní blok Váhy Aktivace Přep. Výpočetní blok Výpočetní blok Výpočetní blok Výpočetní blok Váhy Řídicí logika Aktivace Přep. Výpočetní blok Výpočetní blok Výpočetní blok Výpočetní blok Váhy Aktivace Přep. výstp Obr. 4.6: Blokové schéma navržené strktry při spořádání 4x4 4.3.2 PŘEPÍNAČ SBĚRNIC Klíčovým prvkem navržené obvodové architektry je systém spořádání sběrnic a řízení datových toků na nich. Přepínání sběrnic je realizováno pomocí níže popsaného blok. Koncepční schéma přepínače sběrnic je na obrázk 4.7, v němž jso vyznačeny také jeho vstpy a výstpy. Tento přepínač je místěn v systém dvo sběrnic propojjících výpočetní bloky. 15
Přepínač sběrnic může pracovat ve dvo režimech. V prvním režim znázorněném na obrázk 4.7a jso vstpy a výstpy obo propojovacích sběrnic přímo propojeny. Vstpní sběrnice je připojena do vstpů následjící skpiny výpočetních bloků. K výstpní sběrnici jso připojeny výstpy výpočetních bloků z předcházející skpiny. Ve drhém pracovním režim přepínače, který je na obrázk 4.7b, je realizováno propojení předchozího úsek výstpní sběrnice na následjící úsek vstpní sběrnice. Vstpní sběrnice Výstpní sběrnice Výstpy z neronů Výstpy do neronů a) b) Obr. 4.7: Koncepční schéma přepínače sběrnic Obvodová realizace přepínače sběrnic je zobrazena na obrázk 4.7. Pro přehlednost jso vstpy a výstpy označeny zkratkami vycházejícími z anglického označení sběrnic tj: IB_in / IB_ot vstpní sběrnice - vstp / výstp (Inpt Bs in / ot) OB_in / OB_ot výstpní sběrnice - vstp / výstp (Otpt Bs in / ot) R_in / R_ot - řádek vstp / výstp (Row in / ot) M režim (Mode) R_req požadavek na vstp dat z řádk (Row reqest) Nastavení režimů přepínače je prováděno pomocí mltiplexorů a řízeno vstpem M. Dále je k řízení tok dat vyžíván vstp R_req. Vzhledem k tom, že v obvodech FPGA není možné realizovat třístavové sběrnice, je ntné definovat na všech výstpech v každém pracovním režim obvod logické úrovně. V režim, který je veden na 4.7b, je v obvodové realizaci na výstp bdící výstpní sběrnice nastavena konstantní hodnota log. 0. Vstpem R_req je definován požadavek na vystavení dat na výstpní sběrnici z výstpů dané skpiny výpočetních bloků. Tento požadavek je rovněž realizován mltiplexorem. V průběh provoz obvod moho nastat čtyři případy nastavení signálových toků, které jso vyznačeny na obrázk 4.8. 16
IB_in OB_in R_in IB_in OB_in R_in 0 0 0 0 1 0 1 M R_req M 0 0 1 0 1 0 1 R_req 0 1 0 1 0 1 0 1 IB_ot R_ot OB_ot IB_ot a) b) OB_ot R_ot IB_in OB_in R_in IB_in OB_in R_in 1 1 0 1 0 1 0 M R_req M 0 0 1 0 1 0 1 R_req 0 1 0 1 0 1 0 1 IB_ot OB_ot R_ot IB_ot c) d) Obr. 4.8: Schéma signálových toků přepínače sběrnice OB_ot R_ot Při implementaci do obvodů FPGA při pevném nastavení režim lze předpokládat, že velká část popsané logiky bde v průběh syntézy odstraněna. V opačném případě bde navržený obvod implementován pomocí náhledových tablek realizjících kombinační obvody. V případě realizace strktry přepínače sběrnic v obvodech ASIC lze často vyžívat i jiný přístp a propojováni sběrnic implementovat na tranzistorové úrovni. 4.3.3 VÝPOČETNÍ BLOK Výpočetní bloky tvoří jádro navržené architektry a složí k výpočt vnitřního potenciál neron. Tyto bloky provádějí aritmetické operace násobení vstpů (dat z propojovacích sběrnic a váhových koeficientů) a akmlace mezivýsledk. Váhové koeficienty jso loženyv samostatném paměťovém blok, který je popsán v kapitole 4.3.5. Klíčovo sočástí výpočetních bloků při realizaci v cílovém FPGA jso dedikované bloky pro digitální zpracování signálů (DSP48A1 [41]), v nichž jso tyto aritmetické operace prováděny. Tento blok možňje provádět výpočty s pevno řádovo čárko ve formát dvojkového doplňk, přičemž jso tyto výpočty zřetězeny. Zřetězení výpočtů probíhá ve dvo stpních, třetí stpeň obvod složí k přesn výsledk do výstpního registr. Pro řízení výpočetního blok složí pět základních příkazů, fngjících následně: RST nlování mezivýsledk MAC násobení vstpů a akmlace výsledků 17
BIAS nastavení prah neron - do akmlátor je ložena hodnota aktální váhy, datový vstp je ignorován NOP pozastavení výpočt výsledek přesn výsledk do výstpního registr V některých případech je ntné tok dat obvodem a samotný výpočet pozastavit, jak bylo naznačeno v kapitole 4.2.3, což je možněno příkazem NOP. Příkaz RST lze vyžít k nlování akmlátor nebo nastavení nlového prah. Výpočetní bloky jso sdržovány do skpin po čtyřech, jak bylo popsáno v koncepčním návrh architektry (obrázek 4.3). Výstpy výpočetních bloků dané skpiny jso vedeny do mltiplexor a následně do blok aktivační fnkce. Hlavním důvodem pro sdržení výpočetních bloků do skpin po čtyřech při implementaci do cílového FPGA je možnost realizace mltiplexor se čtyřmi vstpy v tomto obvod jedino náhledovo tablko. Benefitem vedené realizace je minimální délka kombinační cesty. 4.3.4 BLOK AKTIVAČNÍ FUNKCE Aktivační fnkce realizjí výpočty výstpních potenciálů neronů, nezávisle na výpočtech vnitřních potenciálů. Jso tvořeny samostatnými bloky, jak bylo navrženo v praveném koncepčním schémat na obrázk 4.3. Obvodová realizace blok aktivační fnkce je na obrázk 4.9. Klíčovými sočástmi blok aktivační fnkce při implementaci do FPGA jso blok paměti(bram [42]) s náhledovo tablko a dedikovaný blok pro digitální zpracování signálů (DSP48A1). Satrace Znaménko 48 Předzpracování dat 18 LSB Vstp 9 LUT 18 MSB f(x) LUT f(x) 18 + Dvojkový doplněk 18 Výstp BRAM DSP48A1 Obr. 4.9: Blokové schéma blok aktivační fnkce Průběh aktivační fnkce je ložen ve dvo náhledových tablkách. První tablka obsahje úrovně aktivační fnkce ve vybraných bodech. Ve drhé náhledové tablce jso loženy hodnoty gradientů mezi sosedními body. Díky tom lze jednodše pomocí lineární interpolace rčit hodnoty aktivační fnkce 18
ležící mezi body loženými v náhledové tablce. Lineární interpolace je realizována blokem pro digitální zpracování signálů. Výpočet lineární interpolace by bylo možné provádět i bez drhé náhledové tablky a potřebné hodnoty gradientů vypočítat z rozdíl dvo sosedících bodů. Obvodová implementace výpočt gradient by však byla velmi náročná na ploch obvod. Zvolené řešení navíc možňje realizovat výpočet aproximace aktivační fnkce metodo nejmenších čtverců, která dále samotno aproximaci zpřesňje. Hodnoty ložené v náhledových tablkách byly vypočítány v prostředí MATLAB zmiňovano metodo nejmenších čtverců. Obě náhledové tablky pro ložení hodnot aproximované fnkce jso v cílovém FPGA realizovány pomocí jednoho paměťového blok. Díky vyžití náhledových tablek lze v popisovaném blok realizovat libovolný průběh aktivační fnkce. Na obrázk 4.10 je kázka případ korespondjícího se schématem na obrázk 4.9. Znaménko Satrace Pozice bod v náhledové tablce Gradient ± n 2 2 2 1 2 0 2-1.... 2-6 2-7.... 2-24 20 - n 47 0 Celočíselná část Desetinná část Obr. 4.10: Formát dat vstpjících do blok aktivační fnkce V neronových sítích se obvykle vyžívá poze část celkového průběh aktivační fnkce, a to konkrétně v úsecích, kde dochází k jejím největším nárůst, resp. kde je její derivace nejvyšší. V případě aktivační fnkce se sigmoidálním průběhem se stpněm volnosti 1 se zpravidla volí interval ( 8;8). Hodnoty ležící mimo tento zvolený interval lze považovat za konstantní a reprezentovat je maximem, resp. minimem obor hodnot aproximované fnkce (satrací). Proto jso i obvodově tyto hodnoty reprezentovány maximální, resp. minimální hodnoto, ktero lze reprezentovat na propojovacích sběrnicích. Detekce tohoto interval je zabezpečena v blok předzpracování dat. V blok předzpracování dat jso data převáděna z dvojkového doplňk do přímé binární reprezentace a znaménka. Díky tom lze v případě realizace soměrné aktivační fnkce požít poloviční velikost náhledové tablky nebo zvýšit přesnost aproximace ložením dvojnásobného počt úseků aproximované fnkce. Na základě znaménka jso data v posledním blok obvod převedena zpět do dvojkového doplňk a jso reprezentována hodnotami v interval 1; 1). Výsledek výpočt 19
blok pro digitální zpracováni signálů má rozsah 48 bitů. Nadbytečné bity (LSB) jso odstraněny a na datovo sběrnici se vystavje horních 18 bitů (MSB). Výpočet aktivační fnkce je zřetězen a probíhá postpně v následjících krocích: 1. Předzpracování dat - převod z dvojkového doplňk do binární reprezentace. 2. Čtení hodnot z náhledových tablek. 3. Výpočet posn v aproximovaném úsek. 4. Sočet hodnoty získané v předchozím krok a výchozí hodnoty aproximovaného úsek. 5. Zpětný převod do dvojkového doplňk, satrace, odstranění nevyžitých bitů. Latence obvod aktivační fnkce je 5 hodinových cyklů. 4.3.5 DALŠÍ DÍLČÍ BLOKY Dalšími bloky potřebnými pro obvodovo realizaci navržené architektry jso blok řídicí logiky a bloky pamětí vah. Tyto bloky nebyly z důvod vysoké úrovně abstrakce v koncepčním návrh architektry zahrnty. Blok řídicí logiky nastavje průběh výpočtů neronové sítě. Tento blok rozhodje o směr tok dat obvodem přes propojovací sběrnice nastavováním režimů přepínačů. Dále pomocí příkazů řídí činnost výpočetních bloků a rčje adresy váhových koeficientů. V případě realizace architektry rozšířené o zpětno vazb, případně vyrovnávací paměť, nastavje blok řídicí logiky řazení dat kládaných a čtených z těchto pamětí. Blok řídicí logiky je možné realizovat několika způsoby. Jedním z těchto způsobů je návrh stavového atomat, který vytváří sekvenci signálů, jimiž jso řízeny ostatní bloky, zejména přepínače sběrnic a výpočetní bloky. Pokd je blok řídicí logiky realizován pomocí stavového atomat, lze jej jednodše rozšířit o další fnkce, např. o požadavek na pozastavení výpočt z případného nadřazeného systém. Dalším vhodným způsobem realizace blok řídici logiky je požití čítače a dekodér. Čítač v tomto případě rčje aktální fázi výpočt a dekodér vytváří sekvenci potřebných výstpních signálů, které jso vedeny do ostatních bloků obvod. Posledním blokem obvodové realizace navržené architektry je blok pro kládání váhových koeficientů. Tento blok kládá data váhových koeficientů pro čtyři výpočetní bloky. Jeho obvodová realizace v cílovém FPGA vyžívá jeden dedikovaný paměťový blok. Cílové FPGA obsahje 116 paměťových bloků velikosti 18 kb.[42] Do jednoho blok velikosti 18 kb lze ložit celkem 1024 váhových koeficientů (256 pro každý výpočetní blok). V případě, že počet koeficientů není dostatečný pro dano aplikaci, lze paměťové bloky propojit a zvýšit tak jejich kapacit. 20
4.3.6 SHRNUTÍ Navržené obvodové bloky byly popsány v jazyce VHDL, následně byla provedena jejich syntéza a pomocí simlací ve vývojovém prostředí Xilinx ISE zjištěny jejich dynamické parametry a rčena spotřeba logických prostředků v cílovém FPGA Spartan-6 (XC6SLX45-3CSG324). Tyto parametry jso smarizovány v tablce 4.1. Ve spodní části tablky jso výsledky syntézy samostatného sběrnicového systém možňjícího propojení čtyř, resp. osmi skpin výpočetních bloků. Dále je zde pro srovnání veden výsledek syntézy navržené strktry obsahjící čtyři resp. osm skpin výpočetních bloků. V případě realizace obvodové strktry s pevně definovano neronovo sítí může návrhový systém provést atomatické odstranění nadbytečných bloků (nevyžívaných pro výpočty neronů). Tato možnost není garantována samotným popisem v jazyce VHDL a je závislá na kvalitě systém požitého pro syntéz obvod. Přímým důsledkem odstranění nadbytečných bloků může být snížení počt potřebných bloků v cílovém obvod a zvýšení pracovní frekvence. Tab. 4.1: Parametry bloků a obvodových architektr neron pro vybrané případy Blok Časové parametry Spotřebované bloky f max [MHz] t d [ns] LUT FFD DSP48A1 BRAM Přepínač sběrnice 1a - 5,46 2 - - - Přepínač sběrnice 1b 633,37-2 7 - - Přepínač sběrnice 2a - 5,39 / 4,40 1 / 0 - - - 640,27 / Přepínač sběrnice 2b 706,71-2 / 2 5 / 2 - - Výpočetní blok 485,39-23 56 1 - Paměť vah 3 395,12 - - - - 1 Aktivační fnkce 4 295,67-211 106 1 1 Řídící logika 5 474,72-41 41 - - Sběrnice 4 bloky 1b 386,17-7 - - - Sběrnice 8 bloků 1b 227,07-24 - - - Obvod 4x4 274,26-1360 1461 20 8 Obvod 8x4 203,95-2728 2835 40 16 pozn. 1 - s možností změny režim (šířka 1bit), 2 - pevně nastavený režim 0 / režim 1 (šířka 1bit) a - poze kombinační síť (+ zpoždění vstp a výstp), b - registrované vstpy a výstpy 3 - slovo 18 bit, 1024 vah, 4 porty 4 - realizace s převodem z dvojkového doplňk 5 - stavový atomat pro síť 8:4:4 v obvod 4x4 Do cílového FPGA, které obsahje 58 dedikovaných bloků pro digitální zpracování signálů a 116 paměťových bloků, lze implementovat obvodovo realizaci navržené architektry obsahjící 44 výpočetních bloků a 11 bloků aktivační fnkce. Většina paměťových bloků v tomto případě nebde požita, a nebo bde potřebena k jiným účelům, tedy ke zvýšení počt ložených váhových koeficientů nebo k zpřesnění náhledových tablek v blocích realizjících aktivační fnkci. Zvýšení počt ložený váhových koeficientů může být žádocí při realizaci obvod 21
sočasně implementjícího několik různých neronových sítí. Případně moho být zbylé paměťové bloky vyžity k realizaci vyrovnávací paměti v pravené architektře na obrázk 4.4 Všechny výše vedené obvodové bloky byly popsány parametricky a tyto parametry nastaveny s ohledem na implementaci do vybraného FPGA. Díky parametrickém popis je možné navržené bloky snadno optimalizovat i pro jiné FPGA. Při realizaci bloků vedené koncepce do zákaznických obvodů by bylo ntné vytvořit obvodové modely, které by nahradily dedikované bloky pro digitální zpracování signálů a paměťové bloky. 4.4 EXPERIMENTÁLNÍ ČÁST Pro ověření fnkčnosti obvodové realizace navrženého systém jako celk byly provedeny dva experimenty. První experiment byl zaměřen zejména na ověření fnkčnosti samotného obvod a v jeho rámci byla zpracována úloha označována jako XOR problém. V rámci drhého experiment byla realizována neronová síť provádějící filtraci obraz. 4.4.1 OVĚŘENÍ FUNKČNOSTI NAVRŽENÉHO OBVODU Pro ověření fnkce navržené obvodové architektry byla zvolena úloha řešící problém implementace fnkce XOR do neronové sítě. Tato úloha je obvykle označovaná jako XOR problém. Existje několik řešení tohoto problém a v literatře věnjící se neronovým sítím často složí i k demonstraci fnkce vícevrstvých dopředných neronových sítí.[1] [2] [43] [44] Fnkce navržené obvodové strktry byla ověrena postpem, při kterém byly porovnány výsledky dvo simlací. První simlace byla provedena v prostředí MATLAB. V drhém případě se jednalo o behaviorální fnkční simlaci RTL model navrženého obvod v prostředí XILINX ISE v simlačním nástroji ISim. Výsledky získané simlací v prostředí MATLAB byly vypočítány v dvojité přesnosti (dle normy IEEE 754, 64-bit) a jso považovány za referenční. Rozdíl mezi referenční simlací a simlací v nástroji ISim možňje získat představ o přesnosti výpočtů navržené obvodové strktry při implementaci neronové sítě malého rozsah. V takovém případě nedochází ke zkreslení dat průchodem přes více vrstev neronů. Ve většině případů by nižší přesnost výpočt v obvod ani zkreslení způsobené průchodem dat více vrstvami nemělo mít významný vliv na fnkci neronových sítí, a to díky vysoké odolnosti neronových sítí vůči šm. Byla provedena behaviorální simlace a výsledky získané toto simlací byly porovnány s výsledky referenčními. Maximální odchylka dat získaných behaviorální simlací od referenčních byla 1,5*10-5, což přibližně odpovídá hodnotě 2 LSB dat na 22
propojovacích sběrnicích. Obvodová realizace navržené architektry je fnkční, přičemž hodnota odchylky je akceptovatelná. 4.4.2 APLIKACE S VYUŽITÍM NAVRŽENÉ STRUKTURY Cílem drhého experiment bylo ověření fnkčnosti navržené architektry realizované v obvod FPGA. Toto ověření bylo provedeno v aplikací zaměřené na filtraci obrazových dat pomocí neronové sítě. V rámci zmiňovaného experiment byla navržena neronová síť možňjící filtrovat obraz implzní šm v obraz. Topologie navržené neronové sítě je 9:20:20:9. Neronová síť možňje filtrovat úseky obraz velikosti 3x3 body. Data zpracovaná obvodem se lišila od referenčních získaných simlací v prostředí MATLAB v krajním případě o 3,72*10-5, což odpovídá přibližně hodnotě 5 LSB dat na propojovacích sběrnicích, kde byla tato odchylka do výpočt zanesena. Tato odchylka je výrazně nižší, než přesnost zpracovávaných obrazových dat (8 bit). Výpočty neronové sítě v obvod FPGA (pevná řadová čárka, 48 bit výpočetní bloky, 18 bit sběrnice) byly prováděny s výrazně vyšší přesností. Tím bylo ověřeno, že přesnost zpracování dat pomocí navržené obvodové koncepce spol s implementovano neronovo sítí je vhodná pro aplikace zpracovaní signálů. Maximální pracovní frekvence výsledného obvod implmentovaného do FPGA je 267,38 MHz. Spotřebované logické prostředky FPGA jso následjící: 1795 LUT, 1839 FFD, 25 bloků pro digitální zpracovaní signálů a 10 paměťových bloků. Vytíženost výpočetních bloků v realizované aplikaci byla přibližně 78%. 23
5. SHRNUTÍ DOSAŽENÝCH VÝSLEDKŮ Pro experimentální ověření vlastností již existjících řešení byla provedena realizace obvodové architektry, která možňje paralelizovat zpracování dat neronových sítí. Na základě informací získaných rozborem sočasných řešení a realizací výše vedeného experiment byl proveden návrh nové obvodové architektry možňjící obvodově implementovat neronové sítě. Tento návrh vyžívá již existjící řešení výpočetních strktr a zaměřje se na zlepšení vlastností dílčích bloků, které mezi nimi zabezpečjí přenos dat. Výsledkem návrh je koncepční řešení popsané v kapitole 4.2.1. Navržené řešení vyžívá propojovací systém, který je tvořen dvěma datovými sběrnicemi. Sběrnice jso rozděleny na dílčí úseky, které lze mezi sebo propojovat a pravovat tak spořádání datových cest mezi výpočetními bloky. Navržená obvodová architektra je modlární a lze ji snadno přizpůsobit parametrům cílového obvod nebo technologii, ve které je realizována. Mezi další výhody modlárního spořádání patří zejména možnost úpravy parametrů a vlastností dílčích bloků (např. změna průběh aktivačních fnkcí) a zjednodšení a rychlení vývoje aplikací vyžívajících tto novo obvodovo architektr. Následjící přehled vádí klíčové vlastnosti a parametry navržené architektry: Vysoký výpočetní výkon. Variabilita strktry. Široké možnosti úpravy obvodové realizace. Rekonfigrace v průběh výpočt. Přenositelnost. Popis v jazyce VHDL. Optimalizace pro obvody FPGA. Možnost implementace do ASIC. Popis obvodové realizace navržené architektry, který je veden v kapitole 4.3, byl sktečněn pomocí jazyka VHDL. Samotná obvodová realizace bylapro FPGA Spartan-6 XC6SLX45-3CSG324. Smarizace parametrů realizovaných bloků i celkové obvodové realizace je vedena v tablce 4.1. Následně byly provedeny dva experimenty, popsané v kapitole 4.4, díky kterým se simlací a obvodovo implementací ověřily vlastnosti navržené architektry v konkrétních aplikacích. 24