টেনসরফ্লো পাইথন শেলের ভিতরে থেকে জিপিইউ ত্বরণ ব্যবহার করছে কিনা তা কীভাবে জানাব?


303

দ্বিতীয় উত্তরটি ব্যবহার করে আমি আমার উবুন্টু 16.04 এ টেনসরফ্লো ইনস্টল করেছি এখানে দিয়ে উবুন্টু কার্যক্ষম CUDA ইনস্টলেশন builtin আছে।

এখন আমার প্রশ্নটি হল যদি টেনসরফ্লো সত্যিই জিপিইউ ব্যবহার করে তবে আমি কীভাবে পরীক্ষা করতে পারি? আমার একটি জিটিএক্স 960 মি জিপিইউ আছে। আমি যখন import tensorflowএই আউটপুট হয়

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

টেনসরফ্লো জিপিইউ ব্যবহার করছে কিনা তা পরীক্ষা করার জন্য কি এই আউটপুটটি যথেষ্ট?


1
আপনার লগতে আপনাকে এরকম কিছু দেখতে পাওয়া উচিত: আমি টেনস্রোফ্লো / কোর / সাধারণ_আরুনটাইম / জিপিইউ / জিপিইউ_ডভাইস.সি: 838] টেনসরফ্লো ডিভাইস তৈরি করা (/ জিপিইউ: 0) -> (ডিভাইস: 0, নাম: জিফোরস জিটিএক্স 980, পিসিআই বাস আইডি) : 0000: 03: 00.0)
ইয়ারোস্লাভ বুলাটোভ

2
আছে log_device_placementউত্তরে পদ্ধতির। সবচেয়ে নির্ভরযোগ্য উপায় হ'ল এই মন্তব্যে উল্লিখিত সময়রেখার দিকে নজর দেওয়া: github.com/tensorflow/tensorflow/issues/…
ইয়ারোস্লাভ

হ্যাঁ, ইয়াও জাংয়ের উত্তরের পরে আমি এই আউটপুটটি পেয়েছি ...
তামিম আডারী

@ ইয়ারোস্লাভবুলাটোভ কোন লগ ইন? এটি কোনও ফাইলের কাছে এটি লেখেন বা এর মতো বিবৃতি উপস্থিত হলে আমি কোথায় তা যাচাই করব?
চার্লি পার্কার

উত্তর:


290

না, আমি মনে করি না "ওপেন সিউডিএ লাইব্রেরি" বলতে যথেষ্ট, কারণ গ্রাফের বিভিন্ন নোড বিভিন্ন ডিভাইসে থাকতে পারে।

কোন ডিভাইস ব্যবহার করা হয়েছে তা জানতে, আপনি লগ ডিভাইস স্থাপনের জন্য এটি সক্ষম করতে পারেন:

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

এই ধরণের আউটপুটটির জন্য আপনার কনসোলটি পরীক্ষা করুন।


17
আমি এটি চেষ্টা করেছিলাম এবং এটি একেবারে কিছুই প্রিন্ট করে না। কোন ধারণা কেন হতে পারে?
কিউবিক্স

8
আপনি কি এটি একটি জ্যুপির নোটবুকে করেছেন?
তামিম আডারী

27
আউটপুটটি যেখান থেকে আপনি জপিটার নোটবুক চালিয়েছেন সেখান থেকে কনসোলে উত্পাদন করা যেতে পারে।
musically_ut

18
আমরা কি টেনসরফ্লো ভি 2 এর জন্য আপডেট উত্তর পেতে পারি (যেখানে টিএফ.সেশনগুলি সমর্থিত নয়)।
iyop45

6
@ আইওপ ৪৫ টেনসরফ্লো ভি 2 এর জন্য কমান্ডটি কিছুটা পরিবর্তন করা হয়েছে:sess = tf.compat.v1.Session(config=tf.compat.v1.ConfigProto(log_device_placement=True))
বন্দর

276

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))অন্যান্য উত্তরের পাশাপাশি সরকারী টেনসরফ্লো ডকুমেন্টেশনে যা বর্ণিত হয়েছে তা ব্যবহার করা ছাড়াও , আপনি জিপিইউতে একটি নির্ধারণ করার চেষ্টা করতে পারেন এবং দেখুন আপনার কোনও ত্রুটি আছে কিনা।

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))

এখানে

  • "/ সিপিইউ: 0": আপনার মেশিনের সিপিইউ।
  • "/ জিপিইউ: 0": আপনার মেশিনের জিপিইউ যদি থাকে।

আপনার যদি জিপিইউ থাকে এবং এটি ব্যবহার করতে পারেন তবে আপনি ফলাফলটি দেখতে পাবেন। অন্যথায় আপনি একটি দীর্ঘ স্ট্যাকট্রেস সহ একটি ত্রুটি দেখতে পাবেন। শেষ পর্যন্ত আপনার কাছে এরকম কিছু থাকবে:

'ম্যাটমুল' নোডে কোনও ডিভাইস বরাদ্দ করা যায় না: স্পষ্টত ডিভাইস স্পেসিফিকেশন '/ ডিভাইস: জিপিইউ: 0' সন্তুষ্ট করা যায়নি কারণ এই প্রক্রিয়াটিতে নির্দিষ্টকরণের সাথে মেলে এমন কোনও ডিভাইস নিবন্ধভুক্ত নেই


সম্প্রতি টিএফ-তে কয়েকটি সহায়ক কার্যকারিতা উপস্থিত হয়েছিল:

আপনি সেশনে উপলব্ধ ডিভাইসগুলির জন্যও পরীক্ষা করতে পারেন:

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

devices আপনাকে কিছু ফিরিয়ে দেবে

[_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
ফলাফল: [[22. 28.] [49. 64.]]
জর্জ প্লিগোরোপল্লোস

6
@ জর্জিপ্লিজার এখানে ফলাফলটি খুব গুরুত্বপূর্ণ নয়। হয় আপনার ফলাফল রয়েছে এবং জিপিইউ ব্যবহৃত হয়েছিল বা আপনার একটি ত্রুটি হয়েছে, যার অর্থ এটি ব্যবহৃত হয়নি
সালভাদোর ডালি

1
এটি আমার পক্ষে কার্যকর হয়নি। আমি এটিকে আমার ডকার কনটেইনারটির ভিতরে চালিয়েছি যা এনভিডিয়া-ডকার এবং এটিসটিক দ্বারা সজ্জিত। তবে আমি কোনও ত্রুটি পাই না এবং সিপিইউ হ'ল এটি কাজ করে। আমি কিছু সময়ের জন্য গণনা করে তা নিশ্চিত করার জন্য আমি ম্যাট্রিককে কিছুটা (10 কে * 10 কে) আপ করেছি। সিপিইউ ব্যবহার 100% পর্যন্ত চলে গেছে তবে জিপিইউ সর্বদা হিসাবে দুর্দান্ত ছিল।
পাসক্লুহুপ

এটি কনসোলে চালানোর সময় আমি "কোনও ডিভাইসগুলির সাথে মেলে না" ত্রুটি পেয়েছি। পাইচার্মের মতো আইডিইতে কোনও ত্রুটি নেই। আমার ধারণা এটি আমার ব্যবহৃত সেশনের সাথে সম্পর্কিত, যা কনসোলের থেকে আলাদা।
cn123h

সহজে বোধগম্য. জিপিইউ উপলব্ধ থাকলে এটি এমন কিছু মুদ্রণ করবে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
লিওলি

166

নিম্নলিখিত কোডের টুকরোটি আপনাকে সমস্ত ডিভাইসগুলি টেনসরফ্লোতে উপলব্ধ করা উচিত।

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

নমুনা আউটপুট

[নাম: "/ সিপিইউ: 0" ডিভাইস_ টাইপ: "সিপিইউ" মেমরি_লিট: 268435456 লোকাল {arn অবতার: 4402277519343584096,

নাম: "/ জিপিইউ: 0" ডিভাইস_ টাইপ: "জিপিইউ" মেমরি_লিট: 6772842168 লোকালিটি {বাস_আইডি: 1 arn অবতার: 7471795903849088328 শারীরিক_দেবা_ডেস্ক: "ডিভাইস: 0, নাম: জিফোরস জিটিএক্স 1070, পিসিআই বাস আইডি: 0000: 05: 00.0"


9
এটি সেরা উত্তর।
লোলস্কি

3
এবং যদি এই কমান্ডটি "জিপিইউ" দিয়ে কোনও প্রবেশ ফিরিয়ে না দেয়, তার অর্থ কি আমার মেশিনটিতে কেবল জিপিইউ থাকে না, বা টেনসরফ্লো এটি সনাক্ত করতে সক্ষম হয় না?
পারদ0114

@ মার্কারি0114 এটি হতে পারে। উদাহরণস্বরূপ, আপনার একটি জিপিইউ থাকতে পারে তবে টেনসরফ্লো-জিপিইউ সঠিকভাবে ইনস্টল করা নেই।
জিমিজ্জাজ

4
আমি একমত নই, এটি প্রশ্নের উত্তর দেয় না : এটি ডিভাইসগুলি উপলভ্য নয় তবে ব্যবহৃত ডিভাইসগুলির বিষয়ে । এবং এটি সম্পূর্ণ ভিন্ন গল্প হতে পারে! (যেমন, টিএফ ডিফল্টরূপে কেবল 1 জিপিইউ ব্যবহার করবে
মায়ু 36

নাম: "/ ডিভাইস: জিপিইউ: 0" ডিভাইস_ টাইপ: "জিপিইউ" মেমরি_লিট: 10711446324 লোকেশন {বাস_আইডি: 1 লিঙ্ক {} arn অবতার: 17935632445266485019 শারীরিক_দেব_ডেস্ক: "ডিভাইস: 0, নাম: জিফোরস আরটিএক্স 2080 তি, পিসিআই বাস আইডি: 0000: 01: 00.0, গণনার ক্ষমতা: 7.5 "]
কামরান কাউসার

89

আমি মনে করি এটি অর্জনের আরও সহজ উপায় আছে।

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")

এটি সাধারণত প্রিন্ট করে

Default GPU Device: /device:GPU:0

এটি আমার কাছে এই ভারবস লগগুলির চেয়ে সহজ বলে মনে হয়।


একমত। উপরে বর্ণিত পদ্ধতির চেয়ে সহজ। এটি ব্যবহার করে জিপিইউগুলির তালিকা মুদ্রণ করে। ধন্যবাদ
ব্যবহারকারী 907629

2
সবার সেরা দুর্দান্ত
ইঞ্চে 100

এটি কোনও বৈধ পরীক্ষা নয়। এটি আপনার কাছে টেনসরফ্লোর জিপিইউ সংস্করণ ইনস্টল থাকলেও এটি অন্য বিবৃতিতে ফিরে আসবে।
গড্ডার্ড

67

টেনসরফ্লো ২.০

সেশনগুলি আর 2.0 তে ব্যবহৃত হয় না। পরিবর্তে, একটি ব্যবহার করতে পারেন tf.test.is_gpu_available:

import tensorflow as tf

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

আপনি যদি ত্রুটি পান তবে আপনার ইনস্টলেশন পরীক্ষা করা দরকার।


এটি টিএফ 1.14 এর সাথেও কাজ করে (সম্ভবত কয়েকটি পুরানো সংস্করণও)!
ওভারড্রাইভার

5
এখনই এটি করার পরামর্শ দেওয়া হচ্ছেtf.config.list_physical_devices('GPU')
রায় শিলক্রোট

@ রয় শিলক্রট আমার মনে হয় 'tf.config.list_physical_devices (' GPU ') টেনসরফ্লো 2.0 তে কাজ করে না
জোসেলকুইন

1
@ জোসেলকুইন টিএফ v2.x ডক্সটি জানিয়েছে যে এটির কাজ করা উচিত: tensorflow.org/api_docs/python/tf/config/experimental/… , এবং আমি তা যাচাই করতে পারি যে এটি আমার জন্য কাজ করে।
রায় শিলক্রট

এটি 'কাজ করে' তবে এটি এখন অবচয় বলে মনে হচ্ছে।
মজফাদার

29

এটি জিপিইউ ব্যবহার করে টেনস্রফ্লোটি প্রশিক্ষণের সময়ও নিশ্চিত করবে?

কোড

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

আউটপুট

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
আপনার উত্তর কেন কাজ করছে (দয়া করে কী করবে log_device_placementএবং সিপিইউ বনাম জিপিইউ কীভাবে আউটপুটে দেখতে হবে?) দয়া করে তার একটি সামান্য ব্যাখ্যা যুক্ত করুন । এটি আপনার উত্তরের মান উন্নত করবে!
নান্দার স্পিডসট্রা

25

অন্যান্য উত্তরের পাশাপাশি, নীচে আপনার সেন্সরফ্লো সংস্করণে জিপিইউ সমর্থন রয়েছে কিনা তা নিশ্চিত করতে সহায়তা করা উচিত।

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

7
সতর্কতা: এটি আপনাকে জানায় যে টেনসরফ্লো জিপিইউ দিয়ে সংকলিত হয়েছে কিনা। জিপিইউ ব্যবহার হচ্ছে কিনা তা নয়। (উদাহরণস্বরূপ ড্রাইভারগুলি যদি সঠিকভাবে ইনস্টল না করা থাকে তবে "is_built_with_cuda ()" সত্য হলেও, সিপিইউ ব্যবহার করা হয়))
রিকার্ডো ক্রুজ

19

ঠিক আছে, ipython shellটার্মিনাল এবং importটেনসরফ্লো থেকে প্রথমে একটি চালু করুন :

$ 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

এখন, আমরা নিম্নলিখিত কমান্ডটি ব্যবহার করে জিপিইউ মেমরির ব্যবহারটি কনসোলে দেখতে পারি :

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

যেহেতু আমরা কেবল importটেনসরফ্লো সম্পাদনা করেছি তবে এখনও কোনও জিপিইউ ব্যবহার করি নি, ব্যবহারের পরিসংখ্যানগুলি হ'ল:

tf নন- জিপিইউ ব্যবহার

খেয়াল করুন কীভাবে জিপিইউ মেমরির ব্যবহার খুব কম হয় (~ 700MB); কখনও কখনও জিপিইউ মেমরির ব্যবহার এমনকি 0 এমবি এর চেয়ে কম হতে পারে।


এখন, আমাদের কোডে জিপিইউ লোড করুন। যেমন নির্দেশিত হয়েছে tf documentation, করুন:

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

এখন, ঘড়ির পরিসংখ্যান নীচে হিসাবে একটি আপডেট করা GPU ব্যবহার মেমরি প্রদর্শন করা উচিত:

tf gpu-watch

আইপিথন শেল থেকে আমাদের পাইথন প্রক্রিয়া কীভাবে জিপিইউ মেমরির of 7 গিগাবাইট ব্যবহার করছে তা এখন পর্যবেক্ষণ করুন।


পিএস আপনি কোডটি চলমান হিসাবে এই পরিসংখ্যানগুলি পর্যবেক্ষণ করতে পারেন , সময়ের সাথে সাথে জিপিইউর ব্যবহার কতটা তীব্র see


1
আমি আশা করি আমি উত্তরগুলি তারকাতে পারতাম। এটি এক সোনার
জয়ন রিজভি

18

এটি টেনসরফ্লোয়ের জন্য উপলব্ধ ডিভাইসের তালিকা দেওয়া উচিত (পাই -৩. 3. এর অধীনে):

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)

মানুষ আমি ভুল করে আপনার প্রশ্নকে হ্রাস করেছি ... আপনি যদি আপনার প্রশ্নটি সম্পাদনা করেন তবে আমি আমার উপন্যাসটি বাতিল করে দেব
ফ্রান্সেস্কো বোই

14

আমি জিপিইউ ব্যবহার নিরীক্ষণ করতে এনভিডিয়া-এসএমআই ব্যবহার করতে পছন্দ করি। আপনি যখন প্রোগ্রাম শুরু করার সময় তা যদি উল্লেখযোগ্যভাবে উঠে যায় তবে এটি শক্তিশালী লক্ষণ যে আপনার টেনসরফ্লোটি জিপিইউ ব্যবহার করছে।


এটি একটি পরোক্ষ উপায়
12:58 এ প্যাপাবিসেসপ্স

আপনি জিপিইউ ব্যবহার নিরীক্ষণের জন্য এনভিডিয়া-এসএমআই কীভাবে ব্যবহার করবেন?
রাজ্জিন

আপনি চুদা ইনস্টল করার পরে। এনভিডিয়া-এসএমআই আপনার সিস্টেমে থাকা উচিত। আমি ব্যবহারটি পর্যবেক্ষণ করতে সাধারণত 'এনভিডিয়া-এসএমআই-এল' ব্যবহার করি।
স্কট হুয়াং

3
আপনি ওয়াচ এনভিডিয়া-এসএমআইও ব্যবহার করতে পারেন, প্রতি 2 সেকেন্ডে স্ক্রিন আপডেট করে
পার্সিউস 14

এনভিডিয়া-এসএমআই দেখুন আমার জন্য ভাল কাজ করে। আমি আউটপুটে আরও দেখতে পাচ্ছি যে আমার পাইথন প্রক্রিয়াটি জিপিইউ ব্যবহার করছে
ফর্মিকা

9

টেনসরফ্লো এর সাম্প্রতিক আপডেটগুলির সাথে, আপনি নিম্নলিখিত হিসাবে এটি পরীক্ষা করতে পারেন:

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

এটি Trueজিপিইউ দ্বারা ব্যবহৃত হচ্ছে Tensorflow, এবং ফিরে আসবেFalse অন্যথায়

আপনি ডিভাইস চান device_nameআপনি টাইপ করতে পারেন: tf.test.gpu_device_name()। থেকে আরো বিশদ বিবরণ পান এখানে


8

জুপিটারে নিম্নলিখিতগুলি চালান,

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

যদি আপনি আপনার পরিবেশটি সঠিকভাবে সেট আপ করে থাকেন তবে আপনি টার্মিনালে যেখানে "জুপিটার নোটবুক" চালিয়েছিলেন সেগুলির জন্য নিম্নলিখিত আউটপুটটি পাবেন ,

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

আপনি এখানে দেখতে পাবেন আমি একটি এনভিডিয়া কোড্রো কে 620 এর সাথে টেনসরফ্লো ব্যবহার করছি।


জুপিটার মোটেও প্রয়োজন হয় না, দয়া করে প্রশ্নে জটিলতা যুক্ত করবেন না
প্যাট্রিজিও বার্তোনি

1
কিছু ব্যবহারকারী জুপিটারে জিপিইউ ব্যবহারযোগ্য কিনা তা নিশ্চিত করতে চাইতে পারেন। অতিরিক্তভাবে, এটি পাইথন স্ক্রিপ্ট থেকে চালানো যেতে পারে।
ওয়াফল্যাচট

8

আমি দেখতে পেয়েছি যে কমান্ড লাইন থেকে জিপিইউ অনুসন্ধান করা সবচেয়ে সহজ:

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 |
+-----------------------------------------------------------------------------+

যদি আপনার শেখার ব্যাকগ্রাউন্ড প্রক্রিয়া হয় তবে পিড থেকে পিডটি jobs -pমিলবে matchnvidia-smi


6

আপনি নিম্নলিখিত কোডটি চালিয়ে বর্তমানে জিপিইউ ব্যবহার করছেন কিনা তা আপনি পরীক্ষা করতে পারেন:

import tensorflow as tf
tf.test.gpu_device_name()

যদি আউটপুট হয় ''তবে এর অর্থ আপনি CPUকেবল ব্যবহার করছেন ;
আউটপুট যদি এর মতো কিছু হয় /device:GPU:0তবে এর অর্থ GPUকাজ করে।


GPUআপনি যা ব্যবহার করছেন তা যাচাই করতে নিম্নলিখিত কোডটি ব্যবহার করুন:

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

যদি আউটপুট হয় ' ', তবে আমাদের কী করা উচিত?
জেসন

@ জেসন কেবলমাত্র একটি জিপিইউ সংস্করণ পুনরায় ইনস্টল করুন।
হু Xixi

6

এটি আপনার জুপিটার নোটবুকের শীর্ষের কাছে রাখুন। আপনার কী প্রয়োজন নেই তা মন্তব্য করুন।

# 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()))

বিঃদ্রঃ: টেনসরফ্লো ২.০ প্রকাশের সাথে সাথে কেরাসকে এখন টিএফ এপিআইয়ের অংশ হিসাবে অন্তর্ভুক্ত করা হয়েছে।

মূলত এখানে উত্তর


5

টেনসরফ্লো ২.০ এর জন্য

import tensorflow as tf

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

উত্স এখানে

অন্য বিকল্পটি হ'ল:

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

1
is_gpu_available(টেনসরফ্লো.পিথন.ফ্রেমওয়ার্ক.টেষ্ট_ইটিল থেকে) অবচয় করা হয়েছে এবং ভবিষ্যতের সংস্করণে সরানো হবে।
হিমাংশু তেওতিয়া

5

টেনশরফ্লো> = ২.১ এর জন্য আপডেট করুন।

টেনসরফ্লো জিপিইউ ব্যবহার করছে কিনা তা যাচাই করার জন্য প্রস্তাবিত উপায়টি নিম্নলিখিত:

tf.config.list_physical_devices('GPU') 

টেনসরফ্লো ২.১ হিসাবে, উপরোক্তদের tf.test.gpu_device_name()পক্ষে অবহেলা করা হয়েছে।


3

tf.sessionবাশ থেকে সরাসরি উপলব্ধ ডিভাইসগুলির তালিকা করতে আমি এই লাইনটি ব্যবহার করছি :

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__);"

এটি উপলব্ধ ডিভাইস এবং টেনসরফ্লো সংস্করণটি মুদ্রণ করবে, উদাহরণস্বরূপ:

_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

আমি নীচে স্নিপেট জিপিইউ পরীক্ষা করার জন্য খুব সহজ ..

টেনসরফ্লো ২.০ টেস্ট

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))

টেনসরফ্লো 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

নিম্নলিখিতগুলি আপনার জিপিইউ ডিভাইসের নামও ফিরিয়ে দেবে।

import tensorflow as tf
tf.test.gpu_device_name()

যদি এই কমান্ডের আউটপুটটি খালি স্ট্রিং হয় ... আমি কীভাবে ডিবাগ করব?
zthomas.nc

3

টেনসোটফ্লো ২.০> = দিয়ে

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

এখানে চিত্র বর্ণনা লিখুন


2

আপনার টেনসরফ্লো ইনস্টলেশন দ্বারা জিপিইউ ত্বরণ ব্যবহৃত হচ্ছে কিনা তা পরীক্ষা করার জন্য আপনার কাছে কিছু বিকল্প রয়েছে।

আপনি তিনটি পৃথক প্ল্যাটফর্মে নিম্নলিখিত কমান্ডগুলি টাইপ করতে পারেন।

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
  1. জুপিটার নোটবুক - বৃহস্পতি নোটবুকটি চলছে এমন কনসোলটি পরীক্ষা করুন। আপনি জিপিইউ ব্যবহার হচ্ছে তা দেখতে সক্ষম হবেন।
  2. পাইথন শেল - আপনি সরাসরি আউটপুট দেখতে সক্ষম হবেন। (দ্রষ্টব্য- দ্বিতীয় কমান্ডের আউটপুটটি ভেরিয়েবল 'সেস' এর জন্য বরাদ্দ করবেন না; যদি এটি সাহায্য করে)।
  3. স্পাইডার - কনসোলে নিম্নলিখিত কমান্ডটি টাইপ করুন।

    import tensorflow as tf tf.test.is_gpu_available()


2

টেনসরফ্লো ২.১

জিপিইউতে মেমরি ব্যবহারের জন্য এনভিডিয়া-এসএমআই দিয়ে যাচাই করা যেতে পারে এমন একটি সাধারণ গণনা।

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))

2
>>> 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')]

@ অমিতাআইরনের পরামর্শ অনুসারে:

এই বিভাগটি নির্দেশ করে যে একটি জিপিইউ পাওয়া গিয়েছিল

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.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')]

আপনি যদি আউটপুটে অংশগুলিকে নির্দেশ করেন যা জিপিইউ ব্যবহৃত হয়েছে কিনা তা নির্দেশ করে তবে এটি কার্যকর হবে।
অমিতা ইরন

@ অমিতাআইরন এই পরামর্শের জন্য ধন্যবাদ, আমি আশা করি এটি এখন আরও কিছুটা পরিষ্কার হয়ে গেছে।
বিডিডি

1

আপনি যদি টেনসরফ্লো ২.০ ব্যবহার করেন তবে ডিভাইসগুলি দেখানোর জন্য আপনি লুপের জন্য এটি ব্যবহার করতে পারেন:

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

1

যদি আপনি টেনসরফ্লো ২.x ব্যবহার করে থাকেন:

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

0

টেনস্রফ্লো একটি জিপিইউ ব্যবহার করছে কিনা তা পরীক্ষা করতে জপিটার বা আপনার আইডিইতে এই কমান্ডটি চালান: tf.config.list_physical_devices('GPU')


এই উত্তরটি এখানে অন্যান্য উত্তরগুলির সাথে কীভাবে সহায়তা করবে?
কম্পিউটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.