मैं Tensorflow में नया हूँ और मैं जो कुछ कर रहा हूँ, उसके कुछ दृश्यों से बहुत लाभ होगा। मैं समझता हूं कि Tensorboard एक उपयोगी विज़ुअलाइज़ेशन टूल है, लेकिन मैं इसे अपने रिमोट उबंटू मशीन पर कैसे चला सकता हूं?
मैं Tensorflow में नया हूँ और मैं जो कुछ कर रहा हूँ, उसके कुछ दृश्यों से बहुत लाभ होगा। मैं समझता हूं कि Tensorboard एक उपयोगी विज़ुअलाइज़ेशन टूल है, लेकिन मैं इसे अपने रिमोट उबंटू मशीन पर कैसे चला सकता हूं?
जवाबों:
यहाँ है कि मैं दूरस्थ सर्वर को आपके स्थानीय बाहरी IP को स्वीकार करने के मुद्दों से बचने के लिए क्या करूँ:
-L
ट्रांसफर करने के विकल्प का उपयोग करता हूं (उदाहरण के लिए):
6006
16006
ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip
यह क्या करता है कि 6006
सर्वर के पोर्ट पर (इन 127.0.0.1:6006
) सब कुछ पोर्ट पर मेरी मशीन को भेज दिया जाएगा 16006
।
tensorboard --logdir log
डिफ़ॉल्ट 6006
पोर्ट के साथ एक मानक का उपयोग करके रिमोट मशीन पर टेंसरबोर्ड लॉन्च कर सकते हैं127.0.0.1
यहां आपकी स्थानीय मशीन आईपी है, इसलिए आपको इसे छोड़ देना चाहिए। इसे अपने दूरस्थ आईपी में न बदलें। मैंने इस पर 10 मिनट बर्बाद किए। कितना मूर्ख हूँ मैं!
-4
ssh ध्वज के साथ IPv4 को लागू करने से इसे हल किया गया। इसी तरह के सवालों के आसपास पढ़ते हुए, कई ने अपने सर्वर में IPv6 पतों के साथ समस्याएँ की हैं।
-N
ssh शेल खोलने से बचने के लिए ध्वज जोड़ सकते हैं । जोड़ना -f
ssh कनेक्शन को पृष्ठभूमि में रखता है।
आप एक अन्य ssh
कमांड के साथ पोर्ट-फ़ॉर्वर्ड कर सकते हैं, जिसे सर्वर से कनेक्ट करने के तरीके से बंधे होने की आवश्यकता नहीं है (दूसरे उत्तर के विकल्प के रूप में)। इस प्रकार, नीचे दिए गए चरणों का क्रम मनमाना है।
अपने स्थानीय मशीन से, भागो
ssh -N -f -L localhost:16006:localhost:6006 <user@remote>
पर दूरस्थ मशीन, चलाएँ:
tensorboard --logdir <path> --port 6006
फिर, अपने स्थानीय मशीन पर (इस उदाहरण में) http: // localhost: 16006 पर नेविगेट करें ।
(ssh कमांड का स्पष्टीकरण:
-N
: कोई दूरस्थ आदेश नहीं
-f
: बैकग्राउंड में ssh लगाएं
-L <machine1>:<portA>:<machine2>:<portB>
:
आगे <machine2>:<portB>
(दूरस्थ <machine1>:<portA>
क्षेत्र)
आपको कुछ भी करने की आवश्यकता नहीं है। बस दौडो:
tensorboard --host 0.0.0.0 <other args here>
और अपने सर्वर url और पोर्ट से कनेक्ट करें। --host 0.0.0.0
बताता है tensorflow स्थानीय मशीन पर सभी IPv4 पतों पर कनेक्शन से सुनने के लिए।
एक और विकल्प यदि आप इसे किसी कारण से काम नहीं कर पा रहे हैं, तो बस अपने फाइलसिस्टम पर एक sdfs के साथ लॉगडिर डायरेक्टरी को माउंट करें:
sshfs user@host:/home/user/project/summary_logs ~/summary_logs
और फिर Tensorboard को स्थानीय रूप से चलाएं।
"whats my ip"
या इस कमांड में दर्ज करके खोजें :wget http://ipinfo.io/ip -qO -
wget http://ipinfo.io/ip -qO -
फिर से वहाँ से भी आ सकते हैं।6006
123.123.12.32:6006
यदि आपका रिमोट सर्वर आपके स्थानीय आईपी पते से ट्रैफ़िक के लिए खुला है, तो आपको अपना रिमोट टेन्सरबोर्ड देखने में सक्षम होना चाहिए।
चेतावनी : यदि सभी इंटरनेट ट्रैफ़िक आपके सिस्टम तक पहुँच सकते हैं (यदि आपने एक भी आईपी पता निर्दिष्ट नहीं किया है जो इसे एक्सेस कर सकता है), तो कोई भी आपके TensorBoard परिणामों को देखने में सक्षम हो सकता है और स्काईनेट स्वयं बनाकर भाग सकता है।
यह एक उचित जवाब नहीं है, लेकिन एक संकटमोचन है, उम्मीद है कि मेरे जैसे अन्य कम अनुभवी नेटवर्क की मदद करेगा।
मेरे मामले में (फ़ायरफ़ॉक्स + ubuntu16) ब्राउज़र कनेक्ट हो रहा था, लेकिन एक रिक्त पृष्ठ (टैब पर टेंसरबोर्ड लोगो के साथ) दिखा रहा था, और कोई लॉग गतिविधि नहीं दिखाई गई थी। मुझे अभी भी पता नहीं है कि इसका क्या कारण हो सकता है (इसमें बहुत कुछ नहीं दिखता है लेकिन अगर किसी को पता है तो कृपया बताएं!), लेकिन मैंने इसे ubuntu के डिफ़ॉल्ट ब्राउज़र पर स्विच कर दिया। यहाँ सटीक कदम, बहुत @Olivier Moindrot के उत्तर के समान है:
tensorboard --logdir=. --host=localhost --port=6006
ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
Browser
और जाएँ localhost:16006
। टेनॉरबोर्ड पेज को बिना ज्यादा देरी के लोड करना चाहिए।यह जांचने के लिए कि SSH सुरंग प्रभावी रूप से काम कर रही है, इस अजगर स्क्रिप्ट की तरह एक सरल इको सर्वर मदद कर सकता है:
<ECHO>.py
सर्वर में एक फ़ाइल में रखें और इसे साथ चलाएं python <ECHO>.py
। अब सर्वर में 0.0.0.0:5555 पर इको लिपि सुनने की सुविधा होगी ।ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
telnet localhost 12345
से सर्वर में चल रही गूंज स्क्रिप्ट से जुड़ जाएगा। टाइपिंग hello
और प्रेस एन्टर को hello
वापस प्रिंट करना चाहिए । यदि ऐसा है, तो आपकी SSH सुरंग काम कर रही है। यह मेरा मामला था, और मुझे इस निष्कर्ष पर ले गया कि समस्या में ब्राउज़र शामिल था। एक अलग टर्मिनल से जुड़ने की कोशिश के कारण टर्मिनल जम गया।जैसा कि मैंने कहा, आशा है कि यह मदद करता है!
चीयर्स,
एंड्रेस
https://github.com/dmlc/tensorboard
बस अधिक विकल्प जोड़ने के लिए सेट अप। चीयर्स
आप सीधे अपने रिमोट सर्वर के टर्मिनल पर निम्न कमांड रन कर सकते हैं टेंसरबोर्ड चलाने के लिए:
tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
या आप अपने ipython नोटबुक के भीतर भी टेनॉरबोर्ड शुरू कर सकते हैं:
%load_ext tensorboard
%tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006
आपको पोर्ट फ़ॉरवर्डिंग का उपयोग करके एक ssh कनेक्शन बनाना होगा:
ssh -L 16006:127.0.0.1:6006 user@host
फिर आप tensorboard
कमांड चलाते हैं :
tensorboard --logdir=/path/to/logs
फिर आप आसानी से tensorboard
अपने ब्राउज़र में निम्न का उपयोग कर सकते हैं :
localhost:16006/
टेंसरबोर्ड को चलाते समय अपने सिस्टम का एक और विकल्प --host = ip दें और फिर आप अपने मेजबान सिस्टम के http: // ip का उपयोग करके इसे अन्य सिस्टम से एक्सेस कर सकते हैं : 6006
एक अन्य दृष्टिकोण रिवर्स प्रॉक्सी का उपयोग करना है , जो आपको एसएसएच के बिना किसी भी इंटरनेट से जुड़े डिवाइस से टेंसरबोर्ड को देखने की अनुमति देता है । उदाहरण के लिए, मोबाइल उपकरणों पर टेंसरबोर्ड को देखने के लिए यह दृष्टिकोण इसे बहुत आसान / सुगम बना सकता है।
कदम:
1) अपने रिमोट मशीन टेन्सरबोर्ड पर रिवर्स प्रॉक्सी Ngrok डाउनलोड करें। निर्देशों के लिए https://ngrok.com/download देखें (~ 5 मिनट सेटअप)।
2) भागो ngrok http 6006
(मान लें कि आप पोर्ट 6006 पर टेंसरबोर्ड की मेजबानी कर रहे हैं)
3) आउटपुट को एनरोल करने वाले URL को सहेजें:
4) कि किसी भी ब्राउज़र में TensorBoard देखने के लिए दर्ज करें:
सैम किर्काइल्स को विशेष धन्यवाद