2016-04-25 15 views
18

जीपीजीपीयू पर कम्प्यूटेशनल ग्राफ बनाने और निष्पादित करने के लिए मैं टेंसरफ्लो आउटपुट की व्याख्या कैसे करूं?TensorFlow आउटपुट की व्याख्या कैसे करें?

पाइथन API का उपयोग करके एक मनमानी tensorflow स्क्रिप्ट निष्पादित करने वाले निम्न आदेश को देखते हुए।

python3 tensorflow_test.py> बाहर

पहले भाग stream_executor अपनी लोड हो रहा है निर्भरता की तरह लगता है।

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 

एक NUMA नोड क्या है?

I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:900] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 

मुझे लगता है जब वह उपलब्ध GPU

I tensorflow/core/common_runtime/gpu/gpu_init.cc:102] Found device 0 with properties: 
name: Tesla K40c 
major: 3 minor: 5 memoryClockRate (GHz) 0.745 
pciBusID 0000:01:00.0 
Total memory: 11.25GiB 
Free memory: 11.15GiB 

कुछ GPU प्रारंभ पाता है? डीएमए क्या है?

I tensorflow/core/common_runtime/gpu/gpu_init.cc:126] DMA: 0 
I tensorflow/core/common_runtime/gpu/gpu_init.cc:136] 0: Y 
I tensorflow/core/common_runtime/gpu/gpu_device.cc:755] Creating TensorFlow device (/gpu:0) -> (device: 0, name: Tesla K40c, pci bus id: 0000:01:00.0) 

यह E त्रुटि क्यों फेंकता है?

E tensorflow/stream_executor/cuda/cuda_driver.cc:932] failed to allocate 11.15G (11976531968 bytes) from device: CUDA_ERROR_OUT_OF_MEMORY 

क्या pool_allocator करता है करने के लिए महान जवाब: https://stackoverflow.com/a/35166985/4233809

I tensorflow/core/common_runtime/gpu/pool_allocator.cc:244] PoolAllocator: After 3160 get requests, put_count=2958 evicted_count=1000 eviction_rate=0.338066 and unsatisfied allocation rate=0.412025 
I tensorflow/core/common_runtime/gpu/pool_allocator.cc:256] Raising pool_size_limit_ from 100 to 110 
I tensorflow/core/common_runtime/gpu/pool_allocator.cc:244] PoolAllocator: After 1743 get requests, put_count=1970 evicted_count=1000 eviction_rate=0.507614 and unsatisfied allocation rate=0.456684 
I tensorflow/core/common_runtime/gpu/pool_allocator.cc:256] Raising pool_size_limit_ from 256 to 281 
I tensorflow/core/common_runtime/gpu/pool_allocator.cc:244] PoolAllocator: After 1986 get requests, put_count=2519 evicted_count=1000 eviction_rate=0.396983 and unsatisfied allocation rate=0.264854 
I tensorflow/core/common_runtime/gpu/pool_allocator.cc:256] Raising pool_size_limit_ from 655 to 720 
I tensorflow/core/common_runtime/gpu/pool_allocator.cc:244] PoolAllocator: After 28728 get requests, put_count=28680 evicted_count=1000 eviction_rate=0.0348675 and unsatisfied allocation rate=0.0418407 
I tensorflow/core/common_runtime/gpu/pool_allocator.cc:256] Raising pool_size_limit_ from 1694 to 1863 

उत्तर

18

NUMA के बारे में - https://software.intel.com/en-us/articles/optimizing-applications-for-numa

मोटे तौर पर बोल, अगर आप दोहरे सॉकेट सीपीयू है, वे प्रत्येक अपने स्वयं के स्मृति होगा और एक धीमी क्यूपीआई लिंक के माध्यम से अन्य प्रोसेसर की स्मृति तक पहुंच प्राप्त करनी है। तो प्रत्येक सीपीयू + मेमोरी एक NUMA नोड है।

संभावित आप दो अलग अलग उपकरणों के रूप में दो अलग-अलग NUMA नोड्स का इलाज और अपने नेटवर्क की संरचना के लिए अनुकूलित करने सकता है अलग भीतर नोड/के बीच नोड बैंडविड्थ

हालांकि, मैं वहाँ TF में पर्याप्त तारों अभी नहीं लगता कि अभी यह करने के लिए। पहचान या तो काम नहीं करती है - मैंने अभी 2 NUMA नोड्स वाली मशीन पर कोशिश की है, और यह अभी भी एक ही संदेश मुद्रित है और 1 NUMA नोड में प्रारंभ किया गया है।

डीएमए = डायरेक्ट मेमोरी एक्सेस। आप संभावित रूप से सीपीयू का उपयोग किए बिना एक जीपीयू से दूसरे जीपीयू में चीजों की प्रतिलिपि बना सकते हैं (यानी, एनवीलिंक के माध्यम से)। एनवीलिंक एकीकरण अभी तक नहीं है।

जहाँ तक त्रुटि के रूप में, TensorFlow GPU अधिकतम स्मृति के पास आवंटित करने के लिए तो यह आपके GPU स्मृति में से कुछ पहले से ही कुछ और करने के लिए आवंटित किया गया है और आवंटन में विफल रहा है की तरह लगता है की कोशिश करता है।

आप नीचे दिए गए की तरह कुछ करना इतना स्मृति आवंटन

config = tf.ConfigProto(log_device_placement=True) 
config.gpu_options.per_process_gpu_memory_fraction=0.3 # don't hog all vRAM 
config.operation_timeout_in_ms=15000 # terminate on long hangs 
sess = tf.InteractiveSession("", config=config) 
2
  • successfully opened CUDA library xxx locally मतलब यह है कि पुस्तकालय लोड किया गया था से बचने के लिए कर सकते हैं, लेकिन यह मतलब नहीं है कि यह प्रयोग किया जाएगा।
  • successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero का अर्थ है कि आपके कर्नेल में NUMA समर्थन नहीं है।आप NUMA here और here के बारे में पढ़ सकते हैं।
  • Found device 0 with properties: आपके पास 1 जीपीयू है जिसका आप उपयोग कर सकते हैं। यह इस जीपीयू के गुणों को सूचीबद्ध करता है।
  • डीएमए प्रत्यक्ष स्मृति पहुंच है। Wikipedia पर अधिक जानकारी।
  • failed to allocate 11.15G त्रुटि स्पष्ट रूप से बताती है कि ऐसा क्यों हुआ, लेकिन यह कहना मुश्किल है कि आपको कोड को देखे बिना इतनी मेमोरी क्यों चाहिए।
  • पूल आवंटन संदेशों को this answer
में समझाया गया है
संबंधित मुद्दे