Otimizando Tensorflow para CPU

Há alguns dias participei de uma Conferência Brasileira de Desenvolvedores. Entre muitas palestras, uma sobre a arquitetura Intel foi muito interessante.

A Intel está trabalhando para fornecer mais desempenho para projetos de Inteligência Artificial com diferentes otimizações de hardware e software, como você pode ver na figura a seguir. A Intel possui uma distribuição do TensorFlow com muitas otimizações para CPU.

Neste post vou mostrar os resultados do meu teste com diferentes distribuições do TensorFlow e Python com Oracle Cloud.

Para este teste, usei 2 instâncias de computação da Oracle Cloud:

  • Instância 1 = 1 OCPU + 7,5GB de memória
  • Instância 2 = 2 OCPUs + 30GB de memória

Em ambas as instâncias de computação, criei três ambientes diferentes do Anaconda:

  • Python + TensorFlow
conda create -n py36tf tensorflow python=3.6
  • Python + TensorFlow-mkl (TensorFlow with Intel MKL DNN)
conda create -n py36tfmkl tensorflow-mkl python=3.6
  • Python (Intel) + TensorFlow-mkl (TensorFlow with Intel MKL DNN)
conda create -n py36tfmklintel tensorflow-mkl python=3.6 -c intel 

Para avaliar o desempenho do TensorFlow, usei este script python:

import tensorflow as tf
import time

tf.set_random_seed(42)
A = tf.random_normal([10000,10000])
B = tf.random_normal([10000,10000])

def checkM():
    start_time = time.time()
    with tf.Session() as sess:
        print(sess.run(tf.reduce_sum(tf.matmul(A,B))))
    print("It took {} seconds".format(time.time() - start_time))

check()

Estes foram os resultados:

  • Python + TensorFlow

Na instância 1 demorou 70.50 segundos.

Na instância 2 demorou 35.95 segundos.

  • Python + TensorFlow-mkl (TensorFlow with Intel MKL DNN)

Na instância 1 demorou 15.69 segundos.

Na instância 2 demorou 8.00 segundos.

  • Python (Intel) + TensorFlow-mkl (TensorFlow with Intel MKL DNN)

Na instância 1 demorou 15.85 segundos.

Na instância 2 demorou 8.13 segundos.

A diferença entre os melhores e os piores casos em ambas as instâncias de computação foi de 450%!

Python + TensorFlow-mkl (TensorFlow with Intel MKL DNN) foram as melhores ferramentas, e o Python + TensorFlow foram as piores ferramentas.

Estes resultados provam que você pode usar a CPU para treinar e executar seus projetos de machine learning e deep learning. Tudo o que você precisa fazer é usar a ferramenta certa.

Divirta-se!

Autor: Waslley Souza

Consultor Oracle com foco em tecnologias Oracle Fusion Middleware e SOA. Certificado Oracle WebCenter Portal, Oracle ADF e Java.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *