STUDIA INFORMATICA 2012 Volume 33 Number 2A (105) Darusz R. AUGUSTYN, Kaml BADURA Poltechnka Śląska, Instytut Informatyk REALIZACJA PRZETWARZANIA W CHMURZE OBLICZENIOWEJ NA PRZYKŁADZIE SYSTEMU UCZENIA SIECI NEURONOWEJ OPARTEGO NA TECHNOLOGII MICROSOFT WINDOWS AZURE Streszczene. W artykule przedstawono budowę systemu uczena sec neuronowej, opartego na koncepcj przetwarzana w chmurze oblczenowej. Implementacja systemu bazuje na technolog Mcrosoft Wndows Azure. W rozwązanu zastosowano znany algorytm uczena metodę wstecznej propagacj błędu dostosowany do rozproszonego sposobu realzacj. Zaproponowano archtekturę systemu, w której wykorzystano współpracujące procesy (nstancje) typu WorkerRole. W opracowanu przedstawono sposób wykorzystana różnych metod magazynowana danych, dostępnych przez mechanzmy Wndows Azure Table, Queue, Blob Storage. Równoległe przetwarzane systemu zostało zapewnone ne tylko dzęk zastosowanu welu procesów WorkerRole, ale równeż dzęk wykorzystanu modułu Parallel Extenson for.net przy mplementacj kodu WorkerRole. Słowa kluczowe: przetwarzane w chmurze oblczenowej, przetwarzane równoległe, Mcrosoft Wndows Azure, uczene sec neuronowej THE MICROSOFT WINDOWS AZURE-BASED SYSTEM FOR NEURAL NETWORK LEARNING AS AN EXAMPLE OF CLOUD PROCESSING APPLICATION Summary. The paper presents the system for neural network learnng based on the dea of Cloud computng. System mplementaton uses Mcrosoft Wndows Azure technology. The well-known learnng algorthm.e. back propagaton method was adopted for parallel and dstrbuted executon. The archtecture of cooperatve worker role processes was proposed. The paper descrbes applyng of methods of data storage lke Wndows Azure Table, Queue, Blob. The advantages of parallelzaton result from ether applyng multple processes (nstances) of WorkerRoles or applyng Parallel Extenson for.net module n WorkeRole s mplementaton.
50 D. R. Augustyn, K. Badura Keywords: cloud computng, parallel processng, Mcrosoft Wndows Azure, neural network learnng 1. Wstęp Koncepcja przetwarzana danych w tzw. chmurze oblczenowej (ang. cloud comupng) to kolejny, stotny etap rozwoju zastosowań Internetu. Technologa oblczeń w chmurze stwarza nowe możlwośc w welu zakresach, np. wydajnośc (skalowalność na potencjalne olbrzymą lczbę węzłów przetwarzających) czy bezpeczeństwa (automatyczne tworzene replk danych). Nowy model przetwarzana pozwala na dostosowane nfrastruktury do potrzeb efektywnoścowych przez dostosowane mocy oblczenowej wrtualnej nfrastruktury do aktualnego zapotrzebowana wynkającego z obcążena. Technologe przetwarzana dostarczają nowych metod magazynowana danych (np. takch jak systemy NoSQL). Dodatkowo nektóre z technolog umożlwają tworzene zrównoleglonych systemów aplkacyjnych, dzałających w środowsku rozproszonym (nowy model programowana). Systemem spełnającym opsane wymagana są technologa nfrastruktura Mcrosoft Wndows Azure. Wykorzystane własnośc Wndows Azure umożlwło utworzene wydajnego skalowalnego systemu uczena sztucznej sec neuronowej. Oczywśce wymagało to przystosowana algorytmu uczena sec (powszechne znanej metody wstecznej propagacj błędu) do równoległego trybu oblczeń. Celem nnejszego artykułu jest omówene zaproponowanej archtektury zrównoleglonego systemu uczena sec neuronowej, opartego na technolog Wndows Azure. W szczególnośc chodz o prezentację sposobu obsług welozadanowośc oraz doboru metod magazynowana danych. Chocaż system ma bardzo konkretne zastosowane (skalowalna usługa uczena sec), to sama archtektura (w szczególnośc obsługa szeregowana podzadań) może być wykorzystana do budowy nnych aplkacj, przetwarzających dane w sposób rozproszony z użycem Wndows Azure. 2. Wprowadzene do technolog Wndows Azure Mcrosoft Wndows Azure [1, 2] jest technologą nfrastrukturą programowo-sprzętową, umożlwającą tworzene efektywnych aplkacj, dzałających w ramach tzw. chmury oblcze-
Realzacja przetwarzana w chmurze oblczenowej na przykładze 51 nowej. Frma Mcrosoft udostępna zarówno docelowe środowsko uruchomenowe, dostępne przez Internet, jak środowsko lokalne Wndows Azure Emulator. Mcrosoft Corporaton dostarcza płatną nfrastrukturę Wndows Azure, zapewnającą skalowalność bezpeczeństwo przetwarzanych danych (system automatycznego tworzena kop zapasowych). Jednym z jej elementów są usług przechowywana danych Wndows Azure Storage [3]. W ramach tych usług wyróżna sę: Azure Blob dającą możlwość przechowywana plków bnarnych, zorganzowanych w ramach tzw. kontenerów, Azure Queue umożlwającą kolejkowane danych (z zachowanem pewnośc dokończena wykonana zadana poberającego dane z kolejk), Azure Table pozwalającą na przechowywane prostych danych strukturalnych, zorganzowanych wg koncepcj klucz-wartość, SQL Azure udostępnającą usług relacyjnego systemu zarządzana bazą danych, w znacznym zakrese kompatyblną z SZBD SQL Server. Azure Blob jest wydajnym rozwązanem przeznaczonym do obsług danych nestrukturalnych. W Azure Table [4] obsługwane są tzw. tablce, co powala na odzwercedlene bardzo prostego relacyjnego modelu danych. W tablcach przechowywane są tzw. encje (w uproszczenu, odpowednk werszy w podejścu relacyjnym). Struktura encj może, ale ne mus, być jednakowa w ramach tablcy. Struktura encj określona jest przez własnośc (pola) (w uproszczenu, odpowednk kolumn w podejścu relacyjnym). Klucz tablcy jest dwuelementowy składa sę z własnośc: ParttonKey RowKey. Wyszukwane sortowane wg klucza jest szybke, wyszukwane wg pozostałych własnośc może być newydajne. Mechanzmy skalowana usług przechowywana Azure Table wykorzystują własność ParttonKey (dane o tej samej wartośc ParttonKey, w przypadku wystąpena spadku wydajnośc, mogą być obsługwane przez specjalne dla nch wydzelony węzeł przetwarzający). Z przedstawonych faktów wynka, że ustalene, jake (w sense merytorycznym) dane będą przechowywane w ramach klucza, jest szczególne stotne z punktu wdzena całego rozwązana. Właśne z takch powodów dentyfkator konkretnego zadana uczącego seć neuronową jest umeszczany w ParttonKey we wszystkch Azure Table wykorzystanych w omawanym systeme uczena sec. Model kosztowy usług Wndows Azure Storage jest skonstruowany tak, że użyce Azure Table Blob jest tańsze nż wykorzystane SQL Azure. Mechanzmy dostarczane w ramach usług Azure Table Blob są proste, ale za to szybke (w porównanu do SQL Azure). Oczywśce w przypadku tworzena aplkacj o stotne złożonym modelu danych użyce SQL Azure może być łatwejsze dla projektantów programstów tworzących chmurowe systemy nformatyczne. W omawanym systeme uczena sec neuronowych taka koneczność ne wystąpła funkcjonalność Azure Table Blob wystarczyła.
52 D. R. Augustyn, K. Badura Mcrosoft Wndows Azure to równeż nowy model programowana systemów nformatycznych przeznaczonych do przetwarzana w chmurze oblczenowej. Wzrost wydajnośc systemów dzałających na podstawe Wndows Azure (w porównanu do klasycznych systemów) może wynkać z możlwośc zrównoleglena rozpraszana przetwarzana/oblczeń. W Wndows Azure wprowadza sę pojęce nstancj, która oznacza maszynę wrtualną (z systemem operacyjnym Wndows) z uruchomonym procesem przetwarzającym. Rozróżnane są dwa rodzaje nstancj: WebRole nstancja, w której procesem przetwarzającym jest uruchomona aplkacja lub usługa Web (utworzona w technolog ASP.NET), oraz WorkerRole nstancja z uruchomonym procesem przetwarzającym (bez obsług nterakcj z użytkownkem, funkcjonalność newzualna, realzowana na podstawe technolog.net, ale równeż Tomcat/Java czy PHP). Przyspeszene oblczeń można osągnąć przez odpowedne przystosowane (zrównoleglene) algorytmu przetwarzającego (np. przez podzał na nezależne podzadana) uruchomene go w konfguracj z klkoma nstancjam/procesam typu WorkerRole. Tak sposób został wykorzystany w omawanym systeme uczena sec neuronowej. Z kole zwelokrotnene nstancj/procesów WebRole (odpowedzalnych za kontakt z użytkownkem systemu) może pozwolć na zwększene dostępnośc systemu dla użytkownków końcowych (w sytuacj, w której jednocześne występuje welu użytkownków systemu nformatycznego). Take dzałane, które z braku potrzeb polegałoby jedyne na zmanach konfguracyjnych (tzn. zwększanu lczby nstancj/procesów typu WebRole), ne byłoby przedmotem badań przy uruchamanu systemu uczena sec neuronowej. 3. Algorytm uczena sec neuronowej metoda wstecznej propagacj błędu dostosowana do przetwarzana współbeżnego Standardowa metoda wstecznej propagacj błędu uczena [5] zakłada aktualzacje wag sec po uwzględnenu każdego przykładu uczącego. To utrudna jej bezpośredne użyce przy tworzenu systemu, w którym zakłada sę zrównoleglene oblczeń. Jest to spowodowane faktem, że dla każdego przykładu uczącego oblczena zależą od wynków oblczeń przeprowadzonych dla poprzednego przykładu. Takego ogranczena ne ma zmodyfkowany algorytm uczena o nazwe batch learnng [6], który polega na kumulacj zmany wag (kumulacja delt wag). W algorytme tym zakłada sę podzał zboru uczącego na rozłączne podzbory (blok). Następne dla każdego podzboru stosuje sę podejśce back propagaton, ale oblczane są jedyne delty wag (ne zachodz modyfkacja samych wag w sec neuronowej). Dopero po zakończenu przetwarzana wszyst-
Realzacja przetwarzana w chmurze oblczenowej na przykładze 53 kch bloków następuje aktualzacja wag, co jest równoważne z zakończenem przetwarzana w ramach jednej epok uczena. Dalej zostane opsana wersja zastosowanego algorytmu uczena sec neuronowej (z N-1 warstwam ukrytym). Metoda ta zostane przedstawona dokładnej w zakrese czynnośc realzowanych w ramach pojedynczej epok uczena. W ramach procesu propagacj w przód dla każdego -tego neuronu w r-tej warstwe oblczana jest suma wag pomnożonych przez wejśca do neuronu: J 1 s w y t, (1) j1 j 1 j gdze: = 1.. J <r>, r = 0.. N; J <r-1> lczba neuronów w warstwe poprzednej; na połączenu neuronu z j-tym neuronem warstwy poprzednej; t tzw. bas, próg przełączena; y wyjśce j-tego neuronu z warstwy poprzednej ( r 1 j sec neuronowej). Na podstawe (1) wyznaczane jest wyjśce -tego neuronu w r-tej warstwe: y 1 1 exp( s w j waga 0 y j oznacza j-te wejśce, (2) ) gdze = 1 jest stałym współczynnkem sgmodalnej funkcj aktywacj neuronu. W wynku propagacj w przód, realzowanej dla każdego przykładu uczącego z bloku wektorów uczących, następuje porównane wyznaczonych wartośc wyjść sec neuronowej N y z wartoścam oczekwanym na wyjścu d, czyl wyznaczene błędu w każdym z neuronów wyjścowych: gdze N N dy ( y d ), (3) ds dy ds N N dy ds N N N N jest pochodną funkcj aktywacj, która dla funkcj sgmodalnej wynos: (1 y ) y. (4) N N W ramach propagacj wstecznej wartość błędu wyjścowego jest dystrybuowana na pozostałe neurony: 1 dy 1 1 k wk. (5) dn J k1 Propagowane błędu przebega od warstwy przedostatnej do perwszej, tzn. r = N-1.. 1. Jednocześne dla każdego połączena w sec wyznaczona jest zmana wag:
54 D. R. Augustyn, K. Badura w y, (6) j 1 j gdze r = 1.. N const. (Oczywśce metoda pozwala równeż na wyznaczane zman współczynnka progu przełączena w każdym z neuronów). W ramach bloku uzyskane delty wag dla każdego połączena są sumowane: r j nrbloku w w. (7) r j po_wszytskch_przykładach_uczących_w_bloku_o_zadanym_ numerze Na tym etape sumowany jest też błąd na wyjścu sec neuronowej dla każdego przykładu uczącego, należącego do bloku. Czynnośc realzowane w ramach przetwarzana bloku są względem sebe nezależne mogą być realzowane w sposób równoległy. Po przetworzenu wszystkch bloków (uwzględnene całego zboru uczącego konec epok) następuje agregacja delt wag z bloków uczących (zsumowane): j ALL w w. (8) r j nrbloku po_wszytskch_blokach Na tym etape następuje równeż agregacja błędów z bloków uczących (zsumowane) wyznaczene błędu dla beżącej epok. W omawanym rozwązanu wykorzystano metodę momentum ( zmana wag z bezwładnoścą ), tzn. ostateczne wartośc delt wag w aktualnej epoce wyznaczane są z uwzględnenem zman wag z epok poprzednej: w w w, (9) e j j ALL e1 j gdze: e jest numerem beżącej epok, const. Wyznaczony zagregowany błąd uczena dla danej epok służy do określena, czy spełnone jest kryterum zakończena całego procesu (tzn. czy osągnęto zadowalającą dokładność uczena). 4. Ops zaproponowanego rozwązana archtektura systemu przetwarzającego w chmurze oblczenowej Archtektura systemu uczena zakłada możlwość pracy w trybe zrównoleglonym środowsku rozproszonym. Korzyśc efektywnoścowe zastosowana takej archtektury wynkają z faktu, że podczas uczena zbór wejścowy, podzelony na blok, przetwarzany jest przez nezależne podzadana typu WorkerRole BackProp Task. System zakłada współpracę klku typów podzadań (rys. 1), tj.: WebRole procesu zakładającego nterakcję z użytkownkem, służącego do ncjalzacj zadana uczena (kontekst: WebRole-Int rys. 4) albo do sprawdzana stanu zadana
Realzacja przetwarzana w chmurze oblczenowej na przykładze 55 odebrana wynków uczena (kontekst: WebRole-Status rys. 8). Po ncjalzacj proces WebRole zgłasza do wykonana podzadane WorkerRole-Start Task; WorkerRole-Start Task (rys. 5) procesu/podzadana rozpoczynającego realzację zdana, tzn. tworzącego ncjującego struktury danych oraz zgłaszającego do wykonana zbór podzadań typu Worker Role BackProp Task; WorkerRole BackProp Task (rys. 6) procesu/podzadana realzującego zmodyfkowany algorytm uczena sec neuronowej dla danego bloku (numer bloku jest parametrem podzadana); ostatn proces typu Worker Role BackProp Task (tzn. ten proces przetwarzający, który wykryje, że przetworzył ostatn blok zboru uczącego) zgłasza do wykonana podzadane WorkerRole End Task; WorkerRole End Task (rys. 7) procesu/podzadana kończącego terację (epokę), wyznaczającego wag na podstawe zman wag wyznaczonych w blokach (przez podzadana WorkerRole BackProp Task); jeśl zostały spełnone warunk zakończena zadana, to podzadane WorkerRole End Task tworzy plk wyjścowy (z wynkowym wagam na wejścach neuronów); w przecwnym wypadku proces zgłasza do wykonana zbór podzadań typu WorkerRole BackProp Task rozpoczyna sę następna epoka. ActvtyIntal WebRole-Int WorkerRole - Start Task... WorkerRole BackProp Task WorkerRole BackProp Task WorkerRole BackProp Task WorkerRole End Task ActvtyFnal Rys. 1. Dagram współpracujących podzadań Fg. 1. Cooperatng subtasks dagram Zgłaszane podzadań do wykonana odbywa sę za pośrednctwem kolejk (WorkerOueue z rys. 3). Do kolejk wstawany jest obekt klasy WorkItem, którego pole WorkItemType okre-
56 D. R. Augustyn, K. Badura śla rodzaj podzadana, a jeśl podzadane jest typu BackProp Task, przekazywany jest dodatkowo numer bloku do przetworzena (BlockNumber). Rys. 2. Synchronzacja procesów przez dane: podzadana Web Role-Int, Start Task, BackProp Task, End Task synchronzowane przez obekty WorlItem w kolejce, a podzadana Back Prop Task przez współdzelony lcznk Current Block w TaskTable Fg. 2. Process synchronzaton by data: subtasks Web Role-Int, Start Task, BackProp Task, End Task synchronzaton usng WorkItem objects placed n queue, and subtasks Back Prop Task synchronzaton usng the shared counter Current Block n TaskTable W głównej częśc kodu programu mplementującego przetwarzane dowolnego procesu typu WorkerRole (w metodze Run), w ramach neskończonej pętl następuje poberane z kolejk zgłoszena podzadana do wykonana w zależnośc od jego typu zachodz realzacja podzadana: Start Task, BackProp Task lub End Task. Lczba procesów (nstancj) typu Worker Role jest parametrem konfguracyjnym systemu. Lczba podzadań typu BackProp Task
Realzacja przetwarzana w chmurze oblczenowej na przykładze 57 wynka z parametrów zadana uczącego, tzn. wartośc cel [NumberOfPatterns / BlockSze]. W przykładze z rys. 2 (gdze pokazano sytuację, w której całe zadane uczena zostało zrealzowane w ramach jednej epok) lczba procesów WorkerRole była równa 2, a lczba podzadań BackProp Task była równa 3. Synchronzacja wykonana podzadań odbywa sę za pośrednctwem zawartośc kolejk, natomast wykryce, czy podzadane BaskProp jest ostatne w ramach danej teracj, odbywa sę przez badane stanu lcznka przetworzonych bloków CurrentBlock (rys. 2). Przy mplementacj systemu wykorzystano różne dostępne rodzaje magazynowana danych (rys. 3), tzn.: Azure Tables (do przechowywana danych strukturalnych np. defnujących parametry zadana, wartośc błędów w epokach czy defnujących archtekturę sec neuronowej), Azure Queues (do szeregowana wykonana podzadań), Azure Blob (do przechowywana zborów danych w postac plków XML (dane wejścowe wyjścowe) plków bnarnych (dane tymczasowe wag, zmany wag)). Rys. 3. Model danych wykorzystane metod przechowywana danych w technolog Wndows Azure, tj. tablc, kolejk pojemnków na obekty-plk typu BLOB Fg. 3. Data model usage of Wndows Azure Table, Queue, and Blob Storage 4.1. Ops współdzałających podzadań Proces WebRole-Int (uruchomona aplkacja ASP.NET), odpowedzalny za komunkację z użytkownkem za pośrednctwem strony WWW (rys. 4), pozwala na podane parametrów zdana uczącego, takch jak:
58 D. R. Augustyn, K. Badura warunk zakończena zadana, tj.: maksymalna lczba teracj MaxIteraton (maksymalna lczba epok) oraz dopuszczalny błąd uczena Epsylon, archtektura sec neuronowej (lczba warstw ukrytych sec neuronowej NoOfLayers lczba neuronów w każdej warstw NoOfNeurons dla LayNo w NetworkTable), rozmar bloku BlockSze (defnujący podzał zboru uczącego na blok), nazwa plku ze zborem uczącym InFlename. Zbór uczący jest w postac plku XML pownen zawerać następujące elementy: lczbę przykładów uczących (wartość NoOfPatterns), lczbę wejść (wartość NoOfInputs), lczbę wyjść sec (wartość NoOfOutputs) oraz oczywśce sekwencję wejścowych wektorów uczących odpowadających m spodzewanych wartośc wyjść sec. Rozpoczęce realzacj zadana uczącego (nacśnęce przycsku na formatce) powoduje utworzene nowego dentyfkatora zadana TaskId (GUID) pokazane go w przeglądarce WWW. Po strone systemu Azure w TaskTable tworzona jest encja z opsem zadana. Użytkownk, który późnej będze chcał sprawdzć stan zadana ewentualne pobrać wynk (realzacja procesu WebRole-Status, rys. 8), będze sę domyślne posługwał tym dentyfkatorem (chyba że zlecł jeszcze nne zadana uczena, wtedy będze musał jawne wybrać jeden z welu dentyfkatorów zadań). W ramach ncjalzacj zadana do chmury przekazywany jest plk wejścowy do kontenera n-out-storage (plk o nazwe <TaskID>-<InFleName>), tworzony jest ops archtektury sec neuronowej (lczba neuronów w każdej z warstw ukrytych) oraz wstawany jeden obekt typu WorkItem, będący zgłoszenem do wykonana podzadana WorkerRole Start. Podzadane typu WorkerRole Start (rys. 5) jest realzowane przez proces (nstancję) typu WorkerRole. W ramach tego procesu następuje: uzupełnene parametrów beżącego zadana (np. NoOfOutputs, NoOfInputs, NoOfPatterns w TaskTable), wprowadzene nformacj o archtekturze sec (lczba wejść wyjść sec w NeuralTable), wygenerowane ncjalnych, przypadkowych wartośc wag sec neuronowej ch seralzacja, tzn. zaps do plku bnarnego <TaskId>-wegths, ncjowane zeram poprzednch zman wag seralzacja do jednego plku bnarnego <TaskID>-deltasHstory (na potrzeby lczena zman wag metodą momentum (wzór (9)) oraz ncjowane zeram zman wag dla każdego z bloków, czyl utworzene tylu plków <TaskId>-deltas-<CurrentBlock>, na le bloków został podzelony cały zbór uczący. Po zakończenu opsanych czynnośc następuje wstawene do kolejk odpowednej lczby obektów WorkItem typu BackPropTask każdy z podanym numerem bloku do przetworzena. To dzałane ncjuje uruchomene welu nezależnych podzadań WorkerRole Back- Prop Task.
Realzacja przetwarzana w chmurze oblczenowej na przykładze 59 Rys. 4. Ops dzałań podzadana WebRole-Int (czynnośc ncjalzacj zadana) Fg. 4. Subtask WebRole-Int n detals (task ntalzaton actons) Rys. 5. Ops dzałań podzadana WorkerRole-Start Task (rozpoczęce zadana) Fg. 5. Subtask WorkerRole-Start Task n detals (startng the task) Podzadane WorkerRole BackProp Task (rys. 6) realzuje algorytm wstecznej propagacj błędu w procese uczena sec na podstawe wektorów uczących z bloku o zadanym numerze.
60 D. R. Augustyn, K. Badura Korzystając z częśc przykładów uczących (z <TaskID>-<InFleName>) wag z poprzednej (teracj) (z <TaskId>-weghts), następuje wyznaczene zman wag połączeń mędzy neuronowych ( ch zaps do <TaskId>-deltas-<CurrentBlock>) (wzór (8)). Dodatkowo lczony jest sumaryczny błąd średnokwadratowy, wyznaczany na podstawe bloku, zapsywany jest do odpowednej encj w OutputErrorTable (ndeksowanej numerem przetwarzanego bloku). Dodatkowo, w TaskTable, nkrementowany jest lcznk przetworzonych bloków (zerowany na początku każdej teracj). Każde podzadane typu WorkerRole Back Prop Task wykonuje przedstawone czynnośc. Jeśl podzadane przetworzyło ostatn blok (stan lcznka równy lczbe bloków), oznacza to konec teracj (zakończona epoka przetworzone wszystke przykłady uczące) do kolejk jest wstawany obekt WorkItem typu EndTask. Rys. 6. Ops dzałań podzadana WorkerRole-BackProp Task (podzadane uczena sec metodą Back Propagate na podstawe przykładów z konkretnego bloku) Fg. 6. Subtask WorkerRole-BackProp Task n detals (subtask of network learnng usng Back Propagate method based on vectors form the concrete block) W ramach podzadana WorkerRole End Task (rys. 7) następuje wyznaczene nowych wag dla całej sec neuronowej tzn. sumowane są zamany wag z każdego <TaskId>-deltas- <CurrentBlock>. Następne zmany te są modyfkowane wartoścam zman wag z poprzednej teracj (z <TaskId>-deltasHstory) (wzór (9)) zapsywane do <TaskId>-weghts. Przy okazj, na potrzeby ewentualnej kolejnej teracj, otrzymane zmany wag nadpsują te zawarte w plku <TaskId>-deltasHstory. W podzadanu WorkerRole End Task następuje równeż agregacja błędów wyznaczonych w ramach każdego z bloków (z tablcy OutputErrorTable) zaps zsumowanej wartośc błędu do encj ErrorTable (ndeksowanej numerem epok, czyl numerem beżącej teracj).
Realzacja przetwarzana w chmurze oblczenowej na przykładze 61 Jeśl ne zostały spełnone krytera zakończena uczena, to nkrementowany jest numer teracj (<CurrentEpoch> w TaskTable) wygenerowana jest odpowedna lczba obektów WorkItem typu BackPropTask (każdy z podanym unkalnym numerem bloku do przetworzena), wstawanych do kolejk zgłoszeń. Tym samym rozpoczyna sę kolejna teracja (epoka ucząca). Jeśl zostały spełnone krytera zakończena uczena (przekroczony w TaskTable lcznk epok, tzn. CurrentEpoch >= MaxIteraton, lub błąd uczena jest odpowedno mały, tzn. mnejszy nż Epsylon), to w kontenerze n-out-blob tworzony jest plk wynkowy <TaskId>-teached.xml z nformacjam o: parametrach zadana, archtekturze sec neuronowej, błędach dla każdej z kolejnych epok uczena oczywśce wynkowych wartoścach wag. Po wygenerowanu plku wynkowego ustawany jest stan zadana jako: wykonane (straned = true w odpowednej encj w TaskTable). Rys. 7. Ops dzałań podzadana WorkerRole-End Task (podzadane zakończena teracj (epok) kontrol warunków zakończena całego zadana uczącego) Fg. 7. Subtask WorkerRole-End Task n detals (subtask of teraton (epoch) endng and checkng fnsh condtons of the whole learnng task) Proces WebRole (kontekst WebRole-Status, rys. 8) odpowedzalny jest za odbór wynków uczena przez użytkownka. Za pomocą aplkacj WWW użytkownk może odpytać system Azure, czy zadane o podanym <TaskId> jest zakończone (sprawdzene straned w TaskTable). Jeśl zadane jest zakończone, można pobrać plk wynkowy (<TaskId>teached.xml).
62 D. R. Augustyn, K. Badura Rys. 8. Ops dzałań podzadana WebRole-Status (czynnośc zwązane ze sprawdzenem stanu zadana pobranem plku wynkowego) Fg. 8. Subtask WebRole-Status n detals (actvtes: checkng status of task executon and downloadng the result fle) 4.1.1. Zrównoleglene czynnośc procesu BackProp Task przez wykorzystane modułu Parallel Extenson for.net W metodze teach, mplementującej funkcjonalność uczena w ramach BackProp Task, wykorzystano rozszerzene Parallel Extenson for.net [8] dla zwększena granulacj podzału podzadana na potrzeby dodatkowego zrównoleglena oblczeń. W metodze teach uruchamanej dla bloku danych, dla każdego przykładu uczącego, tzn. wektora z bloku, następuje wyznaczene zmany wag w każdym neurone zsumowane zmany wag. Oblczena dla pojedynczego przykładu przeprowadzane są nezależene, tzn. zmany wag, wyznaczane na podstawe przykładów uczących, są oblczane w pojedynczej teracj zrównoleglonej pętl Parallel.For [9] (synchronzacja czynnośc w ramach pętl następuje tylko przy zsumowanu zman wag wykorzystane komendy lock). Take podejśce pozwala na zrównoleglene dzałań nawet w ramach pojedynczego procesu WorkerRole Back Prop Task, jeśl tylko proces ten będze uruchamany na maszyne z procesorem welordzenowym. Take uruchomene faktyczne mało mejsce, poneważ wszystke procesy typu WorkerRole były uruchamane w ramach nstancj typu Medum (patrz rys. 8). Tak typ nstancj zakłada możlwość efektywnego wykorzystana mocy oblczenowej maszyny z procesoram welordzenowym dzęk użycu Parallel Extenson for.net. 5. Ops przykładowego użyca systemu 5.1. Admnstracja systemem Admnstrowane systemem uczena sec neuronowej odbywa sę za pośrednctwem standardowego portalu zarządzana chmurą Mcrosoft Wndows Azure. Za jego pomocą system
Realzacja przetwarzana w chmurze oblczenowej na przykładze 63 można wgrywać do chmury, uruchamać, montorować, rekonfgurować, zatrzymywać tp. Na rys. 9 przedstawono wdok panelu admnstracyjnego, pokazujący stan dzałana systemu: dzałające nstancje 1 WebRole 4 WorkeRole; nstancje WorkeRole są typu Medum. Rys. 9. Wdok standardowego panelu admnstracyjnego w przeglądarce nternetowej; przykład uruchomena systemu w chmurze oblczenowej; konfguracja: 1 proces WebRole 4 procesy WorkerRole Fg. 9. A vew of standard admnstratve panel n Web browser; runnng system n cloud computng envronment; the confguraton: 1 WebRole nstance and 4 WorkerRole nstances 5.2. Wynk prostych eksperymentów wydajnoścowych Testowane odbywało sę na emulatorze chmury, w środowsku lokalnym, na komputerze o następujących parametrach: procesor: AMD Athlon(tm) X2 Dual-Core QL-62 2,00 GHz, RAM: 2 GB. Testy zrealzowano równeż w prawdzwej chmurze oblczenowej, na nstancjach maszyn wrtualnych o następujących parametrach: procesor: 2 x 1,6 GHz, RAM: 3,5 GB, lokalna pojemność dyskowa: 490 GB, prędkość sec: ~200 Mbps. Ne jest możlwe stwerdzene, jake rzeczywśce były użyte: komputer, procesor td., poneważ jest to ukryte pod warstwą wrtualzacj. Testy uczena sec neuronowej zrealzowano, operając sę na tzw. ogólnodostępnych danych benchmarkowych zbór Thyrod [7]. Zbór ten został opracowany na podstawe da-
64 D. R. Augustyn, K. Badura nych pacjentów oraz ch wynków badań. Zbór dotyczy dagnoz chorób tarczycy. Dane te pozwalają określć, czy dany pacjent ma nadczynność, nedoczynność lub czy jego tarczyca pracuje normalne. Są one określone przez 25 cech pacjenta, 3 klasy decyzyjne oraz 3600 przykładów uczących. Do tych danych testowych dobrano następującą archtekturę sec: 21 neuronów w warstwe wejścowej (tylko 21, gdyż pomnęto te 4 cechy, w których występowały brak danych), 10 neuronów w warstwe ukrytej oraz 3 neurony wyjścowe. Przyjęto następujące wartośc: dla współczynnka uczena 0,0001 (wzór (6)) dla współczynnka momentum 0, 9 (wzór (9)). Dopuszczalny błąd uczena sec Epsylon przyjęto na pozome 0,01, a maksymalna lczba epok MaxIteraton była równa 100. Rozmar bloku uczącego BlockSze to 1800 przykładów. Został on dostosowany do konfguracj testowej z 2 nstancjam WorkerRole. Tabela 1 Uśrednony czas uczena sec Środowsko pracy Czas uczena [hh:mm:ss] Emulator 00:09:04 Wndows Azure 00:03:47 Jak pokazują wynk w tabel 1, użyce rozwązana w realnej chmurze oblczenowej, nawet w najprostszej konfguracj (tylko 2 nstancje WorkeRole), dało około 3-krotne przyspeszene w stosunku do użyca systemu w środowsku emulatora. 6. Podsumowane Nnejszy artykuł opsuje system uczena sec neuronowej, wykonany na podstawe technolog Mcrosoft Wndows Azure. Dzęk użycu specyfcznych metod przechowywana danych oraz wykorzystując model tworzena systemu opartego na welu współpracujących procesach/nstancjach, zbudowano system skalowany pod względem wydajnośc. System spełnł postawone mu wymagana (nawet przy użycu tylko 2 nstancj WorkerRole wydajność systemu dzałającego w chmurze była lepsza od jego odpowednka uruchamanego w środowsku lokalnym). Pewnym rozczarowanem dla autorów były wynk efektywnoścowe uzyskane w perwszej wersj systemu, w której wykorzystano jedyne Azure Table (bez Azue Blob). Okazało sę, że dodatkowe wykorzystane Azure Blob w kolejnych wersjach sytemu (czyl meszane podejśce z Azure Table Blob) było najefektywnejsze. Oczywśce system może być rozwjany w warstwe merytorycznej (np. nne metody uczena sec). W warstwe techncznej jednym z kerunków rozwoju będze wykorzystane usług buforujących (ang. cache) np. buforowane zboru przykładów uczących czy wartośc
Realzacja przetwarzana w chmurze oblczenowej na przykładze 65 wag z poprzednej epok. To pownno dać pozytywne rezultaty zarówno w sense efektywnośc, jak kosztów eksploatacj (korzystane z cache to nny, bardzej ekonomczny model kosztowy). Szczegółowy ops budowy tego systemu może posłużyć jako wskazówka dla osób tworzących podobne rozwązana (nekoneczne dotyczące dzedzny przedmotowej, zwązanej z secam neuronowym). Nektóre elementy archtektury oraz proste komponenty systemu (np. moduł szeregowana zadań, struktury danych opsujące zadane) można uczynć reużywalnym. Tak kerunek rozwoju prac może zaowocować powstanem modułu szablonowego (ang. framework), wsperającego tworzene systemów zrównoleglonych dla Wndows Azure. Przy użycu takego szablonu projektant/programsta będze odpowedzalny jedyne za dostarczene mplementacj algorytmu przetwarzającego (np. w postac kodu źródłowego albo nawet gotowych podzespołów DLL) oraz utworzene merytorycznych struktur danych. Może to ułatwć proces tworzena rozproszonych systemów przetwarzających, opartych na Wndows Azure. BIBLIOGRAFIA 1. Wndows Azure (2012), http://msdn.mcrosoft.com/en-us/lbrary/dd179367.aspx. 2. Tour Overvew Wndows Azure (2012), http://www.wndowsazure.com/en-us/ home/tour/overvew. 3. Cloud Storage Wndows Azure (2012), http://www.wndowsazure.com/en-us/ develop/net/fundamentals/cloud-storage. 4. Hardas J., Nlakantan N., Calder B.: Wndows Azure Table, http://www.scrbd.com/ doc/63485303/wndows-azure-table-may-2009. 5. Tadeusewcz R.: Sec neuronowe. Akademcka Ofcyna Wydawncza, Warszawa 1993. 6. Wlson R., Martnez T.: The General Ineffcency of Batch Tranng for Gradent Descent Learnng. Neural Networks, 2003. 7. Prechelt L.: A Set of Neural Network Benchmark Problems and Benchmarkng Rules. Techncal Report, Karlsruhe 1994. 8. Parallel Programmng n the.net Framework (2012), http://msdn.mcrosoft.com/enus/lbrary/dd460693.aspx. 9. Data Parallelsm (Task Parallel Lbrary) (2012), http://msdn.mcrosoft.com/en-us/ lbrary/dd537608.aspx.
66 D. R. Augustyn, K. Badura Wpłynęło do Redakcj 31 styczna 2012 r. Abstract The paper presents the system for artfcal neural network learnng based on the dea of cloud computng. System was mplemented for Mcrosoft Wndows Azure, so t s hghly salable and avalable. The well-known learnng algorthm.e. back propagaton method wth momentum was adopted for parallel and dstrbuted executon. The archtecture of cooperatve Worker Role nstances was proposed for parallel executon of network learnng. The paper descrbes applyng of methods of data storage lke Wndows Azure Table, Queue, Blob. Thank to smple NoSQL-lke storage servces.e. Azure Table and Blobs the data manpulaton operatons are effcent. The advantages of parallelzaton result from ether applyng multple processes (nstances) of Worker Roles or applyng Parallel Extenson for.net module n Worker Role s mplementaton. Some elements of system archtecture and component (e. module for tasks management usng queue) are reusable and may be useful n development of other Azure-based dstrbuted system. Adresy Darusz Rafał AUGUSTYN: Poltechnka Śląska, Instytut Informatyk, ul. Akademcka 16, 44-100 Glwce, Polska, draugustyn@polsl.pl. Kaml BADURA: Poltechnka Śląska, Instytut Informatyk, ul. Akademcka 16, 44-100 Glwce, Polska, kaml.badura@hotmal.com.