Sztuczna inteligencja w projektowaniu układów scalonych

| Technika

Sztuczna inteligencja, uczenie maszynowe, sieci neuronowe – to terminy, które dawniej były kojarzone przede wszystkim z filmami i literaturą science fiction. W ostatnim czasie coraz częściej są jednak wymieniane w kontekście realnych rozwiązań jak auta autonomiczne, systemy rozpoznawania obrazów czy analizowania mowy. Na tych ostatnich bazują na przykład wirtualni asystenci głosowi. Trwają też prace nad nowymi zastosowaniami – opierając się na doniesieniach medialnych, można wręcz odnieść wrażenie, że sztuczna inteligencja jest w stanie rozwiązać większość problemów ludzkości. Jeśli tak, można by zapytać, dlaczego tak długo trwało jej urzeczywistnienie, skoro jako koncepcja jest ona znana już od lat 60. zeszłego wieku.

Sztuczna inteligencja w projektowaniu układów scalonych

Sztuczna inteligencja nie jest pod tym względem wyjątkiem, na przykład pierwsze samochody elektryczne opracowano już w połowie dziewiętnastego wieku! W ich przypadku trzeba było jednak od tamtej pory poczekać na rozwój sieci energetycznej pozwalającej na ich doładowywanie oraz postęp w zakresie możliwości magazynowania energii elektrycznej, zanim pierwsze egzemplarze samochodów tego typu wyjechały na drogi.

Sztuczna inteligencja a projektowanie IC

Analogicznie stało się w przypadku sztucznej inteligencji. Dopiero stosunkowo niedawno moc obliczeniowa procesorów i pojemności pamięci osiągnęły poziomy konieczne w realizacji jej skomplikowanych algorytmów, a jednocześnie korzystanie z tych zasobów w skali, która jest wymagana w tym zastosowaniu, stało się opłacalne.

Co ciekawe, w tym przypadku zależność ta jest zdecydowanie dwustronna. Nie tylko bowiem dalszy rozwój sztucznej inteligencji nie będzie możliwy bez postępu w dziedzinie układów scalonych, ale również ona sama jest idealnym narzędziem do usprawnienia procesu ich projektowania. W artykule na wstępie przybliżamy tematykę AI (Artificial Intelligence), następnie proces projektowania układów scalonych, a na koniec przedstawiamy przykład praktycznego wykorzystania sztucznej inteligencji w tym zadaniu.

Klasyfikacja AI

Formą sztucznej inteligencji, która jest kluczowa dla jej zastosowania w projektowaniu układów scalonych, jest uczenie maszynowe (Machine Learning, ML). W praktyce polega ono na zdolności algorytmów do samodoskonalenia się na podstawie doświadczenia, które zdobywają w oparciu o dostarczane im dane.

W ramach dalszej klasyfikacji form sztucznej inteligencji w obrębie technik uczenia maszynowego wyróżnia się sieci neuronowe, zaś wśród nich głębokie sieci neuronowe (Deep Neural Networks, DNN) (rys. 1). Zwłaszcza te ostatnie zyskały ostatnio na znaczeniu. Wynika to stąd, że wykorzystują mechanizmy podobne do tych, na których opiera się praca ludzkiego mózgu. Podobieństwo do tego organu zapewnia DNN wielopoziomowa struktura sieci neuronowych.

 
Rys. 1. Klasyfikacja form sztucznej inteligencji

Uczenie maszynowe w pigułce

Generalnie modele ML stanowią bloki funkcyjne. Łączy się je w łańcuchy w celu rozwiązania konkretnego problemu. Modele mogą pełnić różne funkcje, takie jak przykładowo: wykrywanie, klasyfikacja i segmentacja. Są to typowe zadania z zakresu przetwarzania obrazów. Inne funkcje to na przykład optymalizacja ścieżek czy wykrywanie anomalii.

Pod tym względem modele te przypominają na przykład bloki FFT. Różnica dotyczy konfiguracji – w przeciwieństwie do tych ostatnich modele ML nie przyjmują parametrów, lecz wymagają wytrenowania. W tym celu wykorzystuje się dużą liczbę próbek. W przypadku przetwarzania obrazów mogą to być na przykład zdjęcia danego typu obiektów, do wykrywania których konkretny algorytm jest trenowany. Jak w przypadku każdej nowej technologii na wczesnym etapie rozwoju, także technikom uczenia maszynowego jeszcze daleko do doskonałości.

Ograniczenia ML

Przykładowo często modele ML działają prawidłowo tylko na danych podobnych do tych, na których zostały wyszkolone. Natomiast im większe różnice występują między tymi ostatnimi a danymi roboczymi, tym ich dokładność jest mniejsza.

Charakterystyczne jest również to, że prawidłowy wynik jest zwykle gwarantowany z określonym prawdopodobieństwem, a skuteczność algorytmu jest wyrażana procentowo. Modele są również "zadaniowe". Oznacza to w praktyce, że na przykład model wytrenowany w rozpoznawaniu na obrazie koni i krów pozwala z wysokim poziomem pewności stwierdzić, że zdjęcie przedstawia jedno z tych zwierząt. Dokładność odróżnienia konia od krowy jest już jednak zwykle znacznie niższa, a rozpoznanie konkretnej rasy nawet niemożliwe. Charakterystyczne jest również to, że osiągnięcie przeciętnej dokładności bywa stosunkowo łatwe i szybkie, lecz już udoskonalanie modelu do uzyskania pewności na poziomie na przykład 99% jest trudne i czasochłonne.

Wyzwania w projektowaniu układów scalonych

Układ scalony jest podzielony na dziesiątki bloków, z których każdy jest oddzielnym modułem. Wyróżnić można na przykład bloki pamięci czy moduł jednostki obliczeniowej. Na etapie jego projektowania bloki te są przedstawiane w postaci schematu połączonych ze sobą komponentów, takich jak bloki pamięci i elementy standardowe (bramki logiczne).

Zadanie rozplanowania rozmieszczenia komponentów bloku w okach siatki, która dzieli na obszary podłoże układu scalonego, jest jednym z najbardziej złożonych i czasochłonnych etapów w procesie projektowania układu scalonego. W tym kroku trzeba bowiem schemat bloku tak przekształcić, aby zoptymalizować parametry pracy i wydajnościowe, przy jednoczesnym efektywnym wykorzystaniu dostępnego miejsca, a zarazem z zachowaniem ograniczeń w zakresie gęstości połączeń.

Pomimo dziesięcioleci badań nad tym zadaniem eksperci wciąż muszą pracować tygodniami, by spełnić wieloaspektowe kryteria projektowe. Złożoność procesu planowania rozmieszczania komponentów bloków IC wynika z kilku czynników, w tym: liczebności komponentów na schematach modułów, które liczone są w milionach do miliardów sztuk, dużej rozdzielczości siatki, w obrębie której mają zostać rozłożone i stopnia skomplikowania obliczeń wskaźników, które pozwalają na ocenę stopnia zgodności projektu z jego założeniami. Zwiększenie stopnia automatyzacji tego zadania z wykorzystaniem technik sztucznej inteligencji może przynieść znaczące oszczędności i poprawić efektywność.

Eksperyment Google

Pierwsze eksperymenty w zakresie wykorzystania technik sztucznej inteligencji w projektowaniu układów scalonych są już przeprowadzane. Przykładem jest ten firmy Google, w którym została zastosowana jedna z technik uczenia maszynowego – uczenie ze wzmocnieniem (Reinforcement learning, RL), które optymalizuje zachowania w sekwencyjnych procesach decyzyjnych.

W uproszczeniu dane wejściowe, czyli m.in. schemat bloku, dane elementu, który trzeba rozmieścić i pewne metadane, jak m.in. całkowita liczba połączeń, bloków pamięci i modułów standardowych, są analizowane sukcesywnie przez kilka sieci neuronowych, w których wyniki na wyjściu jednych są danymi wejściowymi dla kolejnych. Rezultatem jest analiza opłacalności umieszczenia danego komponentu w różnych miejscach. W następnych iteracjach rozmieszczane są kolejne elementy bloków.

Wyniki są zachęcające

Na im większej liczbie schematów i bloków system pracował, tym osiągał lepsze wyniki. Na przykład z czasem "nauczył się" kategoryzować oraz skupiać w jednym miejscu elementy tego samego typu. Dzięki temu połączenia między nimi były krótsze i nie były nadmiernie zagęszczone. Z czasem poprawiała się również szybkość.

Ostatecznie czas wykonania zadania rozmieszczenia komponentów bloków układu scalonego udało się skrócić do kilku godzin w porównaniu z kilkoma tygodniami, jakie to typowo trwa, przy czym kryteria projektowe udało się spełnić w stopniu równym, a nawet dla niektórych przypadków przewyższającym wyniki uzyskane metodą standardową. Chociaż eksperyment został przeprowadzony dla układów ASIC TPU (Tensor Processing Unit) firmy Google, opracowane rozwiązanie powinno się sprawdzić też w przypadku innych.

 

Monika Jaworowska