জিপিইউতে নিয়ন্ত্রিত অ-লাইন অপ্টিমাইজেশন সমস্যা সমাধান করা


18

আমি জিপিইউতে (সিইউডিএ) কিছু নিয়ন্ত্রিত ননলাইনার অপ্টিমাইজেশন সমস্যাগুলি সমাধান করার চেষ্টা করছি।

উদ্দেশ্য ফাংশনটি একটি মসৃণ ননলাইনার ফাংশন, এবং এর গ্রেডিয়েন্ট বিশ্লেষণাত্মকভাবে গণনা করা তুলনামূলকভাবে সস্তা, সুতরাং আমার সংখ্যাসমূহের সান্নিধ্যে বিরক্ত করার দরকার নেই।

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

বিটিডাব্লু, হেসিয়ান যদি প্রয়োজন হয় তবে আমার ক্ষেত্রে তুলনামূলকভাবে ছোট (<64x64 সাধারণত) তবে আমার একসাথে এই হাজার হাজার ছোট স্কেল অপটিমাইজেশন সমস্যা সমাধান করা দরকার।


4
আপনার সমস্যার ক্ষুদ্র আকার দেওয়া আমার মনে হয় না যে অ্যালগরিদমের নির্দিষ্ট পছন্দ (যেমন, BFGS) আপনার সবচেয়ে উল্লেখযোগ্য চ্যালেঞ্জ হতে চলেছে। পরিবর্তে এটি GPU <-> সিপিইউ যোগাযোগের ওভারহেডকে হ্রাস করবে। সম্ভবত এটি করার সর্বোত্তম উপায় হ'ল আপনার সমস্যাগুলির প্রচুর উদাহরণ জিপিইউতে সমান্তরালে সমাধান করা। এগুলি একবারে লোড করুন, তাদের একবারে সমাধান করুন, ফলাফল একবারে ডাউনলোড করুন। অ্যালগরিদম সম্পর্কে আমার নির্দিষ্ট পরামর্শ নেই, তবে আমি বলব যে শাখাগুলির চেয়ে জিপিইউগুলি লুপের সাথে আরও ভাল better
মাইকেল গ্রান্ট

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

কিছু লোক চুদা দিয়ে এলবিএফজিএস প্রয়োগ করে ।
বেনসি

উত্তর:


8

আমি জিপিইউতে বেশ বিবিধ নন-লিনিয়ার সলভারগুলি বাস্তবায়িত করেছি, যার মধ্যে এলবিএফজিএস, বারজিলাই বোরউইন গ্রেডিয়েন্ট ডেসেন্ট এবং নন-লিনিয়ার কনজুগেট গ্রেডিয়েন্ট রয়েছে ient

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

এলবিএফজিএস সাধারণভাবে খুব শক্তিশালী পছন্দ এবং আপনি যদি স্মৃতিচারণের জন্য সত্যিকার অর্থে আটকে না থাকেন তবে এটি সম্ভবত সবচেয়ে ভাল জায়গা।

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

জিপিইউ সম্পর্কিত বিবেচনাগুলি:

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

যদি এটি কোনও বিকল্প না হয় তবে আমি এলবিএফজিএস সলভারের সাথে যাব। যদি আপনার ফাংশনটি ভালভাবে আচরণ করা হয় তবে আপনি কেবলমাত্র 1 টি পদক্ষেপ (লাইন অনুসন্ধান এড়ানো) ব্যবহার করে এবং কেবল নির্দিষ্ট সংখ্যক পুনরাবৃত্তির জন্য সমস্ত সমস্যা চালিয়ে চলে যেতে পারেন।


0

আমি আপনাকে লেভেনবার্গ মার্কুয়ার্ড (একটি বিশ্বাসের অঞ্চল বৈকল্পিক) ব্যবহার করার পরামর্শ দিচ্ছি কারণ এটি ব্যবহারিক প্রয়োগগুলিতে ব্যবহৃত হয় এবং খুব ভাল গতি-বনাম-নির্ভুলতার পারফরম্যান্স প্রদর্শন করে। তদুপরি, জিপিইউর জন্য কিছু লাইব্রেরি রয়েছে (যেমন cuLM https://github.com/zitmen/cuLM ), যা আপনি চেষ্টা করে দেখতে পারেন। যদি তারা কাজটি না করে তবে আপনার বাস্তবায়নের জন্য প্রচুর সংস্থান রয়েছে। এলএম বাস্তবায়ন মোটেই কঠিন নয়। আপনার কেবলমাত্র জিপিইউ যোগাযোগ হ্রাস করার বিষয়ে যত্ন নেওয়া উচিত। একটি সংক্ষিপ্ত ধারণা পেতে:

http://on-demand.gputechconf.com/gtc/2012/presentations/S0231-Levenberg-Marquardt-Using-Block-Sparse-Matrices-on-CUDA.pdf


2
লেভেনবার্গ-মার্কোয়ার্ট ননলাইনারে সর্বনিম্ন স্কোয়ারের জন্য। আমি মনে করি না সে / সে কমপক্ষে স্কোয়ার সম্পর্কে কিছু উল্লেখ করেছে।
কর্ট

0

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

আপনি অনুসন্ধান অঞ্চলের একটি অশোধিত গ্রিড এবং একটি প্রাথমিক "তাপমাত্রা" পরামিতি দিয়ে শুরু করুন

প্রতিটি পদক্ষেপে আপনি পজেবল সলিউশন পয়েন্টগুলি গণনা করুন (তাপমাত্রার সাথে কিছুটা সম্ভাবনাকে বিপরীতভাবে সাদৃশ্য সহ সমাধানহীন পয়েন্টগুলিও গ্রহণ করা যায়)

তারপরে কেবলমাত্র সেই পদক্ষেপগুলিতে সমাধানগুলি ধরে রাখুন এবং তাপমাত্রা বৃদ্ধি করুন যা পরবর্তী পুনরাবৃত্তির জন্য আরও সূক্ষ্ম-দানযুক্ত গ্রিড সরবরাহ করে

তাপমাত্রা <প্রদত্ত সীমা / নির্ভুলতার প্রান্তিক না হওয়া পর্যন্ত এটি করুন

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