MindSpore Huawei: Nowy Konkurent Dla TensorFlow I PyTorch?

Spisu treści:

MindSpore Huawei: Nowy Konkurent Dla TensorFlow I PyTorch?
MindSpore Huawei: Nowy Konkurent Dla TensorFlow I PyTorch?

Wideo: MindSpore Huawei: Nowy Konkurent Dla TensorFlow I PyTorch?

Wideo: MindSpore Huawei: Nowy Konkurent Dla TensorFlow I PyTorch?
Wideo: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, Może
Anonim

Huawei ogłosił, że oprogramowanie pośredniczące MindSpore Deep Learning w stylu TensorFlow i PyTorch jest teraz oprogramowaniem typu open source. W tym artykule dowiesz się o jego najważniejszych cechach.

MindSpore od Huawei
MindSpore od Huawei

Huawei ogłosił właśnie, że jego framework MindSpore do tworzenia aplikacji AI staje się open source i jest dostępny na GiHub i Gitee. MindSpore to kolejna platforma Deep Learning do uczenia modeli sieci neuronowych, podobna do TensorFlow lub PyTorch, zaprojektowana do użytku od Edge do Cloud, która obsługuje zarówno procesory GPU, jak i oczywiście procesory Huawei Ascend.

W sierpniu ubiegłego roku, kiedy Huawei ogłosił oficjalną premierę swojego procesora Ascend, po raz pierwszy wprowadzono MindSpore, stwierdzając, że „w typowej sesji szkoleniowej opartej na ResNet-50 połączenie Ascend 910 i MindSpore jest około dwa razy szybsze. Podczas uczenia modeli AI w porównaniu z innymi głównymi kartami do nauki przy użyciu TensorFlow Prawdą jest, że w ostatnich latach pojawiło się wiele frameworków i być może MindSpore to tylko jedna grupa, która może nawet zdalnie konkurować z TensorFlow (wspieranym przez Google) i PyTorch (wspieranym przez Facebooka).).

Architektura systemu

Witryna MindSpore opisuje, że infrastruktura składa się z trzech głównych warstw: wyrażenia frontendowego, silnika graficznego i środowiska wykonawczego zaplecza. Poniższy rysunek przedstawia schemat wizualny:

Obraz
Obraz

Pierwszy poziom MindSpore oferuje programistom API Pythona. Ponieważ językoznawstwo językowe w naszej społeczności to de facto Python, a poza tym MindSpore chce konkurować z PyTorch i TensorFlow. Dzięki temu API programiści mogą manipulować modelami (uczeniem, wnioskowaniem itp.) oraz przetwarzać dane. Ten pierwszy poziom obejmuje również obsługę tymczasowej reprezentacji kodu (MindSpore IR), na której będzie opierać się wiele optymalizacji, które można wykonać w ramach zrównoleglania i automatycznego różnicowania (GHLO).

Poniżej znajduje się warstwa Graph Engine, która zapewnia niezbędną funkcjonalność do tworzenia i wykonywania automatycznego różnicowania grafu wykonania. W MindSpore zdecydowali się na automatyczny model różnicowania inny niż PyTorch (który generuje dynamiczny wykres wykonania) lub TensorFlow (chociaż pierwotnie wybrano opcję stworzenia bardziej wydajnego statycznego harmonogramu wykonania, teraz oferuje również opcję dynamicznego wykresu wykonania i pozwala statyczna wersja grafu z wykorzystaniem dekoratora @tf.function jego niskopoziomowego API).

Wybór MindSpore polega na konwersji kodu źródłowego do formatu kodu pośredniego (MindSpore IR), aby skorzystać z obu modeli (więcej informacji można znaleźć w sekcji „Automatyczna separacja” na stronie internetowej MindSpore).

Ostatnia warstwa składa się ze wszystkich bibliotek i środowisk wykonawczych potrzebnych do obsługi różnych architektur sprzętowych, w których będzie przetwarzany kod. Najprawdopodobniej będzie to backend bardzo podobny do innych frameworków, być może z funkcjami Huawei, takimi jak biblioteki takie jak HCCL (Huawei Collective Communication Library), odpowiednik NVIDIA NCCL (NVIDIA Collective Communication Library).

Wsparcie wizualizacji treningu

Zgodnie z samouczkiem MindSpore, chociaż nie można było ich zainstalować i używać, mają MindInsight do tworzenia wizualizacji, które nieco przypominają TensorBoard, TensorFlow. Spójrz na kilka zrzutów ekranu, które pokazują na swojej stronie internetowej:

Obraz
Obraz
Obraz
Obraz

Zgodnie z instrukcją MindSpore wykorzystuje obecnie mechanizm wywołań zwrotnych (przypominający to, jak to się robi z Kerasem) do zapisywania (w pliku dziennika) w procesie uczenia wszystkich tych parametrów modelu i hiperparametrów, które chcemy, a także harmonogramu obliczeń, kiedy kompilacja sieci neuronowej do kodu pośredniego została zakończona.

Równoległość

W swoim samouczku omawiają dwa tryby równoległości (DATA_PARALLEL i AUTO_PARALLEL) i dostarczają przykładowy kod, który trenuje ResNet-50 z zestawem danych CIFAR dla procesora Ascend 910 (którego nie byłem w stanie przetestować). DATA_PARALLEL odnosi się do strategii powszechnie znanej jako równoległość danych, która polega na dzieleniu danych uczących na wiele podzbiorów, z których każdy działa na tej samej replice modelu, ale w różnych jednostkach przetwarzania. Obsługa Graph Engine jest zapewniona dla paralelizacji kodu, aw szczególności dla paralelizmu AUTO_PARALLEL.

Tryb AUTO_PARALLEL automatycznie optymalizuje zrównoleglenie poprzez połączenie strategii zrównoleglania danych (omówionej powyżej) ze strategią zrównoleglania modelu, w której model jest podzielony na różne części, a każda część jest wykonywana równolegle w różnych jednostkach przetwarzania. Ten tryb automatyczny wybiera strategię równoległości, która oferuje najlepsze korzyści, o czym można przeczytać w sekcji Automatyczne równoległe na stronie internetowej MindSpore (chociaż nie opisują, w jaki sposób podejmowane są oszacowania i decyzje). Będziemy musieli poczekać, aż zespół techniczny rozwinie dokumentację i zrozumie więcej szczegółów na temat strategii autorównoległości. Jasne jest jednak, że ta strategia autorównoległości ma kluczowe znaczenie i właśnie tam powinni i mogą konkurować z TensorFlow lub PyTorch, uzyskując znacznie lepszą wydajność przy użyciu procesorów Huawei.

Planowana mapa drogowa i jak wnieść swój wkład

Oczywiście jest dużo pracy do wykonania i w tym momencie uprościli pomysły, które mają na myśli na przyszły rok w obszernej mapie drogowej przedstawionej na tej stronie, ale twierdzą, że priorytety zostaną dostosowane do użytkownika.

Informacja zwrotna. W tej chwili możemy znaleźć te główne linie:

  1. Obsługa większej liczby modeli (oczekujące modele klasyczne, GAN, RNN, Transformers, modele z amplifikacją uczenia się, programowanie probabilistyczne, AutoML itp.).
  2. Rozszerz interfejsy API i biblioteki, aby poprawić użyteczność i doświadczenie programowania (więcej operatorów, więcej optymalizatorów, więcej funkcji strat itp.)
  3. Kompleksowa obsługa procesorów Huawei Ascend i optymalizacja wydajności (optymalizacja kompilacji, poprawa wykorzystania zasobów itp.)
  4. Ewolucja stosu oprogramowania i wykonywanie optymalizacji grafów obliczeniowych (poprawa pośredniej reprezentacji IR, dodanie dodatkowych możliwości optymalizacji itp.).
  5. Obsługa większej liczby języków programowania (nie tylko Python).
  6. Ulepszone nauczanie rozproszone z optymalizacją automatycznego planowania, dystrybucji danych itp.
  7. Ulepsz narzędzie MindInsight, aby ułatwić programiście „debugowanie” i poprawić dostrajanie hiperparametrów podczas procesu uczenia.
  8. Postęp w dostarczaniu funkcjonalności wnioskowania do urządzeń w Edge (bezpieczeństwo, obsługa modeli nieplatformowych przez ONNX itp.)

Na stronie społeczności możesz zobaczyć, że MindSpore ma partnerów spoza Huawei i Chin, takich jak University of Edinburgh, Imperial College London, University of Munster (Niemcy) lub Paris-Saclay University. Mówią, że będą postępować zgodnie z modelem otwartego zarządzania i zaprosić całą społeczność do wniesienia wkładu zarówno w kod, jak i dokumentację.

Wniosek

Po szybkim pierwszym spojrzeniu wydaje się, że właściwe decyzje projektowe i implementacyjne (takie jak współbieżność i automatyczne różnicowanie) mogą dodać miejsce na ulepszenia i optymalizacje, które zapewniają lepszą wydajność niż frameworki, które chcą przewyższyć. Ale przed nami jeszcze wiele pracy, aby złapać PyTorch i TensorFlow, a przede wszystkim zbudować społeczność, nie tylko! Jednak wszyscy już wiemy, że dzięki wsparciu jednej dużej firmy z branży, takiej jak Huawei, wszystko jest możliwe, a trzy lata temu było oczywiste, że pierwsza wersja PyTorch (Facebook) wyszła, że może być blisko pięty TensorFlow (Google)?

Zalecana: