artykuły

HotChips 2019: przegląd sprzętowych akceleratorów SI

8
4 września 2019, 15:21 Mateusz Brzostek

Intel Nervana NNP-T

Niemal dokładnie 3 lata temu Intel przejął firmę Nervana, zajmującą się projektowaniem sprzętu i oprogramowania do przyspieszania zadań związanych z SI. Pula wiedzy i doświadczenia Nervany została połączona z ich własną, podobnie jak w przypadku przejętej w podobnym czasie firmy Movidius. Akcelerator maszynowego uczenia Nervana NNP-T (nazwa robocza: Spring Crest) powstał na podstawie projektu rozpoczętego kiedy Nervana była jeszcze osobną firmą.

Akcelerator Spring Crest został zaprojektowany z myślą o jak najefektywniejszym wykorzystaniu dostępnych zasobów obliczeniowych. Jak twierdzi Intel, akceleratory Nvidii wykorzystują podczas typowych zadań związanych z trenowaniem SI nie więcej niż 1/3 swoich maksymalnych możliwości obliczeniowychPodczas testów obliczeniowych kart GeForce Titan RTX i Radeon VII obserwowaliśmy, że procesory graficzne były często wykorzystane w maksymalnym stopniu, na jaki pozwalały limity energetyczne, z pewnością daleko powyżej 1/3.. Spring Crest ma w tych samych warunkach wykorzystywać swoje zasoby obliczeniowe ok. 2 razy lepiej.

Głównym środkiem, który to zapewnia, jest stosunkowo pojemna i bliska jednostkom obliczeniowym pamięć. NNP-T ma 24 podstawowe bloki obliczeniowe – TPC (Tensor Processing Cluster). Każdy TPC ma 2,5 MB własnej pamięci podręcznej i jest połączony z sąsiednimi TPC za pomocą sieci szybkich połączeń punkt-punkt. Dane przechowywane w pamięci TPC są dostępne również dla innych TPC, dzięki czemu rzadziej trzeba sięgać do pamięci HBM, a częściej można wykorzystać dane już obecne gdzieś w jądrze obliczeniowym.

Wbudowana w TPC pamięć ma pewną funkcję odciążającą jednostki obliczeniowe: trójwymiarowe macierze można odczytać w oryginalnej albo transponowanej postaci, dzięki czemu nie trzeba wykonywać transpozycji jako osobnej, zaprogramowanej operacji. Jądro Spring Crest jest połączone z czterema stosami pamięci HBM2, łącznie 32 GB, w niejednolitej konfiguracji – sześć bloków TPC ma najszybszy dostęp do najbliższego kontrolera pamięci i nieco wolniejszy do pozostałych. Pamięć w ramach jednego procesora NNP-T jest zarządzana programowo, czyli nie działa jak wspólna, spójna pamięć podręczna. Jeśli kilka NNP-T jest połączonych bezpośrednio ze sobą, to dla oprogramowania wszystkie TPC wyglądają tak samo, niezależnie czy znajdują się w jednym procesorze czy w różnych.

Każdy TPC zawiera dwa bloki obrabiające macierze o rozmiarze 32×32 liczby w formacie BFLOAT16. NNP-T wykorzystuje własny zestaw instrukcji, który można częściowo dostosować do własnych potrzeb dzięki znanemu z uniwersalnych procesorów mechanizmowi aktualizacji mikrokodu. NNP-T można programować za pośrednictwem wysokopoziomowego interfejsu programowania nGraph, ale Intel zamierza udostępnić również dokumentację i kompilator języka NNP-T.

Procesor Spring Crest ma cztery łącza pozwalające na bezpośrednie połączenie większej liczby identycznych akceleratorów w klaster. Grupy czterech NNP-T są połączone każdy z każdym, a większa liczba, maksymalnie 1024 – w dowolnej topologii (Intel proponuje pierścień z grup 4 NNP-T). Model programowy NNP-T pozwala potraktować wszystkie zasoby obliczeniowe i całą pamięć jako dużą, jednolitą pulę; w ten sposób cały klaster może pracować nad jedną siecią.

Akceleratory Spring Crest będą dostępne w formie kart PCI-E 4.0 ×16 lub modułów OAM.

3