Операции Tensorflow недопустимо медленны

#python #performance #tensorflow

#python #Производительность #tensorflow

Вопрос:

Я пытаюсь начать работу с tensorflow, используя интерфейс python. Моя проблема в том, что выполнение даже самых простых операций занимает много времени (> 5 минут)

Эта проблема возникает при использовании python3.6, установленного из macports, и tensorflow-1.13, tf-nightly, и tensorflow2.0 alpha, все установленные с использованием pip.

Выполнение этого простого примера занимает более 5 минут.

 > ipython
Python 3.6.8 (default, Dec 30 2018, 13:01:27) 
In [1]: import numpy as np 
In [2]: import tensorflow as tf
In [3]: print(tf.__version__)
1.13.1
In [4]: a = tf.constant(4.0, dtype=tf.float32)
  

Через некоторое время я прервал выполнение, обратная трассировка приведена ниже. У кого-нибудь есть предложения?

KeyboardInterrupt

Обратная трассировка (последний последний вызов) в

 ----> 1 a = tf.constant(4.0, dtype=tf.float32)
  

/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py в
constant_v1 (значение, dtype, shape, name, verify_shape)

 177   """
178   return _constant_impl(value, dtype, shape, name, verify_shape=verify_shape,
--> 179                         allow_broadcast=False)
180 
181 
  

/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py в
_constant_impl(значение, dtype, форма, имя, verify_shape, разрешенная передача)

 287       attrs={"value": tensor_value,
288              "dtype": dtype_value},
--> 289       name=name).outputs[0]
290   return const_tensor
291 
  

/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py в
new_func(*аргументы, **kwargs)

 505                 'in a future version' if date is None else ('after %s' % date),
506                 instructions)
--> 507       return func(*args, **kwargs)
508 
509     doc = _add_deprecated_arg_notice_to_docstring(
  

/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/framework/ops.py в
create_op (не удалось разрешить аргументы)

 3298           input_types=input_types,

3299           original_op=self._default_original_op,

-> 3300           op_def=op_def)
3301       self._create_op_helper(ret, compute_device=compute_device)
3302     return ret
  

/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/framework/ops.py в
инициализация (self, node_def, g, входы, output_types, control_inputs, input_types, original_op, op_def)

 1821           op_def, inputs, node_def.attr)
1822       self._c_op = _create_c_op(self._graph, node_def, grouped_inputs,
-> 1823                                 control_input_ops)
1824 
1825     # Initialize self._outputs.
  

/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/framework/ops.py in
_create_c_op(graph, node_def, inputs, control_inputs)

 1654     # TODO(skyewm): this creates and deletes a new TF_Status for every attr.
1655     # It might be worth creating a convenient way to re-use the same status.
-> 1656     c_api.TF_SetAttrValueProto(op_desc, compat.as_str(name), serialized)
1657 
1658   try:
  

KeyboardInterrupt:

Комментарии:

1. Это довольно любопытно. Выполняется ли вычисление на CPU или GPU?

2. вы используете tensorflow или tensorflow-gpu?

3. У меня точно такая же проблема. Вчера обновил keras, tensorflow и т.д. Из macports. В моем случае он зависал при создании слоя Input (). Трассировка заканчивается точно в том же месте (точно в той же строке в c_api). top показывает, что python использует 100% одного ядра процессора, а использование памяти постоянно увеличивается (через 2,5 минуты это более 750 МБ).