এইচপিসি ক্লাস্টারগুলির সাথে কাজ করা


11

আমার বিশ্ববিদ্যালয়ে, আমাদের একটি এইচপিসি কম্পিউটিং ক্লাস্টার রয়েছে। ক্লাস্টিফায়ার ইত্যাদি প্রশিক্ষণের জন্য আমি ক্লাস্টারটি ব্যবহার করি। সুতরাং, সাধারণত, ক্লাস্টারে একটি কাজ প্রেরণের জন্য, (উদাহরণস্বরূপ পাইথন সাইকিট-লার্ন স্ক্রিপ্ট), আমাকে বাশ স্ক্রিপ্ট লিখতে হবে যাতে (অন্যদের মধ্যে) মতো একটি কমান্ড থাকে qsub script.py

তবে আমি এই প্রক্রিয়াটি খুব হতাশাবোধ করি। সাধারণত যা হয় তা হ'ল আমি আমার ল্যাপটপে পাইথন স্ক্রিপ্টটি লিখি এবং তারপরে আমি সার্ভারে লগইন করে এসভিএন সংগ্রহস্থল আপডেট করি, তাই আমি সেখানে একই পাইথন স্ক্রিপ্টটি পাই। তারপরে আমি সেই বাশ স্ক্রিপ্টটি লিখি বা সম্পাদনা করি, তাই আমি বাশ স্ক্রিপ্টটি চালাতে পারি।

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

আমি নিশ্চিত যে এখানে অনেক লোক তাদের ডেটা সায়েন্সের কাজের জন্য কম্পিউটিং ক্লাস্টার ব্যবহার করছেন। আমি কেবল জানতে চাই আপনি ছেলেরা কীভাবে ক্লাস্টারে চাকরি প্রেরণ পরিচালনা করছেন?


1
আহ, মোতায়েনের আনন্দ ... বিতরণ সিস্টেমের আনন্দ দ্বারা উন্নত :)
লগ

উত্তর:


5

আপনার গ্রিড প্রশাসককে আপনার স্থানীয় মেশিনটিকে "সাবমিট হোস্ট" হিসাবে যুক্ত করতে বলুন এবং এসজিই ইনস্টল করুন (যা আমরা ধরে নিই যে আপনি ব্যবহার করছেন, আপনি আসলে বলছেন না) যাতে আপনি qsubনিজের মেশিন থেকে পারেন ।

বা ....

ইম্যাকস ব্যবহার করুন, তারপরে আপনি ইমাসের "ট্রাম্প" এসএসএস-সংযোগ সুবিধার মাধ্যমে আপনার এইচপিসিতে সম্পাদনা করতে পারবেন এবং অন্য ইমাস উইন্ডোতে একটি শেল খোলা রাখতে পারবেন। আপনি কোন সম্পাদক / অপারেটিং সিস্টেমটি ব্যবহার করতে চান তা বলবেন না। এমনকি আপনি দুটি স্থানে একটি ফাইল সংরক্ষণ করতে ইমাসকে কনফিগার করতে পারেন, যাতে আপনি পরীক্ষা চালানোর জন্য আপনার স্থানীয় মেশিনে এবং এইচপিসি ফাইল সিস্টেমে একসাথে বড় কাজের জন্য সঞ্চয় করতে পারেন।


4

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

যেহেতু আপনার ক্লাস্টারটি qsubসেট আপ হয়েছে বলে মনে হচ্ছে , আপনার সমস্যাটি বরং মেশিনগুলিতে ডেটা প্রতিলিপি করার সাথে সম্পর্কিত হতে পারে (প্রতিটি নোডে কেবল কমান্ড চালানো ব্যতীত)। সুতরাং, এই পয়েন্টটি scpসম্বোধন করার জন্য, আপনি একটি স্ক্রিপ্ট লিখতে পারেন , ক্লাস্টারে প্রতিটি নোডের (যা অবশ্যই এসভিএন এর সাথে আরও ভালভাবে সম্বোধন করা হয়েছে) কপি করতে বা একটি এনএফএস স্থাপন করতে পারেন। এটি ডেটাতে একটি সহজ এবং স্বচ্ছ অ্যাক্সেসের অনুমতি দেয় এবং অপ্রয়োজনীয় তথ্য প্রতিলিপি করার প্রয়োজনীয়তাও হ্রাস করে।

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


4

উত্স সংস্করণ সংগ্রহস্থল ব্যবহার করার জন্য আপনার পদ্ধতির দিকটি ভাল it এটি আপনাকে ক্লাস্টারে কাজ করতে এবং তারপরে সমস্ত কিছু অনুলিপি করার অনুমতি দেয়।

যদি আপনি নিজের ল্যাপটপে পাইথন স্ক্রিপ্টে নিজেকে ছোটখাটো সম্পাদনা করতে দেখেন, তবে ক্লাস্টারে আপনার এসভিএন ডিরেক্টরি আপডেট করে, কেন সরাসরি ক্লাস্টার ফ্রন্ট্যান্ডে কাজ করবেন না, সমস্ত প্রয়োজনীয় ছোটখাট সম্পাদনা করুন এবং তারপরে, দিনের শেষে, প্রতিশ্রুতিবদ্ধ সেখানে সবকিছু এবং আপনার ল্যাপটপে আপডেট?

আপনার যা দরকার তা পরিবেশ সেখানে (অপারেটিং সিস্টেম, সম্পাদক, ইত্যাদি) সাথে পরিচিত বা আপনার নিজের পরিবেশ ইনস্টল (আমি সাধারণত আমার হোম ডিরেক্টরির মধ্যে ইনস্টল এর সর্বশেষ সংস্করণ হয় তেজ , Tmux সঠিক dotfiles সঙ্গে, ইত্যাদি তাই আমি বোধ বাড়িতে সেখানে।)

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

অবশেষে, স্ক্রিপ্টগুলিতে ম্যানুয়ালি পরিবর্তন এড়াতে আপনি নিজের কাজের জমাটি স্ক্রিপ্ট করতে পারেন। qsubস্টিডিনের কাছ থেকে একটি স্ক্রিপ্ট গ্রহণ করে এবং সমস্ত #$মন্তব্য কমান্ড-লাইন আর্গুমেন্ট হিসাবে গ্রহণ করে ।


3

আপনার প্রশ্নের বক্তব্য থেকে আমি ধরে নিই যে আপনার কাছে একটি স্থানীয় মেশিন এবং একটি রিমোট মেশিন রয়েছে যেখানে আপনি দুটি ফাইল আপডেট করেন - একটি পাইথন স্ক্রিপ্ট এবং একটি বাশ স্ক্রিপ্ট। দুটি ফাইলই এসভিএন নিয়ন্ত্রণে রয়েছে এবং উভয় মেশিনেরই একই এসভিএন সার্ভারে অ্যাক্সেস রয়েছে।

আমি দুঃখিত যে আমি আপনার গ্রিড সিস্টেমের সাথে সুনির্দিষ্ট কোন পরামর্শ পাই না, তবে যেকোন স্থাপনার জন্য আমি গুরুত্বপূর্ণ কিছু পয়েন্টগুলি তালিকাভুক্ত করতে পারি।

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

সুতরাং, একটি পাথ এবং অন্যান্য সেটআপ তথ্য রাখা .iniফাইল এবং ব্যবহার ConfigParser এটা পড়তে, অথবা একটি ব্যবহার করতে .jsonফাইল এবং ব্যবহার JSON মডিউল। ফাইলের একটি অনুলিপি স্থানীয়ভাবে এবং একটি দূরবর্তীভাবে, উভয়ই একই পাথের নীচে, এসভিএন নিয়ন্ত্রণ ছাড়াই রাখুন এবং পাইথন স্ক্রিপ্টে সেই কনফিগারেশন ফাইলের পথ রাখুন (বা যদি আপনি উভয়ই রাখতে না পারেন তবে কমান্ড লাইন থেকে পান একই পাথের অধীনে কনফিগারেশন)।

কনফিগারেশন যতটা সম্ভব ছোট রাখুন । যে কোনও কনফিগারেশন আপনার অ্যাপ্লিকেশনের একটি "চলমান অংশ" এবং কোনও সিস্টেমের চলমান অংশগুলির চেয়ে কম শক্তিশালী। কনফিগারেশনের অন্তর্ভুক্ত এমন কোনও কিছুর একটি ভাল সূচক হ'ল আপনি যখনই কোডটি সরান তখনই এটি আপনাকে সম্পাদনা করতে হবে; যে জিনিসগুলির সম্পাদনার দরকার নেই সেগুলি কোডে স্থির হিসাবে থাকতে পারে।

আপনার মোতায়েন স্বয়ংক্রিয় করুন । আপনি এটি আপনার স্থানীয় মেশিনে বাশ স্ক্রিপ্টের মাধ্যমে করতে পারেন; মনে রাখবেন আপনি পারেন একটি দূরবর্তী মেশিনে কোনো কমান্ড চালানোর মাধ্যমে ssh। এই ক্ষেত্রে:

svn export yourprojectpath /tmp/exportedproject
tar czf /tmp/yourproject.tgz /tmp/exportedproject
scp /tmp/myproject.tgz youruser@remotemachine:~/dev

## Remote commands are in the right hand side, between ''
ssh youruser@remotemachine 'tar xzf ~/dev/yourproject.tgz'
ssh youruser@remotemachine 'qsub ~/dev/yourproject/script.py'

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

এর চেয়ে বেশি আপনার যদি প্রয়োজন হয় তবে আপনি পাইথনের ফ্যাব্রিক বা উচ্চ স্তরের খাবারটি ব্যবহারের কথা ভাবতে পারেন ।

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