MLPerf-Ergebnisse zeigen die Eignung von CPUs für das Deep-Learning-Training.

Ich beschäftige mich seit mehr als zwei Jahrzehnten mit der Optimierung und Vergleichen der Computerleistung bei Plattformen, die von Supercomputern und Datenbankservern bis hin zu mobilen Geräten reichen. Es ist immer ein Vergnügen, die Leistungsergebnisse des jeweiligen Produkts, an dem man arbeitet, mit anderen in der Branche zu vergleichen. SPEC*, LINPACK* und TPC* sind vielen von uns inzwischen vertraut. Nun füllt MLPerf* die bisherige Lücke bei Benchmarktests für maschinelles Lernen.

Ich bin besonders interessiert an den MLPerf-Resultaten, die unser Team für die skalierbare Intel® Xeon® Prozessorreihe vorgelegt hat, weil wir in puncto Deep Learning sowohl auf Seiten der Benutzer als auch auf Seiten der Computersystementwicklung aktiv sind. Diese Resultate zeigen, dass die skalierbare Intel® Xeon® Prozessorreihe die Leistungsgrenze überschritten hat, die sie zur effektiven Option für Datenwissenschaftler macht, die mit ihrer Infrastruktur verschiedene Anwendungen nutzen wollen, ohne dabei in spezielle Hardware investieren zu müssen.1 2 3

Im Jahr 2015 hatte ich ein Team, das mit Mobilgeräten arbeitete. Wir mussten Testpersonen einstellen, um Mobilspiele manuell zu testen. Zunächst hatten die Testpersonen noch Spaß dabei, aber es wurde schnell langweilig und kostspielig. Eine der eingestellten Testpersonen kündigte noch am selben Tag. Unser Team entwarf dann einen Roboter, um die Mobilspiele zu testen und implementierte Deep Learning. Unser Roboter spielte die Spiele automatisch und entdeckte dabei mehr Fehler als die menschlichen Testpersonen. Wir wollten auf den Maschinen, die wir bereits im Labor hatten, neuronale Netze trainieren, aber sie erwiesen sich als nicht schnell genug dafür. Ich musste ein Budget für das Team bereitstellen, damit eine GPU angeschafft werden konnte – eine ältere Version als die MLPerf-Referenz-GPU.4

Heute sind CPUs sowohl für Deep Learning als auch für Inferenzmethoden geeignet. Unsere MLPerf-Resultate mit Prozessoren aus der skalierbaren Intel® Xeon® Prozessorreihe lassen sich bei verschiedenartigen MLPerf-Workloads für Deep-Learning-Training gut mit der MLPerf-Referenz-GPU4 vergleichen.1 2 3 So ergaben zum Beispiel die von Intel vorgelegten Ergebnisse für ein einzelnes Zweiprozessorsystem mit Prozessoren aus der skalierbaren Intel® Xeon® Prozessorreihe einen Wert von 0,85 beim MLPerf-Image-Classification-Benchmark (Resnet-50)1, 1,6 beim Recommendation-Benchmark (Neural Collaborative Filtering NCF)2 und 6,3 beim Reinforcement-Learning-Benchmark (mini GO).3 Bei all diesen Vergleichswerten ist 1,0 das Ergebnis der entsprechenden Implementierung bei der Referenz-GPU.4 Bei allen vorangehenden Ergebnissen verwendeten wir FP32, die heutzutage üblicherweise angewendete numerische Genauigkeit. Nach diesen MLPerf-Ergebnissen müsste unser Spieletest-Roboter jetzt problemlos auf einem System mit diesen Prozessoren trainiert werden können.

Deep Learning und maschinelles Lernen entwickeln sich, ausgehend von der Bildverarbeitung mit Convolutional Neural Networks (CNN) und der Verarbeitung natürlicher Sprache mit Recurrent Neural Networks (RNN), weiter zu Empfehlungssystemen mit mehrlagigen Perzeptrons (MLP) und allgemeiner Matrizenmultiplikation, bestärkendem Lernen (durch Mischen von CNN und Simulation) und hybriden Modellen, bei denen Deep Learning und klassisches maschinelles Lernen kombiniert werden. Eine Standard-CPU kann in dieser sich dynamisch verändernden Umgebung sehr gut eingesetzt werden – zusätzlich zur Verwendung für die existierenden nicht Deep-Learning-spezifischen Aufgaben.

Große Unternehmen setzen CPUs für das Deep-Learning-Training ein. Beispielsweise stellte Datatonic* in einem Blog eine bis zu 11-fache Verbesserung bei den Kosten und bis zu 57 % höhere Leistung fest, wenn ein auf einem neuronalen Netz basierendes Empfehlungssystem im Produktivbetrieb eines der fünf größten britischen Einzelhandelsunternehmen in einer Google-Cloud*-VM mit Prozessoren aus der skalierbaren Intel® Xeon® Prozessorreihe betrieben wurde.5 CPUs können auch mit den in vielen Bereichen erforderlichen großen Speichermodellen arbeiten. Das Pharmaunternehmen Novartis verwendete die skalierbare Intel® Xeon® Prozessorreihe, um das Trainieren eines Multiscale Convolutional Neural Network (M-CNN) für 10 000 hochaufgelöste mikroskopische Aufnahmen von Zellen zu beschleunigen, die viel größer als die üblichen ImageNet*-Bilder sind, wobei sich das Trainieren von 11 Stunden auf 31 Minuten verkürzte.6

HPC-Kunden (High-Performance-Computing) setzen Intel® Xeon® Prozessoren auch für verteiltes Training ein, das auf der Supercomputing 2018 gezeigt wurde. So trainierte GENCI/CINES/INRIA zum Beispiel ein Modell zur Pflanzenklassifizierung für 300 000 Arten mit einer 1,5 TB umfassenden Datenmenge von 12 Mio. Aufnahmen mithilfe von 128 Zweiprozessorsystemen mit Intel® Xeon® Prozessoren.7 DELL EMC* und SURFSara konnten die Zeit für das Trainieren bei einem DenseNet-121-Modell mit Intel® Xeon® Prozessoren auf 11 Minuten verkürzen.8 Das CERN* demonstrierte verteiltes Training mit 128 Knoten des TACC-Stampede-2-Clusters (Intel® Xeon® Platin-Prozessor 8160, Intel® OPA) mit einem 3D Generative Adversarial Network (3D GAN) und erreichte 94 % Skaleneffizienz.9 Weitere Beispiele finden Sie unter https://software.intel.com/en-us/articles/intel-processors-for-deep-learning-training.

Die Leistungsfähigkeit der CPU-Hardware und der Software für Deep Learning konnte in den letzten Jahren um einige Größenordnungen gesteigert werden. Trainingsprozesse, die vormals noch Tage oder sogar Wochen in Anspruch nahmen, sind jetzt innerhalb von Stunden oder gar Minuten abgeschlossen. Diese beachtliche Leistungssteigerung wurde durch eine Kombination von Hardware und Software erreicht. Beispielsweise verfügt die aktuelle skalierbare Intel® Xeon® Prozessorreihe zusätzlich über die Intel® Advanced Vector Extensions 512 (Intel® AVX-512-Befehlssatz, Erweiterungen für komplexere Vektoren), damit eine große Zahl von Operationen parallel ausgeführt werden kann. Und mit einer größeren Zahl von Kernen werden die Prozessoren im Prinzip zum Mini-Supercomputer. Die neueste Generation der skalierbaren Intel® Xeon® Prozessorreihe bietet als zusätzliches Feature Intel® Deep Learning Boost (Intel® DL Boost): höherer Durchsatz, Befehle mit geringerer numerischer Genauigkeit beschleunigen die Deep-Learning-Inferenz. Was die Software anbelangt, kann der Leistungsunterschied zwischen der ursprünglichen Open-Source-Deep-Learning-Software und der von Intel optimierten Software für denselben Intel® Xeon® Prozessor das 275-Fache betragen10 (wie in einer Demo illustriert, die ich beim Intel-Architecture-Day-Forum gezeigt habe).

Während der letzten paar Jahre hat Intel mit DL-Framework-Entwicklern zusammengearbeitet, um viele beliebte Open-Source-Frameworks wie TensorFlow*, Caffe*, MXNet*, PyTorch*/Caffe2*, PaddlePaddle* und Chainer* für Intel® Prozessoren zu optimieren. Außerdem hat Intel BigDL als Framework für SPARK* und das Intel® Deep Learning Deployment Toolkit (DLDT) für Inferenzmethoden konzipiert. Weil die Rechenoperationen im Kern lineare Algebra sind, haben wir eine neue Math-Bibliothek speziell für Deep Learning entwickelt, die Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN). Sie baut auf viele Jahre Erfahrung mit der Intel® Math Kernel Library (MKL) für High-Performance-Computing (HPC) auf. Die Integration der Intel MKL-DNN in die Frameworks und die zusätzlichen Optimierungen, mit denen die Frameworks ergänzt wurden, um die Fähigkeiten der darunterliegenden Hardware in vollem Umfang nutzbar zu machen, sind der hauptsächliche Grund für die enorme Leistungsverbesserung der Software.

Ich wurde oft gefragt, ob CPUs schneller oder langsamer als Beschleuniger [Accelerators] sind. Beschleuniger haben natürlich gewisse Vorteile. Wenn auf einem bestimmten Gebiet Beschleuniger-Hardware nicht grundsätzlich schneller als eine CPU ist, dann kann man nicht wirklich von Beschleuniger sprechen. Gleichwohl kann eine CPU mit Blick auf die wachsende Vielfalt von Deep-Learning-Anwendungen in einigen Fällen ebenso schnell oder schneller sein, während sie gleichzeitig die Flexibilität bietet, die maßgebend für das Nutzenversprechen einer CPU ist. Folglich müsste die Frage eher lauten, ob CPUs Deep-Learning-Aufgaben gut genug bewältigen, um eine effektive Option für jene Kunden zu sein, die nicht in Beschleuniger-Hardware investieren wollen. Diese ersten MLPerf-Resultate1 2 3 und auch unsere Beispiele aus der Praxis zeigen, dass CPUs tatsächlich effektiv für das Trainieren eingesetzt werden können. Intels Strategie besteht darin, sowohl Standard- bzw. Universal-CPUs als auch Beschleuniger anzubieten, um die Machine-Learning-Bedürfnisse eines breiten Spektrums von Kunden zu befriedigen.

Auch bei zukünftigen Generationen unserer CPUs werden wir neue KI- und Deep-Learning-Funktionen wie Intel® Deep Learning Boost (Intel® DL Boost) oder bfloat16 für das Training einführen, und es wird zusätzliche Softwareoptimierungen geben. Bleiben Sie interessiert. Weitere Informationen über Softwareoptimierungen von Intel finden Sie unter ai.intel.com/framework-optimizations. Mehr über die skalierbare Intel® Xeon® Prozessorreihe erfahren Sie unter intel.de/xeonscalable.

Produkt- und Leistungsinformationen

1

Ergebnis von 0,85 für den Benchmark MLPerf Image Classification (Resnet-50) – 0,85x über MLPerf-Ausgangsbasis(+) bei Verwendung eines Zweiprozessorsystems mit Intel® Xeon® Platin-Prozessor 8180. MLPerf v0.5 Training – geschlossene Division; System verwendete Intel® Optimierungen für Caffe* 1.1.2a mit der Library Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN) v0.16. Abgerufen von www.mlperf.org, 12. Dezember 2018, Eintrag 0.5.6.1. Der Name MLPerf und das MLPerf-Logo sind Marken. Weitere Informationen siehe www.mlperf.org.

2

Ergebnis von 1,6 für den empfohlenen Benchmark (Neural Collaborative Filtering, NCF) – 1,6x über MLPerf-Ausgangsbasis(+) bei Verwendung eines Zweiprozessorsystems mit Intel® Xeon® Platin-Prozessor 8180. MLPerf v0.5 Training – geschlossene Division; System verwendete Framework BigDL 0.7.0. Abgerufen von www.mlperf.org, 12. Dezember 2018, Eintrag 0.5.9.6. Der Name MLPerf und das MLPerf-Logo sind Marken. Weitere Informationen siehe www.mlperf.org.

3

Ergebnis von 6,3 für Reinforcement Learning Benchmark (mini GO) – 6,3x über MLPerf-Ausgangsbasis(+) bei Verwendung eines Zweiprozessorsystems mit Intel® Xeon® Platin-Prozessor 8180. MLPerf v0.5 Training – geschlossene Division; System verwendete TensorFlow 1.10.1 mit der Library Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN) v0.14. Abgerufen von www.mlperf.org, 12. Dezember 2018, Eintrag 0.5.10.7. Der Name MLPerf und das MLPerf-Logo sind Marken. Weitere Informationen siehe www.mlperf.org.

(+) MLPerf-Ausgangsbasis (übernommen von MLPerf v0.5 Community Press Briefing): MLPerf Training v0.5 ist eine Benchmark-Suite für die Messung der Geschwindigkeit von ML-Systemen. Jeder MLPerf Training Benchmark wird durch einen Datenbestand und ein Qualitätsziel definiert. Zudem stellt MLPerf Training für jeden Benchmark, der ein bestimmtes Modell verwendet, eine Referenzimplementierung bereit. Die folgende Tabelle bietet eine Zusammenfassung der sieben Benchmarks, die in Version 0.5 der Suite enthalten sind.

Benchmark

Datenbestand

Qualitätsziel

Referenzimplementierungsmodell

„Image Classification“ (Bildklassifizierung)

ImageNet

Klassifizierungsgrad von 74,90 %

ResNet-50 v1.5

„Object Detection (lightweight)“ (Objekterkennung, geringe Komplexität)

COCO 2017

21,2 % mAP

SSD (ResNet-34-Backbone)

„Object Detection (heavyweight)“ (Objekterkennung, hohe Komplexität)

COCO 2017

0,377 – Box min AP, 0,339 – Mask min AP

Mask R-CNN

„Translation (recurrent)“ (Übersetzung, wiederkehrend)

WMT English – German

21,8 BLEU

Neuronale maschinelle Übersetzung (NMT)

„Translation (non-recurrent)“ (Übersetzung, nicht wiederkehrend)

WMT English – German

25,0 BLEU

Transformer

Empfehlung

MovieLens-20M

0,635 Std. bei 10

Neural Collaborative Filtering

„Reinforcement Learning“ (Bestärkendes Lernen)

Pro-Games

40,00 % für Vorhersage des Zugs

Mini Go


MLPerf Trainingsrichtlinien: https://github.com/mlperf/training_policies/blob/master/training_rules.adoc

4

MLPerf*-Referenzsystem: Konfiguration der Google-Cloud-Plattform: 16 vCPUs, Intel Skylake oder neuer, 60 GB RAM (n1­standard­16), 1 NVIDIA* Tesla* P100 GPU, CUDA* 9.1 (9.0 für TensorFlow*), nvidia­docker2, Ubuntu* 16.04 LTS, Pre­Emptability (Unterbrechbarkeit): aus, automatischer Neustart: aus, Startlaufwerk mit 30 GB + 1 SSD als nichtflüchtiger Speicher mit 500 GB, Docker*-Image: 9.1­cudnn7­runtime­ubuntu16.04 (9.0­cudnn7­devel­ubuntu16.04 für TensorFlow*).

6

Novartis: Gemessen am 25. Mai 2018. Basierend auf Beschleunigung für acht Knoten im Verhältnis zu einem Knoten. Knotenkonfiguration: CPU: Intel® Xeon® Gold-Prozessor 6148 mit 2,4 GHz, 192 GB Arbeitsspeicher, Hyper-Threading: aktiviert. NIC: Intel® Omni-Path-Host-Fabric-Interface (Intel® OP HFI), TensorFlow: v1.7.0, Horovod: 0.12.1, OpenMPI: 3.0.0. Betriebssystem: CentOS* 7.3, OpenMPU 23.0.0, Python 2.7.5. Trainingszeit für Zusammenführung in Modell mit 99 % Genauigkeit. Quelle: https://newsroom.intel.com/news/using-deep-neural-network-acceleration-image-analysis-drug-discovery.

7

GENCI: Occigen: 3306 Knoten x 2 Intel® Xeon® Prozessoren (12 – 14 Kerne). Rechenknoten: Zweiprozessorsystem mit Intel® Xeon® Prozessor (12 Kerne pro Prozessor, 2,70 GHz) – insgesamt 24 Kerne pro Knoten, 2 Threads pro Kern, 96 GB DDR4, Mellanox InfiniBand Fabric Interface, Dual-Rail-Design. Software: Intel® MPI Library 2017 Update 4, Intel® MPI Library 2019 Technical Preview OFI 1.5.0PSM2 mit Multi-EP, 10 Gigabit-Ethernet, lokales SSD mit 200 GB, Red Hat* Enterprise Linux 6.7. Caffe*: Intel® Optimierungen für Caffe*: https://github.com/intel/caffe Intel® Machine Learning Scaling Library (Intel® MLSL): https://github.com/intel/MLSL Datenbestand: Pl@ntNet: CINES/GENCI (interner Datenbestand); Die Leistungsergebnisse beruhen auf Tests vom 15.10.2018.

8

Zusammenarbeit von Intel, Dell und Surfsara: gemessen am 17.5.2018 auf einem Zweiprozessorsystem (256 Knoten) mit Intel® Xeon® Gold-Prozessor 6148. Rechenknoten: Zweiprozessorsystem mit Intel® Xeon® Gold-Prozessor 6148F (20 Kerne pro Prozessor, 2,40 GHz) – insgesamt 40 Kerne pro Knoten, 2 Threads pro Kern, L1d-Cache: 32 KB; L1i-Cache: 32 KB; L2-Cache 1024 KB; L3-Cache: 33792 KB, 96 GB DDR4, Intel® Omni-Path-Host-Fabric-Interface (Intel® OP HFI), DualRail-Design. Software: Intel® MPI Library 2017 Update 4, Intel® MPI Library 2019 Technical Preview OFI 1.5.0PSM2 mit Multi-EP, 10 Gbit-Ethernet, lokales SSD mit 200 GB, Red Hat* Enterprise Linux 6.7. TensorFlow* 1.6: Build und Installation von Quelle: https://www.tensorflow.org/install/install_sources ResNet-50-Modell: Topologie-Spezifikation von https://github.com/tensorflow/tpu/tree/master/models/official/resnet. DenseNet-121-Modell: Topologie-Spezifikation von https://github.com/liuzhuang13/DenseNet. Konvergenz- und Performance-Modell: https://surfdrive.surf.nl/files/index.php/s/xrEFLPvo7IDRARs. Datenbestand: ImageNet2012-1K: http://www.image-net.org/challenges/LSVRC/2012 /. ChexNet*: https://stanfordmlgroup.github.io/projects/chexnet/. Leistung gemessen mit: OMP_NUM_THREADS=24 HOROVOD_FUSION_THRESHOLD=134217728 export I_MPI_FABRICS=tmi, export I_MPI_TMI_PROVIDER=psm2 \ mpirun -np 512 -ppn 2 python resnet_main.py –train_batch_size 8192 –train_steps 14075 –num_intra_threads 24 –num_inter_threads 2 — mkl=True –data_dir=/scratch/04611/valeriuc/tf-1.6/tpu_rec/train –model_dir model_batch_8k_90ep –use_tpu=False –kmp_blocktime 1. https://ai.intel.com/diagnosing-lung-disease-using-deep-learning/.

9

CERN: Gemessen am 17.05.2018 auf Stampede2/TACC: https://portal.tacc.utexas.edu/user-guides/stampede2. Rechenknoten: Zweiprozessorsystem mit Intel® Xeon® Platin-Prozessor 8160 (24 Kerne pro Prozessor, 2,10 GHz) – insgesamt 48 Kerne pro Knoten, 2 Threads pro Kern, L1d-Cache: 32 KB; L1i-Cache: 32 KB; L2-Cache 1024 KB; L3-Cache: 33792 KB, 96 GB DDR4, Intel® Omni-Path-Host-Fabric-Interface (Intel® OP HFI), Dual-Rail-Design. Software: Intel® MPI Library 2017 Update 4, Intel® MPI Library 2019 Technical Preview OFI 1.5.0PSM2 mit Multi-EP, 10 Gbit-Ethernet, lokales SSD mit 200 GB, Red Hat* Enterprise Linux 6.7. TensorFlow* 1.6: Build und Installation von Quelle: https://www.tensorflow.org/install/install_sources Modell: CERN* 3D GANS von https://github.com/sara-nl/3Dgan/tree/tf Datenbestand: CERN* 3D GANS von https://github.com/sara-nl/3Dgan/tree/tf; Leistung ermittelt auf 256 Knoten mit: OMP_NUM_THREADS=24 HOROVOD_FUSION_THRESHOLD=134217728 export I_MPI_FABRICS=tmi, export I_MPI_TMI_PROVIDER=psm2 \ mpirun -np 512 -ppn 2 python resnet_main.py –train_batch_size 8 \ –num_intra_threads 24 –num_inter_threads 2 –mkl=True \ –data_dir=/path/to/gans_script.py –kmp_blocktime 1. https://www.rdmag.com/article/2018/11/imagining-unthinkable-simulations-without-classical-monte-carlo.

10

275x Verbesserung des Inferenzdurchsatzes mit Intel® Optimierungen für Caffe* im Vergleich zu BVLC-Caffe*: gemessen von Intel am 11.12.2018. Zweiprozessorsystem mit Intel® Xeon® Platin-Prozessor 8180 (2,50 GHz, 28 Kerne), HT ein, Turbo ein, insgesamt 192 GB Arbeitsspeicher (12 Steckplätze, je 16 GB, Micron mit 2666 MHz), Intel® SSD SSDSC2KF5, Ubuntu 16.04 Kernel 4.15.0-42.generic; BIOS: SE5C620.86B.00.01.0009.101920170742 (Mikrocode: 0x0200004d); Topologie: ResNet-50-Ausgangsbasis: FP32, BVLC Caffe* (https://github.com/BVLC/caffe.git), Commit 99bd99795dcdf0b1d3086a8d67ab1782a8a08383; aktuelle Leistung: INT8, Intel® Optimierungen für Caffe* (https://github.com/Intel/caffe.git), Commit: Caffe*-Commit: e94b3ff41012668ac77afea7eda89f07fa360adf, MKLDNN-Commit: 4e333787e0d66a1dca1218e99a891d493dbc8ef1.

In Leistungstests verwendete Software und Workloads können speziell für die Leistungseigenschaften von Intel® Mikroprozessoren optimiert worden sein. Leistungstests wie SYSmark* und MobileMark* werden mit spezifischen Computersystemen, Komponenten, Softwareprogrammen, Operationen und Funktionen durchgeführt. Jede Veränderung bei einem dieser Faktoren kann abweichende Ergebnisse zur Folge haben. Als Unterstützung für eine umfassende Bewertung Ihrer vorgesehenen Anschaffung, auch im Hinblick auf die Leistung des betreffenden Produkts in Verbindung mit anderen Produkten, sollten Sie noch andere Informationen und Leistungstests heranziehen. Weitere Informationen siehe www.intel.de/benchmarks.

Hinweise zur Optimierung: Unter Umständen können Intels Compiler bei Optimierungen, die nicht für Mikroprozessoren von Intel spezifisch sind, auch bei Mikroprozessoren anderer Hersteller denselben Optimierungsgrad erzielen. Zu diesen Optimierungen gehören Befehlssätze für SSE2, SSE3 und SSSE3 sowie weitere Optimierungen. Intel übernimmt keine Garantie für die Verfügbarkeit, Funktionalität oder Effektivität von Optimierungen für Mikroprozessoren, die nicht von Intel hergestellt wurden. Mikroprozessor-abhängige Optimierungen in diesem Produkt sind für die Verwendung mit Intel Mikroprozessoren bestimmt. Bestimmte Optimierungen, die nicht für Mikroarchitektur von Intel spezifisch sind, bleiben Intel Mikroprozessoren vorbehalten. Entnehmen Sie weitere Informationen zu den spezifischen Befehlssätzen, die von dieser Mitteilung abgedeckt werden, den entsprechenden Benutzer- und Referenzhandbüchern.

Die Leistungsergebnisse spiegeln möglicherweise nicht alle öffentlich verfügbaren Sicherheitsupdates wider. Weitere Einzelheiten finden Sie in den veröffentlichten Konfigurationsdaten. Kein Produkt bietet absolute Sicherheit.

Intel, das Intel-Logo, Intel Core, Xeon und Deep Learning Boost sind Marken der Intel Corporation oder ihrer Tochtergesellschaften in den USA und/oder anderen Ländern.
*Andere Marken oder Produktnamen sind Eigentum der jeweiligen Inhaber.
© Intel Corporation.