MLPerf Results Validate CPUs for Deep Learning Training

I have worked on optimizing and benchmarking computer performance for more than two decades, on platforms ranging from supercomputers and database servers to mobile devices. It is always fun to highlight performance results for the product you are building and compare them with others in the industry. SPEC*, LINPACK*, and TPC* have become familiar names to many of us. Now, MLPerf* is filling in the void of benchmarking for Machine Learning.

I am excited to see the Intel® Xeon® Scalable processor MLPerf results submitted by our team because we work on both the user side and the computer system development side of deep learning. These results show that Intel® Xeon® Scalable processors have surpassed a performance threshold where they can be an effective option for data scientists looking to run multiple workloads on their infrastructure without investing in dedicated hardware.1 2 3

Back in 2015, I had a team working on mobile devices. We had to hire testers to manually play mobile games. It was fun initially for the testers, then it became boring and costly. One tester we hired quit on the same day. Our team created a robot to test mobile games and adopted deep learning. Our game testing robot played games automatically and found more bugs than human testers. We wanted to train neural networks on the machines we already had in the lab, but they were not fast enough. I had to allocate budget for the team to buy a GPU, an older version than the MLPerf reference GPU.4

Today CPUs are capable of deep learning training as well as inference. Our MLPerf Intel® Xeon® Scalable processor results compare well with the MLPerf reference GPU4 on a variety of MLPerf deep learning training workloads.1 2 3 For example, the single-system two-socket Intel® Xeon® Scalable processor results submitted by Intel achieved a score of 0.85 on the MLPerf Image Classification benchmark (Resnet-50)1; 1.6 on the Recommendation benchmark (Neural Collaborative Filtering NCF)2; and 6.3 on Reinforcement Learning benchmark (mini GO).3 In all these scores, 1.0 is defined as the score of the reference implementation on the reference GPU.4 For all the preceding results, we use FP32, the common numerical precision used in today’s market. From these MLPerf results, we can see that our game testing robot could easily train on Intel® Xeon® Scalable processors today.

The deep learning and machine learning world continues to evolve from image processing using Convolutional Neural Networks (CNN) and natural language processing using Recurrent Neural Networks (RNN) to recommendation systems using MLP layers and general matrix multiply, reinforcement learning (mixing CNN and simulation) and hybrid models mixing deep learning and classical machine learning. A general purpose CPU is very adaptable to this dynamically changing environment, in addition to running existing non-DL workloads.

Enterprises have adopted CPUs for deep learning training. For example, today, Datatonic* published a blog showing up to 11x cost and 57 percent performance improvement when running a neural network recommender system used in production by a top-5 UK retailer on a Google Cloud* VM powered by Intel® Xeon® Scalable processors.5 CPUs can also accommodate the large memory models required in many domains. The pharmaceutical company Novartis used Intel® Xeon® Scalable processors to accelerate training for a multiscale convolutional neural network (M-CNN) for 10,000 high-content cellular microscopic images, which are much larger in size than the typical ImageNet* images, reducing time to train from 11 hours to 31 minutes.6

High performance computing (HPC) customers use Intel® Xeon® processors for distributed training, as showcased at Supercomputing 2018. For instance, GENCI/CINES/INRIA trained a plant classification model for 300K species on a 1.5TByte dataset of 12 million images using 128 2S Intel® Xeon® processor-based systems.7 DELL EMC* and SURFSara used Intel® Xeon® processors to reduce training time to 11 minutes for a DenseNet-121 model.8 CERN* showcased distributed training using 128 nodes of the TACC Stampede 2 cluster (Intel® Xeon® Platinum 8160 processor, Intel® OPA) with a 3D Generative Adversarial Network (3D GAN) achieving 94% scaling efficiency.9 Additional examples can be found at https://software.intel.com/pt-br/articles/intel-processors-for-deep-learning-training.

CPU hardware and software performance for deep learning has increased by a few orders of magnitude in the past few years. Training that used to take days or even weeks can now be done in hours or even minutes. This level of performance improvement was achieved through a combination of hardware and software. For example, current-generation Intel® Xeon® Scalable processors added both the Intel® Advanced Vector Extensions 512 (Intel® AVX-512) instruction set (longer vector extensions) to allow a large number of operations to be done in parallel, and with a larger number of cores, essentially becoming a mini-supercomputer. The next-generation Intel® Xeon® Scalable processor adds Intel® Deep Learning Boost (Intel® DL Boost): higher throughput, lower numerical precision instructions to boost deep learning inference. On the software side, the performance difference between the baseline open source deep learning software, and the Intel-optimized software can be up to 275X10 on the same Intel® Xeon® Scalable processor (as illustrated in a demo I showed at the Intel Architecture Day forum yesterday).

Over the past few years, Intel has worked with DL framework developers to optimize many popular open source frameworks such as TensorFlow*, Caffe*, MXNet*, PyTorch*/Caffe2*, PaddlePaddle* and Chainer*, for Intel® processors. Intel has also designed a framework, BigDL for SPARK*, and the Intel® Deep Learning Deployment Toolkit (DLDT) for inference. Since the core computation is linear algebra, we have created a new math library, Intel® Math Kernel Library for Deep Neural Networks (Intel® MKL-DNN), specifically for deep learning, based on many years of experience with the Intel® Math Kernel Library (MKL) for high performance computing (HPC). The integration of Intel MKL-DNN into the frameworks, and the additional optimizations contributed to the frameworks to fully utilize the underlying hardware capabilities, are the key reason for the huge software performance improvement.

I’ve often been asked whether CPUs are faster or slower than accelerators. Of course, accelerators have certain advantages. For a specific domain, if an accelerator is not generally faster than a CPU, then it is not much of an accelerator. Even so, given the increasing variety of deep learning workloads, in some cases, a CPU may be as fast or faster while retaining that flexibility that is core to the CPU value proposition. Thus, the more pertinent question is whether CPUs can run deep learning well enough to be an effective option for customers that don’t wish to invest in accelerators. These initial MLPerf results1 2 3, as well as our customer examples, show that CPUs can indeed be effectively used for training. Intel’s strategy is to offer both general purpose CPUs and accelerators to meet the machine learning needs of a wide range of customers.

Looking forward, we are continuing to add new AI and deep learning features to our future generations of CPUs, like Intel® Deep Learning Boost (Intel® DL Boost), plus bfloat16 for training, as well as additional software optimizations. Please stay tuned. For more information on Intel® software optimizations, see ai.intel.com/framework-optimizations. For more information on Intel® Xeon® Scalable processors, see intel.com/xeonscalable.

Informações de produto e desempenho

1

Pontuação de 0,85 no benchmark de classificação de imagem do MLPerf (ResNet-50) 0,85 vezes acima da linha de base MLPerf(+) usando a contagem de 2 chips do processador Intel® Xeon® Platinum 8180. Divisão fechada do MLPerf v0.5 training; o sistema empregou a Otimização Intel® para Caffe* 1.1.2a com a Biblioteca kernel de math da Intel® para redes neurais profundas (Intel® MKL-DNN) v0.16. Recuperado de www.mlperf.org em 12 de dezembro de 2018, entrada 0.5.6.1. O nome e o logotipo MLPerf são marcas registradas. Consulte www.mlperf.org para obter mais informações.

2

Pontuação de 1,6 no benchmark de recomendação (filtragem colaborativa neural), 1,6 vezes acima da linha de base do MLPerf(+)usando a contagem de 2 chips do processador Intel® Xeon® Platinum 8180. Divisão fechada do MLPerf v0.5 training; o sistema empregou o Framework BigDL 0.7.0. Recuperado de www.mlperf.org em 12 de dezembro de 2018, entrada 0.5.9.6. O nome e o logotipo MLPerf são marcas registradas. Consulte www.mlperf.org para obter mais informações.

3

Pontuação de 6,3 no benchmark de aprendizagem por reforço (mini GO) 6,3 vezes acima da linha de base do MLPerf(+) usando a contagem de 2 chips do processador Intel® Xeon® Platinum 8180. Divisão fechada do MLPerf v0.5 training; o sistema empregou o TensorFlow 1.10.1 com a Biblioteca kernel de math da Intel® para redes neurais profundas (Intel® MKL-DNN) v0.14. Recuperado de www.mlperf.org em 12 de dezembro de 2018, entrada 0.5.10.7. O nome e o logotipo MLPerf são marcas registradas. Consulte www.mlperf.org para obter mais informações.

Linha de base MLPerf(+) (adotada do comunicado de imprensa comunitário do MLPerf v0.5): O MLPerf Training v0.5 é um pacote de benchmarks usada para medir a velocidade do sistema de ML. Cada benchmark do MLPerf Training é definido por um conjunto de dados e por uma meta de qualidade. O MLPerf Training também fornece uma implementação de referência para cada benchmark que usa um modelo específico. A tabela a seguir resume os sete benchmarks da versão v0.5 do pacote.

Benchmark

Conjunto de dados

Meta de qualidade

Modelo de implementação de referência

Classificação de imagem

ImageNet

Classificação de 74,90%

Resnet-50 v1.5

Detecção de objetos (leve)

COCO 2017

mAP de 21,2%

SSD (backbone Resnet-34)

Detecção de objeto (pesado)

COCO 2017

0,377 de AP mínimo do Box, 0,339 de AP mínimo do Mask

Mask R-CNN

Tradução (recorrente)

WMT inglês - alemão

BLEU 21.8

Tradução automática neural

Tradução (não recorrente)

WMT inglês - alemão

BLEU 25.0

Transformer

Recomendação

MovieLens-20M

0,635 HR@10

Filtragem colaborativa neural

Aprendizagem por reforço

Jogos profissionais

Previsão de movimento de 40%

Mini Go


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

4

Sistema de referência MLPerf*: configuração do Google Cloud Platform: 16 vCPUs, Intel Skylake ou posterior, RAM de 60 GB (n1-standard-16), 1 GPU NVIDIA* Tesla* P100, CUDA* 9.1 (9.0 para o TensorFlow*), nvidia­docker2, Ubuntu* 16.04 LTS, preempção: desligado, reinicialização automática: desligado, disco de inicialização de 30 GB + 1 disco persistente da SSD de 500 GB, imagem do docker*: 9.1­cudnn7­runtime­ubuntu16.04 (9.0­cudnn7­devel­ubuntu16.04 para o TensorFlow*).

6

Novartis: medido em 25 de maio de 2018. Com base na aceleração de 8 nós em relação a um único nó. Configuração de nó: CPU: processador Intel® Xeon® Gold 6148 com 2,4 GHz, memória de 192 GB, Hyper-threading: habilitado. NIC: interface de malha Intel® Omni-Path Host (Intel® OP HFI), TensorFlow: v1.7.0, Horovod: 0.12.1, OpenMPI: 3.0.0. SO: CentOS* 7.3, OpenMPU 23.0.0, Python 2.7.5. Tempo de treinamento para convergir para 99% de precisão no modelo. Fonte: https://newsroom.intel.com/news/using-deep-neural-network-acceleration-image-analysis-drug-discovery.

7

GENCI: Occigen: 3306 nós x 2 processadores Intel® Xeon® (12 e 14 núcleos). Nós de computação: processador Intel® Xeon® de 2 soquetes com 12 núcleos cada e 2,70 GHz com um total de 24 núcleos por nó, 2 threads por núcleo, DDR4 de 96 GB, interface de malha Mellanox InfiniBand, trilho duplo. Software: Intel® MPI Library 2017 com atualização para Intel® MPI Library 2019 e visualização técnica OFI 1.5.0PSM2 com Multi-EP, Ethernet de 10 Gbit, SSD local de 200 GB, Red Hat* Enterprise Linux 6.7. Caffe*: Otimização Intel® para Caffe*: https://github.com/intel/caffe Intel® Machine Learning Scaling Library (Intel® MLSL): https://github.com/intel/MLSL Conjunto de dados: Pl@ntNet: os resultados do desempenho do conjunto de dados interno do CINES/GENCI são baseados nos testes realizados a partir de 15/10/2018.

8

Intel e Dell com colaboração da Surfsara: medido em 17/05/2018 em 256 nós de um processador Intel® Xeon® Gold 6148 de 2 soquetes. Nós de computação: processador Intel® Xeon® Gold 6148F de 2 soquetes com 20 núcleos cada e 2,40 GHz com um total de 40 núcleos por nó, 2 threads por núcleo, L1d de 32 K; cache L1i de 32 K; cache L2 de 1024 K; cache L3 de 33792 K, DDR4 de 96 GB, Interface de malha Intel ® Omni-Path Host (Intel® OP HFI), trilho duplo. Software: Intel® MPI Library 2017 com atualização para Intel® MPI Library 2019 e visualização técnica OFI 1.5.0PSM2 com Multi-EP, Ethernet de 10 Gbit, SSD local de 200 GB, Red Hat* Enterprise Linux 6.7. TensorFlow* 1.6: criado e instalado a partir da fonte: https://www.tensorflow.org/install/install_sources Modelo ResNet-50: Especificações de topologia de https://github.com/tensorflow/tpu/tree/master/models/official/resnet. Modelo DenseNet-121: especificações de topologia de https://github.com/liuzhuang13/DenseNet. Modelo de convergência e desempenho: https://surfdrive.surf.nl/files/index.php/s/xrEFLPvo7IDRARs. Conjunto de dados: Imagenet2012-1K: http://www.image-net.org/challenges/LSVRC/2012/ ChexNet*: https://stanfordmlgroup.github.io/projects/chexnet/. Desempenho medido com: 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: medido em 17/05/2018 no Stampede2/TACC: https://portal.tacc.utexas.edu/user-guides/stampede2. Nós de computação: processador Intel® Xeon® Platinum 8160 de 2 soquetes com 24 núcleos cada e 2,10 GHz com um total de 48 núcleos por nó, 2 threads por núcleo, L1d de 32 K; cache L1i de 32 K; cache L2 de 1024 K; cache L3 de 33792 K, DDR4 de 96 GB de , interface de malha Intel® Omni-Path Host (Intel® OP HFI), trilho duplo. Software: Intel® MPI Library 2017 com atualização para Intel® MPI Library 2019 e visualização técnica OFI 1.5.0PSM2 com Multi-EP, Ethernet de 10 Gbit, SSD local de 200 GB, Red Hat* Enterprise Linux 6.7. TensorFlow* 1.6: criado e instalado a partir da fonte: https://www.tensorflow.org/install/install_sources Modelo: CERN* 3D GANS de https://github.com/sara-nl/3Dgan/tree/tf Conjunto de dados: CERN* 3D GANS de https://github.com/sara-nl/3Dgan/tree/tf Desempenho medido em 256 nós com: 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 de melhoria de processamento de inferência com a Otimização Intel® para Caffe* comparado com o BVLC-Caffe*: medido pela Intel em 11/12/2018. CPU com processador Intel® Xeon® Platinum 8180 de 2 soquetes a 2,50 GHz (28 núcleos), HT ativada, turbo ativado, memória total de 192 GB (12 slots * de 16 GB, Micron de 2666 MHz), SSD Intel® SSDSC2KF5, Ubuntu 16.04 Kernel 4.15.0-42.generic; BIOS: SE5C620.86B.00.01.0009.101920170742 (microcódigo: 0x0200004d); Topologia: Linha de base Resnet-50: FP32, BVLC Caffe* (https://github.com/BVLC/caffe.git) compromete 99bd99795dcdf0b1d3086a8d67ab1782a8a08383 Desempenho atual: INT8, Otimizações Intel® para Caffe* (https://github.com/Intel/caffe.git) compromete: Caffe* compromete: e94b3ff41012668ac77afea7eda89f07fa360adf, MKLDNN compromete: 4e333787e0d66a1dca1218e99a891d493dbc8ef1.

O software e as cargas de trabalho utilizados nos testes de desempenho foram otimizados apenas para desempenho em microprocessadores Intel. Testes de desempenho, como o SYSmark* e o MobileMark*, são medidos usando sistemas de computador, componentes, software, operações e funções específicas. Qualquer modificação em algum desses fatores pode provocar variação nos resultados. Consulte outras informações e outros testes de desempenho para ajudá-lo a avaliar melhor as suas compras, incluindo o desempenho desse produto quando combinado com outros produtos. Para obter mais informações, acesse www.intel.com.br/benchmarks.

Aviso sobre otimização: os compiladores da Intel podem ou não ser otimizados para o mesmo grau de microprocessadores que não sejam Intel no caso de otimizações que não sejam exclusivas para os microprocessadores Intel. Essas otimizações incluem os conjuntos de instruções SSE2, SSE3 e SSSE3 e outras otimizações. A Intel não garante a disponibilidade, funcionalidade ou eficácia de qualquer otimização em microprocessadores não fabricados pela Intel. Otimizações dependentes do microprocessador neste produto devem ser usadas com microprocessadores Intel. Algumas otimizações não específicas à microarquitetura da Intel são reservadas para microprocessadores Intel. Consulte o usuário do produto aplicável e os Guias de Referência para obter mais informações sobre os conjuntos de instruções específicos abordados por este aviso.

É possível que os resultados de desempenho não reflitam todas as atualizações de segurança publicamente disponíveis. Para obter detalhes, consulte a publicação da configuração. Nenhum produto pode ser totalmente seguro.

Intel, o logotipo da Intel, os processadores escalonáveis Xeon e Deep Learning Boost são marcas registradas da Intel Corporation ou de suas subsidiárias nos EUA e/ou em outros países.
*Outros nomes e marcas podem ser propriedade de outras empresas.
© Intel Corporation.