sztuczne-sieci-neuronowe

Thu, 23 Jul 2009 17:08:00 +0000

Sztuczny mózgTemat interesuje mnie z tego względu, że zawodowo zajmuję się tą dziedziną. Razem z kolegami z Uniwersytatu Technologiczno - Przyrodniczego z Bydgoszczy pracujemy nad implementacją sztucznych sieci neuronowych za pomocą analogowych układów scalonych bardzo niskiego poboru mocy. Aby pokazać możliwości takich układów podam może kilka ciekawych moim zdaniem danych.

W artykule tym napisano, że "aby móc w pełni symulować sztuczną sieć neuronową, naukowcy wykorzystali do jej symulacji superkomputer, czyli wyjątkowo wydajną maszynę, wyposażoną w tysiące procesorów. W tym przypadku jest to IBM Blue Gene, posiadający 10 tysięcy jednostek centralnych. Potrzeba jednego laptopa, by móc dokonywać obliczeń dla jednego neuronu. Potrzeba więc dziesiątek tysięcy laptopów - mówi Markram."

Jest to w pewnym uproszczeniu prawda, choć to ile neuronów może symulować jeden komputer zależy od typu sieci, rodzaju algorytmu uczenia, liczby wejść pojedynczego neuronu, szybkości podawania danych na wejścia sieci i innych parametrów. Niedawno napisaliśmy program symulujący pracę przykładowej sieci neuronowej Kohonena. Program taki nie jest niczym szczególnym. W C++ to zaledwie 100 linijek kodu, co wynika z tego, że u podłoża działania sieci neuronowych typowo leżą bardzo proste operacje matematyczne. Symulacje wykonywaliśmy na komputerze klasy PC z procesorem Core 2 duo, taktowanym zegarem 1.87 GHz. Sieć symulowana była dla różnych wartości wspomnianych parametrów, nawet do kilku tysięcy neuronów, choć wtedy pracowała wolno, ze względu na szeregowe przetwarzanie danych. Przykładowa sieć z czterema neuronami i trzema wejściami (12 wag) pracowała z szybkością miliona danych na sekundę. Inaczej mówiąc komputer był w stanie dokonywać 12 mln uaktualnień wag na sekundę. Celowo podałem wyniki dla takiej liczby neuronów oraz wejść, ponieważ 2 lata temu zaprojektowaliśmy scaloną prototypową sieć o dokładnie takich samych parametrach jako analogowy układ scalony. Sieć ta zawiera około 2500 tranzystorów.

Sieć wykonaliśmy całkowicie od podstaw (90% użytych bloków składowych jest naszego pomysłu) korzystając z technologii CMOS 0.18 µm, czyli takiej w jakiej został zaprojektowany w 2000 roku procesor Athlon taktowany zegarem 1.2 GHz. Chcąc teraz dokonać porównania parametrów obu implementacji (C++ oraz CMOS) stawiamy siebie na częściowo straconej pozycji, bo korzystamy z technologii sprzed 10 lat. Powodem wyboru tej technologii była przede wszystkim jej cena - 1 mm2 kosztuje około 5400 $ w fabryce na Tajwanie. W Kanadzie gdzie układ został zaprojektowany, oferowane są spore zniżki dla pracowników uczelnii wyższych, takie że ostatecznie za 1 mm2 zapłaciliśmy jedynie 280$. Dla porównania technologia 0.13µm była już 4-krotnie droższa, a 90 nm ponad 10-krotnie droższa.

Wykonaną sieć sprawdziliśmy pomiarowo w laboratorium. Wyniki pomiarów są bardzo ciekawe. Sieć jest w stanie pracować z szybkością danych nawet 2 mln na sekundę (24 mln uaktualnień wag na sekundę), czyli co do rzędu wielkości porównywalnie z siecią zaimplementowaną w C++. Kluczem do tego jest w pełni równoległe przetwarzanie danych co oznacza, że wszystkie 12 wag jest obliczanych w tym samym czasie. Sieć w dużej mierze pracuje asynchronicznie.

Moc pobierana przez nasz układ wynosiła jedynie 700 µW, przy napięciu 1.5V, czyli około 100 tysięcy !!! razy mniej, niż moc pobierana przez komputer PC. Cała sieć zajmuje powierzchnię jedynie 0.07 mm2, przy wymiarach liniowych 350 x 200 µm.

Ponieważ w układzie zastosowano budowę modułową, dlatego można w bardzo prosty sposób zwiększyć liczbę neuronów oraz wag w pojedynczym neuronie, poprzez powielanie poszczególnych bloków. Możemy sobie zatem wyobrazić sieć składającą się z 1000 neuronów, zajmującą (przy 12 wagach na każdy neuron) powierzchnię około 100 mm2, pobierającą moc mniejszą niż 1 W. Podana powierzchnia nie jest czymś szczególnym. W seryjnej produkcji układ taki kosztowałby od kilku do kilkunastu $, pobierając moc kilkadziesiąt razy mniejszą niż pojedynczy komputer PC, mając przy tym moc obliczeniową około tysiąca takich komputerów.

Myślę, że przyszłość układów symulujących ludzki mózg to raczej specjalizowane układy scalone niskiej mocy, ściśle dopasowane do określonych zadań tzw. ASIC (application specific integrated circuit), a nie potężne superkomputery. Jaka będzie przyszłość pokaże czas. Znamy wiele przypadków, gdzie w wyniku zbiegu okoliczności zwyciężało rozwiązanie gorsze (np. PC zamiast Amigi). Tym razem pewnie będzie podobnie i zwycięży ten kto więcej zainwestuje w promocję :-)

W każdym razie polemizując z cytowanym powyżej artykułem, uważam, że aby mozna było symulować taką sieć, nie potrzeba dziesiątek tysięcy laptopów czy też procesorów, a jedynie kilkadziesiąt niewielkich specjalizowanych chipów analogowych (albo kilkanaście o większych rozmiarach), mieszczących się na jednym biurku i pobierających w przybliżeniu moc jednego komputera PC.

Poniżej zamieszczam kilka przykładowych ilustracji oraz danych dotyczących naszego projektu. Są to zdjęcia wykonane pod mikroskopem, zrzuty topologii poszczególnych komponentów z programu do projektowania takich układów (Cadence), zdjęcie stanowiska pomiarowego, oraz przykładowy artykuł opisujący sam układ wraz ze schematami elektrycznymi.

analogowa sztuczna sieć neuronowa