নিউরাল নেটওয়ার্ক প্রশিক্ষণের জন্য সিপিইউ এবং জিপিইউয়ের মধ্যে নির্বাচন করা


29

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

'ছোট' বলতে কী বোঝায়?

উদাহরণস্বরূপ, 100 লুকানো ইউনিট সহ একটি একক স্তর এমএলপি 'ছোট' হবে?

আমাদের সংক্ষিপ্ত সংজ্ঞাটি কি পুনরাবৃত্ত স্থপতিগুলির জন্য পরিবর্তিত হয়?

সিপিইউ বা জিপিইউতে প্রশিক্ষণ দেবেন কিনা তা সিদ্ধান্ত নেওয়ার সময় কি অন্য কোনও মানদণ্ড বিবেচনা করা উচিত?

সম্পাদনা 1:

আমি সবেমাত্র একটি ব্লগ পোস্ট পেয়েছি (সম্ভবত পুরানো? এটি 2014 সালের):

"... বেশিরভাগ নেটওয়ার্ক কার্ড [গুলি] কেবলমাত্র মেমরির সাথে কাজ করে যা সিপিইউতে নিবন্ধিত এবং সুতরাং দুটি নোডের মধ্যে জিপিইউ থেকে জিপিইউ স্থানান্তর এই রকম হবে: জিপিইউ 1 থেকে সিপিইউ 1 থেকে নেটওয়ার্ক কার্ড 1 থেকে নেটওয়ার্ক কার্ড 2 থেকে সিপিইউ ২ থেকে জিপিইউ ২. এর অর্থ হ'ল, যদি কেউ ধীর নেটওয়ার্ক কার্ড বেছে নেয় তবে একটি কম্পিউটারে কোনও স্পিডআপ নাও থাকতে পারে fast এমনকি দ্রুত নেটওয়ার্ক কার্ডগুলির সাথেও যদি ক্লাস্টারটি বড় হয় তবে তুলনা করার সময় কেউ জিপিইউ থেকে স্পিডআপও পান না সিপিইউগুলিতে যেমন জিপিইউগুলি কেবল কার্ড কার্ডের সাথে চালিয়ে যাওয়ার জন্য খুব দ্রুত কাজ করে।

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

সুতরাং এক পর্যায়ে, এই পোস্ট অনুসারে, সিপিইউগুলি ব্যবহার করা আরও দ্রুততর হতে পারে। এটা কি এখনও আছে?

সম্পাদনা 2: হ্যাঁ, ব্লগ পোস্টটি খুব ভাল পুরানো হতে পারে কারণ:

এখন মনে হচ্ছে কোনও নোডের মধ্যে জিপিইউগুলি পিসিআই বাসের মাধ্যমে সংযুক্ত রয়েছে, সুতরাং প্রায় 6GiB / s এ যোগাযোগ হতে পারে। (উদাহরণস্বরূপ: https://www.youtube.com/watch?v=el1iSlP1uOs , প্রায় 35 মিনিটের মধ্যে)। স্পিকার সূচিত করে যে এটি জিপিইউ 1 থেকে সিপিইউতে জিপিইউতে যাওয়ার চেয়ে দ্রুত। এর অর্থ হ'ল নেটওয়ার্ক কার্ড আর বাধা নেই।


তার ব্লগ পোস্টটি সহ লোকটি ভাল পয়েন্ট নিয়ে আসে। আমি তার সমস্ত ন্যায্যতা বুঝতে পারি নি। যাইহোক, গুগল, ফেসবুক, টুইটার এবং একাডেমিয়ার সমস্ত শীর্ষস্থানীয় গভীর শেখার গোষ্ঠীগুলি জিপিইউগুলিতে তাদের কোডগুলি মূলত চালায় তা প্রমাণ করে যে এটি একটি ভাল ধারণা। যদিও পক্ষপাতমূলক: nvidia.com/content/events/geoInt2015/LBrown_DL.pdf
JahKnows

উত্তর:


28

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

'ছোট' বলতে কী বোঝায়? উদাহরণস্বরূপ, 100 লুকানো ইউনিট সহ একটি একক স্তর এমএলপি 'ছোট' হবে?

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

মনে রাখবেন যে আপনার নিউরাল নেটওয়ার্কের জটিলতা আপনার লুকানো স্তরের একক সংখ্যা নয়, আপনার ইনপুট বৈশিষ্ট্যের সংখ্যার উপরও নির্ভর করে। যদি আপনার লুকানো স্তরটির 100 টি ইউনিট থাকে এবং আপনার ডেটাসেটের প্রতিটি পর্যবেক্ষণে 4 টি ইনপুট বৈশিষ্ট্য রয়েছে, তবে আপনার নেটওয়ার্কটি ক্ষুদ্র (~ 400 পরামিতি)। যদি প্রতিটি পর্যবেক্ষণের পরিবর্তে কিছু মেডিকেল / বায়োটেক প্রসঙ্গে যেমন 1 এম ইনপুট বৈশিষ্ট্যগুলি থাকে তবে আপনার নেটওয়ার্ক পরামিতিগুলির সংখ্যার দিক থেকে বেশ বড়। আমার উত্তরের বাকী অংশের জন্য আমি ধরে নিচ্ছি আপনার কাছে বেশ কয়েকটি ইনপুট বৈশিষ্ট্য জনসংযোগ রয়েছে। পর্যবেক্ষণ।

সিপিইউ বনাম জিপিইউ পারফরম্যান্সের তুলনা করার একটি ভাল উদাহরণ আমি পেয়েছিলাম যখন আমি রিইনফোর্সমেন্ট লার্নিং ব্যবহার করে একটি পোকার বট প্রশিক্ষণ দিয়েছিলাম। শক্তিবৃদ্ধি শেখার জন্য আপনি প্রায়শই চান না যে আপনার নিউরাল নেটওয়ার্কে অনেক স্তর রয়েছে এবং আমরা দেখতে পেয়েছি যে আমাদের কেবল কয়েকটি পরামিতি সহ কয়েকটি স্তর দরকার needed তদুপরি, ইনপুট বৈশিষ্ট্যের সংখ্যাটি বেশ কম ছিল। প্রাথমিকভাবে আমি একটি জিপিইউতে (এনভিআইডিআইএ টাইটান) প্রশিক্ষণ নিই, তবে শক্তিবৃদ্ধি শেখার জন্য অনেকগুলি পুনরাবৃত্তি প্রয়োজন বলে এটি অনেক দিন নিচ্ছিল। ভাগ্যক্রমে, আমি খুঁজে পেয়েছি যে আমার সিপিইউতে প্রশিক্ষণের পরিবর্তে আমার প্রশিক্ষণটি 10x হিসাবে দ্রুত হয়েছে! এটি কেবল এটিই বলা যায় যে সিপিইউ প্রশিক্ষণের জন্য মাঝে মাঝে আরও ভাল হতে পারে।

সিপিইউ বা জিপিইউতে প্রশিক্ষণ দেবেন কিনা তা সিদ্ধান্ত নেওয়ার সময় কি অন্য কোনও মানদণ্ড বিবেচনা করা উচিত?

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


ধন্যবাদ @ পীর! আপনার আরও কিছু নির্দিষ্ট উল্লেখ রয়েছে যেখানে আমি আরও পড়তে পারি?
স্ট্যাটসোর্স্রেস

আপনি তুলনা তুলনায় তুলনামূলকভাবে দেখতে এবং আপনার নেটওয়ার্কটি অতি ক্ষুদ্র see
পীর

3
আমি ক্ষুদ্র নেটওয়ার্কগুলিতে অনেকগুলি সিপিইউ / জিপিইউ তুলনা দেখিনি কারণ বড় সংস্থাগুলি এবং গবেষণা ল্যাবগুলি এতে আগ্রহী তা নয়
পীর

@ স্ট্যাটসরাস্রেস যদি আপনি নিজে থেকে এটি পরীক্ষা করতে চান তবে কেন কেবল একটি সাধারণ কেরাস এমএলপি সেটআপ করবেন না এবং জিপিইউ বনাম সিপিইউতে পারফরম্যান্সটি পরীক্ষা করবেন না কেন? এছাড়াও, আমার আপডেট উত্তরটি দেখুন। আপনার নেটওয়ার্কের আকার।
পীর

5

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

পাইথন বা ম্যাটল্যাবের মতো মেশিন লার্নিংয়ের জন্য যদি আপনি কোনও জনপ্রিয় প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করছেন তবে আপনার কম্পিউটারের কাছে আপনার জিপিইউতে অপারেশনগুলি চালিত হওয়া চাইলে কোডের এক-লাইনার কোড is

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


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

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

1
@ অ্যাড্রিয়ানকিস্টার আমি সম্মত আমি আমার উত্তর পেতে যা চেষ্টা করেছিলাম। ওপি দ্বারা উল্লিখিত নেটওয়ার্কের জন্য এটি সম্ভবত বাধা হয়ে দাঁড়াবে।
পীর

1
আমার মেশিনটি ব্যবহার করে 100 টি লুকানো ইউনিট জিপিইউতে দ্রুত। সিপিইউ দ্রুত হওয়ার জন্য আমার খুব কম সংখ্যক লুকানো ইউনিট লাগবে। তদুপরি, আমি সবসময় আমার প্রশিক্ষণগুলি ব্যাচগুলিতে করি। এই ক্ষেত্রে আমি সন্দেহ করি যে একটি সিপিইউ যথেষ্ট ঘন ডাটার বিবেচনা করে বাধা হয়ে দাঁড়াবে।
জাহকনোস

3

আমি প্রথমে অনুরূপ প্রশ্নগুলির কয়েকটি উদ্ধৃতি উল্লেখ করব:

ম্যাট্রিক্স অপারেশনের ক্ষেত্রে, আপনি দুবার ভাবেন না, আপনি সর্বদা জিপিইউ বেছে নেন। সূত্র

একটি জিপিইউতে সমান্তরাল আর্কিটেকচারটি ভেক্টর এবং ম্যাট্রিক্স ক্রিয়াকলাপের জন্য ভালভাবে মানিয়ে যায়। সূত্র

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

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

একটি 100-লুকানো ইউনিট নেটওয়ার্ক এক প্রকারের ছোট , আমি এটিকে বড় গভীর নেটওয়ার্কগুলির সাথে সম্পর্কিত একটি ছোট নেটওয়ার্ক বলব । বারবার আর্কিটেকচারে (বেশিরভাগ ক্ষেত্রে) ফিড ফরোয়ার্ড নেটওয়ার্কগুলির চেয়ে বেশি সিনপাস থাকে, তাই 100-লুকানো ইউনিট আরএনএন 100-লুকানো ইউনিট এফএফএন এর চেয়ে 'বড়'।


এটি কি সত্য নয় যে যদি আপনার 100 টি ইউনিটের একক লুকানো স্তর সহ একটি এমএলপি থাকে তবে ওজন ভাগের কারণে 100 টি লুকানো ইউনিট সহ স্ট্যান্ডার্ড আরএনএন হিসাবে একই সংখ্যার পরামিতি রয়েছে? এটির আরও 'সিনাপেস' রয়েছে - আরও 'অ্যাক্টিভেশন' - তবে একই সংখ্যক পরামিতি, তাই না?
স্ট্যাটাসস্রেস্রেস

আমি 'ওজন' ভাগ করে নেওয়ার শব্দটির সাথে পরিচিত নই। এটিতে একই পরিমাণে ক্রিয়াকলাপ রয়েছে তবে আরও সংযোগগুলি আরও বেশি পরামিতি ...
টমাস ডব্লিউ

ওজন ভাগ করে নেওয়ার অর্থ আরএনএন-এর একটি লুকানো স্তর থেকে পরবর্তী লুকানো স্তর পর্যন্ত ওজন ম্যাট্রিক্স একই; এটি একই 'ইউ' ম্যাট্রিক্স, সময় জুড়ে প্রতিলিপি। এছাড়াও, লুকানো স্তর থেকে ইনপুট থেকে ওজন একই সময়ে।
স্ট্যাটসোর্স্রেস

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

হ্যাঁ, আমি বুঝতে পারি যে শারীরিকভাবে আরও বেশি প্যারামিটার রয়েছে তবে এই প্যারামিটারগুলির মধ্যে অনেকগুলি একই মান গ্রহণ করে যার অর্থ একটি এমএলপিতে প্যারামিটারগুলির কার্যকর সংখ্যা এবং একই সংখ্যার ইনপুট মাত্রা এবং একই সংখ্যার লুকানো মাত্রা সহ একটি আরএনএন হবে একই।
স্ট্যাটসোর্স্রেস 31:58
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.