मैं रिमोट सर्वर पर Tensorboard कैसे चला सकता हूं?


116

मैं Tensorflow में नया हूँ और मैं जो कुछ कर रहा हूँ, उसके कुछ दृश्यों से बहुत लाभ होगा। मैं समझता हूं कि Tensorboard एक उपयोगी विज़ुअलाइज़ेशन टूल है, लेकिन मैं इसे अपने रिमोट उबंटू मशीन पर कैसे चला सकता हूं?


कुछ संभावित समाधान: (1) यह स्थानीय मशीन पर चलने जैसा ही हो सकता है, हालाँकि मैंने इसे सत्यापित नहीं किया है: जब आप इसे चलाते हैं, तो यह आपको एक पोर्ट नंबर प्रदान करता है, इसके साथ ही आप इसे अपने स्थानीय ब्राउज़र से एक्सेस करते हैं। मशीन। (2) क्या आप RealVNC जैसे दूरस्थ डेस्कटॉप सॉफ़्टवेयर का उपयोग करने में सक्षम हैं? (३) मेरा मानना ​​है कि आप एक ही रिमोट मशीन पर टेंसरफ्लो कम्प्यूटेशन भी चलाते हैं; आप अपने स्थानीय मशीन पर लॉग फाइल भी डाउनलोड कर सकते हैं, और अपने स्थानीय मशीन पर टेंसरबोर्ड चला सकते हैं।
याओ झांग

जवाबों:


185

यहाँ है कि मैं दूरस्थ सर्वर को आपके स्थानीय बाहरी IP को स्वीकार करने के मुद्दों से बचने के लिए क्या करूँ:

  • जब मैं मशीन में ssh करता हूं, तो मैं रिमोट मशीन के पोर्ट को अपनी मशीन के पोर्ट में -Lट्रांसफर करने के विकल्प का उपयोग करता हूं (उदाहरण के लिए): 600616006 ssh -L 16006:127.0.0.1:6006 olivier@my_server_ip

यह क्या करता है कि 6006सर्वर के पोर्ट पर (इन 127.0.0.1:6006) सब कुछ पोर्ट पर मेरी मशीन को भेज दिया जाएगा 16006


  • फिर आप tensorboard --logdir logडिफ़ॉल्ट 6006पोर्ट के साथ एक मानक का उपयोग करके रिमोट मशीन पर टेंसरबोर्ड लॉन्च कर सकते हैं
  • अपनी स्थानीय मशीन पर, http://127.0.0.1:16006 पर जाएं और अपने रिमोट टेन्सरबोर्ड का आनंद लें।

1
इसके अलावा टेंसोरबोर्ड प्लॉट्स सफारी पर सभी काले होने के साथ एक मुद्दा था, यह क्रोम पर काम करता है ( # 4856 से संबंधित )
ओलिवियर मोइंड्रोट

2
एक छोटा संकेत: 127.0.0.1यहां आपकी स्थानीय मशीन आईपी है, इसलिए आपको इसे छोड़ देना चाहिए। इसे अपने दूरस्थ आईपी में न बदलें। मैंने इस पर 10 मिनट बर्बाद किए। कितना मूर्ख हूँ मैं!
डार्कजेरो

इस और -4ssh ध्वज के साथ IPv4 को लागू करने से इसे हल किया गया। इसी तरह के सवालों के आसपास पढ़ते हुए, कई ने अपने सर्वर में IPv6 पतों के साथ समस्याएँ की हैं।
रॉबर्ट Parcus

ऐसा लगता है जैसे मुझे ssh शेल में रहना है। यदि मैं ssh शेल को बंद करता हूं, तो रिमोट टेंसबोर्ड से कोई प्रतिक्रिया नहीं होती है। Ssh शेल को बंद करने के दौरान क्या अभी भी टेंसबोर्ड से जुड़ा होना है?
फैन

@ फ़ैन: नीचे दिए गए अन्य उत्तर की जाँच करें । मूल रूप से आप -Nssh शेल खोलने से बचने के लिए ध्वज जोड़ सकते हैं । जोड़ना -fssh कनेक्शन को पृष्ठभूमि में रखता है।
ओलिवियर मोइंड्रोट

78

आप एक अन्य sshकमांड के साथ पोर्ट-फ़ॉर्वर्ड कर सकते हैं, जिसे सर्वर से कनेक्ट करने के तरीके से बंधे होने की आवश्यकता नहीं है (दूसरे उत्तर के विकल्प के रूप में)। इस प्रकार, नीचे दिए गए चरणों का क्रम मनमाना है।

  1. अपने स्थानीय मशीन से, भागो

    ssh -N -f -L localhost:16006:localhost:6006 <user@remote>

  2. पर दूरस्थ मशीन, चलाएँ:

    tensorboard --logdir <path> --port 6006

  3. फिर, अपने स्थानीय मशीन पर (इस उदाहरण में) http: // localhost: 16006 पर नेविगेट करें ।

(ssh कमांड का स्पष्टीकरण:

-N : कोई दूरस्थ आदेश नहीं

-f : बैकग्राउंड में ssh लगाएं

-L <machine1>:<portA>:<machine2>:<portB> :

आगे <machine2>:<portB>(दूरस्थ <machine1>:<portA>क्षेत्र)


जैसा कि @ 0xcaff द्वारा उल्लेख किया गया है, आपको इसके बजाय अपने अन्य इंटरफेस पर सुनना चाहिए
विवेकी

विशिष्ट पोर्ट के लिए, ssh -p PORTNUMBER -N -f -L लोकलहोस्ट: 16006: लोकलहोस्ट: 6006 <यूजर @ रिमोट>।
वी शी

63

आपको कुछ भी करने की आवश्यकता नहीं है। बस दौडो:

tensorboard --host 0.0.0.0 <other args here>

और अपने सर्वर url और पोर्ट से कनेक्ट करें। --host 0.0.0.0बताता है tensorflow स्थानीय मशीन पर सभी IPv4 पतों पर कनेक्शन से सुनने के लिए।


यह सही उत्तर होना चाहिए .. ज्यादातर संभावना है कि टेंसरबोर्ड केवल बाहरी सेवाओं के लिए दिखाई देने वाले पते के लिए बाध्य नहीं है।
डुआने

1
यह मेरे लिए एक दूरस्थ सर्वर के लिए काम नहीं करता है ... मुझे क्या याद आ रहा है?
इदां अजुरी

यदि आप केवल अपने सार्वजनिक आईपी पर सुनना चाहते हैं, तो आप कर सकते हैं: टेनसॉरबोर्ड --होस्ट $ (hostname -I) <अन्य args यहाँ> और फिर आप उस URL को कॉपी-पेस्ट कर सकते हैं जो टेनसॉरबोर्ड प्रिंट करता है: TensorBoard: 12.2 10.0 .50.42: 6006 (छोड़ने के लिए CTRL + C दबाएं)
मोर्टन

1
@Idanazuri क्या आपके पास अपनी रिमोट मशीन तक http पहुंच है, या क्या यह फ़ायरवॉल है (उदाहरण के लिए: केवल एक कनेक्शन के माध्यम से सुलभ)? यदि यह केवल ssh है, तो यह उत्तर आपके लिए काम नहीं करेगा।
drevicko

17

एक और विकल्प यदि आप इसे किसी कारण से काम नहीं कर पा रहे हैं, तो बस अपने फाइलसिस्टम पर एक sdfs के साथ लॉगडिर डायरेक्टरी को माउंट करें:

sshfs user@host:/home/user/project/summary_logs ~/summary_logs

और फिर Tensorboard को स्थानीय रूप से चलाएं।


10
  1. अपने स्थानीय बाहरी IP को googling "whats my ip"या इस कमांड में दर्ज करके खोजें :wget http://ipinfo.io/ip -qO -
  2. अपने दूरस्थ बाहरी IP का निर्धारण करें । दूरस्थ सर्वर में ssh-ing करने के बाद संभवत: यह आपके उपयोगकर्ता नाम के बाद आता है। आप wget http://ipinfo.io/ip -qO -फिर से वहाँ से भी आ सकते हैं।
  3. बस अपने स्थानीय बाहरी आईपी पते को स्वीकार करने के लिए अपने रिमोट सर्वर ट्रैफ़िक को सुरक्षित करें
  4. टेंसरबोर्ड चलाएं। उस पोर्ट पर ध्यान दें, जो इसमें चूक करता है:6006
  5. पोर्ट के बाद, अपने दूरस्थ बाहरी आईपी पते को अपने ब्राउज़र में दर्ज करें :123.123.12.32:6006

यदि आपका रिमोट सर्वर आपके स्थानीय आईपी पते से ट्रैफ़िक के लिए खुला है, तो आपको अपना रिमोट टेन्सरबोर्ड देखने में सक्षम होना चाहिए।

चेतावनी : यदि सभी इंटरनेट ट्रैफ़िक आपके सिस्टम तक पहुँच सकते हैं (यदि आपने एक भी आईपी पता निर्दिष्ट नहीं किया है जो इसे एक्सेस कर सकता है), तो कोई भी आपके TensorBoard परिणामों को देखने में सक्षम हो सकता है और स्काईनेट स्वयं बनाकर भाग सकता है।


7

यह एक उचित जवाब नहीं है, लेकिन एक संकटमोचन है, उम्मीद है कि मेरे जैसे अन्य कम अनुभवी नेटवर्क की मदद करेगा।

मेरे मामले में (फ़ायरफ़ॉक्स + ubuntu16) ब्राउज़र कनेक्ट हो रहा था, लेकिन एक रिक्त पृष्ठ (टैब पर टेंसरबोर्ड लोगो के साथ) दिखा रहा था, और कोई लॉग गतिविधि नहीं दिखाई गई थी। मुझे अभी भी पता नहीं है कि इसका क्या कारण हो सकता है (इसमें बहुत कुछ नहीं दिखता है लेकिन अगर किसी को पता है तो कृपया बताएं!), लेकिन मैंने इसे ubuntu के डिफ़ॉल्ट ब्राउज़र पर स्विच कर दिया। यहाँ सटीक कदम, बहुत @Olivier Moindrot के उत्तर के समान है:

  1. सर्वर पर, टेंसरबोर्ड शुरू करें: tensorboard --logdir=. --host=localhost --port=6006
  2. क्लाइंट पर, ssh सुरंग खोलें ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
  3. Ubuntu खोलें Browserऔर जाएँ localhost:16006। टेनॉरबोर्ड पेज को बिना ज्यादा देरी के लोड करना चाहिए।

यह जांचने के लिए कि SSH सुरंग प्रभावी रूप से काम कर रही है, इस अजगर स्क्रिप्ट की तरह एक सरल इको सर्वर मदद कर सकता है:

  1. स्क्रिप्ट को <ECHO>.pyसर्वर में एक फ़ाइल में रखें और इसे साथ चलाएं python <ECHO>.py। अब सर्वर में 0.0.0.0:5555 पर इको लिपि सुनने की सुविधा होगी ।
  2. क्लाइंट पर, ssh सुरंग खोलें ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
  3. क्लाइंट पर, उसी टर्मिनल में टनल (चरण 2) को खोलने के लिए उपयोग किया जाता है, जारी करने telnet localhost 12345से सर्वर में चल रही गूंज स्क्रिप्ट से जुड़ जाएगा। टाइपिंग helloऔर प्रेस एन्टर को helloवापस प्रिंट करना चाहिए । यदि ऐसा है, तो आपकी SSH सुरंग काम कर रही है। यह मेरा मामला था, और मुझे इस निष्कर्ष पर ले गया कि समस्या में ब्राउज़र शामिल था। एक अलग टर्मिनल से जुड़ने की कोशिश के कारण टर्मिनल जम गया।

जैसा कि मैंने कहा, आशा है कि यह मदद करता है!
चीयर्स,
एंड्रेस


मुझे क्रोमियम + ubuntu14 पर ठीक यही समस्या है, और भी बदतर, यह एक कंप्यूटर से अग्रेषित पोर्ट के लिए पूरी तरह से ठीक काम करता है, लेकिन दूसरे के लिए एक ही रिक्त पृष्ठ (सही फ़ेविकॉन के साथ) दिखाता है। फ़ायरफ़ॉक्स ठीक काम करता है। अभी भी यह पता नहीं लगा, बस अब फ़ायरफ़ॉक्स का उपयोग कर।
लुकासब

हाँ, कई कारक शामिल हैं लेकिन जब तक यह काम करता है ... एक और बात ध्यान देने वाली है कि टीबी संस्करण जो टीएफ के साथ आता है वह टीबी-स्टैंडअलोन एक से अलग है जो यहां पाया जा सकता है ... https://github.com/dmlc/tensorboardबस अधिक विकल्प जोड़ने के लिए सेट अप। चीयर्स
fr_andres

7

आप सीधे अपने रिमोट सर्वर के टर्मिनल पर निम्न कमांड रन कर सकते हैं टेंसरबोर्ड चलाने के लिए:

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

4

आपको पोर्ट फ़ॉरवर्डिंग का उपयोग करके एक ssh कनेक्शन बनाना होगा:

ssh -L 16006:127.0.0.1:6006 user@host

फिर आप tensorboardकमांड चलाते हैं :

tensorboard --logdir=/path/to/logs

फिर आप आसानी से tensorboardअपने ब्राउज़र में निम्न का उपयोग कर सकते हैं :

localhost:16006/

3

--bind_all विकल्प उपयोगी है।

$ tensorboard --logdir runs --bind_all

पोर्ट स्वचालित रूप से 6006 इंक्रीमेंटल से चुना जाएगा। (6006, 6007, 6008 ...)


1

किसी के लिए जो ssh कुंजी (एक कॉर्पोरेट सर्वर के लिए) का उपयोग करना चाहिए।

बस -i /.ssh/id_rsaअंत में जोड़ें ।

$ ssh -N -f -L localhost:8211:localhost:6007 myname@servername -i /.ssh/id_rsa


0

टेंसरबोर्ड को चलाते समय अपने सिस्टम का एक और विकल्प --host = ip दें और फिर आप अपने मेजबान सिस्टम के http: // ip का उपयोग करके इसे अन्य सिस्टम से एक्सेस कर सकते हैं : 6006


0

एक अन्य दृष्टिकोण रिवर्स प्रॉक्सी का उपयोग करना है , जो आपको एसएसएच के बिना किसी भी इंटरनेट से जुड़े डिवाइस से टेंसरबोर्ड को देखने की अनुमति देता है । उदाहरण के लिए, मोबाइल उपकरणों पर टेंसरबोर्ड को देखने के लिए यह दृष्टिकोण इसे बहुत आसान / सुगम बना सकता है।

कदम:

1) अपने रिमोट मशीन टेन्सरबोर्ड पर रिवर्स प्रॉक्सी Ngrok डाउनलोड करें। निर्देशों के लिए https://ngrok.com/download देखें (~ 5 मिनट सेटअप)।

2) भागो ngrok http 6006(मान लें कि आप पोर्ट 6006 पर टेंसरबोर्ड की मेजबानी कर रहे हैं)

3) आउटपुट को एनरोल करने वाले URL को सहेजें:

यहां छवि विवरण दर्ज करें

4) कि किसी भी ब्राउज़र में TensorBoard देखने के लिए दर्ज करें:

यहां छवि विवरण दर्ज करें

सैम किर्काइल्स को विशेष धन्यवाद

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.