[PYTHON] Chainer 2.0 wird bald veröffentlicht Es scheint, dass ein weiterer Chainer veröffentlicht wird, der verteilte Verarbeitung in großem Maßstab unterstützt.

Aus dem Artikel über Nikkei IT Pro 2017/01/27 Das Deep Learning Framework "Chainer" von PFN unterstützt die verteilte Verarbeitung für eine deutlich schnellere Geschwindigkeit


Ich benutze Chainer seit anderthalb Jahren für den persönlichen Gebrauch (Lernen und ein wenig Recherche) und seit etwa einem Jahr für geschäftliche Projekte.

Ich habe mich oft gefragt, was der Unterschied zwischen den beiden ist, aber der Punkt, an dem Chainer minderwertig war, war, dass es keine verteilte Verarbeitung auf mehreren Knoten unterstützt. Es ist jedoch unwahrscheinlich, dass Sie einem großen Datensatz ausgesetzt sind, der eine verteilte Verarbeitung für Projekte mit Bottom-Freelancern erfordert.

Scheint mindestens 32 Knoten / 128 GPUs zu unterstützen

image (Nachdruck über den obigen Link)

Das Lernen, das mit 1 Knoten / 1 GPU 20 Tage oder länger dauerte, wurde mit 32 Knoten / 128 GPU auf 4,4 Stunden verkürzt. Selbst wenn "20 Tage oder mehr" als 20 Tage berechnet wird, ist es tatsächlich 109-mal schneller.

Darüber hinaus bedeutet die Tatsache, dass 128 GPUs die 109-fache Leistung von 1 GPU erreichten, dass der effektive Wirkungsgrad 85,22% erreicht hat, was einen hohen Wirkungsgrad erreicht, der als abnormal bezeichnet werden kann.

Obwohl ich ein selbsternannter Bottom Freelancer bin, bin ich gut in der verteilten Verarbeitung in großem Maßstab. Selbst wenn die Datenrelevanz ** spärlich ** ist, ist es schwierig, eine Effizienz von 85% zu erreichen. Darüber hinaus ist es keine Übertreibung zu sagen, dass das Erreichen dieser Effizienz durch maschinelles Lernen, das relativ eng miteinander verbunden ist, eine Leistung ist.

Abgesehen davon verwenden wir in verteilten Verarbeitungssystemen häufig den Begriff "4 für 3", was bedeutet, dass wir die Leistung von 3 für 4 Einheiten erreichen möchten. Mit anderen Worten beträgt der effektive Wirkungsgrad 75%. Diese 75% sind jedoch nur ein Zielwert und in Wirklichkeit nicht so einfach zu erreichen.

Mit MXNet und CNTK liegt der effektive Effekt bei etwa 40 bis 50%, was ich für normal halte, aber ich bin sicher, dass die mit der verteilten Verarbeitung kompatible Version von Chainer großartige Technologie verwendet.

Forward ist mit DataParallel effizienter, Backward ist jedoch weniger effizient, da vor der Verlustberechnung eine synchrone Verarbeitung erforderlich ist. Nach der Verlustberechnung wird eine Backpropagation durch Optimizer durchgeführt, diese wird jedoch auch verteilt ausgeführt oder ist eine Methode zum Verarbeiten und Aktualisieren von Gewicht usw. in einem Knoten und zum Liefern an jeden Knoten ...

Darüber hinaus ist die Leistung mehr als fünfmal so hoch wie die von TensorFlow, sodass erwartet wird, dass sie in Großprojekten eingesetzt wird.

MPI und InfiniBand werden übrigens als Verbindungstechnologie zwischen verteilten Knoten verwendet. Wie im ITPro-Artikel erwähnt, handelt es sich vollständig um Spacon-Technologie. Was für eine Menge mit Protokollpuffern und 10 GbE ... (lacht)

Auch nach Meinung von "normalen Leuten" wie uns erwarte ich sehr, dass die Geschwindigkeit auch in einer Umgebung wie 1 Knoten / 4 GPU erhöht wird.

Chainer 2.0 wird in naher Zukunft veröffentlicht

Es befindet sich auf der zweiten Seite und kann nur von IT Pro-Mitgliedern gelesen werden

PFN wird in naher Zukunft "Chainer 2.0" veröffentlichen, dies ist jedoch keine verteilte Version von Chainer. Und das.

Leider enthielt der ITPro-Artikel keine Details zu Chainer 2.0. Ich frage mich, wann "bald kommen" konkret ist.

In Artikel, den ich neulich geschrieben habe habe ich Ihnen gesagt, dass TensorFlow 1.0 bald veröffentlicht wird, aber wir haben hart zusammengearbeitet und es ist ein besseres Framework geworden. Ich möchte, dass. (Andere Kraftanwendung)

Ich freue mich auf den Folgebericht.

Recommended Posts

Chainer 2.0 wird bald veröffentlicht Es scheint, dass ein weiterer Chainer veröffentlicht wird, der verteilte Verarbeitung in großem Maßstab unterstützt.
Es scheint, dass Skeleton Tracking mit RealSense durchgeführt werden kann
Python3-Verarbeitung, die in Paiza verwendbar zu sein scheint