paint-brush
বড় ভাষার মডেল ব্যবহার করে জেনেটিক উন্নতির মিউটেশন বৃদ্ধি করাদ্বারা@escholar
493 পড়া
493 পড়া

বড় ভাষার মডেল ব্যবহার করে জেনেটিক উন্নতির মিউটেশন বৃদ্ধি করা

অতিদীর্ঘ; পড়তে

এই কাগজটি পরীক্ষামূলক মূল্যায়নের মাধ্যমে সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের মধ্যে জেনেটিক উন্নতিতে (জিআই) বড় ভাষা মডেলের (এলএলএম) প্রয়োগের অনুসন্ধান করে। অন্তর্দৃষ্টি JCodec প্রকল্পের উপর ফোকাস সহ অনুসন্ধান-ভিত্তিক কৌশল, প্রোগ্রাম মেরামত, এবং কোড তৈরিতে LLM-এর প্রভাব প্রকাশ করে। LLM মিউটেশন কিভাবে সফ্টওয়্যার উন্নয়ন প্রক্রিয়া উন্নত করে তা আবিষ্কার করুন।
featured image - বড় ভাষার মডেল ব্যবহার করে জেনেটিক উন্নতির মিউটেশন বৃদ্ধি করা
EScholar: Electronic Academic Papers for Scholars HackerNoon profile picture

লেখক:

(1) আলেকজান্ডার ইআই ব্রাউনলি, ইউনিভার্সিটি অফ স্টার্লিং, ইউকে;

(2) জেমস ক্যালান, ইউনিভার্সিটি কলেজ লন্ডন, ইউকে;

(3) Karine Even-Mendoza, King's College London, UK;

(4) আলিনা গেইগার, জোহানেস গুটেনবার্গ ইউনিভার্সিটি মেইনজ, জার্মানি;

(5) ক্যারল হান্না, ইউনিভার্সিটি কলেজ লন্ডন, ইউকে;

(6) জাস্টিনা পেটকে, ইউনিভার্সিটি কলেজ লন্ডন, ইউকে;

(7) ফেদেরিকা সাররো, ইউনিভার্সিটি কলেজ লন্ডন, ইউকে;

(8) ডমিনিক সোবানিয়া, জোহানেস গুটেনবার্গ ইউনিভার্সিটি মেইনজ, জার্মানি।

বিষয়বস্তু ওভারভিউ

  • বিমূর্ত
  • ভূমিকা
  • পরীক্ষামূলক সেটআপ
  • ফলাফল
  • উপসংহার এবং ভবিষ্যতে কাজ
  • তথ্যসূত্র

বিমূর্ত

প্রোগ্রাম মেরামত সহ সফ্টওয়্যার ইঞ্জিনিয়ারিং কাজগুলিতে বৃহৎ ভাষা মডেল (এলএলএম) সফলভাবে প্রয়োগ করা হয়েছে। যাইহোক, জেনেটিক ইমপ্রুভমেন্ট (GI) এর মতো অনুসন্ধান-ভিত্তিক কৌশলগুলিতে তাদের প্রয়োগ এখনও অনেকাংশে অনাবিষ্কৃত। এই কাগজে, আমরা অনুসন্ধান প্রক্রিয়া উন্নত করতে জিআই-এর মিউটেশন অপারেটর হিসাবে এলএলএম-এর ব্যবহার মূল্যায়ন করি। JCodec টুলের জন্য সম্পাদনা তৈরি করতে OpenAI-এর API-কে কল করতে আমরা Gin Java GI টুলকিট প্রসারিত করি। আমরা এলোমেলোভাবে 5টি ভিন্ন ধরনের সম্পাদনা ব্যবহার করে সম্পাদনার স্থান নমুনা করি। আমরা দেখতে পাই যে স্ট্যান্ডার্ড সন্নিবেশ সম্পাদনাগুলির তুলনায় LLM-ভিত্তিক সম্পাদনাগুলির সাথে ইউনিট পরীক্ষায় উত্তীর্ণ প্যাচের সংখ্যা 75% পর্যন্ত বেশি। আরও, আমরা লক্ষ্য করি যে LLM-এর সাথে পাওয়া প্যাচগুলি সাধারণ সম্পাদনাগুলির তুলনায় কম বৈচিত্র্যময়। আমরা রানটাইম উন্নতি খুঁজতে স্থানীয় অনুসন্ধানের সাথে জিআই চালিয়েছি। যদিও অনেক উন্নত প্যাচ LLM-বর্ধিত GI দ্বারা পাওয়া যায়, তবে সর্বোত্তম উন্নতির প্যাচটি স্ট্যান্ডার্ড GI দ্বারা পাওয়া গেছে।


ভূমিকা

সফ্টওয়্যার সিস্টেমগুলি বৃহত্তর এবং আরও জটিল হওয়ার সাথে সাথে তাদের বজায় রাখার জন্য উল্লেখযোগ্য ম্যানুয়াল প্রচেষ্টা প্রয়োজন [2]। সফ্টওয়্যার রক্ষণাবেক্ষণ এবং অপ্টিমাইজেশন কাজগুলিতে বিকাশকারীর প্রচেষ্টা কমাতে, স্বয়ংক্রিয় দৃষ্টান্তগুলি অপরিহার্য। জেনেটিক ইমপ্রুভমেন্ট (GI) [15] বিদ্যমান সফ্টওয়্যারগুলির অ-কার্যকরী বৈশিষ্ট্য যেমন কার্যকর করার সময় এবং বাগ মেরামতের মতো কার্যকরী বৈশিষ্ট্যগুলিকে উন্নত করতে অনুসন্ধান-ভিত্তিক কৌশল প্রয়োগ করে। যদিও GI শিল্পে সাফল্য পেয়েছে [12,13], এটি অনুসন্ধানে নিযুক্ত মিউটেশন অপারেটরদের সেট দ্বারা সীমাবদ্ধ থাকে [14]।


লার্জ ল্যাঙ্গুয়েজ মডেলের (LLMs) বিস্তৃত অ্যাপ্লিকেশন রয়েছে কারণ তারা হাতে থাকা নির্দিষ্ট কাজের জন্য অতিরিক্ত প্রশিক্ষণ ছাড়াই পাঠ্য প্রশ্নগুলি প্রক্রিয়া করতে সক্ষম। LLM-গুলিকে লক্ষ লক্ষ কোড রিপোজিটরিতে প্রাক-প্রশিক্ষিত করা হয়েছে যেগুলি বিভিন্ন প্রোগ্রামিং ভাষা [5] বিস্তৃত। সফ্টওয়্যার ইঞ্জিনিয়ারিং কাজের জন্য তাদের ব্যবহার দুর্দান্ত সাফল্য পেয়েছে [9,6], প্রোগ্রাম মেরামতের জন্যও প্রতিশ্রুতি দেখাচ্ছে [17,19]।


কাং এবং ইউ [১০] পরামর্শ দিয়েছেন যে জিআই বাড়ানোর জন্য এলএলএম ব্যবহার করার অপ্রয়োজনীয় সম্ভাবনা রয়েছে। জিআই বিভিন্ন অপ্টিমাইজেশন কাজের জন্য একই মিউটেশন অপারেটর ব্যবহার করে। এই অপারেটরগুলি অনুসন্ধান শুরু করার আগে হাতে তৈরি করা হয় এবং এইভাবে একটি সীমিত অনুসন্ধান স্থানের ফলে। আমরা অনুমান করি যে একটি অতিরিক্ত মিউটেশন অপারেটর হিসাবে এলএলএম প্যাচ পরামর্শগুলিকে বৃদ্ধি করা অনুসন্ধানের স্থানকে সমৃদ্ধ করবে এবং এর ফলে আরও সফল রূপ আসবে।


এই কাগজে, আমরা জিআই-তে মিউটেশন অপারেটর হিসাবে এলএলএম ব্যবহার করে অনুসন্ধানের দক্ষতা এবং কার্যকারিতা উন্নত করতে পারে কিনা তা অন্বেষণ করার জন্য বেশ কয়েকটি পরীক্ষা পরিচালনা করি। আমাদের ফলাফলগুলি দেখায় যে এলএলএম-উত্পন্ন প্যাচগুলির সংকলন হার যথাক্রমে 51.32% এবং 53.54% র্যান্ডম অনুসন্ধান এবং স্থানীয় অনুসন্ধানের জন্য (মাঝারি প্রম্পট বিভাগের সাথে)। পূর্বে LLMs (একটি LLM মডেল যেমন-ব্যবহার করে) কোড তৈরি করতে দেখানো হয়েছিল যা প্রায় 40% সময়ের [16,18] সংকলন করেছিল। আমরা দেখতে পাই যে এলোমেলোভাবে নমুনাকৃত এলএলএম-ভিত্তিক সম্পাদনাগুলি স্ট্যান্ডার্ড জিআই সম্পাদনার তুলনায় প্রায়শই ইউনিট পরীক্ষায় সংকলিত এবং পাস করেছে। আমরা লক্ষ্য করি যে GI সন্নিবেশ সম্পাদনাগুলির তুলনায় LLM-ভিত্তিক সম্পাদনার জন্য ইউনিট পরীক্ষায় উত্তীর্ণ প্যাচের সংখ্যা 75% পর্যন্ত বেশি। যাইহোক, আমরা লক্ষ্য করি যে এলএলএমগুলির সাথে পাওয়া প্যাচগুলি কম বৈচিত্র্যময়। স্থানীয় অনুসন্ধানের জন্য, আদর্শ GI স্টেটমেন্ট সম্পাদনা ব্যবহার করে সর্বোত্তম উন্নতি সাধিত হয়, যার পরে এলএলএম-ভিত্তিক সম্পাদনা করা হয়। এই ফলাফলগুলি মিউটেশন অপারেটর হিসাবে এলএলএমগুলির সম্ভাব্যতা প্রদর্শন করে এবং এই ক্ষেত্রে আরও গবেষণার প্রয়োজনীয়তা তুলে ধরে।


পরীক্ষামূলক সেটআপ

জিআই-তে মিউটেশন অপারেটর হিসাবে এলএলএম-এর ব্যবহার বিশ্লেষণ করতে, আমরা ওপেনএআই এবং জিআই টুলবক্স জিন [৩] দ্বারা জিপিটি 3.5 টার্বো মডেল ব্যবহার করেছি। আমরা জিনের মধ্যে দুটি ধরণের অনুসন্ধান প্রয়োগ করেছি: এলোমেলো অনুসন্ধান এবং স্থানীয় অনুসন্ধান। OpenAI API ব্যবহার করে LLM-এর কাছে অনুরোধগুলি Langchain4J লাইব্রেরির মাধ্যমে ছিল, যার তাপমাত্রা ছিল 0.7৷ আমাদের পরীক্ষায় উন্নতির লক্ষ্য প্রকল্পটি ছিল জনপ্রিয় JCodec [7] প্রকল্প যা জাভাতে লেখা। 20 বার প্রোফাইলিং পুনরাবৃত্তি করে এবং ফলাফল সেটের মিলন নিয়ে জিনের প্রোফাইলার টুল ব্যবহার করে সম্পাদনা দ্বারা লক্ষ্য করা 'হট' পদ্ধতিগুলি চিহ্নিত করা হয়েছিল।


এলোমেলো নমুনা পরীক্ষার জন্য, আমরা স্টেটমেন্ট লেভেল এডিট ([14] থেকে কপি/মুছে/প্রতিস্থাপন/অদলবদল এবং [4] থেকে বিরতি/চালিয়ে/রিটার্ন সন্নিবেশ করান) এবং এলএলএম এডিট সহ রান সেট আপ করি, প্রতিটি প্রকারের 1000টি এলোমেলোভাবে তৈরি করে। . সম্পাদনা দ্বারা প্রবর্তিত অসীম লুপ ধরতে প্রতিটি ইউনিট পরীক্ষার জন্য 10000 মিলিসেকেন্ডের একটি টাইমআউট ব্যবহার করা হয়েছিল; টাইমআউট অতিক্রম করা একটি পরীক্ষা ব্যর্থতা হিসাবে গণনা করা হয়। স্থানীয় অনুসন্ধানের জন্য, পরীক্ষাগুলি একইভাবে সেট আপ করা হয়েছিল। 10টি পুনরাবৃত্তি রান ছিল (শীর্ষ 10টি হট পদ্ধতির প্রতিটির জন্য একটি) কিন্তু রানগুলি 100টি মূল্যায়নের মধ্যে সীমাবদ্ধ ছিল যার ফলে মোট 1000টি মূল্যায়ন হয়েছে, যা এলোমেলো অনুসন্ধানের সাথে মিলে গেছে। বাস্তবে এটি প্রতি রানে 99টি সম্পাদনা ছিল কারণ প্রথমটি মূল আনপ্যাচড কোডের সময় ব্যবহার করা হয়েছিল।


আমরা উভয় ধরনের অনুসন্ধানের জন্য এলএলএম-এ অনুরোধ পাঠানোর জন্য তিনটি ভিন্ন প্রম্পট দিয়ে পরীক্ষা করেছি: একটি সাধারণ প্রম্পট, একটি মাঝারি প্রম্পট এবং একটি বিস্তারিত প্রম্পট। তিনটি প্রম্পট সহ, আমাদের বাস্তবায়ন কোডের পাঁচটি ভিন্ন ভিন্নতার অনুরোধ করে। সাধারণ প্রম্পট শুধুমাত্র কোনো অতিরিক্ত তথ্য ছাড়াই কোডের অনুরোধ করে। মিডিয়াম প্রম্পট প্রদত্ত কোড এবং প্রয়োজনীয়তা সম্পর্কে আরও তথ্য প্রদান করে, যেমন চিত্র 1-এ দেখানো হয়েছে। বিশেষত, আমরা LLM-কে ব্যবহার করা প্রোগ্রামিং ভাষা, কোডটি যে প্রকল্পের, সেইসাথে ফর্ম্যাটিং নির্দেশাবলী প্রদান করি। বিস্তারিত প্রম্পট একটি দরকারী পরিবর্তনের উদাহরণ সহ মাঝারি প্রম্পটকে প্রসারিত করে। এই উদাহরণটি ব্রাউনলি এট আল দ্বারা প্রাপ্ত ফলাফল থেকে নেওয়া হয়েছিল। [৪]। প্যাচটি jCodec প্রকল্পে প্রয়োগ করা সন্নিবেশ সম্পাদনার একটি সফল দৃষ্টান্ত (অর্থাৎ, একটি সম্পাদনা যা সংকলিত হয়েছে, ইউনিট পরীক্ষায় উত্তীর্ণ হয়েছে এবং মূল কোডের উপর গতি প্রদান করেছে)। আমরা আমাদের পরীক্ষায় ব্যবহৃত সমস্ত বিস্তারিত প্রম্পট অনুরোধের জন্য একই উদাহরণ ব্যবহার করি; এর কারণ হল এলএলএমগুলি প্রবর্তক যুক্তিতে সক্ষম যেখানে ব্যবহারকারী নির্দিষ্ট তথ্য উপস্থাপন করে এবং এলএলএম সেই ইনপুটটি ব্যবহার করে আরও সাধারণ বিবৃতি তৈরি করতে পারে, যা GPT-4 [8] তে আরও উন্নত হয়েছে।



চিত্র 1. এলএলএম অনুরোধের জন্য মাঝারি প্রম্পট, পঠনযোগ্যতার জন্য লাইন বিরতি যুক্ত করা হয়েছে।



এলএলএম সম্পাদনাগুলি লক্ষ্য 'হট' পদ্ধতিতে এলোমেলোভাবে একটি ব্লক স্টেটমেন্ট নির্বাচন করে প্রয়োগ করা হয়। এই ব্লকের বিষয়বস্তু in the prompt. The first code block in the LLM response is identified. Gin uses JavaParser (https://javaparser.org) internally to represent target source files, so we attempt to parse the LLM suggestion with JavaParser, and replace the original block with the LLM suggestion.


ফলাফল

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


আমরা দেখতে পাচ্ছি যে যদিও স্ট্যান্ডার্ড ইনসার্ট এবং স্টেটমেন্ট এডিটগুলির সাথে যথেষ্ট পরিমাণে বেশি বৈধ প্যাচ পাওয়া গেছে, এলএলএম-জেনারেটেড এডিটগুলি ব্যবহার করে আরও বেশি পাসিং প্যাচ পাওয়া যেতে পারে। বিশেষ করে, মাঝারি এবং বিস্তারিত প্রম্পটের জন্য যথাক্রমে 292 এবং 230 প্যাচ ইউনিট পরীক্ষায় উত্তীর্ণ হয়েছে। সন্নিবেশ এবং বিবৃতি সম্পাদনার জন্য যথাক্রমে শুধুমাত্র 166 এবং 91 জন ইউনিট পরীক্ষায় উত্তীর্ণ হয়েছে। উপাখ্যানগতভাবে, প্রতিটি অপারেটরের জন্য সর্বনিম্ন/সর্বোচ্চ প্যাচ পাস রেট সহ গরম পদ্ধতিগুলি পৃথক: এই পরিবর্তন বোঝা ভবিষ্যতের তদন্তের জন্য আকর্ষণীয় হবে।


এটাও উল্লেখযোগ্য যে এলএলএম প্যাচগুলি কম বৈচিত্র্যময়: মাঝারি ব্যবহার করে এলএলএমের তুলনায় স্ট্যান্ডার্ড মিউটেশন অপারেটরদের দ্বারা 50% বেশি অনন্য প্যাচ পাওয়া গেছে,



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




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



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


আমরা বিস্তারিত (অনন্য প্যাচ সেটে) এর সাথে পারফরম্যান্সের হ্রাস বোঝার জন্য মাঝারি এবং বিস্তারিত প্রম্পটের মধ্যে পার্থক্যগুলি আরও তদন্ত করেছি কারণ মিডিয়াম-এ বেশি সংখ্যক সংকলিত এবং পাস করা প্যাচ ছিল। উভয় প্রম্পট স্তরে, উত্পন্ন প্রতিক্রিয়া 42 টি ক্ষেত্রে একই ছিল (মোট অনন্য বৈধ ক্ষেত্রের মধ্যে)। যাইহোক, বিস্তারিত 363 অক্ষরের গড় সহ দীর্ঘ প্রতিক্রিয়া তৈরি করার প্রবণতা দেখায়, যেখানে মিডিয়ামের গড় 304 অক্ষর ছিল। আমরা ম্যানুয়ালি বেশ কয়েকটি বিশদ প্রম্পট প্রতিক্রিয়া পরীক্ষা করেছি, যাতে আমরা অন্যান্য ফাইল থেকে ভেরিয়েবল সহ কিছু চিহ্নিত করেছি, সম্ভাব্যভাবে GI অন্বেষণ করতে পারে এমন কোড ভেরিয়েন্টের সেটের একটি উল্লেখযোগ্য সম্প্রসারণ অফার করে।


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


আবার, আমরা দেখতে পাচ্ছি যে ইউনিট পরীক্ষায় উত্তীর্ণ হওয়া আরও প্যাচগুলি মাঝারি এবং বিস্তারিত প্রম্পট ব্যবহার করে এলএলএম-এর সাথে পাওয়া যেতে পারে। উপরন্তু, এই প্রম্পটগুলির সাথে এলএলএম ব্যবহার করে আরও উন্নতি পাওয়া যেতে পারে। বিশেষত, মাঝারি এবং বিশদ সহ, আমরা যথাক্রমে 164 এবং 196টি উন্নতি পেয়েছি, যেখানে আমরা কেবল সন্নিবেশ সহ 136টি এবং বিবৃতি সহ 71টি পেয়েছি৷ স্টেটমেন্ট এডিট করে 508 ms দিয়ে সেরা উন্নতি পাওয়া যেতে পারে। এলএলএম ব্যবহার করে পাওয়া সর্বোত্তম উন্নতি (মাঝারি প্রম্পট ব্যবহার করে) শুধুমাত্র 395 ms দ্বারা রানটাইম উন্নত করতে সক্ষম হয়েছিল। বিস্তারিত প্রম্পটের প্রতিক্রিয়াগুলির কম সংকলনের হারের কারণে মাঝারি এবং বিশদ প্রম্পটের মধ্যে পার্থক্য সম্পর্কে অন্তর্দৃষ্টি পেতে আমরা স্থানীয় অনুসন্ধান ফলাফলগুলিতে সম্পাদনার একটি সিরিজ পরীক্ষা করেছি। উদাহরণে, সম্পাদনার একটি ক্রম যার লক্ষ্য একটি কল টু ফাংশন ক্লিপ ইনলাইন করা। বিস্তারিত প্রম্পটটি কয়েকটি সম্পাদনার মধ্যে প্রায় অবিলম্বে কলটি অন্তর্ভুক্ত করার চেষ্টা করেছিল, সম্ভবত অবৈধ কোডের দিকে পরিচালিত করে। অন্যদিকে, মিডিয়াম প্রম্পট কম আমূল পরিবর্তন করেছে, ধীরে ধীরে কোডটি পরিমার্জন করে। শেষ পর্যন্ত ক্লিপ ফাংশন কল ইনলাইন করার চেষ্টা করার আগে এটি একটি if-then-else স্টেটমেন্ট এবং সিস্টেম ফাংশন কল দিয়ে টারনারি অপারেটর এক্সপ্রেশন প্রতিস্থাপন করে শুরু হয়েছিল।


উপসংহার এবং ভবিষ্যতে কাজ

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


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


সারসংক্ষেপ . আমরা দেখতে পেয়েছি যে, যদিও র‍্যান্ডম স্যাম্পলিং ব্যবহার করে স্ট্যান্ডার্ড সম্পাদনার সাথে আরও বৈধ এবং বৈচিত্র্যময় প্যাচ পাওয়া গেছে, ইউনিট পরীক্ষায় উত্তীর্ণ আরও প্যাচ এলএলএম-ভিত্তিক সম্পাদনাগুলির সাথে পাওয়া গেছে। উদাহরণস্বরূপ, মিডিয়াম প্রম্পট ব্যবহার করে এলএলএম সম্পাদনার মাধ্যমে, আমরা ক্লাসিক সন্নিবেশ সম্পাদনার তুলনায় ইউনিট পরীক্ষায় 75% বেশি প্যাচ পাস করতে পেরেছি। আমাদের স্থানীয় অনুসন্ধান পরীক্ষায়, আমরা স্টেটমেন্ট এডিট (508 ms) দিয়ে সেরা উন্নতি পেয়েছি। মধ্যম প্রম্পট (395 ms) দিয়ে সেরা LLM-ভিত্তিক উন্নতি পাওয়া গেছে। এইভাবে এলএলএম এবং 'ক্লাসিক' জিআই সম্পাদনা উভয়ের সমন্বয়ে পদ্ধতির অন্বেষণের সম্ভাবনা রয়েছে।


আমাদের পরীক্ষাগুলি প্রকাশ করেছে যে এলএলএম অনুরোধগুলির জন্য ব্যবহৃত প্রম্পটগুলি ফলাফলগুলিকে ব্যাপকভাবে প্রভাবিত করে৷ এইভাবে, ভবিষ্যতের কাজে, আমরা প্রম্পট ইঞ্জিনিয়ারিং নিয়ে আরও পরীক্ষা করার আশা করি। প্রম্পটগুলিকে মিশ্রিত করাও সহায়ক হতে পারে: যেমন, মাঝারি দিয়ে শুরু করে তারপরে স্থানীয় মিনিমাম থেকে বিচ্ছিন্ন হয়ে বড় সম্পাদনা করতে বিশদে স্যুইচ করা। আরও, স্ট্যান্ডার্ড কপি/মুছুন/প্রতিস্থাপন/সোয়াপ বা PAR টেমপ্লেট [১১] এর মতো অন্যদের সাথে LLM সম্পাদনাগুলিকে একত্রিত করার সম্ভাবনা আকর্ষণীয় হতে পারে। অবশেষে, আমরা অতিরিক্ত পরীক্ষা প্রোগ্রামগুলিতে আরও ব্যাপক পরীক্ষা-নিরীক্ষা করার আশা করি।


ডেটা উপলব্ধতা। কোড, LLMs প্রম্পট এবং পরীক্ষামূলক অবকাঠামো, মূল্যায়নের ডেটা এবং ফলাফলগুলি ওপেন সোর্স হিসাবে [1] এ উপলব্ধ। কোডটি github.com/gintool/gin-এর 'llm' শাখার অধীনেও রয়েছে (commit 9fe9bdf; মাস্টার কমিট 2359f57 থেকে ব্রাঞ্চড জিনের সাথে সম্পূর্ণ একীকরণ মুলতুবি)।


স্বীকৃতি UKRI EPSRC EP/P023991/1 এবং ERC 741278।

তথ্যসূত্র

  1. বড় ভাষার মডেল ব্যবহার করে জেনেটিক ইমপ্রুভমেন্ট মিউটেশন বাড়ানোর আর্টিফ্যাক্ট। জেনোডো (সেপ্টেম্বর 2023)। https://doi.org/10.5281/zenodo.8304433


  2. B¨ohme, M., Soremekun, EO, চট্টোপাধ্যায়, S., Ugherughe, E., Zeller, A.: বাগ কোথায় এবং কিভাবে ঠিক করা হয়েছে? অনুশীলনকারীদের সাথে একটি পরীক্ষা। ইন: Proc. সফটওয়্যার ইঞ্জিনিয়ারিং এর ভিত্তির উপর ACM সিম্পোজিয়াম। পৃষ্ঠা 117-128 (2017)


  3. Brownlee, AE, Petke, J., Alexander, B., Barr, ET, Wagner, M., White, DR: Gin: জেনেটিক উন্নতি গবেষণা সহজ করে দিয়েছে। ইন: GECCO। পৃষ্ঠা 985-993 (2019)


  4. Brownlee, AE, Petke, J., Rasburn, AF: দ্রুত জাভা কোড চালানোর জন্য শর্টকাট ইনজেক্ট করা। ইন: IEEE CEC 2020. পি. 1-8


  5. চেন, এম., টোরেক, জে., জুন, এইচ., ইউয়ান, কিউ., পিন্টো, এইচপিডিও, কাপলান, জে., এডওয়ার্ডস, এইচ., বুর্দা, ওয়াই., জোসেফ, এন., ব্রকম্যান, জি., এবং al.: কোডে প্রশিক্ষিত বড় ভাষা মডেলের মূল্যায়ন করা। arXiv প্রিপ্রিন্ট arXiv:2107.03374 (2021)


  6. ফ্যান, এ., গোক্কায়া, বি., হারমান, এম., লিউবারস্কি, এম., সেনগুপ্ত, এস., ইয়ু, এস., ঝাং, জেএম: সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের জন্য বড় ভাষা মডেল: সমীক্ষা এবং খোলা সমস্যা (2023)

  7. Github - jcodec/jcodec: Jcodec প্রধান রেপো, https://github.com/jcodec/jcodec


  8. হ্যান, এসজে, র‍্যানসম, কেজে, পারফরস, এ., কেম্প, সি.: মানুষের মধ্যে প্রবর্তক যুক্তি এবং বড় ভাষা মডেল। জ্ঞানীয় সিস্টেম গবেষণা পি. 101155 (2023)


  9. Hou, X., Liu, Y., Yang, Z., Grundy, J., Zhao, Y., Li, L., Wang, K., Luo, X., Lo, D., Wang, H.: সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের জন্য বড় ভাষা মডেল: একটি পদ্ধতিগত সাহিত্য পর্যালোচনা। arXiv:2308.10620 (2023)


  10. Kang, S., Yoo, S.: বৃহৎ ভাষার মডেলের মাধ্যমে উদ্দেশ্য-উপযুক্ত জেনেটিক উন্নতির দিকে। arXiv:2304.09386 (2023)


  11. Kim, D., Nam, J., Song, J., Kim, S.: মানব-লিখিত প্যাচ (2013), http://logging.apache.org/log4j/ থেকে স্বয়ংক্রিয় প্যাচ জেনারেশন শেখা


  12. Kirbas, S., Windels, E., Mcbello, O., Kells, K., Pagano, M., Szalanski, R., Nowack, V., Winter, E., Counsell, S., Bowes, D., হল, টি., হারাল্ডসন, এস., উডওয়ার্ড, জে: ব্লুমবার্গে স্বয়ংক্রিয় প্রোগ্রাম মেরামতের প্রবর্তনের উপর। IEEE সফটওয়্যার 38(4), 43–51 (2021)


  13. Marginean, A., Bader, J., Chandra, S., Harman, M., Jia, Y., Mao, K., Mols, A., Scott, A.: Sapfix: এন্ড-টু-এন্ড স্বয়ংক্রিয় মেরামত স্কেল. ইন: ICSE-SEIP। পৃষ্ঠা 269- 278 (2019)


  14. Petke, J., Alexander, B., Barr, ET, Brownlee, AE, Wagner, M., White, DR: Gin ব্যবহার করে স্বয়ংক্রিয় প্রোগ্রাম পরিবর্তনের জন্য প্রোগ্রাম রূপান্তর ল্যান্ডস্কেপ। অভিজ্ঞতামূলক সফটওয়্যার ইঞ্জিনিয়ারিং 28(4), 1–41 (2023)


  15. পেটকে, জে., হারালডসন, এসও, হারম্যান, এম., ল্যাংডন, ডব্লিউবি, হোয়াইট, ডিআর, উডওয়ার্ড, জেআর: সফ্টওয়্যারের জেনেটিক উন্নতি: একটি ব্যাপক সমীক্ষা। বিবর্তনীয় গণনার উপর IEEE লেনদেন 22, 415–432 (2018)


  16. সিদ্দিক, এমএল, স্যান্টোস, জে., তানভীর, আরএইচ, উলফাত, এন., রিফাত, এফএ, লোপেস, ভিসি: ইউনিট পরীক্ষা তৈরিতে বড় ভাষা মডেলের কার্যকারিতা অন্বেষণ করা। arXiv প্রিপ্রিন্ট arXiv:2305.00418 (2023)


  17. Sobania, D., Briesch, M., Hanna, C., Petke, J.: chatgpt-এর স্বয়ংক্রিয় বাগ ফিক্সিং কর্মক্ষমতার একটি বিশ্লেষণ। ইন: 2023 IEEE/ACM ইন্টারন্যাশনাল ওয়ার্কশপ অন অটোমেটেড প্রোগ্রাম রিপেয়ার (এপিআর)। পৃষ্ঠা 23-30। IEEE কম্পিউটার সোসাইটি (2023)


  18. Xia, CS, Paltenghi, M., Tian, JL, Pradel, M., Zhang, L.: বৃহৎ ভাষার মডেলের মাধ্যমে ইউনিভার্সাল ফাজিং। arXiv প্রিপ্রিন্ট arXiv:2308.04748 (2023)


  19. Xia, CS, Zhang, L.: কথোপকথন চালিয়ে যান: chatgpt ব্যবহার করে $0.42 প্রতিটিতে 337টির মধ্যে 162টি বাগ সংশোধন করা হচ্ছে। arXiv প্রিপ্রিন্ট arXiv:2304.00385 (2023)




এই কাগজটি CC 4.0 লাইসেন্সের অধীনে arxiv-এ উপলব্ধ