python - Tensorflow jupyter के भीतर CUDA_VISIBLE_DEVICES सेट करें




environment-variables (3)

मेरे पास दो जीपीयू हैं और एक साथ ipynb के माध्यम से दो अलग-अलग नेटवर्क चलाने की इच्छा रखते हैं, हालांकि पहली नोटबुक हमेशा GPUs को आवंटित करता है।

CUDA_VISIBLE_DEVICES का उपयोग करके, मैं पाइथन फ़ाइलों के लिए डिवाइस छुपा सकता हूं, हालांकि मुझे नोटबुक के भीतर ऐसा करने के बारे में अनिश्चितता है।

क्या वही सर्वर पर चल रहे नोटबुक में विभिन्न जीपीयू छिपाने के लिए वैसे भी है?


Answers

आप os.environ वातावरण का उपयोग कर नोटबुक में पर्यावरण चर सेट कर सकते हैं। पहले GPU पर TensorFlow को सीमित करने के लिए TensorFlow को प्रारंभ करने से पहले निम्न कार्य करें।

import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID"   # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"]="0"

आप दोबारा जांच सकते हैं कि आपके पास टीएफ के लिए सही डिवाइस दिखाई दे रहे हैं

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

मैं इसे उपयोगिता मॉड्यूल जैसे notebook_util से उपयोग करता हूं

import notebook_util
notebook_util.pick_gpu_lowest_memory()
import tensorflow as tf

आप magics का उपयोग करके किसी भी आयात के बिना इसे तेजी से कर सकते हैं:

%env CUDA_DEVICE_ORDER=PCI_BUS_ID
%env CUDA_VISIBLE_DEVICES=0

ध्यान दें कि सभी एनवी चर तार हैं, इसलिए उपयोग करने की कोई आवश्यकता नहीं है। " आप यह सत्यापित कर सकते हैं कि env-variable को चलकर सेट किया गया है: %env <name_of_var> या उन सभी को %env साथ जांचें।


यदि आप दौड़ की स्थिति से बचने के लिए फ़ाइल को बंद और फिर से खोलना नहीं चाहते हैं, तो आप इसे truncate कर सकते हैं:

f = open(filename, 'r+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.truncate()
f.close()

कार्यक्षमता भी एमवीसीएचआर की टिप्पणी के अनुसार with open as साफ और सुरक्षित हो सकती है, जो एक त्रुटि होने पर भी हैंडलर बंद कर देगा।

with open(filename, 'r+') as f:
    text = f.read()
    text = re.sub('foobar', 'bar', text)
    f.seek(0)
    f.write(text)
    f.truncate()






python environment-variables tensorflow