আমি কীভাবে একটি দূরবর্তী সার্ভারে টেনসরবোর্ড চালাতে পারি?


116

আমি টেনসরফ্লোতে নতুন এবং আমি যা করছি তার কিছু দৃশ্যায়ন থেকে ব্যাপকভাবে উপকৃত হব। আমি বুঝতে পারি যে টেনসরবোর্ড একটি দরকারী চাক্ষুষ সরঞ্জাম, তবে আমি কীভাবে এটি আমার দূরবর্তী উবুন্টু মেশিনে চালাব?


কিছু সম্ভাব্য সমাধান: (১) এটি স্থানীয় মেশিনে চলার সমান হতে পারে, যদিও আমি এটি যাচাই করি নি: আপনি এটি চালানোর পরে এটি আপনাকে একটি পোর্ট নম্বর সরবরাহ করে, এটি আপনার স্থানীয় ব্রাউজার থেকে অ্যাক্সেস করে মেশিন। (২) আপনি কি রিয়েলভিএনসির মতো দূরবর্তী ডেস্কটপ সফ্টওয়্যার ব্যবহার করতে পারবেন? (3) আমি ধরে নিই যে আপনি একই দূরবর্তী মেশিনে টেনসরফ্লো গণনাও চালান; আপনি নিজের স্থানীয় মেশিনে লগ ফাইলগুলি ডাউনলোড করতে এবং আপনার স্থানীয় মেশিনে টেনসরবোর্ড চালাতে পারেন।
ইয়াও ঝাং

উত্তর:


185

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

  • আমি যখন মেশিনে প্রবেশ করি তখন আমি দূরবর্তী সার্ভারের বন্দরটি আমার মেশিনের -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 পতাকা সহ আইপিভি 4 প্রয়োগ করে এটি সমাধান করেছে। অনুরূপ প্রশ্নগুলির চারপাশে পড়া, অনেকেরই তাদের সার্ভারগুলিতে IPv6 ঠিকানাগুলি নিয়ে সমস্যা রয়েছে issues
রবার্ট পারকাস

মনে হচ্ছে আমাকে এসএস শেলের মধ্যে থাকতে হবে। যদি আমি ssh শেলটি বন্ধ করি তবে দূরবর্তী টেনসরবোর্ড থেকে কোনও প্রতিক্রিয়া নেই। এসএস শেলটি বন্ধ করার সময় এখনও টেনসরবোর্ডের সাথে যুক্ত হওয়ার কোনও উপায় আছে কি?
ফ্যান

@ ফ্যান: নীচের অন্যান্য উত্তরটি দেখুন । মূলত আপনি -Nকোনও এসএস শেলটি না খোলার জন্য পতাকাটি যুক্ত করতে পারেন । যোগ করা -fব্যাকগ্রাউন্ডে ssh সংযোগ স্থাপন করে।
অলিভিয়ার মইনড্রোট

78

আপনি অন্য একটি sshকমান্ড দিয়ে পোর্ট-ফরোয়ার্ড করতে পারেন যা আপনি সার্ভারের সাথে কীভাবে সংযুক্ত করছেন (অন্য উত্তরের বিকল্প হিসাবে) তার সাথে আবদ্ধ হওয়ার দরকার নেই। সুতরাং, নীচের পদক্ষেপের ক্রম নির্বিচারে হয়।

  1. আপনার স্থানীয় মেশিন থেকে, চালান

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

  2. উপর দূরবর্তী মেশিন, সঞ্চালন করুন:

    tensorboard --logdir <path> --port 6006

  3. তারপরে, আপনার স্থানীয় মেশিনে (এই উদাহরণে) http: // লোকালহোস্ট: 16006 এ নেভিগেট করুন।

(ssh কমান্ডের ব্যাখ্যা:

-N : কোনও দূরবর্তী কমান্ড নেই

-f : ব্যাকগ্রাউন্ডে ssh রাখুন

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

ফরোয়ার্ড <machine2>:<portB>(দূরবর্তী স্কোপ) থেকে <machine1>:<portA>(স্থানীয় সুযোগ)


@ 0 এক্সক্যাফ দ্বারা উল্লিখিত হিসাবে, আপনার পরিবর্তে আপনার অন্যান্য ইন্টারফেসগুলি শোনা উচিত
mmohaveri

নির্দিষ্ট পোর্টের জন্য, ssh -p PORTNUMBER -N -f -L লোকালহোস্ট: 16006: লোকালহোস্ট: 6006 <ব্যবহারকারী @ রিমোট>।
ওয়ে শি শি

63

আপনাকে অভিনব কিছু করার দরকার নেই। শেষ ঘন্টা:

tensorboard --host 0.0.0.0 <other args here>

এবং আপনার সার্ভার ইউআরএল এবং পোর্টের সাথে সংযুক্ত হন। --host 0.0.0.0বলে tensorflow স্থানীয় মেশিনে সব IPv4- র ঠিকানায় সংযোগ থেকে শোনার জন্য।


এটি সঠিক উত্তর হওয়া উচিত .. বেশিরভাগ ক্ষেত্রে সেন্সরবোর্ড কেবল বাহ্যিক পরিষেবাদির কাছে দৃশ্যমান কোনও ঠিকানার সাথে আবদ্ধ নয়।
ডুয়েন

1
এটি আমার জন্য রিমোট সার্ভারের জন্য কাজ করে না ... আমি কী মিস করছি?
ইদান আজুরি

আপনি যদি কেবলমাত্র আপনার সর্বজনীন আইপি শুনতে চান তবে আপনি এটি করতে পারেন: টেনসরবোর্ড - হোস্ট $ (হোস্টনাম -I) <অন্যান্য আরোগুলি এখানে>> এবং তারপরে আপনি টেন্সরবোর্ডটি যে URL টি প্রিন্ট করে তা অনুলিপি করুন: টেনসরবোর্ড 1.12.2 এ 10.0 এ .50.42: 6006 (সিটিআরএল + সিটি ছেড়ে দিতে টিপুন)
মর্টেন

1
@ ইদানাজুরী আপনার কাছে কি আপনার দূরবর্তী মেশিনে HTTP অ্যাক্সেস রয়েছে, না এটি ফায়ারওয়াল (উদাহরণস্বরূপ: কেবলমাত্র একটি এসএসএস সংযোগের মাধ্যমে অ্যাক্সেসযোগ্য)? যদি এটি কেবল ssh হয় তবে এই উত্তরটি আপনার পক্ষে কার্যকর হবে না।
ড্রিভিকো

17

আপনি যদি কোনও কারণে এটি কাজ না করতে পারেন তবে অন্য বিকল্পটি হ'ল sshfs সহ আপনার ফাইল সিস্টেমে লগডির ডিরেক্টরিটি মাউন্ট করা:

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

এবং তারপরে স্থানীয়ভাবে টেনসরবোর্ড চালান।


10
  1. এই কমান্ডটি গুগল করে বা প্রবেশ করে আপনার স্থানীয় বাহ্যিক আইপি সন্ধান করুন "whats my ip":wget http://ipinfo.io/ip -qO -
  2. আপনার দূরবর্তী বাহ্যিক আইপি নির্ধারণ করুন । রিমোট সার্ভারে এসএসএন-ইন করার সময় সম্ভবত এটিই আপনার ব্যবহারকারীর নাম পরে আসে। আপনি wget http://ipinfo.io/ip -qO -সেখান থেকে আবারও করতে পারেন ।
  3. আপনার স্থানীয় বাহ্যিক আইপি ঠিকানাটি গ্রহণ করতে আপনার দূরবর্তী সার্ভার ট্র্যাফিকটিকে সুরক্ষিত করুন
  4. টেনসরবোর্ড চালান। এটিতে ডিফল্ট পোর্টটি নোট করুন:6006
  5. আপনার ব্রাউজারে আপনার দূরবর্তী বাহ্যিক আইপি ঠিকানাটি প্রবেশ করুন, তারপরে পোর্টটি অনুসরণ করুন:123.123.12.32:6006

যদি আপনার রিমোট সার্ভারটি আপনার স্থানীয় আইপি ঠিকানা থেকে ট্র্যাফিকের জন্য উন্মুক্ত থাকে, আপনি আপনার দূরবর্তী টেনসরবোর্ডটি দেখতে সক্ষম হবেন।

সতর্কতা : সমস্ত ইন্টারনেট ট্র্যাফিক যদি আপনার সিস্টেমে অ্যাক্সেস করতে পারে (যদি আপনি কোনও একক আইপি ঠিকানা এটি অ্যাক্সেস করতে পারে তা নির্দিষ্ট না করে), যে কেউ আপনার টেনসরবোর্ডের ফলাফল দেখতে এবং স্কাইনেট তৈরি করে পালাতে সক্ষম হতে পারে।


7

এটি কোনও যথাযথ উত্তর নয় তবে একটি সমস্যা সমাধানকারী, আশা করি আমার মতো অন্যান্য কম পাকা নেটওয়ালিদের সহায়তা করবে।

আমার ক্ষেত্রে (ফায়ারফক্স + উবুন্টু 16) ব্রাউজারটি সংযুক্ত ছিল, তবে একটি ফাঁকা পৃষ্ঠা দেখাচ্ছে (ট্যাবে টেনসরবোর্ডের লোগো সহ), এবং কোনও লগের ক্রিয়াকলাপ দেখানো হয়নি। আমি এখনও জানি না এর কারণ কী হতে পারে (এটি তেমনভাবে দেখেনি তবে যদি কেউ জানে তবে দয়া করে জানান!) তবে আমি উবুন্টুর ডিফল্ট ব্রাউজারে স্যুইচ করে এটি সমাধান করেছি। এখানে ঠিক পদক্ষেপগুলি, @ অলিভিয়ার মাইন্ড্রোটের উত্তরের মতোই:

  1. সার্ভারে, সেন্সরবোর্ড শুরু করুন: tensorboard --logdir=. --host=localhost --port=6006
  2. ক্লায়েন্টে, এসএসএস টানেলটি খুলুন ssh -p 23 <USER>@<SERVER> -N -f -L localhost:16006:localhost:6006
  3. উবুন্টু খুলুন Browserএবং দেখুন localhost:16006। টেনসরবোর্ড পৃষ্ঠাটি বেশি দেরি না করে লোড করা উচিত।

এসএসএইচ টানেল কার্যকরভাবে কাজ করছে কিনা তা পরীক্ষা করতে, এই অজগর স্ক্রিপ্টের মতো একটি সাধারণ ইকো সার্ভার সহায়তা করতে পারে:

  1. স্ক্রিপ্টটি <ECHO>.pyসার্ভারে একটি ফাইলের মধ্যে রাখুন এবং এটি দিয়ে চালান python <ECHO>.py। এখন সার্ভারের ইকো স্ক্রিপ্ট 0.0.0.0:5555শুনবে
  2. ক্লায়েন্টে, এসএসএস টানেলটি খুলুন ssh -p <SSH_PORT> <USER>@<SERVER> -N -f -L localhost:12345:localhost:5555
  3. ক্লায়েন্টে, টানেলটি খুলতে ব্যবহৃত একই টার্মিনালে (পদক্ষেপ ২), জারি করা telnet localhost 12345সার্ভারে চলমান ইকো স্ক্রিপ্টের সাথে সংযুক্ত হবে connect টাইপিং helloএবং এন্টার টিপে helloআবার মুদ্রণ করা উচিত । যদি এটি হয় তবে আপনার এসএসএইচ টানেলটি কাজ করছে। এটি আমার ক্ষেত্রে ছিল এবং এই সিদ্ধান্তে ব্রাউজারটি জড়িত সে সিদ্ধান্তে আমাকে নিয়ে যায়। অন্য কোনও টার্মিনাল থেকে সংযোগের চেষ্টা করার ফলে টার্মিনাল হিমশীতল হয়ে গেছে।

আমি যেমন বলেছি, আশা করি এটি সাহায্য করবে!
চিয়ার্স,
আন্দ্রেস


আমার ক্রোমিয়াম + উবুন্টু 14 এ একই সমস্যা রয়েছে, আরও খারাপ এটি একটি কম্পিউটার থেকে ফরওয়ার্ড করা পোর্টের জন্য পুরোপুরি সূক্ষ্ম কাজ করে তবে অন্যটির জন্য একই ফাঁকা পৃষ্ঠা (সঠিক ফ্যাভিকন সহ) দেখায়। ফায়ারফক্স ঠিক কাজ করে। এখনও এটি ফায়ারফক্স ব্যবহার করে বুঝতে পারেনি।
লুকাসবি

হ্যাঁ, অনেকগুলি বিষয় জড়িত তবে যতক্ষণ না এটি কাজ করে ... অন্য একটি বিষয় লক্ষণীয় যে টিবি-এর সাথে যে টিবি সংস্করণ আসে তা টিবি-স্ট্যান্ডেলোন যেটি এখানে পাওয়া যায় https://github.com/dmlc/tensorboardতার থেকে পৃথক ... কেবলমাত্র আরও বিকল্প যুক্ত করার জন্য সেটআপ। চিয়ার্স
fr_andres

7

টেন্সরবোর্ড চালানোর জন্য আপনি সরাসরি আপনার দূরবর্তী সার্ভারের টার্মিনালে নিম্নলিখিত কমান্ডটি চালাতে পারেন:

tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006

অথবা আপনি আপনার আইপথন নোটবুকের মধ্যে টেনসরবোর্ড শুরু করতে পারেন:

%load_ext tensorboard
%tensorboard --logdir {tf_log directory path} --host "0.0.0.0" --port 6006

4

আপনাকে পোর্ট ফরওয়ার্ডিং ব্যবহার করে একটি এসএসএস সংযোগ তৈরি করতে হবে:

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: // আইপি ব্যবহার করে অন্যান্য সিস্টেম থেকে এটি অ্যাক্সেস করতে পারবেন : 6006


0

অন্য পদ্ধতির একটি বিপরীত প্রক্সি ব্যবহার করা হয় , যা আপনাকে এসএসএইচিং ছাড়াই কোনও ইন্টারনেট সংযুক্ত ডিভাইস থেকে টেনসরবোর্ড দেখতে দেয় । উদাহরণস্বরূপ, মোবাইল ডিভাইসগুলিতে টেনসরবোর্ডটি দেখার জন্য এই পদ্ধতিটি এটিকে আরও সহজ / ট্র্যাকটেবল করে তুলতে পারে।

পদক্ষেপ:

1) আপনার রিমোট মেশিনে হোস্টিং টেনসরবোর্ডে বিপরীত প্রক্সি এনগ্রোক ডাউনলোড করুন। Https://ngrok.com/download দেখুননির্দেশাবলীর জন্য (minute 5 মিনিটের সেটআপ)।

2) চালান ngrok http 6006 (ধরে নিচ্ছেন আপনি 6006 বন্দরে টেনসরবোর্ড হোস্ট করছেন)

3) ইউআরএল সংরক্ষণ করুন যা আউটপুটগুলি এনগ্রোক করে:

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

4) টেনসরবোর্ড দেখতে যে কোনও ব্রাউজারে এটি প্রবেশ করুন:

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

স্যাম কার্কিলসকে বিশেষ ধন্যবাদ

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