Làm thế nào để biết nếu tenorflow đang sử dụng gia tốc gpu từ bên trong vỏ python?


303

Tôi đã cài đặt tenorflow trong ubfox 16.04 của mình bằng cách sử dụng câu trả lời thứ hai ở đây với cài đặt apt cuda dựng sẵn của ubfox .

Bây giờ câu hỏi của tôi là làm thế nào tôi có thể kiểm tra nếu tenorflow thực sự sử dụng gpu? Tôi có một gpu gtx 960m. Khi tôi import tensorflowđây là đầu ra

I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally

Đầu ra này có đủ để kiểm tra xem tenorflow đang sử dụng gpu không?


1
Bạn sẽ thấy một cái gì đó như thế này trong nhật ký của bạn: Tôi tenorflow / core / common_r nb / gpu / gpu_device.cc: 838] Tạo thiết bị TensorFlow (/ gpu: 0) -> (thiết bị: 0, tên: GeForce GTX 980, idi bus id : 0000: 03: 00.0)
Yar Tư Bulatov

2
log_device_placementcách tiếp cận trong câu trả lời. Cách đáng tin cậy nhất là nhìn vào dòng thời gian như được chỉ định trong nhận xét này: github.com/tensorflow/tensorflow/issues/ mẹo
Yaroslav Bulatov

Vâng, tôi đã nhận được kết quả này sau câu trả lời của Yao Zhang ...
Tamim Addari

@YaroslavBulatov trong nhật ký gì? Nó có ghi nó vào một tập tin không hoặc tôi phải kiểm tra xem một câu lệnh như thế có xuất hiện không?
Charlie Parker

1
Nó viết lên thiết bị xuất chuẩn hoặc thiết bị xuất chuẩn
Yaroslav Bulatov

Câu trả lời:


290

Không, tôi không nghĩ "thư viện CUDA mở" là đủ để nói, bởi vì các nút khác nhau của biểu đồ có thể nằm trên các thiết bị khác nhau.

Để tìm hiểu thiết bị nào được sử dụng, bạn có thể bật vị trí thiết bị nhật ký như thế này:

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Kiểm tra bàn điều khiển của bạn cho loại đầu ra này.


17
Tôi đã thử điều này và nó in hoàn toàn không có gì. Bất cứ ý tưởng tại sao đó có thể là?
Qubix

8
Bạn đã làm điều đó trên một máy tính xách tay jupyter?
Tamim Addari 17/03/2017

27
Đầu ra có thể được sản xuất trên bàn điều khiển từ nơi bạn chạy Notebook Jupyter.
musically_ut

18
Chúng tôi có thể nhận được câu trả lời cập nhật cho Tensorflow V2 (trong đó tf.Sairs không được hỗ trợ).
iyop45

6
@ iyop45 Đối với V2 tenorflow, lệnh được sửa đổi một chút:sess = tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(log_device_placement=True))
Vandan

276

Ngoài việc sử dụng sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))được nêu trong các câu trả lời khác cũng như trong tài liệu chính thức của TensorFlow , bạn có thể thử gán một tính toán cho gpu và xem bạn có bị lỗi hay không.

import tensorflow as tf
with tf.device('/gpu:0'):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)

with tf.Session() as sess:
    print (sess.run(c))

Đây

  • "/ Cpu: 0": CPU của máy bạn.
  • "/ gpu: 0": GPU của máy của bạn, nếu bạn có.

Nếu bạn có một gpu và có thể sử dụng nó, bạn sẽ thấy kết quả. Nếu không, bạn sẽ thấy một lỗi với một stacktrace dài. Cuối cùng, bạn sẽ có một cái gì đó như thế này:

Không thể gán thiết bị cho nút 'MatMul': Không thể đáp ứng thông số kỹ thuật của thiết bị rõ ràng '/ thiết bị: GPU: 0' vì không có thiết bị nào phù hợp với thông số kỹ thuật đó được đăng ký trong quy trình này


Gần đây, một số chức năng hữu ích xuất hiện trong TF:

Bạn cũng có thể kiểm tra các thiết bị có sẵn trong phiên:

with tf.Session() as sess:
  devices = sess.list_devices()

devices sẽ trả lại cho bạn một cái gì đó như

[_DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:CPU:0, CPU, -1, 4670268618893924978),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:XLA_CPU:0, XLA_CPU, 17179869184, 6127825144471676437),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:XLA_GPU:0, XLA_GPU, 17179869184, 16148453971365832732),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:0, TPU, 17179869184, 10003582050679337480),
 _DeviceAttributes(/job:tpu_worker/replica:0/task:0/device:TPU:1, TPU, 17179869184, 5678397037036584928)

17
Kết quả: [[22. 28.] [49. 64.]]
George Pligoropoulos

6
@GeorgePligor kết quả không thực sự quan trọng ở đây. Bạn có kết quả và GPU đã được sử dụng hoặc bạn có lỗi, điều đó có nghĩa là nó không được sử dụng
Salvador Dali

1
Điều này đã không làm việc cho tôi. Tôi đã chạy cái này bên trong Docker Container của tôi, được trình bày bởi nvidia-docker và etcetc. Tuy nhiên tôi không có lỗi và CPU là một trong những công việc. Tôi đã nâng các ma trận lên một chút (10k * 10k) để đảm bảo nó tính toán trong một thời gian. CPU sử dụng lên đến 100% nhưng GPU vẫn mát như mọi khi.
pascalwhoop

Tôi đã gặp lỗi "không có thiết bị phù hợp" khi chạy nó trong bảng điều khiển. Trong IDE như pycharm không có lỗi. Tôi đoán nó liên quan đến Phiên tôi đã sử dụng, khác với phiên bản console.
cn123h

Dễ hiểu. Nếu có sẵn GPU, nó sẽ in một cái gì đó nhưFound device 0 with properties: name: GeForce GTX 1080 Ti major: 6 minor: 1 memoryClockRate(GHz): 1.582 pciBusID: 0000:02:00.0 totalMemory: 10.92GiB freeMemory: 10.76GiB
Leoli

166

Đoạn mã sau sẽ cung cấp cho bạn tất cả các thiết bị có sẵn cho dòng chảy.

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

Đầu ra mẫu

[tên: "/ cpu: 0" device_type: "CPU" memory_limit: 268435456 địa phương {} hóa thân: 4402277519343534096,

tên: "/ gpu: 0" device_type: "GPU" memory_limit: 6772842168 địa phương {bus_id: 1} incarnation: 7471795903849088328 Phys_device_desc: "thiết bị: 0, tên: GeForce GTX 1070, 00: 00


9
Đây là câu trả lời tốt nhất.
lolski

3
và nếu lệnh này không trả về bất kỳ mục nào với "GPU", điều đó có nghĩa là máy của tôi chỉ đơn giản là có GPU, hoặc tenorflow không thể xác định vị trí của nó?
thủy ngân0114

@ thủy ngân0114 có thể là một trong hai. ví dụ: bạn có thể có một gpu nhưng chưa được cài đặt đúng cách.
jimijazz

4
Tôi không đồng ý, điều này không không trả lời câu hỏi: nó không phải là về các thiết bị có sẵn mà là các thiết bị được sử dụng . Và đó có thể là một câu chuyện hoàn toàn khác! (ví dụ: TF sẽ chỉ sử dụng 1 GPU theo mặc định.
Mayou36

tên: "/ thiết bị: GPU: 0" device_type: "GPU" memory_limit: 10711446324 địa phương {bus_id: 1 liên kết {}} incarnation: 17935632445266485019 Phys_device_desc: "thiết bị: 0, tên: GeForce RTX 2080 01: 00.0, khả năng tính toán: 7.5 "]
kamran kausar

89

Tôi nghĩ rằng có một cách dễ dàng hơn để đạt được điều này.

import tensorflow as tf
if tf.test.gpu_device_name():
    print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
else:
    print("Please install GPU version of TF")

Nó thường in như

Default GPU Device: /device:GPU:0

Điều này có vẻ dễ dàng hơn đối với tôi hơn là những nhật ký dài dòng.


Đã đồng ý. Dễ dàng hơn các phương pháp được mô tả ở trên. In danh sách GPU sử dụng. Cảm ơn
user907629

2
Tuyệt vời nhất trong tất cả
ượng00

Đây không phải là một bài kiểm tra hợp lệ. Nó sẽ trở lại vào câu lệnh khác ngay cả khi bạn đã cài đặt phiên bản GPU của tenorflow.
Goddard

68

Dòng chảy 2.0

Phiên không còn được sử dụng trong 2.0. Thay vào đó, người ta có thể sử dụng tf.test.is_gpu_available:

import tensorflow as tf

assert tf.test.is_gpu_available()
assert tf.test.is_built_with_cuda()

Nếu bạn gặp lỗi, bạn cần kiểm tra cài đặt của mình.


Điều đó cũng hoạt động với TF 1.14 (thậm chí có thể một vài phiên bản cũ hơn)!
Overdrivr

6
Hiện tại nên làmtf.config.list_physical_devices('GPU')
Roy Shilkrot

@Roy Shilkrot Tôi nghĩ rằng 'tf.config.list_physical_devices (' GPU ')' không hoạt động trong Tensorflow 2.0
joselquin

1
@joselquin Các tài liệu TF v2.x cho biết nó sẽ hoạt động: tenorflow.org/api_docs/python/tf/config/experimental/ , và tôi có thể xác minh nó hoạt động với tôi.
Roy Shilkrot

29

Điều này sẽ xác nhận rằng tenorflow sử dụng GPU trong khi đào tạo cũng?

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Đầu ra

I tensorflow/core/common_runtime/gpu/gpu_device.cc:885] Found device 0 with properties: 
name: GeForce GT 730
major: 3 minor: 5 memoryClockRate (GHz) 0.9015
pciBusID 0000:01:00.0
Total memory: 1.98GiB
Free memory: 1.72GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0:   Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0)
Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0
I tensorflow/core/common_runtime/direct_session.cc:255] Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: GeForce GT 730, pci bus id: 0000:01:00.0

5
Vui lòng thêm một lời giải thích cho lý do tại sao câu trả lời của bạn hoạt động ( log_device_placementlàm gì và làm thế nào để xem CPU so với GPU trong đầu ra?). Điều đó sẽ cải thiện chất lượng câu trả lời của bạn!
Nander Speerstra 6/12/2016

25

Ngoài các câu trả lời khác, những điều sau đây sẽ giúp bạn đảm bảo rằng phiên bản tenorflow của bạn có hỗ trợ GPU.

import tensorflow as tf
print(tf.test.is_built_with_cuda())

7
Cảnh báo: Điều đó cho bạn biết nếu TensorFlow được biên dịch với GPU. Không phải là liệu GPU đang được sử dụng. (Ví dụ: nếu trình điều khiển không được cài đặt đúng cách, thì CPU được sử dụng, ngay cả khi "is_built_with_cuda ()" là đúng.)
Ricardo Cruz

19

Ok, đầu tiên khởi chạy một ipython shelltừ thiết bị đầu cuối và importTensorFlow:

$ ipython --pylab
Python 3.6.5 |Anaconda custom (64-bit)| (default, Apr 29 2018, 16:14:56) 
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.
Using matplotlib backend: Qt5Agg

In [1]: import tensorflow as tf

Bây giờ, chúng ta có thể xem việc sử dụng bộ nhớ GPU trong bảng điều khiển bằng lệnh sau:

# realtime update for every 2s
$ watch -n 2 nvidia-smi

Vì chúng tôi chỉ chỉnh sửa importTensorFlow nhưng chưa sử dụng bất kỳ GPU nào, nên số liệu thống kê sử dụng sẽ là:

sử dụng tf không phải gpu

Lưu ý cách sử dụng bộ nhớ GPU rất ít (~ 700MB); Đôi khi, việc sử dụng bộ nhớ GPU thậm chí có thể thấp đến 0 MB.


Bây giờ, hãy tải GPU trong mã của chúng tôi. Như đã nêu trong tf documentation, làm:

In [2]: sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Bây giờ, số liệu thống kê đồng hồ sẽ hiển thị bộ nhớ sử dụng GPU được cập nhật như dưới đây:

đồng hồ tf gpu

Bây giờ hãy quan sát cách xử lý Python của chúng tôi từ vỏ ipython đang sử dụng ~ 7 GB bộ nhớ GPU.


PS Bạn có thể tiếp tục xem các số liệu thống kê này khi mã đang chạy, để xem mức độ sử dụng GPU theo thời gian.


1
Tôi ước tôi có thể sao câu trả lời. Cái này là vàng
Zain Rizvi

18

Điều này sẽ cung cấp danh sách các thiết bị khả dụng cho Tensorflow (theo Py-3.6):

tf = tf.Session(config=tf.ConfigProto(log_device_placement=True))
tf.list_devices()
# _DeviceAttributes(/job:localhost/replica:0/task:0/device:CPU:0, CPU, 268435456)

người đàn ông tôi đã hạ thấp câu hỏi của bạn do nhầm lẫn ... nếu bạn chỉnh sửa câu hỏi của mình, tôi sẽ hủy bỏ câu hỏi của mình
Francesco Boi

14

Tôi thích sử dụng nvidia-smi để theo dõi việc sử dụng GPU. nếu nó tăng lên đáng kể khi bạn khởi động chương trình, đó là một dấu hiệu mạnh mẽ cho thấy dòng chảy căng thẳng của bạn đang sử dụng GPU.


Đây là một cách gián tiếp
papabiceps

Làm thế nào để bạn sử dụng nvdia-smi để theo dõi việc sử dụng GPU?
Razin

sau khi bạn cài đặt cuda. nvidia-smi nên có trong hệ thống của bạn. Tôi thường sử dụng 'nvidia-smi -l' để theo dõi việc sử dụng.
scott huang

3
Bạn cũng có thể sử dụng đồng hồ nvidia-smi, cập nhật màn hình cứ sau 2 giây
Perseus14

xem nvidia-smi hoạt động tốt cho tôi. Tôi cũng có thể thấy trong đầu ra rằng quá trình python của tôi đang sử dụng GPU
formica

9

Với các bản cập nhật gần đây của Tensorflow, bạn có thể kiểm tra nó như sau:

tf.test.is_gpu_available( cuda_only=False, min_cuda_compute_capability=None)

Điều này sẽ trở lại Truenếu GPU đang được sử dụng Tensorflowvà trả về False.

Nếu bạn muốn thiết bị, device_namebạn có thể gõ : tf.test.gpu_device_name(). Nhận thêm thông tin chi tiết từ đây


8

Chạy phần sau trong Jupyter,

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

Nếu bạn đã thiết lập môi trường của mình đúng cách, bạn sẽ nhận được đầu ra sau trong thiết bị đầu cuối nơi bạn chạy "sổ ghi chép jupyter" ,

2017-10-05 14:51:46.335323: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\common_runtime\gpu\gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Quadro K620, pci bus id: 0000:02:00.0)
Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Quadro K620, pci bus id: 0000:02:00.0
2017-10-05 14:51:46.337418: I c:\tf_jenkins\home\workspace\release-win\m\windows-gpu\py\35\tensorflow\core\common_runtime\direct_session.cc:265] Device mapping:
/job:localhost/replica:0/task:0/gpu:0 -> device: 0, name: Quadro K620, pci bus id: 0000:02:00.0

Bạn có thể thấy ở đây tôi đang sử dụng TensorFlow với Nvidia Quodro K620.


Jupyter hoàn toàn không cần thiết, xin vui lòng không thêm sự phức tạp vào câu hỏi
Patrizio Bertoni

1
Một số người dùng có thể muốn đảm bảo GPU có thể sử dụng được trong Jupyter. Ngoài ra, điều này có thể được chạy từ một kịch bản Python.
wafflecat

8

Tôi thấy chỉ cần truy vấn gpu từ dòng lệnh là dễ nhất:

nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.98                 Driver Version: 384.98                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 980 Ti  Off  | 00000000:02:00.0  On |                  N/A |
| 22%   33C    P8    13W / 250W |   5817MiB /  6075MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1060      G   /usr/lib/xorg/Xorg                            53MiB |
|    0     25177      C   python                                      5751MiB |
+-----------------------------------------------------------------------------+

nếu việc học của bạn là một quá trình nền tảng thì pid từ jobs -pphải phù hợp với pid từnvidia-smi


6

Bạn có thể kiểm tra xem hiện tại bạn có đang sử dụng GPU hay không bằng cách chạy mã sau:

import tensorflow as tf
tf.test.gpu_device_name()

Nếu đầu ra là '', nó có nghĩa là bạn CPUchỉ sử dụng ;
Nếu đầu ra là một cái gì đó như thế /device:GPU:0, nó có nghĩa là GPUhoạt động.


Và sử dụng mã sau đây để kiểm tra xem GPUbạn đang sử dụng:

from tensorflow.python.client import device_lib 
device_lib.list_local_devices()

Nếu đầu ra là ' 'vậy thì phải làm sao?
Jason

@Jason Chỉ cần cài đặt lại phiên bản GPU.
Hồ Xixi

6

Đặt cái này gần đầu máy tính xách tay jupyter của bạn. Nhận xét những gì bạn không cần.

# confirm TensorFlow sees the GPU
from tensorflow.python.client import device_lib
assert 'GPU' in str(device_lib.list_local_devices())

# confirm Keras sees the GPU (for TensorFlow 1.X + Keras)
from keras import backend
assert len(backend.tensorflow_backend._get_available_gpus()) > 0

# confirm PyTorch sees the GPU
from torch import cuda
assert cuda.is_available()
assert cuda.device_count() > 0
print(cuda.get_device_name(cuda.current_device()))

LƯU Ý: Với việc phát hành TensorFlow 2.0, Keras hiện được đưa vào như một phần của API TF.

Ban đầu đã trả lời ở đây .


5

Đối với dòng chảy 2.0

import tensorflow as tf

tf.test.is_gpu_available(
    cuda_only=False,
    min_cuda_compute_capability=None
)

nguồn ở đây

lựa chọn khác là:

tf.config.experimental.list_physical_devices('GPU')

1
is_gpu_available(từ tenorflow.python.framework.test_util) không được chấp nhận và sẽ bị xóa trong phiên bản tương lai.
Himanshu Teotia

5

CẬP NHẬT CHO TENSORFLOW> = 2.1.

Cách được đề xuất để kiểm tra xem TensorFlow có đang sử dụng GPU hay không là như sau:

tf.config.list_physical_devices('GPU') 

Kể từ TensorFlow 2.1, tf.test.gpu_device_name()đã không được ủng hộ như đã nói ở trên.


3

Đây là dòng tôi đang sử dụng để liệt kê các thiết bị có sẵn tf.sessiontrực tiếp từ bash:

python -c "import os; os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'; import tensorflow as tf; sess = tf.Session(); [print(x) for x in sess.list_devices()]; print(tf.__version__);"

Nó sẽ in các thiết bị có sẵn và phiên bản tenorflow, ví dụ:

_DeviceAttributes(/job:localhost/replica:0/task:0/device:CPU:0, CPU, 268435456, 10588614393916958794)
_DeviceAttributes(/job:localhost/replica:0/task:0/device:XLA_GPU:0, XLA_GPU, 17179869184, 12320120782636586575)
_DeviceAttributes(/job:localhost/replica:0/task:0/device:XLA_CPU:0, XLA_CPU, 17179869184, 13378821206986992411)
_DeviceAttributes(/job:localhost/replica:0/task:0/device:GPU:0, GPU, 32039954023, 12481654498215526877)
1.14.0

3

Tôi thấy đoạn trích dưới đây rất tiện để kiểm tra gpu ..

Kiểm tra kéo căng 2.0

import tensorflow as tf
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
with tf.device('/gpu:0'):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)

with tf.Session() as sess:
    print (sess.run(c))

Thử nghiệm kéo căng 1

import tensorflow as tf
with tf.device('/gpu:0'):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)

with tf.Session() as sess:
    print (sess.run(c))

3

Sau đây cũng sẽ trả lại tên của thiết bị GPU của bạn.

import tensorflow as tf
tf.test.gpu_device_name()

Nếu đầu ra của lệnh này là một chuỗi rỗng ... làm thế nào để tôi gỡ lỗi?
zthomas.nc

3

Với hàng chục 2.0> =

import tensorflow as tf
sess = tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(log_device_placement=True))

nhập mô tả hình ảnh ở đây


3
>>> import tensorflow as tf 
>>> tf.config.list_physical_devices('GPU')

2020-05-10 14:58:16.243814: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcuda.so.1
2020-05-10 14:58:16.262675: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-05-10 14:58:16.263119: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1555] Found device 0 with properties:
pciBusID: 0000:01:00.0 name: GeForce GTX 1060 6GB computeCapability: 6.1
coreClock: 1.7715GHz coreCount: 10 deviceMemorySize: 5.93GiB deviceMemoryBandwidth: 178.99GiB/s
2020-05-10 14:58:16.263143: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudart.so.10.1
2020-05-10 14:58:16.263188: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcublas.so.10
2020-05-10 14:58:16.264289: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcufft.so.10
2020-05-10 14:58:16.264495: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcurand.so.10
2020-05-10 14:58:16.265644: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusolver.so.10
2020-05-10 14:58:16.266329: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcusparse.so.10
2020-05-10 14:58:16.266357: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library libcudnn.so.7
2020-05-10 14:58:16.266478: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-05-10 14:58:16.266823: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:981] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2020-05-10 14:58:16.267107: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1697] Adding visible gpu devices: 0
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

Theo đề xuất của @AmitaiIrron:

Phần này chỉ ra rằng một gpu đã được tìm thấy

2020-05-10 14:58:16.263119: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1555] Found device 0 with properties:

pciBusID: 0000:01:00.0 name: GeForce GTX 1060 6GB computeCapability: 6.1
coreClock: 1.7715GHz coreCount: 10 deviceMemorySize: 5.93GiB deviceMemoryBandwidth: 178.99GiB/s

Và ở đây, nó đã được thêm vào như một thiết bị vật lý có sẵn

2020-05-10 14:58:16.267107: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1697] Adding visible gpu devices: 0

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

Sẽ rất hữu ích nếu bạn trỏ đến các phần trong đầu ra cho biết liệu GPU có được sử dụng hay không.
Amitai Irron

@AmitaiIrron Cảm ơn bạn đã gợi ý, tôi hy vọng nó rõ ràng hơn một chút bây giờ.
bLeDy

2

Bạn có một số tùy chọn để kiểm tra xem liệu khả năng tăng tốc GPU có được sử dụng trong quá trình cài đặt TensorFlow của bạn hay không.

Bạn có thể nhập các lệnh sau trong ba nền tảng khác nhau.

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
  1. Jupyter Notebook - Kiểm tra bảng điều khiển đang chạy Notebook Jupyter. Bạn sẽ có thể thấy GPU đang được sử dụng.
  2. Python Shell - Bạn sẽ có thể thấy trực tiếp đầu ra. (Lưu ý- không chỉ định đầu ra của lệnh thứ hai cho biến 'sess'; nếu điều đó có ích).
  3. Spyder - Nhập lệnh sau trong bảng điều khiển.

    import tensorflow as tf tf.test.is_gpu_available()


2

Dòng chảy 2.1

Một phép tính đơn giản có thể được xác minh bằng nvidia-smi để sử dụng bộ nhớ trên GPU.

import tensorflow as tf 

c1 = []
n = 10

def matpow(M, n):
    if n < 1: #Abstract cases where n < 1
        return M
    else:
        return tf.matmul(M, matpow(M, n-1))

with tf.device('/gpu:0'):
    a = tf.Variable(tf.random.uniform(shape=(10000, 10000)), name="a")
    b = tf.Variable(tf.random.uniform(shape=(10000, 10000)), name="b")
    c1.append(matpow(a, n))
    c1.append(matpow(b, n))

1

Nếu bạn đang sử dụng TensorFlow 2.0, bạn có thể sử dụng vòng lặp này để hiển thị các thiết bị:

with tf.compat.v1.Session() as sess:
  devices = sess.list_devices()
devices

1

nếu bạn đang sử dụng tenorflow 2.x, hãy sử dụng:

sess = tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(log_device_placement=True))

0

Chạy lệnh này trong Jupyter hoặc IDE của bạn để kiểm tra xem Tensorflow có sử dụng GPU hay không: tf.config.list_physical_devices('GPU')


Làm thế nào để câu trả lời này giúp đỡ với phần còn lại của câu trả lời ở đây?
ComputerSellectist
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.