Не удалось запустить Blas GEMM при использовании графического процессора TensorFlow с Keras - PullRequest
1 голос
/ 15 февраля 2020

Довольно понятно. Как и бесчисленное множество людей до и, вероятно, после меня, у меня появляется сообщение об ошибке Blas GEMM launch failed при попытке вызвать model.fit().

Это вывод nvidia-smi до вызова model.compile() :

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.50       Driver Version: 430.50       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K80           Off  | 00000000:00:1E.0 Off |                    0 |
| N/A   45C    P0    74W / 149W |      0MiB / 11441MiB |    100%      Default |   <<<--- 0% Memory usage
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|  No running processes found                                                 |   <<<--- nothing running
+-----------------------------------------------------------------------------+

И вывод nvidia-smi после вызова model.compile() (и непосредственно перед model.fit()):

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.50       Driver Version: 430.50       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K80           Off  | 00000000:00:1E.0 Off |                    0 |
| N/A   45C    P0    72W / 149W |  10942MiB / 11441MiB |      0%      Default |   <<<--- 96% Memory usage
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1811      C   /usr/bin/python3                           10929MiB |   <<<--- TF model here
+-----------------------------------------------------------------------------+

Это похоже на Скомпилированная модель TensorFlow монополизирует 96% памяти графического процессора. Я понятия не имею, нормально это или нет, и может ли это быть причиной более поздней ошибки при попытке обучить модель.

Само сообщение об ошибке выглядит следующим образом:

tenorflow / stream_executor / stream. cc: 2041] пытается выполнить операцию BLAS с использованием StreamExecutor без поддержки BLAS

InternalError: сбой запуска Blas GEMM: a.shape = (32, 116032), b.shape = (116032, 256), m = 32, n = 256, k = 116032 [[узел плотность_1 / MatMul (определено в /home/ubuntu/.local/lib/python3.6/site-packages/keras/backend /tensorflow_backend.py:3009)]] [Op: __inference_keras_scratch_graph_1645]

Стек вызовов функций: keras_scratch_graph

Вывод tf.config.experimental.list_physical_devices():

[PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'),
 PhysicalDevice(name='/physical_device:XLA_CPU:0', device_type='XLA_CPU'),
 PhysicalDevice(name='/physical_device:XLA_GPU:0', device_type='XLA_GPU'),
 PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

The Модель построена с использованием следующего:

  • Keras 2.3.1 (с использованием keras.models.Sequential)
  • TensorFlow-GPU 2.1.0
  • CUDA 10.1
  • cuDNN 7.6.4
  • Ubuntu 18.04
  • AWS p2.xlarge экземпляр (с графическим процессором Tesla K80)
* 10 52 * Я прошел через бесчисленные проблемы с GitHub, посты в блогах, вопросы SO, и все рекомендую убедиться, что ни один ранее запущенный процесс все еще не активен на GPU при запуске нового, добавить местоположение CUPTI в LD_LIBRARY_PATH или использовать различные варианты TF ... Ни один из них не решил проблему. Мы будем благодарны за любую идею о причинах и способах ее устранения.

1 Ответ

0 голосов
/ 29 марта 2020

У меня была такая же проблема. Я видел много ответов и использовал много предложенного кода для решения этой проблемы, но что-то мне помогло.

Для меня проблема заключалась в использовании графического процессора, поэтому я ограничиваю память, используемую моим графическим процессором, следующим кодом:

gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
# Restrict TensorFlow to only allocate 1GB of memory on the first GPU
    try:
        tf.config.experimental.set_virtual_device_configuration(
            gpus[0],
            [tf.config.experimental.VirtualDeviceConfiguration(memory_limit=1024)])
        logical_gpus = tf.config.experimental.list_logical_devices('GPU')
        print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
    except RuntimeError as e:
        # Virtual devices must be set before GPUs have been initialized
        print(e)

взять с https://www.tensorflow.org/guide/gpu#limiting_gpu_memory_growth. Это решило мою проблему. Я надеюсь, что это решит и вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...