Łańcuch
Oryginalni autorzy | Seiya Tokui |
---|---|
Deweloperzy | Społeczność, preferowane sieci, Inc. |
Pierwsze wydanie | 9 czerwca 2015 | .
Wersja stabilna | 7.8.1 / 5 stycznia 2022 r
|
Magazyn | |
Napisane w | Pyton |
Platforma | wieloplatformowy |
Dostępne w | Pyton |
Typ | Biblioteka głębokiego uczenia się |
Licencja | MIT |
Strona internetowa |
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.