Ich habe ein Problem mit der extrem langsamen Speicherzuweisung auf einer NVIDIA-GPU von Python.
Wenn Sie in einer neuen Python-Sitzung eine GPU-Berechnung ausführen, weist Tensorflow/Pytorch den Speicher etwa vier Minuten lang in winzigen Schritten zu, bis es plötzlich einen großen Speicherblock zuweist und die eigentliche Berechnung durchführt. Alle nachfolgenden Berechnungen werden sofort ausgeführt.
Weiß jemand, was falsch sein könnte? Oder wie man ein Protokoll darüber erhält, was bei der Speicherzuweisung tatsächlich passiert?
Ich habe versucht, CUDA-Bibliotheken und NVIDIA-Treiber neu zu installieren. Die Neuinstallation der Treiber behebt das Problem für kurze Zeit, dann bleibt die Speicherzuweisung erneut hängen.
Python-Ausgabe:
Python 3.11.3 (main, Apr 5 2023, 14:15:06) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import timeit
>>> timeit.timeit('import tensorflow as tf;tf.random.uniform([10])', number=1)
2023-04-17 09:08:24.062130: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 AVX512F FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2023-04-17 09:08:24.641429: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
2023-04-17 09:12:12.879503: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1635] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 21368 MB memory: -> device: 0, name: GRID RTX6000-24Q, pci bus id: 0000:02:02.0, compute capability: 7.5
229.68861908599501
nvidia-smi:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.182.03 Driver Version: 470.182.03 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 GRID RTX6000-24Q On | 00000000:02:02.0 Off | N/A |
| N/A N/A P8 N/A / N/A | 23527MiB / 24576MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 122079 C ...Model-js4zUkog/bin/python 21743MiB |
+-----------------------------------------------------------------------------+
nvcc:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0
Antwort1
Ich habe herausgefunden, dass die langsame Speicherzuweisung dadurch verursacht wurde, dass Nvidia meine GPU drosselte, weil die Lizenz nicht überprüft werden konnte.
Ich überprüfte:
sudo cat /var/log/syslog | grep nvidia
Und gefunden:
Apr 18 11:35:43 srv-apu102 nvidia-gridd: Valid GRID license not found. GPU features and performance are restricted. To enable full functionality please configure licensing details. Apr 18 11:42:32 srv-apu102 nvidia-gridd: Acquiring license. (Info: http://10.1.2.56:7070/request; NVIDIA RTX Virtual Workstation) Apr 18 11:42:32 srv-apu102 nvidia-gridd: Calling load_byte_array(tra) Apr 18 11:42:35 srv-apu102 nvidia-gridd: Error: Failed server communication. Server URL : http://10.1.2.56:7070/request - #012[1,7e2,2,0[74000008,7,110001f3]] Generic communications error.#012[1,7e2,2,0[75000001,7,30010255]] General data transfer failure. Couldn't connect to server
Ich hoffe, dass dies anderen hilft, ungeachtet der Downvotes von Leuten, die anscheinend denken, dass meine Frage sich auf Ubuntu Lunar bezieht …