Łańcuch

Łańcuch
Oryginalni autorzy Seiya Tokui
Deweloperzy Społeczność, preferowane sieci, Inc.
Pierwsze wydanie 9 czerwca 2015 ; 7 lat temu ( 09.06.2015 ) .
Wersja stabilna
7.8.1 / 5 stycznia 2022 r . ; 13 miesięcy temu ( 5 stycznia 2022 )
Magazyn
Napisane w Pyton
Platforma wieloplatformowy
Dostępne w Pyton
Typ Biblioteka głębokiego uczenia się
Licencja MIT
Strona internetowa Łańcuchowy .org

Chainer to platforma głębokiego uczenia typu open source napisana wyłącznie w języku Python na podstawie bibliotek NumPy i CuPy Python. Rozwój jest prowadzony przez japońską firmę Preferred Networks we współpracy z IBM , Intel , Microsoft i Nvidia .

Chainer wyróżnia się wczesnym przyjęciem schematu „ definiuj po uruchomieniu ”, a także wydajnością w systemach na dużą skalę. Pierwsza wersja została wydana w czerwcu 2015 roku i od tego czasu zyskała dużą popularność w Japonii. Co więcej, w 2017 roku został wymieniony przez KDnuggets w pierwszej dziesiątce projektów uczenia maszynowego typu open source w języku Python.

W grudniu 2019 r. firma Preferred Networks ogłosiła przeniesienie swoich prac rozwojowych z Chainer do PyTorch i będzie dostarczać poprawki konserwacyjne dopiero po wydaniu wersji 7.

Zdefiniuj według przebiegu

Chainer był pierwszym frameworkiem do głębokiego uczenia się, który wprowadził podejście „definiuj po uruchomieniu”. Tradycyjna procedura uczenia sieci składała się z dwóch faz: zdefiniowania ustalonych połączeń między operacjami matematycznymi (takimi jak mnożenie macierzy i nieliniowe aktywacje) w sieci, a następnie uruchomienie rzeczywistych obliczeń uczących. Nazywa się to podejściem „zdefiniuj i uruchom” lub „wykresem statycznym”. Theano i TensorFlow należą do godnych uwagi platform, które przyjęły to podejście. W przeciwieństwie do tego w podejściu „definiuj przez przebieg” lub „dynamiczny wykres”, połączenie w sieci nie jest określane w momencie rozpoczęcia szkolenia. Sieć jest określana podczas uczenia w trakcie wykonywania rzeczywistych obliczeń.

Jedną z zalet tego podejścia jest to, że jest intuicyjne i elastyczne. Jeśli sieć ma skomplikowane przepływy sterowania, takie jak instrukcje warunkowe i pętle , w podejściu „zdefiniuj i uruchom” potrzebne są specjalnie zaprojektowane operacje dla takich konstrukcji. Z drugiej strony, w podejściu definiowania przez uruchomienie, natywne konstrukcje języka programowania, takie jak instrukcje if i pętle for, mogą być używane do opisu takiego przepływu. Ta elastyczność jest szczególnie przydatna przy wdrażaniu powtarzających się sieci neuronowych .

Kolejną zaletą jest łatwość debugowania . W podejściu „zdefiniuj i uruchom”, jeśli w obliczeniach uczących wystąpił błąd (taki jak błąd numeryczny), często trudno jest sprawdzić błąd, ponieważ kod napisany w celu zdefiniowania sieci i rzeczywiste miejsce błędu są rozdzielony. W podejściu „definiuj przez uruchomienie” możesz po prostu zawiesić obliczenia za pomocą wbudowanego w język debuggera i sprawdzić dane, które przepływają przez twój kod sieci.

Define-by-run zyskało popularność od czasu wprowadzenia przez Chainera i jest obecnie implementowane w wielu innych frameworkach, w tym w PyTorch i TensorFlow.

Biblioteki rozszerzeń

Chainer ma cztery biblioteki rozszerzeń: ChainerMN, ChainerRL, ChainerCV i ChainerUI. ChainerMN umożliwia używanie Chainera na wielu procesorach graficznych z wydajnością znacznie większą niż inne platformy do głębokiego uczenia się. Superkomputer z systemem Chainer na 1024 procesorach graficznych przetworzył 90 epok ImageNet w sieci ResNet-50 w 15 minut, czyli cztery razy szybciej niż poprzedni rekord Facebooka. ChainerRL dodaje najnowocześniejsze uczenia się głębokiego wzmacniania , a ChainerUI to narzędzie do zarządzania i wizualizacji.

Aplikacje

Chainer jest używany jako platforma dla PaintsChainer, usługi, która wykonuje automatyczne kolorowanie czarno-białych, tylko liniowych rysunków roboczych przy minimalnym udziale użytkownika.

Zobacz też

Linki zewnętrzne